PCA-LDA Decoding

Takes high gamma filtered data with event labels from multiple subjects and performs joint pca decoding

from ieeg.decoding.models import PcaLdaClassification
from ieeg.arrays.label import LabeledArray
from sklearn.metrics import ConfusionMatrixDisplay
from ieeg.decoding.decode import Decoder, classes_from_labels
from ieeg.navigate import channel_outlier_marker, trial_ieeg, outliers_to_nan
from ieeg.calc.scaling import rescale
from ieeg.timefreq.utils import crop_pad
from ieeg.timefreq import gamma
from ieeg.mt_filter import line_filter
import mne
import numpy as np
import matplotlib.pyplot as plt
WARNING: statsmodels is not installed. You will be unable to use the Naive Bayes Decoder

WARNING: sklearnex is not installed. You will be unable to use thePCA decoder acceleration

WARNING: Xgboost package is not installed. You will be unable touse the xgboost decoder

WARNING: Keras package is not installed. You will be unable to useall neural net decoders

Load Data

misc_path = mne.datasets.misc.data_path()
raw = mne.io.read_raw(misc_path / 'seeg' / 'sample_seeg_ieeg.fif',
                      preload=True)
Opening raw data file /home/docs/mne_data/MNE-misc-data/seeg/sample_seeg_ieeg.fif...
    Range : 1310640 ... 1370605 =   1311.411 ...  1371.411 secs
Ready.
Reading 0 ... 59965  =      0.000 ...    60.000 secs...

Filter the data to remove line noise

line_filter(raw, mt_bandwidth=10., n_jobs=1, copy=False, verbose=10,
            filter_length='700ms', freqs=[60], notch_widths=20)
# line_filter(raw, mt_bandwidth=10., n_jobs=-1, copy=False, verbose=10,
#             filter_length='7s', freqs=[60, 120, 180, 240],
#             notch_widths=20)
raw.plot()
Raw plot
  Using multitaper spectrum estimation with 13 DPSS windows
  Using multitaper spectrum estimation with 15 DPSS windows
Removed notch frequencies (Hz):
     60.00 :  170 windows
[Parallel(n_jobs=1)]: Done   1 tasks      | elapsed:    0.0s
Removed notch frequencies (Hz):
     60.00 :  340 windows
[Parallel(n_jobs=1)]: Done   2 tasks      | elapsed:    0.1s
Removed notch frequencies (Hz):
     60.00 :  510 windows
[Parallel(n_jobs=1)]: Done   3 tasks      | elapsed:    0.1s
Removed notch frequencies (Hz):
     60.00 :  680 windows
[Parallel(n_jobs=1)]: Done   4 tasks      | elapsed:    0.1s
Removed notch frequencies (Hz):
     60.00 :  850 windows
[Parallel(n_jobs=1)]: Done   5 tasks      | elapsed:    0.2s
Removed notch frequencies (Hz):
     60.00 : 1019 windows
[Parallel(n_jobs=1)]: Done   6 tasks      | elapsed:    0.2s
Removed notch frequencies (Hz):
     60.00 : 1189 windows
[Parallel(n_jobs=1)]: Done   7 tasks      | elapsed:    0.3s
Removed notch frequencies (Hz):
     60.00 : 1359 windows
[Parallel(n_jobs=1)]: Done   8 tasks      | elapsed:    0.3s
Removed notch frequencies (Hz):
     60.00 : 1529 windows
[Parallel(n_jobs=1)]: Done   9 tasks      | elapsed:    0.3s
Removed notch frequencies (Hz):
     60.00 : 1699 windows
[Parallel(n_jobs=1)]: Done  10 tasks      | elapsed:    0.4s
Removed notch frequencies (Hz):
     60.00 : 1869 windows
[Parallel(n_jobs=1)]: Done  11 tasks      | elapsed:    0.4s
Removed notch frequencies (Hz):
     60.00 : 2039 windows
[Parallel(n_jobs=1)]: Done  12 tasks      | elapsed:    0.5s
Removed notch frequencies (Hz):
     60.00 : 2209 windows
[Parallel(n_jobs=1)]: Done  13 tasks      | elapsed:    0.5s
Removed notch frequencies (Hz):
     60.00 : 2379 windows
[Parallel(n_jobs=1)]: Done  14 tasks      | elapsed:    0.6s
Removed notch frequencies (Hz):
     60.00 : 2549 windows
[Parallel(n_jobs=1)]: Done  15 tasks      | elapsed:    0.6s
Removed notch frequencies (Hz):
     60.00 : 2719 windows
[Parallel(n_jobs=1)]: Done  16 tasks      | elapsed:    0.7s
Removed notch frequencies (Hz):
     60.00 : 2889 windows
[Parallel(n_jobs=1)]: Done  17 tasks      | elapsed:    0.7s
Removed notch frequencies (Hz):
     60.00 : 3059 windows
[Parallel(n_jobs=1)]: Done  18 tasks      | elapsed:    0.8s
Removed notch frequencies (Hz):
     60.00 : 3229 windows
[Parallel(n_jobs=1)]: Done  19 tasks      | elapsed:    0.8s
Removed notch frequencies (Hz):
     60.00 : 3394 windows
[Parallel(n_jobs=1)]: Done  20 tasks      | elapsed:    0.9s
Removed notch frequencies (Hz):
     60.00 : 3563 windows
[Parallel(n_jobs=1)]: Done  21 tasks      | elapsed:    1.0s
Removed notch frequencies (Hz):
     60.00 : 3733 windows
[Parallel(n_jobs=1)]: Done  22 tasks      | elapsed:    1.0s
Removed notch frequencies (Hz):
     60.00 : 3903 windows
[Parallel(n_jobs=1)]: Done  23 tasks      | elapsed:    1.1s
Removed notch frequencies (Hz):
     60.00 : 4073 windows
[Parallel(n_jobs=1)]: Done  24 tasks      | elapsed:    1.2s
Removed notch frequencies (Hz):
     60.00 : 4242 windows
[Parallel(n_jobs=1)]: Done  25 tasks      | elapsed:    1.2s
Removed notch frequencies (Hz):
     60.00 : 4412 windows
[Parallel(n_jobs=1)]: Done  26 tasks      | elapsed:    1.3s
Removed notch frequencies (Hz):
     60.00 : 4582 windows
