new background remove algoritm
This commit is contained in:
@ -14,6 +14,11 @@ from rfg_adc_plotter.processing.calibration import (
|
||||
recalculate_calibration_c,
|
||||
save_calib_envelope,
|
||||
)
|
||||
from rfg_adc_plotter.processing.background import (
|
||||
load_fft_background,
|
||||
save_fft_background,
|
||||
subtract_fft_background,
|
||||
)
|
||||
from rfg_adc_plotter.processing.fft import (
|
||||
build_positive_only_centered_ifft_spectrum,
|
||||
build_symmetric_ifft_spectrum,
|
||||
@ -101,6 +106,28 @@ class ProcessingTests(unittest.TestCase):
|
||||
with self.assertRaises(ValueError):
|
||||
load_calib_envelope(path)
|
||||
|
||||
def test_fft_background_roundtrip_and_rejects_non_1d_payload(self):
|
||||
background = np.asarray([0.5, 1.5, 2.5], dtype=np.float32)
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
path = os.path.join(tmp_dir, "fft_background")
|
||||
saved_path = save_fft_background(path, background)
|
||||
loaded = load_fft_background(saved_path)
|
||||
self.assertTrue(saved_path.endswith(".npy"))
|
||||
self.assertTrue(np.allclose(loaded, background))
|
||||
|
||||
invalid_path = os.path.join(tmp_dir, "fft_background_invalid.npy")
|
||||
np.save(invalid_path, np.zeros((2, 2), dtype=np.float32))
|
||||
with self.assertRaises(ValueError):
|
||||
load_fft_background(invalid_path)
|
||||
|
||||
def test_subtract_fft_background_clamps_negative_residuals_to_zero(self):
|
||||
signal = np.asarray([1.0, 2.0, 3.0], dtype=np.float32)
|
||||
background = np.asarray([1.0, 1.5, 5.0], dtype=np.float32)
|
||||
subtracted = subtract_fft_background(signal, background)
|
||||
|
||||
self.assertTrue(np.allclose(subtracted, np.asarray([0.0, 0.5, 0.0], dtype=np.float32)))
|
||||
self.assertTrue(np.allclose(subtract_fft_background(signal, signal), 0.0))
|
||||
|
||||
def test_apply_working_range_crops_sweep_to_selected_band(self):
|
||||
freqs = np.linspace(3.3, 14.3, 12, dtype=np.float64)
|
||||
sweep = np.arange(12, dtype=np.float32)
|
||||
|
||||
Reference in New Issue
Block a user