Blind source separation using preconditioned ICA on EEG

The example runs the Picard-O algorithm proposed in:

Pierre Ablin, Jean-François Cardoso, Alexandre Gramfort “Faster ICA under orthogonal constraint” ICASSP, 2018 https://arxiv.org/abs/1711.10873

# Author: Pierre Ablin <pierre.ablin@inria.fr>
#         Alexandre Gramfort <alexandre.gramfort@inria.fr>
# License: BSD 3 clause

import numpy as np
import matplotlib.pyplot as plt
import mne
from mne.datasets import sample
from scipy.stats import kurtosis

from picard import picard

print(__doc__)

Generate sample EEG data

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.filter(1, 40, n_jobs=1)  # 1Hz high pass is often helpful for fitting ICA

picks = mne.pick_types(raw.info, meg=False, eeg=True, eog=False,
                       stim=False, exclude='bads')

random_state = 0
data = raw[picks, :][0]
data = data[:, ::2]  # decimate a bit
Using default location ~/mne_data for sample...
Creating /home/circleci/mne_data
Fetching 1 file for the sample dataset ...
Downloading file 'MNE-sample-data-processed.tar.gz' from 'https://osf.io/download/86qa2?version=6' to '/home/circleci/mne_data'.

  0%|                                              | 0.00/1.65G [00:00<?, ?B/s]
  0%|                                     | 2.79M/1.65G [00:00<00:59, 27.9MB/s]
  1%|▏                                    | 9.85M/1.65G [00:00<00:30, 53.0MB/s]
  1%|▍                                    | 16.9M/1.65G [00:00<00:26, 61.2MB/s]
  1%|▌                                    | 24.0M/1.65G [00:00<00:25, 65.1MB/s]
  2%|▋                                    | 31.0M/1.65G [00:00<00:24, 66.6MB/s]
  2%|▊                                    | 38.1M/1.65G [00:00<00:23, 68.2MB/s]
  3%|█                                    | 45.4M/1.65G [00:00<00:23, 69.7MB/s]
  3%|█▏                                   | 52.7M/1.65G [00:00<00:22, 70.7MB/s]
  4%|█▎                                   | 59.7M/1.65G [00:00<00:23, 69.1MB/s]
  4%|█▍                                   | 66.7M/1.65G [00:01<00:22, 69.1MB/s]
  4%|█▋                                   | 73.6M/1.65G [00:01<00:22, 68.8MB/s]
  5%|█▊                                   | 80.5M/1.65G [00:01<00:22, 68.9MB/s]
  5%|█▉                                   | 87.4M/1.65G [00:01<00:22, 68.6MB/s]
  6%|██                                   | 94.2M/1.65G [00:01<00:23, 67.5MB/s]
  6%|██▎                                   | 101M/1.65G [00:01<00:23, 65.9MB/s]
  7%|██▍                                   | 108M/1.65G [00:01<00:25, 60.3MB/s]
  7%|██▋                                   | 114M/1.65G [00:01<00:24, 62.3MB/s]
  7%|██▊                                   | 121M/1.65G [00:01<00:23, 63.9MB/s]
  8%|██▉                                   | 128M/1.65G [00:01<00:24, 63.4MB/s]
  8%|███                                   | 134M/1.65G [00:02<00:23, 63.3MB/s]
  9%|███▏                                  | 141M/1.65G [00:02<00:23, 63.8MB/s]
  9%|███▍                                  | 147M/1.65G [00:02<00:23, 63.0MB/s]
  9%|███▌                                  | 153M/1.65G [00:02<00:23, 62.6MB/s]
 10%|███▋                                  | 160M/1.65G [00:02<00:23, 62.5MB/s]
 10%|███▊                                  | 166M/1.65G [00:02<00:23, 62.2MB/s]
 10%|███▉                                  | 172M/1.65G [00:02<00:23, 62.0MB/s]
 11%|████                                  | 178M/1.65G [00:02<00:23, 61.9MB/s]
 11%|████▏                                 | 184M/1.65G [00:02<00:23, 62.1MB/s]
 12%|████▍                                 | 191M/1.65G [00:02<00:23, 61.9MB/s]
 12%|████▌                                 | 197M/1.65G [00:03<00:23, 61.9MB/s]
 12%|████▋                                 | 203M/1.65G [00:03<00:23, 62.6MB/s]
 13%|████▊                                 | 210M/1.65G [00:03<00:23, 61.3MB/s]
 13%|████▉                                 | 216M/1.65G [00:03<00:24, 58.5MB/s]
 13%|█████                                 | 222M/1.65G [00:03<00:23, 60.3MB/s]
 14%|█████▏                                | 228M/1.65G [00:03<00:23, 60.0MB/s]
 14%|█████▍                                | 235M/1.65G [00:03<00:23, 60.9MB/s]
 15%|█████▌                                | 241M/1.65G [00:03<00:22, 62.4MB/s]
 15%|█████▋                                | 248M/1.65G [00:03<00:22, 63.2MB/s]
 15%|█████▊                                | 254M/1.65G [00:03<00:22, 63.5MB/s]
 16%|█████▉                                | 261M/1.65G [00:04<00:21, 63.9MB/s]
 16%|██████▏                               | 267M/1.65G [00:04<00:21, 64.5MB/s]
 17%|██████▎                               | 274M/1.65G [00:04<00:21, 65.0MB/s]
 17%|██████▍                               | 280M/1.65G [00:04<00:21, 65.2MB/s]
 17%|██████▌                               | 287M/1.65G [00:04<00:20, 65.6MB/s]
 18%|██████▋                               | 294M/1.65G [00:04<00:20, 65.2MB/s]
 18%|██████▉                               | 300M/1.65G [00:04<00:22, 59.1MB/s]
 19%|███████                               | 307M/1.65G [00:04<00:22, 61.2MB/s]
 19%|███████▏                              | 313M/1.65G [00:04<00:21, 62.5MB/s]
 19%|███████▎                              | 320M/1.65G [00:05<00:21, 63.2MB/s]
 20%|███████▍                              | 326M/1.65G [00:05<00:22, 58.6MB/s]
 20%|███████▋                              | 333M/1.65G [00:05<00:21, 60.3MB/s]
 21%|███████▊                              | 339M/1.65G [00:05<00:21, 61.7MB/s]
 21%|███████▉                              | 346M/1.65G [00:05<00:20, 63.1MB/s]
 21%|████████                              | 352M/1.65G [00:05<00:20, 62.2MB/s]
 22%|████████▏                             | 359M/1.65G [00:05<00:20, 63.2MB/s]
 22%|████████▍                             | 365M/1.65G [00:05<00:20, 62.7MB/s]
 22%|████████▌                             | 372M/1.65G [00:05<00:20, 63.7MB/s]
 23%|████████▋                             | 379M/1.65G [00:05<00:19, 65.7MB/s]
 23%|████████▊                             | 386M/1.65G [00:06<00:18, 66.9MB/s]
 24%|█████████                             | 393M/1.65G [00:06<00:18, 67.4MB/s]
 24%|█████████▏                            | 399M/1.65G [00:06<00:18, 67.6MB/s]
 25%|█████████▎                            | 406M/1.65G [00:06<00:18, 68.1MB/s]
 25%|█████████▌                            | 413M/1.65G [00:06<00:18, 68.7MB/s]
 25%|█████████▋                            | 420M/1.65G [00:06<00:18, 68.0MB/s]
 26%|█████████▊                            | 427M/1.65G [00:06<00:18, 67.4MB/s]
 26%|█████████▉                            | 434M/1.65G [00:06<00:18, 66.7MB/s]
 27%|██████████▏                           | 440M/1.65G [00:06<00:18, 65.4MB/s]
 27%|██████████▎                           | 447M/1.65G [00:06<00:18, 65.6MB/s]
 27%|██████████▍                           | 454M/1.65G [00:07<00:18, 64.4MB/s]
 28%|██████████▌                           | 460M/1.65G [00:07<00:18, 64.3MB/s]
 28%|██████████▋                           | 467M/1.65G [00:07<00:18, 65.0MB/s]
 29%|██████████▉                           | 473M/1.65G [00:07<00:18, 64.8MB/s]
 29%|███████████                           | 480M/1.65G [00:07<00:17, 65.2MB/s]
 29%|███████████▏                          | 486M/1.65G [00:07<00:17, 65.1MB/s]
 30%|███████████▎                          | 493M/1.65G [00:07<00:17, 64.6MB/s]
 30%|███████████▍                          | 499M/1.65G [00:07<00:17, 64.8MB/s]
 31%|███████████▋                          | 506M/1.65G [00:07<00:18, 63.4MB/s]
 31%|███████████▊                          | 512M/1.65G [00:08<00:18, 62.8MB/s]
 31%|███████████▉                          | 519M/1.65G [00:08<00:17, 63.3MB/s]
 32%|████████████                          | 525M/1.65G [00:08<00:17, 64.0MB/s]
 32%|████████████▏                         | 532M/1.65G [00:08<00:17, 63.7MB/s]
 33%|████████████▎                         | 538M/1.65G [00:08<00:17, 63.9MB/s]
 33%|████████████▌                         | 544M/1.65G [00:08<00:17, 63.5MB/s]
 33%|████████████▋                         | 551M/1.65G [00:08<00:17, 63.7MB/s]
 34%|████████████▊                         | 557M/1.65G [00:08<00:17, 62.8MB/s]
 34%|████████████▉                         | 564M/1.65G [00:08<00:17, 61.8MB/s]
 34%|█████████████                         | 570M/1.65G [00:08<00:17, 62.0MB/s]
 35%|█████████████▏                        | 576M/1.65G [00:09<00:17, 62.7MB/s]
 35%|█████████████▍                        | 583M/1.65G [00:09<00:18, 59.3MB/s]
 36%|█████████████▌                        | 589M/1.65G [00:09<00:19, 53.7MB/s]
 36%|█████████████▋                        | 594M/1.65G [00:09<00:20, 51.6MB/s]
 36%|█████████████▊                        | 600M/1.65G [00:09<00:19, 54.0MB/s]
 37%|█████████████▉                        | 606M/1.65G [00:09<00:19, 55.1MB/s]
 37%|██████████████                        | 612M/1.65G [00:09<00:18, 57.4MB/s]
 37%|██████████████▏                       | 618M/1.65G [00:09<00:17, 58.2MB/s]
 38%|██████████████▎                       | 625M/1.65G [00:09<00:17, 59.8MB/s]
 38%|██████████████▍                       | 631M/1.65G [00:10<00:17, 60.1MB/s]
 39%|██████████████▋                       | 637M/1.65G [00:10<00:16, 61.3MB/s]
 39%|██████████████▊                       | 644M/1.65G [00:10<00:16, 62.7MB/s]
 39%|██████████████▉                       | 650M/1.65G [00:10<00:15, 63.6MB/s]
 40%|███████████████                       | 657M/1.65G [00:10<00:15, 64.0MB/s]
 40%|███████████████▏                      | 663M/1.65G [00:10<00:15, 64.4MB/s]
 41%|███████████████▍                      | 670M/1.65G [00:10<00:15, 64.8MB/s]
 41%|███████████████▌                      | 677M/1.65G [00:10<00:14, 66.3MB/s]
 41%|███████████████▋                      | 684M/1.65G [00:10<00:14, 68.2MB/s]
 42%|███████████████▉                      | 691M/1.65G [00:10<00:13, 69.5MB/s]
 42%|████████████████                      | 699M/1.65G [00:11<00:13, 70.3MB/s]
 43%|████████████████▏                     | 706M/1.65G [00:11<00:13, 70.4MB/s]
 43%|████████████████▍                     | 713M/1.65G [00:11<00:13, 70.0MB/s]
 44%|████████████████▌                     | 720M/1.65G [00:11<00:13, 69.7MB/s]
 44%|████████████████▋                     | 727M/1.65G [00:11<00:13, 68.4MB/s]
 44%|████████████████▊                     | 734M/1.65G [00:11<00:13, 66.5MB/s]
 45%|█████████████████                     | 740M/1.65G [00:11<00:13, 66.5MB/s]
 45%|█████████████████▏                    | 747M/1.65G [00:11<00:13, 66.8MB/s]
 46%|█████████████████▎                    | 754M/1.65G [00:11<00:13, 67.7MB/s]
 46%|█████████████████▍                    | 761M/1.65G [00:11<00:13, 68.6MB/s]
 46%|█████████████████▋                    | 768M/1.65G [00:12<00:12, 69.3MB/s]
 47%|█████████████████▊                    | 775M/1.65G [00:12<00:12, 68.5MB/s]
 47%|█████████████████▉                    | 782M/1.65G [00:12<00:13, 66.7MB/s]
 48%|██████████████████▏                   | 789M/1.65G [00:12<00:12, 66.6MB/s]
 48%|██████████████████▎                   | 795M/1.65G [00:12<00:12, 66.4MB/s]
 49%|██████████████████▍                   | 802M/1.65G [00:12<00:12, 65.6MB/s]
 49%|██████████████████▌                   | 808M/1.65G [00:12<00:12, 65.4MB/s]
 49%|██████████████████▋                   | 815M/1.65G [00:12<00:12, 65.4MB/s]
 50%|██████████████████▉                   | 822M/1.65G [00:12<00:12, 65.5MB/s]
 50%|███████████████████                   | 828M/1.65G [00:12<00:12, 64.8MB/s]
 51%|███████████████████▏                  | 835M/1.65G [00:13<00:12, 65.5MB/s]
 51%|███████████████████▎                  | 841M/1.65G [00:13<00:12, 65.7MB/s]
 51%|███████████████████▍                  | 848M/1.65G [00:13<00:12, 64.6MB/s]
 52%|███████████████████▋                  | 855M/1.65G [00:13<00:12, 64.9MB/s]
 52%|███████████████████▊                  | 861M/1.65G [00:13<00:12, 65.4MB/s]
 53%|███████████████████▉                  | 868M/1.65G [00:13<00:11, 65.8MB/s]
 53%|████████████████████                  | 874M/1.65G [00:13<00:11, 65.2MB/s]
 53%|████████████████████▎                 | 881M/1.65G [00:13<00:12, 64.0MB/s]
 54%|████████████████████▍                 | 888M/1.65G [00:13<00:11, 64.5MB/s]
 54%|████████████████████▌                 | 894M/1.65G [00:13<00:11, 64.0MB/s]
 54%|████████████████████▋                 | 901M/1.65G [00:14<00:11, 64.6MB/s]
 55%|████████████████████▊                 | 907M/1.65G [00:14<00:11, 63.4MB/s]
 55%|█████████████████████                 | 913M/1.65G [00:14<00:11, 61.9MB/s]
 56%|█████████████████████▏                | 920M/1.65G [00:14<00:11, 62.9MB/s]
 56%|█████████████████████▎                | 926M/1.65G [00:14<00:11, 63.1MB/s]
 56%|█████████████████████▍                | 933M/1.65G [00:14<00:11, 63.6MB/s]
 57%|█████████████████████▌                | 939M/1.65G [00:14<00:11, 63.5MB/s]
 57%|█████████████████████▋                | 946M/1.65G [00:14<00:11, 63.8MB/s]
 58%|█████████████████████▉                | 952M/1.65G [00:14<00:11, 63.6MB/s]
 58%|██████████████████████                | 958M/1.65G [00:14<00:11, 63.0MB/s]
 58%|██████████████████████▏               | 965M/1.65G [00:15<00:10, 62.9MB/s]
 59%|██████████████████████▎               | 971M/1.65G [00:15<00:10, 62.9MB/s]
 59%|██████████████████████▍               | 977M/1.65G [00:15<00:11, 60.9MB/s]
 60%|██████████████████████▌               | 983M/1.65G [00:15<00:12, 55.0MB/s]
 60%|██████████████████████▊               | 989M/1.65G [00:15<00:11, 56.6MB/s]
 60%|██████████████████████▉               | 996M/1.65G [00:15<00:11, 58.0MB/s]
 61%|██████████████████████▍              | 1.00G/1.65G [00:15<00:11, 57.5MB/s]
 61%|██████████████████████▌              | 1.01G/1.65G [00:15<00:11, 58.0MB/s]
 61%|██████████████████████▋              | 1.01G/1.65G [00:15<00:10, 58.6MB/s]
 62%|██████████████████████▊              | 1.02G/1.65G [00:16<00:10, 59.6MB/s]
 62%|██████████████████████▉              | 1.03G/1.65G [00:16<00:10, 59.9MB/s]
 62%|███████████████████████              | 1.03G/1.65G [00:16<00:10, 60.6MB/s]
 63%|███████████████████████▏             | 1.04G/1.65G [00:16<00:10, 60.9MB/s]
 63%|███████████████████████▍             | 1.04G/1.65G [00:16<00:09, 61.2MB/s]
 64%|███████████████████████▌             | 1.05G/1.65G [00:16<00:09, 61.4MB/s]
 64%|███████████████████████▋             | 1.06G/1.65G [00:16<00:09, 62.2MB/s]
 64%|███████████████████████▊             | 1.06G/1.65G [00:16<00:09, 62.1MB/s]
 65%|███████████████████████▉             | 1.07G/1.65G [00:16<00:09, 62.3MB/s]
 65%|████████████████████████             | 1.08G/1.65G [00:16<00:09, 61.8MB/s]
 65%|████████████████████████▏            | 1.08G/1.65G [00:17<00:09, 62.0MB/s]
 66%|████████████████████████▎            | 1.09G/1.65G [00:17<00:09, 61.0MB/s]
 66%|████████████████████████▍            | 1.09G/1.65G [00:17<00:09, 60.3MB/s]
 67%|████████████████████████▋            | 1.10G/1.65G [00:17<00:09, 60.2MB/s]
 67%|████████████████████████▊            | 1.11G/1.65G [00:17<00:09, 59.1MB/s]
 67%|████████████████████████▉            | 1.11G/1.65G [00:17<00:09, 59.2MB/s]
 68%|█████████████████████████            | 1.12G/1.65G [00:17<00:09, 59.3MB/s]
 68%|█████████████████████████▏           | 1.12G/1.65G [00:17<00:08, 59.6MB/s]
 68%|█████████████████████████▎           | 1.13G/1.65G [00:17<00:08, 59.1MB/s]
 69%|█████████████████████████▍           | 1.14G/1.65G [00:17<00:08, 59.2MB/s]
 69%|█████████████████████████▌           | 1.14G/1.65G [00:18<00:08, 59.9MB/s]
 69%|█████████████████████████▋           | 1.15G/1.65G [00:18<00:08, 59.3MB/s]
 70%|█████████████████████████▊           | 1.15G/1.65G [00:18<00:08, 58.3MB/s]
 70%|█████████████████████████▉           | 1.16G/1.65G [00:18<00:08, 59.5MB/s]
 71%|██████████████████████████           | 1.17G/1.65G [00:18<00:08, 60.1MB/s]
 71%|██████████████████████████▎          | 1.17G/1.65G [00:18<00:07, 60.8MB/s]
 71%|██████████████████████████▍          | 1.18G/1.65G [00:18<00:07, 60.6MB/s]
 72%|██████████████████████████▌          | 1.19G/1.65G [00:18<00:07, 60.7MB/s]
 72%|██████████████████████████▋          | 1.19G/1.65G [00:18<00:07, 60.7MB/s]
 72%|██████████████████████████▊          | 1.20G/1.65G [00:18<00:07, 59.7MB/s]
 73%|██████████████████████████▉          | 1.20G/1.65G [00:19<00:07, 60.3MB/s]
 73%|███████████████████████████          | 1.21G/1.65G [00:19<00:07, 60.3MB/s]
 74%|███████████████████████████▏         | 1.22G/1.65G [00:19<00:07, 60.7MB/s]
 74%|███████████████████████████▎         | 1.22G/1.65G [00:19<00:07, 60.2MB/s]
 74%|███████████████████████████▍         | 1.23G/1.65G [00:19<00:07, 60.1MB/s]
 75%|███████████████████████████▋         | 1.23G/1.65G [00:19<00:06, 61.2MB/s]
 75%|███████████████████████████▊         | 1.24G/1.65G [00:19<00:06, 62.3MB/s]
 75%|███████████████████████████▉         | 1.25G/1.65G [00:19<00:06, 63.1MB/s]
 76%|████████████████████████████         | 1.25G/1.65G [00:19<00:06, 64.1MB/s]
 76%|████████████████████████████▏        | 1.26G/1.65G [00:19<00:06, 64.5MB/s]
 77%|████████████████████████████▎        | 1.27G/1.65G [00:20<00:06, 63.1MB/s]
 77%|████████████████████████████▍        | 1.27G/1.65G [00:20<00:06, 62.7MB/s]
 77%|████████████████████████████▋        | 1.28G/1.65G [00:20<00:05, 63.1MB/s]
 78%|████████████████████████████▊        | 1.29G/1.65G [00:20<00:05, 62.6MB/s]
 78%|████████████████████████████▉        | 1.29G/1.65G [00:20<00:05, 61.4MB/s]
 79%|█████████████████████████████        | 1.30G/1.65G [00:20<00:06, 57.6MB/s]
 79%|█████████████████████████████▏       | 1.30G/1.65G [00:20<00:06, 57.4MB/s]
 79%|█████████████████████████████▎       | 1.31G/1.65G [00:20<00:05, 59.4MB/s]
 80%|█████████████████████████████▍       | 1.32G/1.65G [00:20<00:05, 61.1MB/s]
 80%|█████████████████████████████▋       | 1.32G/1.65G [00:21<00:05, 62.9MB/s]
 80%|█████████████████████████████▊       | 1.33G/1.65G [00:21<00:05, 63.0MB/s]
 81%|█████████████████████████████▉       | 1.34G/1.65G [00:21<00:04, 63.7MB/s]
 81%|██████████████████████████████       | 1.34G/1.65G [00:21<00:04, 64.6MB/s]
 82%|██████████████████████████████▏      | 1.35G/1.65G [00:21<00:04, 64.0MB/s]
 82%|██████████████████████████████▎      | 1.36G/1.65G [00:21<00:04, 65.2MB/s]
 82%|██████████████████████████████▌      | 1.36G/1.65G [00:21<00:04, 65.0MB/s]
 83%|██████████████████████████████▋      | 1.37G/1.65G [00:21<00:04, 63.9MB/s]
 83%|██████████████████████████████▊      | 1.38G/1.65G [00:21<00:04, 63.6MB/s]
 84%|██████████████████████████████▉      | 1.38G/1.65G [00:21<00:04, 62.6MB/s]
 84%|███████████████████████████████      | 1.39G/1.65G [00:22<00:04, 60.9MB/s]
 84%|███████████████████████████████▏     | 1.40G/1.65G [00:22<00:04, 62.9MB/s]
 85%|███████████████████████████████▍     | 1.40G/1.65G [00:22<00:03, 64.2MB/s]
 85%|███████████████████████████████▌     | 1.41G/1.65G [00:22<00:03, 65.0MB/s]
 86%|███████████████████████████████▋     | 1.42G/1.65G [00:22<00:03, 65.2MB/s]
 86%|███████████████████████████████▊     | 1.42G/1.65G [00:22<00:03, 65.3MB/s]
 86%|███████████████████████████████▉     | 1.43G/1.65G [00:22<00:03, 65.8MB/s]
 87%|████████████████████████████████▏    | 1.44G/1.65G [00:22<00:03, 66.1MB/s]
 87%|████████████████████████████████▎    | 1.44G/1.65G [00:22<00:03, 65.8MB/s]
 88%|████████████████████████████████▍    | 1.45G/1.65G [00:22<00:03, 64.2MB/s]
 88%|████████████████████████████████▌    | 1.45G/1.65G [00:23<00:03, 63.4MB/s]
 88%|████████████████████████████████▋    | 1.46G/1.65G [00:23<00:03, 61.5MB/s]
 89%|████████████████████████████████▊    | 1.47G/1.65G [00:23<00:03, 60.5MB/s]
 89%|████████████████████████████████▉    | 1.47G/1.65G [00:23<00:02, 61.6MB/s]
 90%|█████████████████████████████████▏   | 1.48G/1.65G [00:23<00:02, 60.7MB/s]
 90%|█████████████████████████████████▎   | 1.49G/1.65G [00:23<00:02, 60.2MB/s]
 90%|█████████████████████████████████▍   | 1.49G/1.65G [00:23<00:02, 60.2MB/s]
 91%|█████████████████████████████████▌   | 1.50G/1.65G [00:23<00:02, 58.4MB/s]
 91%|█████████████████████████████████▋   | 1.50G/1.65G [00:23<00:02, 57.4MB/s]
 91%|█████████████████████████████████▊   | 1.51G/1.65G [00:24<00:02, 58.5MB/s]
 92%|█████████████████████████████████▉   | 1.52G/1.65G [00:24<00:02, 60.6MB/s]
 92%|██████████████████████████████████   | 1.52G/1.65G [00:24<00:02, 61.6MB/s]
 93%|██████████████████████████████████▏  | 1.53G/1.65G [00:24<00:01, 62.4MB/s]
 93%|██████████████████████████████████▍  | 1.54G/1.65G [00:24<00:01, 62.7MB/s]
 93%|██████████████████████████████████▌  | 1.54G/1.65G [00:24<00:01, 62.8MB/s]
 94%|██████████████████████████████████▋  | 1.55G/1.65G [00:24<00:01, 62.5MB/s]
 94%|██████████████████████████████████▊  | 1.55G/1.65G [00:24<00:01, 62.7MB/s]
 94%|██████████████████████████████████▉  | 1.56G/1.65G [00:24<00:01, 62.8MB/s]
 95%|███████████████████████████████████  | 1.57G/1.65G [00:24<00:01, 63.4MB/s]
 95%|███████████████████████████████████▏ | 1.57G/1.65G [00:25<00:01, 63.8MB/s]
 96%|███████████████████████████████████▍ | 1.58G/1.65G [00:25<00:01, 64.3MB/s]
 96%|███████████████████████████████████▌ | 1.59G/1.65G [00:25<00:01, 63.7MB/s]
 96%|███████████████████████████████████▋ | 1.59G/1.65G [00:25<00:00, 63.4MB/s]
 97%|███████████████████████████████████▊ | 1.60G/1.65G [00:25<00:00, 63.2MB/s]
 97%|███████████████████████████████████▉ | 1.61G/1.65G [00:25<00:00, 64.0MB/s]
 98%|████████████████████████████████████ | 1.61G/1.65G [00:25<00:00, 64.4MB/s]
 98%|████████████████████████████████████▏| 1.62G/1.65G [00:25<00:00, 64.6MB/s]
 98%|████████████████████████████████████▍| 1.63G/1.65G [00:25<00:00, 64.5MB/s]
 99%|████████████████████████████████████▌| 1.63G/1.65G [00:25<00:00, 64.3MB/s]
 99%|████████████████████████████████████▋| 1.64G/1.65G [00:26<00:00, 64.4MB/s]
