mne.simulation.add_ecg(raw, head_pos=None, interp='cos2', n_jobs=1, random_state=None, verbose=None)[source]

Add ECG noise to raw data.

rawinstance of Raw

The raw instance to modify.

head_posNone | str | dict | tuple | array

Name of the position estimates file. Should be in the format of the files produced by MaxFilter. If dict, keys should be the time points and entries should be 4x4 dev_head_t matrices. If None, the original head position (from info['dev_head_t']) will be used. If tuple, should have the same format as data returned by head_pos_to_trans_rot_t. If array, should be of the form returned by mne.chpi.read_head_pos().


Either ‘hann’, ‘cos2’ (default), ‘linear’, or ‘zero’, the type of forward-solution interpolation to use between forward solutions at different head positions.


The number of jobs to run in parallel (default 1). Requires the joblib package.

random_stateNone | int | instance of RandomState

If random_state is an int, it will be used as a seed for RandomState. If None, the seed will be obtained from the operating system (see RandomState for details). Default is None. The random generator state used for blink, ECG, and sensor noise randomization.

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.

rawinstance of Raw

The instance, modified in place.


The ECG artifacts are generated by:

  1. Random inter-beat intervals are drawn from a uniform distribution of times corresponding to 40 and 80 beats per minute.

  2. The activation function is the sum of three Hanning windows with varying durations and scales to make a more complex waveform.

  3. The activated dipole is located one (estimated) head radius to the left (-x) of head center and three head radii below (+z) head center; this dipole is oriented in the +x direction.

  4. Activations only affect MEG channels.

The scale-factor of the activation function was chosen based on visual inspection to yield amplitudes generally consistent with those seen in experimental data. Noisy versions of the activation will be stored in the first EOG channel in the raw instance, if it exists.

New in version 0.18.