From 5fb9902dda78e0027a3110245e4815094e3fcfe0 Mon Sep 17 00:00:00 2001 From: Timofey Titovets Date: Sat, 24 Jan 2026 17:11:41 +0100 Subject: [PATCH] sos_filter: define filtfilt call To implement host-side analysis of tap data, we need a way to apply the same filtering as on the mcu. As bonus, it cancels the induced signal delay. Signed-off-by: Timofey Titovets Signed-off-by: Kevin O'Connor --- klippy/extras/trigger_analog.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/klippy/extras/trigger_analog.py b/klippy/extras/trigger_analog.py index 41bec07f7..223f83768 100644 --- a/klippy/extras/trigger_analog.py +++ b/klippy/extras/trigger_analog.py @@ -38,6 +38,7 @@ class DigitalFilter: return try: import scipy.signal as signal + import numpy except: raise cfg_error("DigitalFilter require the SciPy module") if highpass: @@ -69,6 +70,12 @@ class DigitalFilter: def get_initial_state(self): return self.initial_state + def filtfilt(self, data): + import scipy.signal as signal + import numpy + data = numpy.array(data) + return signal.sosfiltfilt(self.filter_sections, data) + # Produce sample to sample difference (derivative) of a DigitalFilter class DerivativeFilter: def __init__(self, main_filter):