ICA is fit to MEG raw data. We assume that the non-stationary EOG artifacts have already been removed. The sources matching the ECG are automatically found and displayed.
Note that this example does quite a bit of processing, so even on a fast machine it can take about a minute to complete.
Read and preprocess the data. Preprocessing consists of:
data_path = sample.data_path() raw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif' raw = mne.io.read_raw_fif(raw_fname, preload=True) raw.pick_types(meg=True, eeg=False, exclude='bads', stim=True) raw.filter(1, 30, method='iir') # longer + more epochs for more artifact exposure events = mne.find_events(raw, stim_channel='STI 014') epochs = mne.Epochs(raw, events, event_id=None, tmin=-0.2, tmax=0.5)
Opening raw data file /home/ubuntu/mne_data/MNE-sample-data/MEG/sample/sample_audvis_filt-0-40_raw.fif... Read a total of 4 projection items: PCA-v1 (1 x 102) idle PCA-v2 (1 x 102) idle PCA-v3 (1 x 102) idle Average EEG reference (1 x 60) idle Range : 6450 ... 48149 = 42.956 ... 320.665 secs Ready. Current compensation grade : 0 add_eeg_ref defaults to True in 0.13, will default to False in 0.14, and will be removed in 0.15. We recommend to use add_eeg_ref=False and set_eeg_reference() instead. Reading 0 ... 41699 = 0.000 ... 277.709 secs... Band-pass filtering from 1 - 30 Hz 319 events found Events id: [ 1 2 3 4 5 32] 319 matching events found Applying baseline correction (mode: mean) Created an SSP operator (subspace dimension = 3) 4 projection items activated
Fit ICA model using the FastICA algorithm, detect and plot components explaining ECG artifacts.
Fitting ICA to data using 305 channels. Please be patient, this may take some time Inferring max_pca_components from picks. Loading data for 319 events and 106 original time points ... 0 bad epochs dropped Selection by explained variance: 120 components Loading data for 319 events and 106 original time points ... Reconstructing ECG signal from Magnetometers Band-pass filtering from 8 - 16 Hz Number of ECG events detected : 284 (average pulse 61 / min.) Creating RawArray with float64 data, n_channels=1, n_times=41700 Range : 0 ... 41699 = 0.000 ... 277.709 secs Ready. 284 matching events found No baseline correction applied Created an SSP operator (subspace dimension = 3) Loading data for 284 events and 151 original time points ... 0 bad epochs dropped
Plot properties of ECG components:
Loading data for 319 events and 106 original time points ...
Total running time of the script: ( 1 minutes 21.660 seconds)