Riemannian ASR versus standard ASR.#

Blum et al. (2019) replace ASR’s sample-covariance calibration with a Riemannian geometric median, making the clean-covariance estimate robust to the occasional contaminated calibration window. mne-denoise exposes this as method="riemannian_windowed" — it keeps the Riemannian robust calibration but applies a standard per-window eigendecomposition at processing time, so (unlike the MATLAB-parity method="riemannian") the cutoff knob still works.

This example runs both backends on real EEG with eye blinks (the MNE sample dataset) and compares frontal blink removal (cf. Blum 2019, Fig. 3). On this relatively clean recording the two are comparable; rASR’s documented edge — robustness when the calibration windows themselves are contaminated — is by design and is not stressed here.

References#

  • Blum, S., Jacobsen, N. S. J., Bleichner, M. G., & Debener, S. (2019). A Riemannian Modification of Artifact Subspace Reconstruction for EEG Artifact Handling. Frontiers in Human Neuroscience, 13, 141. doi:10.3389/fnhum.2019.00141

  • Chang, C.-Y., et al. (2020). Evaluation of Artifact Subspace Reconstruction… IEEE TBME, 67(4), 1114-1121. doi:10.1109/TBME.2019.2930186

Clean with standard and Riemannian-windowed ASR#

asr_std = ASR(cutoff=20.0, picks="eeg", method="standard", verbose=False)
clean_std = asr_std.fit_transform(raw.copy())

asr_rie = ASR(cutoff=20.0, picks="eeg", method="riemannian_windowed", verbose=False)
clean_rie = asr_rie.fit_transform(raw.copy())