pytfd_compat/validation/run_validation.py

36 lines
1.1 KiB
Python

from __future__ import annotations
from pathlib import Path
import sys
ROOT = Path(__file__).resolve().parents[1]
SRC = ROOT / "src"
for path in (ROOT, SRC):
if str(path) not in sys.path:
sys.path.insert(0, str(path))
from validation.compare import compare_stft_to_scipy, make_validation_signals, tftb_available
def main() -> None:
print("pytfd_compat validation")
print("reference: scipy.signal.ShortTimeFFT")
print(f"tftb installed: {'yes' if tftb_available() else 'no'}")
for name, signal in make_validation_signals().items():
metrics = compare_stft_to_scipy(signal)
print(f"\n{name}")
print(f" best_offset: {int(metrics['best_offset'])}")
print(f" max_abs_diff: {metrics['max_abs_diff']:.3e}")
print(f" mean_abs_diff: {metrics['mean_abs_diff']:.3e}")
print(f" pytfd_compat_seconds: {metrics['ours_seconds']:.6f}")
print(f" scipy_seconds: {metrics['scipy_seconds']:.6f}")
print(
f" columns: pytfd_compat={int(metrics['ours_columns'])}, "
f"scipy={int(metrics['scipy_columns'])}"
)
if __name__ == "__main__":
main()