[Parallel(n_jobs=1)]: Done  27 tasks      | elapsed:    1.4s
Removed notch frequencies (Hz):
     60.00 : 4737 windows
[Parallel(n_jobs=1)]: Done  28 tasks      | elapsed:    1.5s
Removed notch frequencies (Hz):
     60.00 : 4893 windows
[Parallel(n_jobs=1)]: Done  29 tasks      | elapsed:    1.5s
Removed notch frequencies (Hz):
     60.00 : 5063 windows
[Parallel(n_jobs=1)]: Done  30 tasks      | elapsed:    1.6s
Removed notch frequencies (Hz):
     60.00 : 5233 windows
[Parallel(n_jobs=1)]: Done  31 tasks      | elapsed:    1.7s
Removed notch frequencies (Hz):
     60.00 : 5403 windows
[Parallel(n_jobs=1)]: Done  32 tasks      | elapsed:    1.8s
Removed notch frequencies (Hz):
     60.00 : 5573 windows
[Parallel(n_jobs=1)]: Done  33 tasks      | elapsed:    1.9s
Removed notch frequencies (Hz):
     60.00 : 5742 windows
[Parallel(n_jobs=1)]: Done  34 tasks      | elapsed:    2.0s
Removed notch frequencies (Hz):
     60.00 : 5912 windows
[Parallel(n_jobs=1)]: Done  35 tasks      | elapsed:    2.1s
Removed notch frequencies (Hz):
     60.00 : 6082 windows
[Parallel(n_jobs=1)]: Done  36 tasks      | elapsed:    2.2s
Removed notch frequencies (Hz):
     60.00 : 6252 windows
[Parallel(n_jobs=1)]: Done  37 tasks      | elapsed:    2.3s
Removed notch frequencies (Hz):
     60.00 : 6422 windows
[Parallel(n_jobs=1)]: Done  38 tasks      | elapsed:    2.4s
Removed notch frequencies (Hz):
     60.00 : 6546 windows
[Parallel(n_jobs=1)]: Done  39 tasks      | elapsed:    2.5s
Removed notch frequencies (Hz):
     60.00 : 6711 windows
[Parallel(n_jobs=1)]: Done  40 tasks      | elapsed:    2.6s
Removed notch frequencies (Hz):
     60.00 : 6878 windows
[Parallel(n_jobs=1)]: Done  41 tasks      | elapsed:    2.7s
Removed notch frequencies (Hz):
     60.00 : 7048 windows
[Parallel(n_jobs=1)]: Done  42 tasks      | elapsed:    2.8s
Removed notch frequencies (Hz):
     60.00 : 7218 windows
[Parallel(n_jobs=1)]: Done  43 tasks      | elapsed:    2.9s
Removed notch frequencies (Hz):
     60.00 : 7388 windows
[Parallel(n_jobs=1)]: Done  44 tasks      | elapsed:    3.0s
Removed notch frequencies (Hz):
     60.00 : 7558 windows
[Parallel(n_jobs=1)]: Done  45 tasks      | elapsed:    3.2s
Removed notch frequencies (Hz):
     60.00 : 7728 windows
[Parallel(n_jobs=1)]: Done  46 tasks      | elapsed:    3.3s
Removed notch frequencies (Hz):
     60.00 : 7898 windows
[Parallel(n_jobs=1)]: Done  47 tasks      | elapsed:    3.4s
Removed notch frequencies (Hz):
     60.00 : 8068 windows
[Parallel(n_jobs=1)]: Done  48 tasks      | elapsed:    3.5s
Removed notch frequencies (Hz):
     60.00 : 8236 windows
[Parallel(n_jobs=1)]: Done  49 tasks      | elapsed:    3.7s
Removed notch frequencies (Hz):
     60.00 : 8394 windows
[Parallel(n_jobs=1)]: Done  50 tasks      | elapsed:    3.8s
Removed notch frequencies (Hz):
     60.00 : 8562 windows
[Parallel(n_jobs=1)]: Done  51 tasks      | elapsed:    4.0s
Removed notch frequencies (Hz):
     60.00 : 8732 windows
[Parallel(n_jobs=1)]: Done  52 tasks      | elapsed:    4.1s
Removed notch frequencies (Hz):
     60.00 : 8900 windows
[Parallel(n_jobs=1)]: Done  53 tasks      | elapsed:    4.3s
Removed notch frequencies (Hz):
     60.00 : 9061 windows
[Parallel(n_jobs=1)]: Done  54 tasks      | elapsed:    4.4s
Removed notch frequencies (Hz):
     60.00 : 9211 windows
[Parallel(n_jobs=1)]: Done  55 tasks      | elapsed:    4.6s
Removed notch frequencies (Hz):
     60.00 : 9381 windows
[Parallel(n_jobs=1)]: Done  56 tasks      | elapsed:    4.7s
Removed notch frequencies (Hz):
     60.00 : 9551 windows
[Parallel(n_jobs=1)]: Done  57 tasks      | elapsed:    4.9s
Removed notch frequencies (Hz):
     60.00 : 9721 windows
[Parallel(n_jobs=1)]: Done  58 tasks      | elapsed:    5.0s
Removed notch frequencies (Hz):
     60.00 : 9891 windows
[Parallel(n_jobs=1)]: Done  59 tasks      | elapsed:    5.2s
Removed notch frequencies (Hz):
     60.00 : 10061 windows
[Parallel(n_jobs=1)]: Done  60 tasks      | elapsed:    5.4s
Removed notch frequencies (Hz):
     60.00 : 10230 windows
[Parallel(n_jobs=1)]: Done  61 tasks      | elapsed:    5.6s
Removed notch frequencies (Hz):
     60.00 : 10399 windows
[Parallel(n_jobs=1)]: Done  62 tasks      | elapsed:    5.7s
Removed notch frequencies (Hz):
     60.00 : 10569 windows
[Parallel(n_jobs=1)]: Done  63 tasks      | elapsed:    5.9s
Removed notch frequencies (Hz):
     60.00 : 10739 windows
[Parallel(n_jobs=1)]: Done  64 tasks      | elapsed:    6.1s
Removed notch frequencies (Hz):
     60.00 : 10909 windows
[Parallel(n_jobs=1)]: Done  65 tasks      | elapsed:    6.3s
Removed notch frequencies (Hz):
     60.00 : 11079 windows
