implemented data inversion if sync_detector phifts its phase (detects negative values and inverts all raw data( * -1))

This commit is contained in:
2025-12-21 17:10:41 +03:00
parent 8bcb8bdc40
commit 657da0d285

View File

@ -32,6 +32,9 @@ import numpy as np
WF_WIDTH = 1000 # максимальное число точек в ряду водопада WF_WIDTH = 1000 # максимальное число точек в ряду водопада
FFT_LEN = 1024 # длина БПФ для спектра/водопада спектров FFT_LEN = 1024 # длина БПФ для спектра/водопада спектров
# Порог для инверсии сырых данных: если среднее значение свипа ниже порога —
# считаем, что сигнал «меньше нуля» и домножаем свип на -1
DATA_INVERSION_THRASHOLD = 10.0
def _parse_spec_clip(spec: Optional[str]) -> Optional[Tuple[float, float]]: def _parse_spec_clip(spec: Optional[str]) -> Optional[Tuple[float, float]]:
@ -276,6 +279,13 @@ class SweepReader(threading.Thread):
except Exception: except Exception:
# В случае ошибки просто оставляем как есть # В случае ошибки просто оставляем как есть
pass pass
# Инверсия данных при «отрицательном» уровне (среднее ниже порога)
try:
m = float(np.nanmean(sweep))
if np.isfinite(m) and m < DATA_INVERSION_THRASHOLD:
sweep *= -1.0
except Exception:
pass
# Кладём готовый свип (если очередь полна — выбрасываем самый старый) # Кладём готовый свип (если очередь полна — выбрасываем самый старый)
try: try:
self._q.put_nowait(sweep) self._q.put_nowait(sweep)