Hello, i wanted to filter my data using a IIR filter, a order 2 butterworth filter. raw.plot()
aply a FIR filter so i’m using mne.filter.create_filter
, but it’s not working. Can someone help me with this?
My code:
fname = 'C:\\Users\\hanna\\OneDrive\\Documentos\\Annotated_Data\\Paciente_24\\chb24_01_edited.edf'
raw=mne.io.read_raw_edf(fname, preload=True)
raw.set_eeg_reference()
raw.pick_channels(['F3-C3', 'C3-P3', 'F4-C4', 'C4-P4'])
data = raw.copy()
iir_params = dict(order=2, ftype='butter')
filt = mne.filter.create_filter(data, sfreq=256, l_freq=0.5, h_freq=40.0, method='iir', iir_params = iir_params, verbose=True)
Setting up band-pass filter from 0.5 - 40 Hz
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_13152\3677571105.py in <cell line: 1>()
----> 1 filt = mne.filter.create_filter(data, sfreq=256, l_freq=0.5, h_freq=40.0, method='iir', iir_params = iir_params, verbose=True)
<decorator-gen-143> in create_filter(data, sfreq, l_freq, h_freq, filter_length, l_trans_bandwidth, h_trans_bandwidth, method, iir_params, phase, fir_window, fir_design, verbose)
~\mne-python\1.1.1_0\lib\site-packages\mne\filter.py in create_filter(data, sfreq, l_freq, h_freq, filter_length, l_trans_bandwidth, h_trans_bandwidth, method, iir_params, phase, fir_window, fir_design, verbose)
1005 % (l_freq, h_freq))
1006 data, sfreq, f_p1, f_p2, f_s1, f_s2, filter_length, phase, \
-> 1007 fir_window, fir_design = _triage_filter_params(
1008 data, sfreq, l_freq, h_freq, l_trans_bandwidth,
1009 h_trans_bandwidth, filter_length, method, phase,
~\mne-python\1.1.1_0\lib\site-packages\mne\filter.py in _triage_filter_params(x, sfreq, l_freq, h_freq, l_trans_bandwidth, h_trans_bandwidth, filter_length, method, phase, fir_window, fir_design, bands, reverse)
1845 # If we have data supplied, do a sanity check
1846 if x is not None:
-> 1847 x = _check_filterable(x)
1848 len_x = x.shape[-1]
1849 if method != 'fir':
~\mne-python\1.1.1_0\lib\site-packages\mne\filter.py in _check_filterable(x, kind, alternative)
1384 pass
1385 else:
-> 1386 raise TypeError(
1387 'This low-level function only operates on np.ndarray '
1388 f'instances. To get a {kind} {name} instance, use a method '
TypeError: This low-level function only operates on np.ndarray instances. To get a filtered RawEDF instance, use a method like `inst_new = inst.copy().filter(...)` instead.