[Parallel(n_jobs=1)]: Done  66 tasks      | elapsed:    6.5s
Removed notch frequencies (Hz):
     60.00 : 11249 windows
[Parallel(n_jobs=1)]: Done  67 tasks      | elapsed:    6.7s
Removed notch frequencies (Hz):
     60.00 : 11419 windows
[Parallel(n_jobs=1)]: Done  68 tasks      | elapsed:    6.9s
Removed notch frequencies (Hz):
     60.00 : 11589 windows
[Parallel(n_jobs=1)]: Done  69 tasks      | elapsed:    7.1s
Removed notch frequencies (Hz):
     60.00 : 11755 windows
[Parallel(n_jobs=1)]: Done  70 tasks      | elapsed:    7.3s
Removed notch frequencies (Hz):
     60.00 : 11925 windows
[Parallel(n_jobs=1)]: Done  71 tasks      | elapsed:    7.5s
Removed notch frequencies (Hz):
     60.00 : 12095 windows
[Parallel(n_jobs=1)]: Done  72 tasks      | elapsed:    7.8s
Removed notch frequencies (Hz):
     60.00 : 12265 windows
[Parallel(n_jobs=1)]: Done  73 tasks      | elapsed:    8.0s
Removed notch frequencies (Hz):
     60.00 : 12430 windows
[Parallel(n_jobs=1)]: Done  74 tasks      | elapsed:    8.2s
Removed notch frequencies (Hz):
     60.00 : 12600 windows
[Parallel(n_jobs=1)]: Done  75 tasks      | elapsed:    8.4s
Removed notch frequencies (Hz):
     60.00 : 12770 windows
[Parallel(n_jobs=1)]: Done  76 tasks      | elapsed:    8.7s
Removed notch frequencies (Hz):
     60.00 : 12940 windows
[Parallel(n_jobs=1)]: Done  77 tasks      | elapsed:    8.9s
Removed notch frequencies (Hz):
     60.00 : 13110 windows
[Parallel(n_jobs=1)]: Done  78 tasks      | elapsed:    9.2s
Removed notch frequencies (Hz):
     60.00 : 13280 windows
[Parallel(n_jobs=1)]: Done  79 tasks      | elapsed:    9.4s
Removed notch frequencies (Hz):
     60.00 : 13450 windows
[Parallel(n_jobs=1)]: Done  80 tasks      | elapsed:    9.7s
Removed notch frequencies (Hz):
     60.00 : 13620 windows
[Parallel(n_jobs=1)]: Done  81 tasks      | elapsed:    9.9s
Removed notch frequencies (Hz):
     60.00 : 13790 windows
[Parallel(n_jobs=1)]: Done  82 tasks      | elapsed:   10.2s
Removed notch frequencies (Hz):
     60.00 : 13960 windows
[Parallel(n_jobs=1)]: Done  83 tasks      | elapsed:   10.5s
Removed notch frequencies (Hz):
     60.00 : 14130 windows
[Parallel(n_jobs=1)]: Done  84 tasks      | elapsed:   10.7s
Removed notch frequencies (Hz):
     60.00 : 14300 windows
[Parallel(n_jobs=1)]: Done  85 tasks      | elapsed:   11.0s
Removed notch frequencies (Hz):
     60.00 : 14470 windows
[Parallel(n_jobs=1)]: Done  86 tasks      | elapsed:   11.3s
Removed notch frequencies (Hz):
     60.00 : 14640 windows
[Parallel(n_jobs=1)]: Done  87 tasks      | elapsed:   11.6s
Removed notch frequencies (Hz):
     60.00 : 14810 windows
[Parallel(n_jobs=1)]: Done  88 tasks      | elapsed:   11.9s
Removed notch frequencies (Hz):
     60.00 : 14980 windows
[Parallel(n_jobs=1)]: Done  89 tasks      | elapsed:   12.2s
Removed notch frequencies (Hz):
     60.00 : 15150 windows
[Parallel(n_jobs=1)]: Done  90 tasks      | elapsed:   12.5s
Removed notch frequencies (Hz):
     60.00 : 15320 windows
[Parallel(n_jobs=1)]: Done  91 tasks      | elapsed:   12.8s
Removed notch frequencies (Hz):
     60.00 : 15490 windows
[Parallel(n_jobs=1)]: Done  92 tasks      | elapsed:   13.1s
Removed notch frequencies (Hz):
     60.00 : 15656 windows
[Parallel(n_jobs=1)]: Done  93 tasks      | elapsed:   13.4s
Removed notch frequencies (Hz):
     60.00 : 15804 windows
[Parallel(n_jobs=1)]: Done  94 tasks      | elapsed:   13.8s
Removed notch frequencies (Hz):
     60.00 : 15931 windows
[Parallel(n_jobs=1)]: Done  95 tasks      | elapsed:   14.1s
Removed notch frequencies (Hz):
     60.00 : 16101 windows
[Parallel(n_jobs=1)]: Done  96 tasks      | elapsed:   14.4s
Removed notch frequencies (Hz):
     60.00 : 16271 windows
[Parallel(n_jobs=1)]: Done  97 tasks      | elapsed:   14.8s
Removed notch frequencies (Hz):
     60.00 : 16441 windows
[Parallel(n_jobs=1)]: Done  98 tasks      | elapsed:   15.1s
Removed notch frequencies (Hz):
     60.00 : 16608 windows
[Parallel(n_jobs=1)]: Done  99 tasks      | elapsed:   15.5s
Removed notch frequencies (Hz):
     60.00 : 16774 windows
[Parallel(n_jobs=1)]: Done 100 tasks      | elapsed:   15.8s
Removed notch frequencies (Hz):
     60.00 : 16935 windows
[Parallel(n_jobs=1)]: Done 101 tasks      | elapsed:   16.2s
Removed notch frequencies (Hz):
     60.00 : 17081 windows
[Parallel(n_jobs=1)]: Done 102 tasks      | elapsed:   16.6s
Removed notch frequencies (Hz):
     60.00 : 17204 windows
[Parallel(n_jobs=1)]: Done 103 tasks      | elapsed:   16.9s
Removed notch frequencies (Hz):
     60.00 : 17306 windows
