# mne.filter.notch_filter¶

mne.filter.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)[source]

Notch filter for the signal x.

Applies a zero-phase notch filter to the signal x, operating on the last dimension.

Parameters: x : array Signal to filter. Fs : float Sampling rate in Hz. freqs : float | array of float | None 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. filter_length : str | int 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 phase="zero-double". int: specified length in samples. For fir_design=”firwin”, this should not be used. notch_widths : float | array of float | None Width of the stop band (centred at each freq in freqs) in Hz. If None, freqs / 200 is used. trans_bandwidth : float Width of the transition band in Hz. Only used for method='fir'. method : str ‘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. iir_params : dict | None Dictionary of parameters to use for IIR filtering. See mne.filter.construct_iir_filter for details. If iir_params is None and method=”iir”, 4th order Butterworth will be used. mt_bandwidth : float | None The bandwidth of the multitaper windowing function in Hz. Only used in ‘spectrum_fit’ mode. p_value : float 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. picks : array-like of int | None Indices of channels to filter. If None all channels will be filtered. Only supported for 2D (n_channels, n_times) and 3D (n_epochs, n_channels, n_times) data. n_jobs : int | str Number of jobs to run in parallel. Can be ‘cuda’ if scikits.cuda is installed properly, CUDA is initialized, and method=’fir’. copy : bool If True, a copy of x, filtered, is returned. Otherwise, it operates on x in place. phase : str Phase of the filter, only used if method='fir'. By default, a symmetric linear-phase FIR filter is constructed. If phase='zero' (default), the delay of this filter is compensated for. If phase=='zero-double', then this filter is applied twice, once forward, and once backward. If ‘minimum’, then a minimum-phase, causal filter will be used. New in version 0.13. fir_window : str The window to use in FIR design, can be “hamming” (default), “hann” (default in 0.13), or “blackman”. New in version 0.13. fir_design : str 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”. ..versionadded:: 0.15 pad : str The type of padding to use. Supports all numpy.pad() mode options. Can also be “reflect_limited” (default), 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 method='fir'. New in version 0.15. verbose : bool, str, int, or None If not None, override default verbose level (see mne.verbose() and Logging documentation for more). xf : array x filtered.

Notes

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 / 2 and Fs2 = freq + trans_bandwidth / 2.

References

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.