mne.preprocessing.regress_artifact(inst, picks=None, picks_artifact='eog', betas=None, copy=True, verbose=None)[source]

Regress artifacts using reference channels.

instinstance of Epochs | Raw

The instance to process.

picksstr | list | slice | None

Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g., ['meg', 'eeg']) will pick channels of those types, channel name strings (e.g., ['MEG0111', 'MEG2623'] will pick the given channels. Can also be the string values “all” to pick all channels, or “data” to pick data channels. None (default) will pick good data channels.

picks_artifactarray_like | str

Channel picks to use as predictor/explanatory variables capturing the artifact of interest (default is “eog”).

betasndarray, shape (n_picks, n_picks_ref) | None

The regression coefficients to use. If None (default), they will be estimated from the data.


If True (default), copy the instance before modifying it.

verbosebool, str, int, or None

If not None, override default verbose level (see mne.verbose() and Logging documentation for more). If used, it should be passed as a keyword-argument only.

instinstance of Epochs | Raw

The processed data.

betasndarray, shape (n_picks, n_picks_ref)

The betas used during regression.


To implement the method outlined in 1, remove the evoked response from epochs before estimating the regression coefficients, then apply those regression coefficients to the original data in two calls like (here for a single-condition epochs only):

>>> epochs_no_ave = epochs.copy().subtract_evoked()  
>>> _, betas = mne.preprocessing.regress(epochs_no_ave)  
>>> epochs_clean, _ = mne.preprocessing.regress(epochs, betas=betas)  



Gabriele Gratton, Michael G. H Coles, and Emanuel Donchin. A new method for off-line removal of ocular artifact. Electroencephalography and Clinical Neurophysiology, 55(4):468–484, April 1983. doi:10.1016/0013-4694(83)90135-9.

Examples using mne.preprocessing.regress_artifact