[Parallel(n_jobs=1)]: Done 104 tasks      | elapsed:   17.3s
Removed notch frequencies (Hz):
     60.00 : 17444 windows
[Parallel(n_jobs=1)]: Done 105 tasks      | elapsed:   17.7s
Removed notch frequencies (Hz):
     60.00 : 17464 windows
[Parallel(n_jobs=1)]: Done 106 tasks      | elapsed:   18.0s
Removed notch frequencies (Hz):
     60.00 : 17470 windows
[Parallel(n_jobs=1)]: Done 107 tasks      | elapsed:   18.4s
Removed notch frequencies (Hz):
     60.00 : 17640 windows
[Parallel(n_jobs=1)]: Done 108 tasks      | elapsed:   18.8s
Removed notch frequencies (Hz):
     60.00 : 17810 windows
[Parallel(n_jobs=1)]: Done 109 tasks      | elapsed:   19.2s
Removed notch frequencies (Hz):
     60.00 : 17980 windows
[Parallel(n_jobs=1)]: Done 110 tasks      | elapsed:   19.6s
Removed notch frequencies (Hz):
     60.00 : 18150 windows
[Parallel(n_jobs=1)]: Done 111 tasks      | elapsed:   20.0s
Removed notch frequencies (Hz):
     60.00 : 18320 windows
[Parallel(n_jobs=1)]: Done 112 tasks      | elapsed:   20.4s
Removed notch frequencies (Hz):
     60.00 : 18490 windows
[Parallel(n_jobs=1)]: Done 113 tasks      | elapsed:   20.8s
Removed notch frequencies (Hz):
     60.00 : 18660 windows
[Parallel(n_jobs=1)]: Done 114 tasks      | elapsed:   21.2s
Removed notch frequencies (Hz):
     60.00 : 18826 windows
[Parallel(n_jobs=1)]: Done 115 tasks      | elapsed:   21.7s
Removed notch frequencies (Hz):
     60.00 : 18992 windows
[Parallel(n_jobs=1)]: Done 116 tasks      | elapsed:   22.1s
Removed notch frequencies (Hz):
     60.00 : 19162 windows
[Parallel(n_jobs=1)]: Done 117 tasks      | elapsed:   22.5s
Removed notch frequencies (Hz):
     60.00 : 19330 windows
[Parallel(n_jobs=1)]: Done 118 tasks      | elapsed:   23.0s
Removed notch frequencies (Hz):
     60.00 : 19496 windows
[Parallel(n_jobs=1)]: Done 119 tasks      | elapsed:   23.4s
[Parallel(n_jobs=1)]: Done 119 out of 119 | elapsed:   23.4s finished

<mne_qt_browser._pg_figure.MNEQtBrowser object at 0x74b0bfd704d0>

Preprocessing

# Mark channel outliers as bad
channel_outlier_marker(raw, 3, 2)

# Exclude bad channels, then load the good channels into memory
raw.drop_channels(raw.info['bads'])
good = raw.copy()
good.load_data()

# CAR (common average reference)
good.set_eeg_reference()
del raw
outlier round 1 channels: ['LAMY 7']
outlier round 1 channels: ['LAMY 7', 'LPHG 6']
outlier round 1 channels: ['LAMY 7', 'LPHG 6', 'LBRI 3']
outlier round 1 channels: ['LAMY 7', 'LPHG 6', 'LBRI 3', 'RAHP 3']
outlier round 2 channels: ['LAMY 7', 'LPHG 6', 'LBRI 3', 'RAHP 3', 'LENT 3']
outlier round 2 channels: ['LAMY 7', 'LPHG 6', 'LBRI 3', 'RAHP 3', 'LENT 3', 'LPIT 5']
sEEG channel type selected for re-referencing
Applying average reference.
Applying a custom ('sEEG',) reference.

High Gamma Filter

# extract the epochs of interest
ev1 = trial_ieeg(good, ["Fixation", "ISI Onset", "Go Cue", "Response"],
                 (-0.6, 0.7), preload=True)
base = trial_ieeg(good, "Fixation", (-1, 0.5), preload=True)

outliers_to_nan(ev1, outliers=10)
outliers_to_nan(base, outliers=10)

# extract high gamma power
gamma.extract(ev1, passband=(70, 150), copy=False, n_jobs=1)
gamma.extract(base, passband=(70, 150), copy=False, n_jobs=1)

# trim 0.5 seconds on the beginning and end of the data (edge artifacts)
crop_pad(ev1, "500ms")
crop_pad(base, "500ms")

# ev1["Response"]._data += np.sin(np.linspace(0, 2*np.pi, 401)) * 10
Used Annotations descriptions: [np.str_('Fixation'), np.str_('Go Cue'), np.str_('ISI Onset'), np.str_('Response')]
Not setting metadata
32 matching events found
No baseline correction applied
0 projection items activated
Using data from preloaded Raw for 32 events and 1301 original time points ...
2 bad epochs dropped
Used Annotations descriptions: [np.str_('Fixation'), np.str_('Go Cue'), np.str_('ISI Onset'), np.str_('Response')]
Not setting metadata
8 matching events found
No baseline correction applied
0 projection items activated
Using data from preloaded Raw for 8 events and 1500 original time points ...
0 bad epochs dropped

  0%|          | 0/30 [00:00<?, ?it/s]
 13%|█▎        | 4/30 [00:00<00:00, 32.07it/s]
 27%|██▋       | 8/30 [00:00<00:00, 32.41it/s]
 40%|████      | 12/30 [00:00<00:00, 32.60it/s]
 53%|█████▎    | 16/30 [00:00<00:00, 32.75it/s]
 67%|██████▋   | 20/30 [00:00<00:00, 32.77it/s]
 80%|████████  | 24/30 [00:00<00:00, 32.79it/s]
 93%|█████████▎| 28/30 [00:00<00:00, 32.85it/s]
100%|██████████| 30/30 [00:00<00:00, 32.75it/s]

  0%|          | 0/8 [00:00<?, ?it/s]
 62%|██████▎   | 5/8 [00:00<00:00, 44.93it/s]
