"""
.. _ex-ica-comp:
===========================================
Compare the different ICA algorithms in MNE
===========================================
Different ICA algorithms are fit to raw MEG data, and the corresponding maps
are displayed.
"""
from time import time
import mne
from mne.datasets import sample
from mne.preprocessing import ICA
print(__doc__)
data_path = sample.data_path()
meg_path = data_path / "MEG" / "sample"
raw_fname = meg_path / "sample_audvis_filt-0-40_raw.fif"
raw = mne.io.read_raw_fif(raw_fname).crop(0, 60).pick("meg").load_data()
reject = dict(mag=5e-12, grad=4000e-13)
raw.filter(1, 30, fir_design="firwin")
def run_ica(method, fit_params=None):
ica = ICA(
n_components=20,
method=method,
fit_params=fit_params,
max_iter="auto",
rng=29,
)
t0 = time()
ica.fit(raw, reject=reject)
fit_time = time() - t0
title = f"ICA decomposition using {method} (took {fit_time:.1f}s)"
ica.plot_components(title=title)
run_ica("fastica")
run_ica("picard")
run_ica("infomax")
run_ica("infomax", fit_params=dict(extended=True))