JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

Blind Source Separation with ICA

When you have no reference channel: decomposing a recording into independent components, classifying the artifacts, and back-projecting a cleaned signal.

When there is no reference

Regression and SSP need something you can point at — a reference channel or a known topography. But many artifacts offer neither: independent muscle groups, single-channel pops, and mixtures whose artifact topography is unknown. Blind source separation asks a bolder question — can we recover the sources from the mixture alone? Independent component analysis (ICA) answers yes, under assumptions worth stating precisely.

  1. Mixing is linear and instantaneous — a good model for volume conduction, but false when sources move relative to the sensors.
  2. Sources are statistically independent and at most one is Gaussian — this non-Gaussianity is the identifiability engine.
  3. Mixing is stationary over the analysed segment — one fixed A for the whole stretch of data.
  4. At most as many sources as channels — you cannot unmix more sources than you have sensors.

The model and how it is solved

ICA seeks an unmixing matrix \mathbf{W} that recovers independent components from the data, the inverse of the mixing \mathbf{A}:

\mathbf{s} = \mathbf{W}\mathbf{x}, \qquad \mathbf{W} \approx \mathbf{A}^{-1}

The unmixing matrix W recovers component time courses s from the observed channels x.

ICA guesses the recipe that mixed the sources and runs it backwards, splitting the tangled channels into independent components — each blink, heartbeat, or brain rhythm on its own row.

\mathbf{x}
The observed channel mixture at one instant.
\mathbf{W}
The unmixing matrix that ICA learns from the data.
\mathbf{s}
The recovered independent component time courses.
\mathbf{A}^{-1}
Inverse of the unknown mixing matrix; \mathbf{W} is ICA's estimate of it.

Used this way it becomes ICA artifact removal: after unmixing, an experimenter spots which component is the eye blink.

Since Gaussian mixtures are rotationally symmetric and unidentifiable, ICA works by maximising non-Gaussianity (equivalently, minimising mutual information between components). Infomax, FastICA and AMICA differ in their contrast function and optimiser but share this logic. Two ambiguities are irreducible: you cannot recover a component's scale or sign (it trades with its column of \mathbf{A}) nor its order — which is why components come out unlabelled and must be identified afterward.

Identifying the artifact components

Once decomposed, each component wears its origin on its sleeve across the same three domains from Guide 1: a blink IC has a frontal topography, a step/spike time course and low-frequency power; a cardiac IC is ~1 Hz and ECG-correlated; a line component peaks at 50/60 Hz; a good neural IC is often dipolar (it fits an equivalent dipole with low residual). Automated classifiers of the ICLabel family score each component's probability of being brain, eye, muscle, heart, line or channel noise from exactly these features.

ICA unmixes the scalp channels into independent components — blink, heartbeat and brain — each with a distinct topography and time course.

Cleaning by back-projection

To clean, zero the artifact components and reconstruct. Keep the mixing matrix \mathbf{A}=\mathbf{W}^{-1}, set the artifact rows of the component matrix to zero with a diagonal selector \mathbf{D}, and back-project into sensor space:

\mathbf{X}_{\text{clean}} = \mathbf{A}\,\mathbf{D}\,\mathbf{W}\,\mathbf{X}, \qquad D_{ii} = \begin{cases} 1 & i \in \text{brain} \\ 0 & i \in \text{artifact} \end{cases}

Remove chosen components by zeroing their rows (D) and mapping back to sensor space; brain components are preserved with their original topographies.

Split into components, flip the keep switch to 0 for the ones you judged to be artifacts, then re-mix the survivors back into channels — so the brain components return looking exactly as they did before.

\mathbf{W}\mathbf{X}
Unmix the channels into component time courses.
\mathbf{D}
A diagonal switch matrix: 1 keeps a component, 0 deletes it.
\mathbf{A}
Re-mixing back to sensor space, restoring original topographies.
D_{ii}
The individual switch for component i.

If component 3 is a clear eye blink, set D_{33}=0 and leave every other diagonal entry at 1.

S = W @ X            # unmix into independent components
S[artifact_idx] = 0  # zero the flagged artifact components
X_clean = Ainv @ S   # Ainv = W^{-1}: back-project to channels
ICA artifact removal in three lines, once the components are flagged.

Where ICA breaks, and how to patch it

ICA is powerful but fragile in ways graduate users must respect. It is data-hungry — a rule of thumb wants on the order of k \times C^2 samples for C channels — so short or high-density recordings over-fit and split one source across many components. It assumes stationary mixing, so it degrades when electrodes shift or the subject moves. And it throws away the neural signal that shares a component with an artifact, since removal is all-or-nothing. Wavelet-enhanced ICA softens that last problem: instead of deleting an artifactual component it wavelet-thresholds it, subtracting only the large artifact transients and returning the residual neural activity to the reconstruction.