100%|██████████| 8/8 [00:00<00:00, 46.35it/s]
General
MNE object type Epochs
Measurement date 2019-10-18 at 11:09:44 UTC
Participant sub-1
Experimenter Unknown
Acquisition
Total number of events 8
Events counts Fixation: 8
Time range -0.499 – 0.000 s
Baseline off
Sampling frequency 999.41 Hz
Time points 500
Metadata No metadata set
Channels
sEEG
Head & sensor digitization 122 points
Filters
Highpass 0.00 Hz
Lowpass 499.71 Hz


reformat data for decoding

rescale(ev1, base,
        mode='zscore',
        copy=False)

# create a LabeledArray
arr = LabeledArray.from_signal(ev1)
Applying baseline correction (mode: zscore)

Create a Decoder

cats, labels = classes_from_labels(arr.labels[0])
decoder = Decoder(cats, explained_variance=0.80,
                  n_splits=5, n_repeats=100)
cm = decoder.cv_cm(arr.__array__().swapaxes(0, 1), labels,
                   normalize='true', oversample=True)
Repetitions:   0%|          | 0/500 [00:00<?, ?it/s]
Repetitions:   0%|          | 2/500 [00:00<00:36, 13.55it/s]
Repetitions:   1%|          | 4/500 [00:00<00:35, 14.14it/s]
Repetitions:   1%|          | 6/500 [00:00<00:38, 12.79it/s]
Repetitions:   2%|▏         | 8/500 [00:00<00:39, 12.35it/s]
Repetitions:   2%|▏         | 10/500 [00:00<00:36, 13.58it/s]
Repetitions:   2%|▏         | 12/500 [00:00<00:33, 14.56it/s]
Repetitions:   3%|▎         | 14/500 [00:01<00:37, 13.02it/s]
Repetitions:   3%|▎         | 16/500 [00:01<00:39, 12.29it/s]
Repetitions:   4%|▎         | 18/500 [00:01<00:37, 12.91it/s]
Repetitions:   4%|▍         | 20/500 [00:01<00:35, 13.53it/s]
Repetitions:   4%|▍         | 22/500 [00:01<00:33, 14.08it/s]
Repetitions:   5%|▍         | 24/500 [00:01<00:38, 12.34it/s]
Repetitions:   5%|▌         | 26/500 [00:01<00:35, 13.18it/s]
Repetitions:   6%|▌         | 28/500 [00:02<00:37, 12.53it/s]
Repetitions:   6%|▌         | 30/500 [00:02<00:38, 12.34it/s]
Repetitions:   6%|▋         | 32/500 [00:02<00:39, 11.76it/s]
Repetitions:   7%|▋         | 34/500 [00:02<00:40, 11.48it/s]
Repetitions:   7%|▋         | 36/500 [00:02<00:40, 11.48it/s]
Repetitions:   8%|▊         | 38/500 [00:03<00:37, 12.25it/s]
Repetitions:   8%|▊         | 40/500 [00:03<00:35, 12.85it/s]
Repetitions:   8%|▊         | 42/500 [00:03<00:41, 11.14it/s]
Repetitions:   9%|▉         | 44/500 [00:03<00:37, 12.06it/s]
Repetitions:   9%|▉         | 46/500 [00:03<00:37, 11.97it/s]
Repetitions:  10%|▉         | 48/500 [00:03<00:35, 12.70it/s]
Repetitions:  10%|█         | 50/500 [00:03<00:32, 13.76it/s]
Repetitions:  10%|█         | 52/500 [00:04<00:33, 13.36it/s]
Repetitions:  11%|█         | 54/500 [00:04<00:35, 12.62it/s]
Repetitions:  11%|█         | 56/500 [00:04<00:33, 13.31it/s]
Repetitions:  12%|█▏        | 58/500 [00:04<00:34, 12.80it/s]
Repetitions:  12%|█▏        | 60/500 [00:04<00:34, 12.71it/s]
Repetitions:  12%|█▏        | 62/500 [00:04<00:34, 12.53it/s]
Repetitions:  13%|█▎        | 64/500 [00:05<00:37, 11.71it/s]
Repetitions:  13%|█▎        | 66/500 [00:05<00:33, 12.86it/s]
Repetitions:  14%|█▎        | 68/500 [00:05<00:31, 13.57it/s]
Repetitions:  14%|█▍        | 70/500 [00:05<00:32, 13.26it/s]
Repetitions:  14%|█▍        | 72/500 [00:05<00:34, 12.33it/s]
Repetitions:  15%|█▍        | 74/500 [00:05<00:32, 13.16it/s]
Repetitions:  15%|█▌        | 76/500 [00:05<00:33, 12.49it/s]
Repetitions:  16%|█▌        | 78/500 [00:06<00:35, 12.05it/s]
Repetitions:  16%|█▌        | 80/500 [00:06<00:31, 13.14it/s]
Repetitions:  16%|█▋        | 82/500 [00:06<00:30, 13.63it/s]
Repetitions:  17%|█▋        | 84/500 [00:06<00:29, 14.02it/s]
Repetitions:  17%|█▋        | 86/500 [00:06<00:29, 14.25it/s]
Repetitions:  18%|█▊        | 88/500 [00:06<00:27, 14.90it/s]
Repetitions:  18%|█▊        | 90/500 [00:06<00:26, 15.42it/s]
Repetitions:  18%|█▊        | 92/500 [00:07<00:28, 14.11it/s]
Repetitions:  19%|█▉        | 94/500 [00:07<00:28, 14.31it/s]
Repetitions:  19%|█▉        | 96/500 [00:07<00:27, 14.81it/s]
Repetitions:  20%|█▉        | 98/500 [00:07<00:26, 15.25it/s]
Repetitions:  20%|██        | 100/500 [00:07<00:28, 14.13it/s]
Repetitions:  20%|██        | 102/500 [00:07<00:30, 13.18it/s]
Repetitions:  21%|██        | 104/500 [00:08<00:32, 12.17it/s]
Repetitions:  21%|██        | 106/500 [00:08<00:34, 11.41it/s]
Repetitions:  22%|██▏       | 108/500 [00:08<00:36, 10.65it/s]
Repetitions:  22%|██▏       | 110/500 [00:08<00:33, 11.63it/s]
Repetitions:  22%|██▏       | 112/500 [00:08<00:33, 11.67it/s]
Repetitions:  23%|██▎       | 114/500 [00:08<00:31, 12.42it/s]
Repetitions:  23%|██▎       | 116/500 [00:09<00:31, 12.01it/s]
Repetitions:  24%|██▎       | 118/500 [00:09<00:29, 13.09it/s]
Repetitions:  24%|██▍       | 120/500 [00:09<00:27, 13.96it/s]
Repetitions:  24%|██▍       | 122/500 [00:09<00:28, 13.22it/s]
Repetitions:  25%|██▍       | 124/500 [00:09<00:26, 13.97it/s]
Repetitions:  25%|██▌       | 126/500 [00:09<00:31, 11.86it/s]
Repetitions:  26%|██▌       | 128/500 [00:09<00:29, 12.64it/s]
Repetitions:  26%|██▌       | 130/500 [00:10<00:29, 12.49it/s]
Repetitions:  26%|██▋       | 132/500 [00:10<00:28, 12.90it/s]
Repetitions:  27%|██▋       | 134/500 [00:10<00:27, 13.18it/s]
Repetitions:  27%|██▋       | 136/500 [00:10<00:26, 13.68it/s]
Repetitions:  28%|██▊       | 138/500 [00:10<00:25, 14.01it/s]
Repetitions:  28%|██▊       | 140/500 [00:10<00:24, 14.46it/s]
Repetitions:  28%|██▊       | 142/500 [00:10<00:24, 14.78it/s]
Repetitions:  29%|██▉       | 144/500 [00:11<00:26, 13.27it/s]
Repetitions:  29%|██▉       | 146/500 [00:11<00:25, 14.04it/s]
Repetitions:  30%|██▉       | 148/500 [00:11<00:24, 14.45it/s]
Repetitions:  30%|███       | 150/500 [00:11<00:29, 11.97it/s]
Repetitions:  30%|███       | 152/500 [00:11<00:27, 12.78it/s]
Repetitions:  31%|███       | 154/500 [00:11<00:28, 12.27it/s]
Repetitions:  31%|███       | 156/500 [00:12<00:25, 13.43it/s]
Repetitions:  32%|███▏      | 158/500 [00:12<00:24, 13.83it/s]
Repetitions:  32%|███▏      | 160/500 [00:12<00:23, 14.52it/s]
Repetitions:  32%|███▏      | 162/500 [00:12<00:22, 15.14it/s]
Repetitions:  33%|███▎      | 164/500 [00:12<00:24, 13.57it/s]
Repetitions:  33%|███▎      | 166/500 [00:12<00:26, 12.76it/s]
Repetitions:  34%|███▎      | 168/500 [00:12<00:24, 13.58it/s]
Repetitions:  34%|███▍      | 170/500 [00:13<00:25, 12.88it/s]
Repetitions:  34%|███▍      | 172/500 [00:13<00:26, 12.20it/s]
Repetitions:  35%|███▍      | 174/500 [00:13<00:24, 13.46it/s]
Repetitions:  35%|███▌      | 176/500 [00:13<00:22, 14.25it/s]
Repetitions:  36%|███▌      | 178/500 [00:13<00:21, 14.80it/s]
Repetitions:  36%|███▌      | 180/500 [00:13<00:20, 15.60it/s]
Repetitions:  36%|███▋      | 182/500 [00:13<00:23, 13.68it/s]
Repetitions:  37%|███▋      | 184/500 [00:14<00:21, 14.39it/s]
Repetitions:  37%|███▋      | 186/500 [00:14<00:23, 13.26it/s]
Repetitions:  38%|███▊      | 188/500 [00:14<00:24, 12.55it/s]
Repetitions:  38%|███▊      | 190/500 [00:14<00:24, 12.54it/s]
Repetitions:  38%|███▊      | 192/500 [00:14<00:23, 13.17it/s]
Repetitions:  39%|███▉      | 194/500 [00:14<00:22, 13.82it/s]
Repetitions:  39%|███▉      | 196/500 [00:14<00:21, 14.13it/s]
Repetitions:  40%|███▉      | 198/500 [00:15<00:21, 14.30it/s]
Repetitions:  40%|████      | 200/500 [00:15<00:19, 15.15it/s]
Repetitions:  40%|████      | 202/500 [00:15<00:19, 15.07it/s]
Repetitions:  41%|████      | 204/500 [00:15<00:19, 15.23it/s]
Repetitions:  41%|████      | 206/500 [00:15<00:19, 15.04it/s]
Repetitions:  42%|████▏     | 208/500 [00:15<00:21, 13.49it/s]
Repetitions:  42%|████▏     | 210/500 [00:15<00:23, 12.48it/s]
Repetitions:  42%|████▏     | 212/500 [00:16<00:22, 12.78it/s]
Repetitions:  43%|████▎     | 214/500 [00:16<00:20, 13.91it/s]
Repetitions:  43%|████▎     | 216/500 [00:16<00:21, 13.48it/s]
Repetitions:  44%|████▎     | 218/500 [00:16<00:21, 12.94it/s]
Repetitions:  44%|████▍     | 220/500 [00:16<00:22, 12.43it/s]
Repetitions:  44%|████▍     | 222/500 [00:16<00:21, 13.13it/s]
Repetitions:  45%|████▍     | 224/500 [00:17<00:21, 12.83it/s]
Repetitions:  45%|████▌     | 226/500 [00:17<00:22, 12.14it/s]
Repetitions:  46%|████▌     | 228/500 [00:17<00:23, 11.77it/s]
Repetitions:  46%|████▌     | 230/500 [00:17<00:21, 12.66it/s]
Repetitions:  46%|████▋     | 232/500 [00:17<00:20, 13.34it/s]
Repetitions:  47%|████▋     | 234/500 [00:17<00:19, 13.81it/s]
Repetitions:  47%|████▋     | 236/500 [00:17<00:20, 13.17it/s]
Repetitions:  48%|████▊     | 238/500 [00:18<00:19, 13.69it/s]
Repetitions:  48%|████▊     | 240/500 [00:18<00:20, 12.94it/s]
Repetitions:  48%|████▊     | 242/500 [00:18<00:18, 13.96it/s]
Repetitions:  49%|████▉     | 244/500 [00:18<00:18, 14.13it/s]
Repetitions:  49%|████▉     | 246/500 [00:18<00:20, 12.66it/s]
Repetitions:  50%|████▉     | 248/500 [00:18<00:18, 13.67it/s]
Repetitions:  50%|█████     | 250/500 [00:18<00:17, 14.21it/s]
Repetitions:  50%|█████     | 252/500 [00:19<00:16, 14.81it/s]
Repetitions:  51%|█████     | 254/500 [00:19<00:18, 13.43it/s]
Repetitions:  51%|█████     | 256/500 [00:19<00:18, 13.13it/s]
Repetitions:  52%|█████▏    | 258/500 [00:19<00:19, 12.50it/s]
Repetitions:  52%|█████▏    | 260/500 [00:19<00:18, 13.04it/s]
Repetitions:  52%|█████▏    | 262/500 [00:19<00:17, 13.75it/s]
Repetitions:  53%|█████▎    | 264/500 [00:19<00:16, 14.51it/s]
Repetitions:  53%|█████▎    | 266/500 [00:20<00:17, 13.53it/s]
Repetitions:  54%|█████▎    | 268/500 [00:20<00:16, 14.01it/s]
Repetitions:  54%|█████▍    | 270/500 [00:20<00:15, 14.49it/s]
Repetitions:  54%|█████▍    | 272/500 [00:20<00:16, 14.18it/s]
Repetitions:  55%|█████▍    | 274/500 [00:20<00:14, 15.17it/s]
Repetitions:  55%|█████▌    | 276/500 [00:20<00:16, 13.25it/s]
Repetitions:  56%|█████▌    | 278/500 [00:20<00:15, 14.51it/s]
Repetitions:  56%|█████▌    | 280/500 [00:21<00:17, 12.79it/s]
Repetitions:  56%|█████▋    | 282/500 [00:21<00:17, 12.26it/s]
Repetitions:  57%|█████▋    | 284/500 [00:21<00:18, 11.66it/s]
Repetitions:  57%|█████▋    | 286/500 [00:21<00:19, 11.25it/s]
Repetitions:  58%|█████▊    | 288/500 [00:21<00:17, 12.44it/s]
Repetitions:  58%|█████▊    | 290/500 [00:22<00:17, 12.00it/s]
Repetitions:  58%|█████▊    | 292/500 [00:22<00:18, 11.44it/s]
Repetitions:  59%|█████▉    | 294/500 [00:22<00:18, 11.39it/s]
Repetitions:  59%|█████▉    | 296/500 [00:22<00:17, 11.60it/s]
Repetitions:  60%|█████▉    | 298/500 [00:22<00:17, 11.65it/s]
Repetitions:  60%|██████    | 300/500 [00:22<00:16, 12.47it/s]
Repetitions:  60%|██████    | 302/500 [00:23<00:14, 13.52it/s]
Repetitions:  61%|██████    | 304/500 [00:23<00:14, 13.14it/s]
Repetitions:  61%|██████    | 306/500 [00:23<00:15, 12.65it/s]
Repetitions:  62%|██████▏   | 308/500 [00:23<00:14, 13.28it/s]
Repetitions:  62%|██████▏   | 310/500 [00:23<00:13, 13.82it/s]
Repetitions:  62%|██████▏   | 312/500 [00:23<00:13, 14.32it/s]
Repetitions:  63%|██████▎   | 314/500 [00:23<00:13, 13.89it/s]
Repetitions:  63%|██████▎   | 316/500 [00:24<00:12, 14.25it/s]
Repetitions:  64%|██████▎   | 318/500 [00:24<00:12, 15.13it/s]
Repetitions:  64%|██████▍   | 320/500 [00:24<00:12, 14.74it/s]
Repetitions:  64%|██████▍   | 322/500 [00:24<00:13, 13.67it/s]
Repetitions:  65%|██████▍   | 324/500 [00:24<00:13, 13.10it/s]
Repetitions:  65%|██████▌   | 326/500 [00:24<00:13, 12.58it/s]
Repetitions:  66%|██████▌   | 328/500 [00:24<00:12, 13.81it/s]
Repetitions:  66%|██████▌   | 330/500 [00:25<00:13, 12.46it/s]
Repetitions:  66%|██████▋   | 332/500 [00:25<00:14, 11.93it/s]
Repetitions:  67%|██████▋   | 334/500 [00:25<00:12, 13.02it/s]
Repetitions:  67%|██████▋   | 336/500 [00:25<00:13, 12.51it/s]
Repetitions:  68%|██████▊   | 338/500 [00:25<00:11, 13.68it/s]
Repetitions:  68%|██████▊   | 340/500 [00:25<00:11, 13.80it/s]
Repetitions:  68%|██████▊   | 342/500 [00:25<00:10, 14.88it/s]
Repetitions:  69%|██████▉   | 344/500 [00:26<00:11, 13.52it/s]
Repetitions:  69%|██████▉   | 346/500 [00:26<00:11, 12.87it/s]
Repetitions:  70%|██████▉   | 348/500 [00:26<00:11, 13.78it/s]
Repetitions:  70%|███████   | 350/500 [00:26<00:10, 14.51it/s]
Repetitions:  70%|███████   | 352/500 [00:26<00:12, 12.00it/s]
Repetitions:  71%|███████   | 354/500 [00:26<00:10, 13.31it/s]
Repetitions:  71%|███████   | 356/500 [00:27<00:10, 13.70it/s]
Repetitions:  72%|███████▏  | 358/500 [00:27<00:12, 11.83it/s]
Repetitions:  72%|███████▏  | 360/500 [00:27<00:11, 12.61it/s]
Repetitions:  72%|███████▏  | 362/500 [00:27<00:10, 13.66it/s]
Repetitions:  73%|███████▎  | 364/500 [00:27<00:10, 12.76it/s]
Repetitions:  73%|███████▎  | 366/500 [00:27<00:09, 13.89it/s]
Repetitions:  74%|███████▎  | 368/500 [00:27<00:10, 12.70it/s]
Repetitions:  74%|███████▍  | 370/500 [00:28<00:10, 12.18it/s]
Repetitions:  74%|███████▍  | 372/500 [00:28<00:10, 11.69it/s]
Repetitions:  75%|███████▍  | 374/500 [00:28<00:10, 11.51it/s]
Repetitions:  75%|███████▌  | 376/500 [00:28<00:10, 11.48it/s]
Repetitions:  76%|███████▌  | 378/500 [00:28<00:10, 11.52it/s]
Repetitions:  76%|███████▌  | 380/500 [00:29<00:10, 11.68it/s]
Repetitions:  76%|███████▋  | 382/500 [00:29<00:09, 12.59it/s]
Repetitions:  77%|███████▋  | 384/500 [00:29<00:08, 13.08it/s]
Repetitions:  77%|███████▋  | 386/500 [00:29<00:08, 12.70it/s]
Repetitions:  78%|███████▊  | 388/500 [00:29<00:08, 13.30it/s]
Repetitions:  78%|███████▊  | 390/500 [00:29<00:07, 13.95it/s]
Repetitions:  78%|███████▊  | 392/500 [00:29<00:08, 12.83it/s]
Repetitions:  79%|███████▉  | 394/500 [00:30<00:07, 13.72it/s]
Repetitions:  79%|███████▉  | 396/500 [00:30<00:07, 14.13it/s]
Repetitions:  80%|███████▉  | 398/500 [00:30<00:08, 11.90it/s]
Repetitions:  80%|████████  | 400/500 [00:30<00:08, 11.95it/s]
Repetitions:  80%|████████  | 402/500 [00:30<00:07, 12.37it/s]
Repetitions:  81%|████████  | 404/500 [00:30<00:07, 12.07it/s]
Repetitions:  81%|████████  | 406/500 [00:31<00:07, 13.16it/s]
Repetitions:  82%|████████▏ | 408/500 [00:31<00:07, 11.98it/s]
Repetitions:  82%|████████▏ | 410/500 [00:31<00:07, 12.49it/s]
Repetitions:  82%|████████▏ | 412/500 [00:31<00:07, 12.31it/s]
Repetitions:  83%|████████▎ | 414/500 [00:31<00:07, 11.84it/s]
Repetitions:  83%|████████▎ | 416/500 [00:31<00:07, 11.76it/s]
Repetitions:  84%|████████▎ | 418/500 [00:32<00:07, 11.51it/s]
Repetitions:  84%|████████▍ | 420/500 [00:32<00:06, 12.14it/s]
Repetitions:  84%|████████▍ | 422/500 [00:32<00:05, 13.22it/s]
Repetitions:  85%|████████▍ | 424/500 [00:32<00:06, 12.12it/s]
Repetitions:  85%|████████▌ | 426/500 [00:32<00:05, 12.85it/s]
Repetitions:  86%|████████▌ | 428/500 [00:32<00:05, 12.52it/s]
Repetitions:  86%|████████▌ | 430/500 [00:32<00:05, 13.24it/s]
Repetitions:  86%|████████▋ | 432/500 [00:33<00:05, 12.06it/s]
Repetitions:  87%|████████▋ | 434/500 [00:33<00:05, 11.85it/s]
Repetitions:  87%|████████▋ | 436/500 [00:33<00:04, 12.95it/s]
Repetitions:  88%|████████▊ | 438/500 [00:33<00:04, 13.19it/s]
Repetitions:  88%|████████▊ | 440/500 [00:33<00:04, 12.68it/s]
Repetitions:  88%|████████▊ | 442/500 [00:33<00:04, 12.16it/s]
Repetitions:  89%|████████▉ | 444/500 [00:34<00:04, 13.14it/s]
Repetitions:  89%|████████▉ | 446/500 [00:34<00:03, 13.57it/s]
Repetitions:  90%|████████▉ | 448/500 [00:34<00:03, 14.31it/s]
Repetitions:  90%|█████████ | 450/500 [00:34<00:03, 14.58it/s]
Repetitions:  90%|█████████ | 452/500 [00:34<00:03, 14.01it/s]
Repetitions:  91%|█████████ | 454/500 [00:34<00:03, 13.24it/s]
Repetitions:  91%|█████████ | 456/500 [00:34<00:03, 14.18it/s]
Repetitions:  92%|█████████▏| 458/500 [00:35<00:02, 14.46it/s]
Repetitions:  92%|█████████▏| 460/500 [00:35<00:03, 12.83it/s]
Repetitions:  92%|█████████▏| 462/500 [00:35<00:03, 12.21it/s]
Repetitions:  93%|█████████▎| 464/500 [00:35<00:02, 12.15it/s]
Repetitions:  93%|█████████▎| 466/500 [00:35<00:02, 13.45it/s]
Repetitions:  94%|█████████▎| 468/500 [00:35<00:02, 14.66it/s]
Repetitions:  94%|█████████▍| 470/500 [00:35<00:02, 14.72it/s]
Repetitions:  94%|█████████▍| 472/500 [00:36<00:02, 13.04it/s]
Repetitions:  95%|█████████▍| 474/500 [00:36<00:02, 12.32it/s]
Repetitions:  95%|█████████▌| 476/500 [00:36<00:02, 11.82it/s]
Repetitions:  96%|█████████▌| 478/500 [00:36<00:01, 11.58it/s]
Repetitions:  96%|█████████▌| 480/500 [00:36<00:01, 12.77it/s]
Repetitions:  96%|█████████▋| 482/500 [00:36<00:01, 13.45it/s]
Repetitions:  97%|█████████▋| 484/500 [00:37<00:01, 13.87it/s]
Repetitions:  97%|█████████▋| 486/500 [00:37<00:01, 13.09it/s]
Repetitions:  98%|█████████▊| 488/500 [00:37<00:00, 13.61it/s]
Repetitions:  98%|█████████▊| 490/500 [00:37<00:00, 14.47it/s]
Repetitions:  98%|█████████▊| 492/500 [00:37<00:00, 13.35it/s]
Repetitions:  99%|█████████▉| 494/500 [00:37<00:00, 12.83it/s]
Repetitions:  99%|█████████▉| 496/500 [00:38<00:00, 12.29it/s]
Repetitions: 100%|█████████▉| 498/500 [00:38<00:00, 12.97it/s]
Repetitions: 100%|██████████| 500/500 [00:38<00:00, 14.07it/s]
Repetitions: 100%|██████████| 500/500 [00:38<00:00, 13.07it/s]
fig, ax = plt.subplots()
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=cats.keys())
disp.plot(ax=ax)
plot decoding
<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay object at 0x74b0ab4e7d70>

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

Estimated memory usage: 724 MB

Related examples

High Gamma Filter

High Gamma Filter

Joint pca decoding

Joint pca decoding

Line noise filtering script

Line noise filtering script

Gallery generated by Sphinx-Gallery