mne.preprocessing.compute_proj_ecg(raw, raw_event=None, tmin=-0.2, tmax=0.4, n_grad=2, n_mag=2, n_eeg=2, l_freq=1.0, h_freq=35.0, average=True, filter_length='10s', n_jobs=None, ch_name=None, reject={'grad': 2e-10, 'mag': 3e-12}, flat=None, bads=[], avg_ref=False, no_proj=False, event_id=999, ecg_l_freq=5, ecg_h_freq=35, tstart=0.0, qrs_threshold='auto', filter_method='fir', iir_params=None, copy=True, return_drop_log=False, meg='separate', verbose=None)[source]#

Compute SSP (signal-space projection) vectors for ECG artifacts.

This function will:

  1. Filter the ECG data channel.

  2. Find ECG R wave peaks using mne.preprocessing.find_ecg_events().

  3. Filter the raw data.

  4. Create Epochs around the R wave peaks, capturing the heartbeats.

  5. Optionally average the Epochs to produce an Evoked if average=True was passed (default).

  6. Calculate SSP projection vectors on that data to capture the artifacts.


Raw data will be loaded if it hasn’t been preloaded already.


Raw input file. or None

Raw file to use for event detection (if None, raw is used).


Time before event in seconds.


Time after event in seconds.


Number of SSP vectors for gradiometers.


Number of SSP vectors for magnetometers.


Number of SSP vectors for EEG.

l_freqfloat | None

Filter low cut-off frequency for the data channels in Hz.

h_freqfloat | None

Filter high cut-off frequency for the data channels in Hz.


Compute SSP after averaging. Default is True.

filter_lengthstr | int | None

Number of taps to use for filtering.

n_jobsint | None

The number of jobs to run in parallel. If -1, it is set to the number of CPU cores. Requires the joblib package. None (default) is a marker for ‘unset’ that will be interpreted as n_jobs=1 (sequential execution) unless the call is performed under a joblib.parallel_backend() context manager that sets another value for n_jobs.

ch_namestr | None

Channel to use for ECG detection (Required if no ECG found).

rejectdict | None

Epoch rejection configuration (see Epochs).

flatdict | None

Epoch flat configuration (see Epochs).


List with (additional) bad channels.


Add EEG average reference proj.


Exclude the SSP projectors currently in the fiff file.


ID to use for events.


Low pass frequency applied to the ECG channel for event detection.


High pass frequency applied to the ECG channel for event detection.


Start artifact detection after tstart seconds.

qrs_thresholdfloat | str

Between 0 and 1. qrs detection threshold. Can also be “auto” to automatically choose the threshold that generates a reasonable number of heartbeats (40-160 beats / min).


Method for filtering (‘iir’ or ‘fir’).

iir_paramsdict | 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.


If False, filtering raw data is done in place. Defaults to True.


If True, return the drop log.

New in version 0.15.


Can be 'separate' (default) or 'combined' to compute projectors for magnetometers and gradiometers separately or jointly. If 'combined', n_mag == n_grad is required and the number of projectors computed for MEG will be n_mag.

New in version 0.18.

verbosebool | str | int | None

Control verbosity of the logging output. If None, use the default verbosity level. See the logging documentation and mne.verbose() for details. Should only be passed as a keyword argument.

projslist of Projection

List of computed projection vectors.


Detected ECG events.


The drop log, if requested.


Filtering is applied to the ECG channel while finding events using ecg_l_freq and ecg_h_freq, and then to the raw instance using l_freq and h_freq before creation of the epochs used to create the projectors.

Examples using mne.preprocessing.compute_proj_ecg#

Repairing artifacts with SSP

Repairing artifacts with SSP

Divide continuous data into equally-spaced epochs

Divide continuous data into equally-spaced epochs