Chapter 4: Artifact Removal with ICA¶
Continuing from Chapter 3 — Preprocessing.
Filtering and re-referencing handle broad, predictable noise; independent component analysis (ICA) handles artifacts that overlap in frequency with real brain signal — chiefly eye blinks, eye movements, and muscle activity — the same problem tackled with code in the MNE-Python track's ICA chapter.
Running ICA¶
Tools → Decompose data by ICA runs a decomposition algorithm — runica (the classic Infomax algorithm) by default, or faster options like AMICA for larger datasets — splitting the recording into as many statistically independent components as there are channels. This can take anywhere from under a minute to tens of minutes depending on data length and channel count.
Looking at components¶
Once ICA finishes, three plots (all under Plot) help identify which components are artifacts rather than brain signal:
- Component maps — a scalp topography per component; a blink component shows a sharp, symmetric pattern over the frontal electrodes.
- Component activations — each component's time course; a blink component shows large, sparse spikes lining up with visible blinks in the raw scroll view.
- Component spectra — a component dominated by muscle activity shows a broadband rise at high frequencies rather than the smooth 1/f-like shape of brain signal.
Letting a classifier help: ICLabel¶
Judging every component by eye works but is slow and inconsistent between people. The ICLabel plugin (installed the same way as ERPLAB, via File → Manage EEGLAB extensions) runs a trained classifier over every component and labels each one — Brain, Eye, Muscle, Heart, Line Noise, Channel Noise, or Other — with a confidence score, turning "does this look like a blink" into a number you can threshold consistently across subjects.
Removing the artifact components¶
Once you've marked which components are artifacts (by eye, by ICLabel, or both), Tools → Remove components from data subtracts exactly those components' contribution and reconstructs a cleaned recording — the same "remove, don't just ignore" approach as ica.apply() in MNE-Python.