From 513526ae310230b5ebb1b6c895f747ff94526c31 Mon Sep 17 00:00:00 2001 From: Peter Swain <pswain@Home-iMac.local> Date: Wed, 24 Apr 2024 15:59:00 +0100 Subject: [PATCH] feature: added Arin's butterfilter --- butterfilter.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 butterfilter.py diff --git a/butterfilter.py b/butterfilter.py new file mode 100644 index 0000000..557b1fd --- /dev/null +++ b/butterfilter.py @@ -0,0 +1,28 @@ +import numpy as np +from scipy import signal + + +def butterfilter(timeseries, params=None): + """Apply Butterworth filter to time series arranged in rows.""" + # second-order-sections output + # by default, using a digital filter + if params is None: + params = { + "order": 2, + "critical_freqs": (1 / 350), + "filter_type": "highpass", + "sampling_freq": 1 / 3, + } + sos = signal.butter( + N=params["order"], + Wn=params["critical_freqs"], + btype=params["filter_type"], + fs=params["sampling_freq"], + output="sos", + ) + # subtract time series by mean + timeseries_norm = timeseries - np.nanmean(timeseries, axis=1).reshape( + timeseries.shape[0], 1 + ) + filtered_timeseries = signal.sosfiltfilt(sos, timeseries_norm, axis=1) + return filtered_timeseries -- GitLab