notch_filter(x, Fs, freqs, filter_length='auto', notch_widths=None, trans_bandwidth=1, method='fir', iir_params=None, mt_bandwidth=None, p_value=0.05, picks=None, n_jobs=1, copy=True, phase='zero', fir_window='hamming', fir_design='firwin', pad='reflect_limited', verbose=None)¶
Notch filter for the signal x.
Applies a zero-phase notch filter to the signal x, operating on the last dimension.
Signal to filter.
Sampling rate in Hz.
Frequencies to notch filter in Hz, e.g. np.arange(60, 241, 60). None can only be used with the mode ‘spectrum_fit’, where an F test is used to find sinusoidal components.
Length of the FIR filter to use (if applicable):
‘auto’ (default): The filter length is chosen based on the size of the transition regions (6.6 times the reciprocal of the shortest transition band for fir_window=’hamming’ and fir_design=”firwin2”, and half that for “firwin”).
str: A human-readable time in units of “s” or “ms” (e.g., “10s” or “5500ms”) will be converted to that number of samples if
phase="zero", or the shortest power-of-two length at least that duration for
int: Specified length in samples. For fir_design=”firwin”, this should not be used.
Width of the stop band (centred at each freq in freqs) in Hz. If None, freqs / 200 is used.
Width of the transition band in Hz. Only used for
‘fir’ will use overlap-add FIR filtering, ‘iir’ will use IIR forward-backward filtering (via filtfilt). ‘spectrum_fit’ will use multi-taper estimation of sinusoidal components. If freqs=None and method=’spectrum_fit’, significant sinusoidal components are detected using an F test, and noted by logging.
Dictionary of parameters to use for IIR filtering. If iir_params is None and method=”iir”, 4th order Butterworth will be used. For more information, see
The bandwidth of the multitaper windowing function in Hz. Only used in ‘spectrum_fit’ mode.
P-value to use in F-test thresholding to determine significant sinusoidal components to remove when method=’spectrum_fit’ and freqs=None. Note that this will be Bonferroni corrected for the number of frequencies, so large p-values may be justified.
Channels to include. Slices and lists of integers will be interpreted as channel indices. None (default) will pick all channels. Only supported for 2D (n_channels, n_times) and 3D (n_epochs, n_channels, n_times) data.
Number of jobs to run in parallel. Can be ‘cuda’ if
cupyis installed properly and method=’fir’.
If True, a copy of x, filtered, is returned. Otherwise, it operates on x in place.
Phase of the filter, only used if
method='fir'. Symmetric linear-phase FIR filters are constructed, and if
phase='zero'(default), the delay of this filter is compensated for, making it non-causal. If
phase=='zero-double', then this filter is applied twice, once forward, and once backward (also making it non-causal). If ‘minimum’, then a minimum-phase filter will be constricted and applied, which is causal but has weaker stop-band suppression.
New in version 0.13.
The window to use in FIR design, can be “hamming” (default), “hann” (default in 0.13), or “blackman”.
New in version 0.15.
Can be “firwin” (default) to use
scipy.signal.firwin(), or “firwin2” to use
scipy.signal.firwin2(). “firwin” uses a time-domain design technique that generally gives improved attenuation using fewer samples than “firwin2”.
New in version 0.15.
The type of padding to use. Supports all
modeoptions. Can also be “reflect_limited”, which pads with a reflected version of each vector mirrored on the first and last values of the vector, followed by zeros. Only used for
The x array filtered.
The frequency response is (approximately) given by:
1-|---------- ----------- | \ / |H| | \ / | \ / | \ / 0-| - | | | | | 0 Fp1 freq Fp2 Nyq
For each freq in freqs, where
Fp1 = freq - trans_bandwidth / 2and
Fs2 = freq + trans_bandwidth / 2.
Multi-taper removal is inspired by code from the Chronux toolbox, see www.chronux.org and the book “Observed Brain Dynamics” by Partha Mitra & Hemant Bokil, Oxford University Press, New York, 2008. Please cite this in publications if method ‘spectrum_fit’ is used.