logdetector logic semiapplied
This commit is contained in:
@ -37,8 +37,10 @@ FFT_LEN = 1024 # длина БПФ для спектра/водопада сп
|
|||||||
# считаем, что сигнал «меньше нуля» и домножаем свип на -1
|
# считаем, что сигнал «меньше нуля» и домножаем свип на -1
|
||||||
DATA_INVERSION_THRASHOLD = 10.0
|
DATA_INVERSION_THRASHOLD = 10.0
|
||||||
LOG_DETECTOR_OFFSET = 0.0
|
LOG_DETECTOR_OFFSET = 0.0
|
||||||
LOG_DETECTOR_SCALER = 1.0
|
LOG_DETECTOR_SCALER = -0.001
|
||||||
LOG_DETECTOR_BASE = 2.0
|
LOG_DETECTOR_BASE = 2.0
|
||||||
|
LOG_DETECTOR_EXP_MIN = -149.0
|
||||||
|
LOG_DETECTOR_EXP_MAX = 128.0
|
||||||
|
|
||||||
Number = Union[int, float]
|
Number = Union[int, float]
|
||||||
SweepInfo = Dict[str, Any]
|
SweepInfo = Dict[str, Any]
|
||||||
@ -470,18 +472,37 @@ class SweepReader(threading.Thread):
|
|||||||
except Exception:
|
except Exception:
|
||||||
# В случае ошибки просто оставляем как есть
|
# В случае ошибки просто оставляем как есть
|
||||||
pass
|
pass
|
||||||
|
'''
|
||||||
# Инверсия данных при «отрицательном» уровне (среднее ниже порога)
|
# Инверсия данных при «отрицательном» уровне (среднее ниже порога)
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
m = float(np.nanmean(sweep))
|
m = float(np.nanmean(sweep))
|
||||||
if np.isfinite(m) and m < DATA_INVERSION_THRASHOLD:
|
if np.isfinite(m) and m < DATA_INVERSION_THRASHOLD:
|
||||||
sweep *= -1.0
|
sweep *= -1.0
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
'''
|
||||||
|
|
||||||
pre_exp_sweep: Optional[np.ndarray] = None
|
pre_exp_sweep: Optional[np.ndarray] = None
|
||||||
if self._logdetector:
|
if self._logdetector:
|
||||||
try:
|
try:
|
||||||
|
if sweep_1 is not None and sweep_2 is not None:
|
||||||
|
s1_pre = (sweep_1 - LOG_DETECTOR_OFFSET) * LOG_DETECTOR_SCALER
|
||||||
|
s2_pre = (sweep_2 - LOG_DETECTOR_OFFSET) * LOG_DETECTOR_SCALER
|
||||||
|
s1_pre = np.clip(s1_pre, LOG_DETECTOR_EXP_MIN, LOG_DETECTOR_EXP_MAX)
|
||||||
|
s2_pre = np.clip(s2_pre, LOG_DETECTOR_EXP_MIN, LOG_DETECTOR_EXP_MAX)
|
||||||
|
# with np.errstate(over="ignore", invalid="ignore"):
|
||||||
|
# sweep_1 = np.power(LOG_DETECTOR_BASE, np.asarray(s1_pre, dtype=np.float64)).astype(np.float32)
|
||||||
|
# sweep_2 = np.power(LOG_DETECTOR_BASE, np.asarray(s2_pre, dtype=np.float64)).astype(np.float32)
|
||||||
|
sweep_1 = np.power(LOG_DETECTOR_BASE, np.asarray(s1_pre, dtype=np.float64)).astype(np.float32)
|
||||||
|
sweep_2 = np.power(LOG_DETECTOR_BASE, np.asarray(s2_pre, dtype=np.float64)).astype(np.float32)
|
||||||
|
sweep_1[~np.isfinite(sweep_1)] = np.nan
|
||||||
|
sweep_2[~np.isfinite(sweep_2)] = np.nan
|
||||||
|
sweep = sweep_1 - sweep_2
|
||||||
|
else:
|
||||||
sweep = (sweep - LOG_DETECTOR_OFFSET) * LOG_DETECTOR_SCALER
|
sweep = (sweep - LOG_DETECTOR_OFFSET) * LOG_DETECTOR_SCALER
|
||||||
|
sweep = np.clip(sweep, LOG_DETECTOR_EXP_MIN, LOG_DETECTOR_EXP_MAX)
|
||||||
pre_exp_sweep = sweep.copy()
|
pre_exp_sweep = sweep.copy()
|
||||||
with np.errstate(over="ignore", invalid="ignore"):
|
with np.errstate(over="ignore", invalid="ignore"):
|
||||||
sweep = np.power(LOG_DETECTOR_BASE, np.asarray(sweep, dtype=np.float64)).astype(np.float32)
|
sweep = np.power(LOG_DETECTOR_BASE, np.asarray(sweep, dtype=np.float64)).astype(np.float32)
|
||||||
|
|||||||
Reference in New Issue
Block a user