100%|████████████████████████████████████▊| 1.65G/1.65G [00:26<00:00, 64.5MB/s]
100%|████████████████████████████████████▉| 1.65G/1.65G [00:26<00:00, 64.0MB/s]
  0%|                                              | 0.00/1.65G [00:00<?, ?B/s]
100%|█████████████████████████████████████| 1.65G/1.65G [00:00<00:00, 5.58TB/s]
Untarring contents of '/home/circleci/mne_data/MNE-sample-data-processed.tar.gz' to '/home/circleci/mne_data'
Attempting to create new mne-python configuration file:
/home/circleci/.mne/mne-python.json
Could not read the /home/circleci/.mne/mne-python.json json file during the writing. Assuming it is empty. Got: Expecting value: line 1 column 1 (char 0)
Download complete in 01m00s (1576.2 MB)
Opening raw data file /home/circleci/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.
Reading 0 ... 41699  =      0.000 ...   277.709 secs...
Filtering raw data in 1 contiguous segment
Setting up band-pass filter from 1 - 40 Hz

FIR filter parameters
---------------------
Designing a one-pass, zero-phase, non-causal bandpass filter:
- Windowed time-domain design (firwin) method
- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation
- Lower passband edge: 1.00
- Lower transition bandwidth: 1.00 Hz (-6 dB cutoff frequency: 0.50 Hz)
- Upper passband edge: 40.00 Hz
- Upper transition bandwidth: 10.00 Hz (-6 dB cutoff frequency: 45.00 Hz)
- Filter length: 497 samples (3.310 s)

Run ICA on data, after reducing the dimension

K, W, Y = picard(data, n_components=30, ortho=True, random_state=0)

Plot results

n_plots = 10
T_plots = 1000
order = np.argsort(kurtosis(Y[:, :T_plots], axis=1))[::-1]
models = [data[:n_plots], Y[order[:n_plots][::-1]]]
names = ['Observations (raw EEG)',
         'ICA recovered sources']

fig, axes = plt.subplots(2, 1, figsize=(7, 7))
for ii, (model, name, ax) in enumerate(zip(models, names, axes)):
    ax.set_title(name)
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
    offsets = np.max(model, axis=1) - np.min(model, axis=1)
    offsets = np.cumsum(offsets)
    ax.plot((model[:, :T_plots] + offsets[:, np.newaxis]).T, 'k')

fig.tight_layout()
plt.show()
Observations (raw EEG), ICA recovered sources

Total running time of the script: (1 minutes 7.103 seconds)

Gallery generated by Sphinx-Gallery

Fork me on GitHub