Cross-Subject SSVEP#

This example shows how to perform a cross-subject analysis on an SSVEP dataset. We will compare four pipelines :

  • Riemannian Geometry

  • CCA

  • TRCA

  • MsetCCA

We will use the SSVEP paradigm, which uses the AUC as metric.

# Authors: Sylvain Chevallier <sylvain.chevallier@uvsq.fr>
#
# License: BSD (3-clause)

import warnings

import matplotlib.pyplot as plt
import pandas as pd
from pyriemann.estimation import Covariances
from pyriemann.tangentspace import TangentSpace
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

import moabb
import moabb.analysis.plotting as moabb_plt
from moabb.analysis.chance_level import chance_by_chance
from moabb.datasets import Kalunga2016
from moabb.evaluations import CrossSubjectEvaluation
from moabb.paradigms import SSVEP, FilterBankSSVEP
from moabb.pipelines import SSVEP_CCA, SSVEP_TRCA, ExtendedSSVEPSignal, SSVEP_MsetCCA


warnings.simplefilter(action="ignore", category=FutureWarning)
warnings.simplefilter(action="ignore", category=RuntimeWarning)
moabb.set_log_level("info")

Loading Dataset#

We will load the data from all 12 subjects of the SSVEP_Exo dataset and compare four algorithms on this set. One of the algorithms could only process class associated with a stimulation frequency, we will thus drop the resting class. As the resting class is the last defined class, picking the first three classes (out of four) allows to focus only on the stimulation frequency.

Choose Paradigm#

We define the paradigms (SSVEP, SSVEP TRCA, SSVEP MsetCCA, and FilterBankSSVEP) and use the dataset Kalunga2016. All 3 SSVEP paradigms applied a bandpass filter (10-42 Hz) on the data, which include all stimuli frequencies and their first harmonics, while the FilterBankSSVEP paradigm uses as many bandpass filters as there are stimulation frequencies (here 3). For each stimulation frequency the EEG is filtered with a 1 Hz-wide bandpass filter centered on the frequency. This results in n_classes copies of the signal, filtered for each class, as used in the filterbank motor imagery paradigms.

paradigm = SSVEP(fmin=10, fmax=42, n_classes=3)
paradigm_TRCA = SSVEP(fmin=10, fmax=42, n_classes=3)
paradigm_MSET_CCA = SSVEP(fmin=10, fmax=42, n_classes=3)
paradigm_fb = FilterBankSSVEP(filters=None, n_classes=3)

Classes are defined by the frequency of the stimulation, here we use the first three frequencies of the dataset, 13, 17, and 21 Hz. The evaluation function uses a LabelEncoder, transforming them to 0, 1, and 2.

freqs = paradigm.used_events(dataset)

Create Pipelines#

Pipelines must be a dict of sklearn pipeline transformer. The first pipeline uses Riemannian geometry, by building an extended covariance matrices from the signal filtered around the considered frequency and applying a logistic regression in the tangent plane. The second pipeline relies on the above defined CCA classifier. The third pipeline relies on the TRCA algorithm, and the fourth uses the MsetCCA algorithm. Both CCA based methods (i.e. CCA and MsetCCA) used 3 CCA components.

Evaluation#

The evaluation will return a DataFrame containing an accuracy score for each subject / session of the dataset, and for each pipeline.

Results are saved into the database, so that if you add a new pipeline, it will not run again the evaluation unless a parameter has changed. Results can be overwritten if necessary.

overwrite = True  # set to True if we want to overwrite cached results

evaluation = CrossSubjectEvaluation(
    paradigm=paradigm, datasets=dataset, overwrite=overwrite
)
results = evaluation.process(pipelines)
  0%|                                              | 0.00/2.27M [00:00<?, ?B/s]
  0%|▏                                    | 11.3k/2.27M [00:00<00:37, 60.8kB/s]
  2%|▌                                     | 35.8k/2.27M [00:00<00:20, 112kB/s]
  4%|█▌                                    | 95.2k/2.27M [00:00<00:09, 225kB/s]
  7%|██▊                                    | 166k/2.27M [00:00<00:06, 308kB/s]
 11%|████▎                                  | 252k/2.27M [00:00<00:05, 388kB/s]
 18%|███████▏                               | 416k/2.27M [00:00<00:03, 599kB/s]
 23%|█████████                              | 530k/2.27M [00:01<00:02, 637kB/s]
 36%|█████████████▊                         | 808k/2.27M [00:01<00:01, 982kB/s]
 47%|█████████████████▍                   | 1.07M/2.27M [00:01<00:01, 1.18MB/s]
 61%|██████████████████████▍              | 1.38M/2.27M [00:01<00:00, 1.41MB/s]
 77%|████████████████████████████▌        | 1.76M/2.27M [00:01<00:00, 1.69MB/s]
 98%|████████████████████████████████████▎| 2.23M/2.27M [00:01<00:00, 2.07MB/s]
  0%|                                              | 0.00/2.27M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.27M/2.27M [00:00<00:00, 12.6GB/s]

  0%|                                              | 0.00/2.13M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/2.13M [00:00<00:29, 70.7kB/s]
  2%|▋                                     | 36.9k/2.13M [00:00<00:17, 120kB/s]
  4%|█▍                                    | 82.9k/2.13M [00:00<00:10, 198kB/s]
  8%|███▏                                   | 177k/2.13M [00:00<00:05, 354kB/s]
 12%|████▋                                  | 254k/2.13M [00:00<00:04, 404kB/s]
 17%|██████▌                                | 359k/2.13M [00:00<00:03, 497kB/s]
 25%|█████████▊                             | 532k/2.13M [00:01<00:02, 697kB/s]
 32%|████████████▍                          | 679k/2.13M [00:01<00:01, 774kB/s]
 47%|█████████████████▌                   | 1.01M/2.13M [00:01<00:00, 1.19MB/s]
 56%|████████████████████▌                | 1.19M/2.13M [00:01<00:00, 1.18MB/s]
 83%|██████████████████████████████▊      | 1.77M/2.13M [00:01<00:00, 1.97MB/s]
  0%|                                              | 0.00/2.13M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.13M/2.13M [00:00<00:00, 13.2GB/s]

  0%|                                              | 0.00/2.29M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.29M [00:00<06:33, 5.82kB/s]
  1%|▌                                     | 32.8k/2.29M [00:00<00:19, 115kB/s]
  4%|█▋                                    | 98.3k/2.29M [00:00<00:08, 248kB/s]
  7%|██▊                                    | 164k/2.29M [00:00<00:06, 313kB/s]
 11%|████▏                                  | 244k/2.29M [00:00<00:05, 381kB/s]
 14%|█████▌                                 | 330k/2.29M [00:00<00:04, 436kB/s]
 19%|███████▎                               | 428k/2.29M [00:01<00:03, 496kB/s]
 24%|█████████▏                             | 543k/2.29M [00:01<00:03, 569kB/s]
 29%|███████████▏                           | 657k/2.29M [00:01<00:02, 618kB/s]
 36%|█████████████▉                         | 820k/2.29M [00:01<00:01, 744kB/s]
 42%|████████████████▍                      | 968k/2.29M [00:01<00:01, 802kB/s]
 50%|███████████████████                   | 1.15M/2.29M [00:01<00:01, 904kB/s]
 57%|█████████████████████▋                | 1.31M/2.29M [00:02<00:01, 942kB/s]
 68%|█████████████████████████            | 1.56M/2.29M [00:02<00:00, 1.13MB/s]
 75%|███████████████████████████▊         | 1.72M/2.29M [00:02<00:00, 1.10MB/s]
 91%|█████████████████████████████████▌   | 2.08M/2.29M [00:02<00:00, 1.45MB/s]
  0%|                                              | 0.00/2.29M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.29M/2.29M [00:00<00:00, 14.2GB/s]

  0%|                                              | 0.00/2.06M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/2.06M [00:00<00:30, 67.1kB/s]
  2%|▊                                     | 41.0k/2.06M [00:00<00:15, 131kB/s]
  5%|█▊                                    | 95.2k/2.06M [00:00<00:08, 225kB/s]
  9%|███▎                                   | 175k/2.06M [00:00<00:05, 335kB/s]
 11%|████▎                                  | 227k/2.06M [00:00<00:05, 334kB/s]
 17%|██████▍                                | 342k/2.06M [00:00<00:03, 467kB/s]
 20%|███████▉                               | 422k/2.06M [00:01<00:03, 481kB/s]
 29%|███████████▍                           | 602k/2.06M [00:01<00:02, 693kB/s]
 35%|█████████████▌                         | 717k/2.06M [00:01<00:01, 705kB/s]
 46%|█████████████████▉                     | 945k/2.06M [00:01<00:01, 936kB/s]
 54%|████████████████████▍                 | 1.11M/2.06M [00:01<00:00, 969kB/s]
 72%|██████████████████████████▋          | 1.48M/2.06M [00:01<00:00, 1.40MB/s]
 88%|████████████████████████████████▌    | 1.81M/2.06M [00:02<00:00, 1.61MB/s]
  0%|                                              | 0.00/2.06M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.06M/2.06M [00:00<00:00, 13.1GB/s]

  0%|                                              | 0.00/2.12M [00:00<?, ?B/s]
  1%|▏                                    | 13.3k/2.12M [00:00<00:28, 74.6kB/s]
  2%|▋                                     | 41.0k/2.12M [00:00<00:16, 128kB/s]
  4%|█▌                                    | 90.1k/2.12M [00:00<00:09, 205kB/s]
  8%|███▎                                   | 179k/2.12M [00:00<00:05, 337kB/s]
 11%|████▏                                  | 229k/2.12M [00:00<00:05, 326kB/s]
 18%|██████▉                                | 376k/2.12M [00:00<00:03, 518kB/s]
 21%|████████                               | 441k/2.12M [00:01<00:03, 480kB/s]
 32%|████████████▋                          | 687k/2.12M [00:01<00:01, 803kB/s]
 42%|████████████████▌                      | 899k/2.12M [00:01<00:01, 956kB/s]
 59%|█████████████████████▉               | 1.26M/2.12M [00:01<00:00, 1.34MB/s]
 72%|██████████████████████████▌          | 1.52M/2.12M [00:01<00:00, 1.42MB/s]
 99%|████████████████████████████████████▌| 2.09M/2.12M [00:01<00:00, 2.05MB/s]
  0%|                                              | 0.00/2.12M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.12M/2.12M [00:00<00:00, 12.9GB/s]

  0%|                                              | 0.00/2.47M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.47M [00:00<00:37, 65.0kB/s]
  2%|▋                                     | 41.0k/2.47M [00:00<00:19, 127kB/s]
  4%|█▍                                    | 91.1k/2.47M [00:00<00:11, 208kB/s]
  7%|██▋                                    | 172k/2.47M [00:00<00:07, 322kB/s]
 10%|███▉                                   | 247k/2.47M [00:00<00:05, 373kB/s]
 14%|█████▎                                 | 340k/2.47M [00:00<00:04, 442kB/s]
 19%|███████▍                               | 471k/2.47M [00:01<00:03, 564kB/s]
 25%|█████████▋                             | 617k/2.47M [00:01<00:02, 674kB/s]
 32%|████████████▌                          | 798k/2.47M [00:01<00:02, 813kB/s]
 43%|███████████████▊                     | 1.06M/2.47M [00:01<00:01, 1.07MB/s]
 51%|███████████████████                  | 1.27M/2.47M [00:01<00:01, 1.14MB/s]
 67%|████████████████████████▋            | 1.65M/2.47M [00:01<00:00, 1.51MB/s]
 77%|████████████████████████████▎        | 1.89M/2.47M [00:02<00:00, 1.51MB/s]
  0%|                                              | 0.00/2.47M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.47M/2.47M [00:00<00:00, 13.3GB/s]

  0%|                                              | 0.00/2.71M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.71M [00:00<07:43, 5.85kB/s]
  1%|▍                                     | 32.8k/2.71M [00:00<00:22, 117kB/s]
  4%|█▎                                    | 95.2k/2.71M [00:00<00:10, 243kB/s]
  6%|██▌                                    | 176k/2.71M [00:00<00:07, 350kB/s]
 10%|███▊                                   | 262k/2.71M [00:00<00:05, 422kB/s]
 14%|█████▌                                 | 388k/2.71M [00:00<00:04, 553kB/s]
 19%|███████▏                               | 503k/2.71M [00:01<00:03, 613kB/s]
 27%|██████████▌                            | 732k/2.71M [00:01<00:02, 886kB/s]
 35%|█████████████▏                        | 944k/2.71M [00:01<00:01, 1.03MB/s]
 49%|██████████████████▏                  | 1.34M/2.71M [00:01<00:00, 1.49MB/s]
 63%|███████████████████████▎             | 1.71M/2.71M [00:01<00:00, 1.78MB/s]
 87%|████████████████████████████████▎    | 2.37M/2.71M [00:01<00:00, 2.51MB/s]
  0%|                                              | 0.00/2.71M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.71M/2.71M [00:00<00:00, 14.4GB/s]

  0%|                                              | 0.00/2.33M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/2.33M [00:00<00:33, 69.0kB/s]
  2%|▋                                     | 39.9k/2.33M [00:00<00:17, 131kB/s]
  4%|█▌                                    | 95.2k/2.33M [00:00<00:09, 233kB/s]
  8%|██▉                                    | 176k/2.33M [00:00<00:06, 347kB/s]
 10%|████                                   | 241k/2.33M [00:00<00:05, 374kB/s]
 15%|█████▋                                 | 339k/2.33M [00:00<00:04, 465kB/s]
 19%|███████▎                               | 437k/2.33M [00:01<00:03, 523kB/s]
 25%|█████████▊                             | 584k/2.33M [00:01<00:02, 661kB/s]
 31%|███████████▉                           | 715k/2.33M [00:01<00:02, 722kB/s]
 39%|███████████████▎                       | 911k/2.33M [00:01<00:01, 894kB/s]
 47%|█████████████████▊                    | 1.09M/2.33M [00:01<00:01, 979kB/s]
 57%|████████████████████▉                | 1.32M/2.33M [00:01<00:00, 1.14MB/s]
 65%|████████████████████████             | 1.52M/2.33M [00:02<00:00, 1.18MB/s]
 76%|████████████████████████████         | 1.76M/2.33M [00:02<00:00, 1.31MB/s]
 90%|█████████████████████████████████▍   | 2.10M/2.33M [00:02<00:00, 1.59MB/s]
  0%|                                              | 0.00/2.33M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.33M/2.33M [00:00<00:00, 13.9GB/s]

  0%|                                              | 0.00/2.27M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/2.27M [00:00<00:44, 51.0kB/s]
  2%|▋                                     | 39.9k/2.27M [00:00<00:20, 109kB/s]
  4%|█▌                                    | 93.2k/2.27M [00:00<00:10, 198kB/s]
  8%|███                                    | 177k/2.27M [00:00<00:06, 337kB/s]
 12%|████▌                                  | 263k/2.27M [00:00<00:04, 405kB/s]
 17%|██████▍                                | 377k/2.27M [00:01<00:03, 504kB/s]
 22%|████████▍                              | 488k/2.27M [00:01<00:03, 562kB/s]
 29%|███████████▍                           | 668k/2.27M [00:01<00:02, 731kB/s]
 37%|██████████████▌                        | 848k/2.27M [00:01<00:01, 847kB/s]
 49%|██████████████████                   | 1.11M/2.27M [00:01<00:01, 1.08MB/s]
 60%|██████████████████████               | 1.35M/2.27M [00:01<00:00, 1.21MB/s]
 78%|████████████████████████████▋        | 1.76M/2.27M [00:02<00:00, 1.60MB/s]
 93%|██████████████████████████████████▌  | 2.12M/2.27M [00:02<00:00, 1.78MB/s]
  0%|                                              | 0.00/2.27M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.27M/2.27M [00:00<00:00, 13.3GB/s]

  0%|                                              | 0.00/1.99M [00:00<?, ?B/s]
  0%|                                     | 1.02k/1.99M [00:00<05:51, 5.66kB/s]
  2%|▋                                     | 32.8k/1.99M [00:00<00:17, 115kB/s]
  5%|█▉                                    | 98.3k/1.99M [00:00<00:07, 250kB/s]
  9%|███▌                                   | 180k/1.99M [00:00<00:05, 357kB/s]
 14%|█████▎                                 | 272k/1.99M [00:00<00:03, 440kB/s]
 22%|████████▌                              | 438k/1.99M [00:00<00:02, 651kB/s]
 30%|███████████▊                           | 602k/1.99M [00:01<00:01, 782kB/s]
 45%|█████████████████▏                    | 897k/1.99M [00:01<00:00, 1.13MB/s]
 62%|██████████████████████▊              | 1.22M/1.99M [00:01<00:00, 1.43MB/s]
 86%|███████████████████████████████▉     | 1.71M/1.99M [00:01<00:00, 1.96MB/s]
  0%|                                              | 0.00/1.99M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 1.99M/1.99M [00:00<00:00, 11.5GB/s]

  0%|                                              | 0.00/2.98M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.98M [00:00<08:43, 5.69kB/s]
  1%|▌                                     | 41.0k/2.98M [00:00<00:20, 143kB/s]
  3%|█▏                                    | 95.2k/2.98M [00:00<00:12, 232kB/s]
  5%|█▉                                     | 143k/2.98M [00:00<00:10, 260kB/s]
  8%|███▏                                   | 242k/2.98M [00:00<00:07, 388kB/s]
 10%|███▊                                   | 289k/2.98M [00:00<00:07, 358kB/s]
 15%|█████▋                                 | 435k/2.98M [00:01<00:04, 543kB/s]
 19%|███████▍                               | 566k/2.98M [00:01<00:03, 633kB/s]
 28%|██████████▊                            | 827k/2.98M [00:01<00:02, 950kB/s]
 33%|████████████▊                          | 975k/2.98M [00:01<00:02, 945kB/s]
 49%|█████████████████▉                   | 1.45M/2.98M [00:01<00:00, 1.57MB/s]
 63%|███████████████████████▍             | 1.89M/2.98M [00:01<00:00, 1.94MB/s]
 87%|████████████████████████████████▏    | 2.59M/2.98M [00:02<00:00, 2.69MB/s]
  0%|                                              | 0.00/2.98M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.98M/2.98M [00:00<00:00, 17.5GB/s]

  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.72M [00:00<00:39, 68.8kB/s]
  1%|▌                                     | 36.9k/2.72M [00:00<00:22, 118kB/s]
  3%|█▎                                    | 92.2k/2.72M [00:00<00:11, 222kB/s]
  6%|██▎                                    | 164k/2.72M [00:00<00:08, 313kB/s]
 10%|███▉                                   | 276k/2.72M [00:00<00:05, 457kB/s]
 14%|█████▍                                 | 381k/2.72M [00:00<00:04, 527kB/s]
 22%|████████▌                              | 598k/2.72M [00:01<00:02, 804kB/s]
 29%|███████████▏                           | 778k/2.72M [00:01<00:02, 915kB/s]
 41%|███████████████▎                     | 1.12M/2.72M [00:01<00:01, 1.31MB/s]
 51%|██████████████████▊                  | 1.38M/2.72M [00:01<00:00, 1.42MB/s]
 72%|██████████████████████████▌          | 1.95M/2.72M [00:01<00:00, 2.10MB/s]
 92%|█████████████████████████████████▉   | 2.49M/2.72M [00:01<00:00, 2.51MB/s]
  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.72M/2.72M [00:00<00:00, 15.5GB/s]

  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.74M [00:00<00:41, 65.4kB/s]
  1%|▌                                     | 39.9k/2.74M [00:00<00:21, 124kB/s]
  4%|█▎                                    | 97.3k/2.74M [00:00<00:11, 226kB/s]
  6%|██▌                                    | 176k/2.74M [00:00<00:07, 327kB/s]
 10%|███▊                                   | 270k/2.74M [00:00<00:05, 419kB/s]
 14%|█████▍                                 | 378k/2.74M [00:00<00:04, 502kB/s]
 21%|████████▏                              | 574k/2.74M [00:01<00:02, 735kB/s]
 28%|██████████▉                            | 770k/2.74M [00:01<00:02, 888kB/s]
 41%|███████████████▎                     | 1.13M/2.74M [00:01<00:01, 1.31MB/s]
 54%|████████████████████▏                | 1.49M/2.74M [00:01<00:00, 1.59MB/s]
 80%|█████████████████████████████▍       | 2.18M/2.74M [00:01<00:00, 2.41MB/s]
  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.74M/2.74M [00:00<00:00, 16.7GB/s]

  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.74M [00:00<07:45, 5.88kB/s]
  1%|▍                                     | 30.7k/2.74M [00:00<00:24, 110kB/s]
  4%|█▎                                    | 96.3k/2.74M [00:00<00:10, 250kB/s]
  6%|██▎                                    | 161k/2.74M [00:00<00:08, 316kB/s]
  8%|███▏                                   | 226k/2.74M [00:00<00:07, 356kB/s]
 11%|████▍                                  | 307k/2.74M [00:00<00:05, 414kB/s]
 14%|█████▎                                 | 373k/2.74M [00:01<00:05, 418kB/s]
 17%|██████▍                                | 455k/2.74M [00:01<00:05, 455kB/s]
 21%|████████▎                              | 586k/2.74M [00:01<00:03, 580kB/s]
 25%|█████████▋                             | 684k/2.74M [00:01<00:03, 599kB/s]
 33%|████████████▊                          | 896k/2.74M [00:01<00:02, 838kB/s]
 41%|███████████████▏                     | 1.13M/2.74M [00:01<00:01, 1.04MB/s]
 54%|████████████████████                 | 1.48M/2.74M [00:02<00:00, 1.43MB/s]
 66%|████████████████████████▍            | 1.81M/2.74M [00:02<00:00, 1.64MB/s]
 89%|████████████████████████████████▉    | 2.43M/2.74M [00:02<00:00, 2.37MB/s]
  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.74M/2.74M [00:00<00:00, 15.5GB/s]

  0%|                                              | 0.00/2.73M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.73M [00:00<00:40, 66.9kB/s]
  2%|▌                                     | 41.0k/2.73M [00:00<00:20, 130kB/s]
  3%|█▏                                    | 82.9k/2.73M [00:00<00:13, 190kB/s]
  7%|██▌                                    | 181k/2.73M [00:00<00:07, 356kB/s]
  9%|███▌                                   | 247k/2.73M [00:00<00:06, 377kB/s]
 14%|█████▌                                 | 389k/2.73M [00:00<00:04, 553kB/s]
 18%|██████▉                                | 487k/2.73M [00:01<00:03, 575kB/s]
 27%|██████████▋                            | 750k/2.73M [00:01<00:02, 918kB/s]
 36%|█████████████▊                        | 994k/2.73M [00:01<00:01, 1.11MB/s]
 50%|██████████████████▌                  | 1.37M/2.73M [00:01<00:00, 1.50MB/s]
 65%|███████████████████████▉             | 1.76M/2.73M [00:01<00:00, 1.80MB/s]
 86%|███████████████████████████████▉     | 2.35M/2.73M [00:01<00:00, 2.38MB/s]
  0%|                                              | 0.00/2.73M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.73M/2.73M [00:00<00:00, 15.3GB/s]

  0%|                                              | 0.00/3.97M [00:00<?, ?B/s]
  0%|                                     | 11.3k/3.97M [00:00<01:00, 64.9kB/s]
  1%|▎                                     | 36.9k/3.97M [00:00<00:32, 121kB/s]
  2%|▉                                     | 94.2k/3.97M [00:00<00:16, 231kB/s]
  4%|█▋                                     | 174k/3.97M [00:00<00:11, 341kB/s]
  7%|██▊                                    | 284k/3.97M [00:00<00:07, 468kB/s]
 11%|████▎                                  | 440k/3.97M [00:00<00:05, 649kB/s]
 14%|█████▌                                 | 572k/3.97M [00:01<00:04, 714kB/s]
 21%|████████▏                             | 850k/3.97M [00:01<00:02, 1.05MB/s]
 28%|██████████▏                          | 1.10M/3.97M [00:01<00:02, 1.22MB/s]
 37%|█████████████▊                       | 1.49M/3.97M [00:01<00:01, 1.61MB/s]
 49%|█████████████████▉                   | 1.93M/3.97M [00:01<00:01, 1.99MB/s]
 64%|███████████████████████▊             | 2.55M/3.97M [00:01<00:00, 2.59MB/s]
 81%|██████████████████████████████       | 3.22M/3.97M [00:02<00:00, 3.11MB/s]
  0%|                                              | 0.00/3.97M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.97M/3.97M [00:00<00:00, 16.5GB/s]

  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
  0%|                                     | 5.12k/2.72M [00:00<01:41, 26.9kB/s]
  2%|▌                                     | 41.0k/2.72M [00:00<00:20, 134kB/s]
  3%|█▏                                    | 87.0k/2.72M [00:00<00:13, 201kB/s]
  7%|██▌                                    | 180k/2.72M [00:00<00:07, 345kB/s]
  9%|███▋                                   | 257k/2.72M [00:00<00:06, 392kB/s]
 15%|█████▊                                 | 402k/2.72M [00:00<00:04, 565kB/s]
 20%|███████▋                               | 532k/2.72M [00:01<00:03, 644kB/s]
 27%|██████████▋                            | 745k/2.72M [00:01<00:02, 859kB/s]
 37%|█████████████▋                       | 1.01M/2.72M [00:01<00:01, 1.09MB/s]
 47%|█████████████████▍                   | 1.29M/2.72M [00:01<00:01, 1.29MB/s]
 66%|████████████████████████▎            | 1.79M/2.72M [00:01<00:00, 1.86MB/s]
 82%|██████████████████████████████▎      | 2.23M/2.72M [00:01<00:00, 2.13MB/s]
  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.72M/2.72M [00:00<00:00, 15.4GB/s]

  0%|                                              | 0.00/2.82M [00:00<?, ?B/s]
  0%|▏                                    | 13.3k/2.82M [00:00<00:41, 66.8kB/s]
  1%|▍                                    | 32.8k/2.82M [00:00<00:29, 95.5kB/s]
  3%|█▎                                    | 95.2k/2.82M [00:00<00:12, 222kB/s]
  6%|██▎                                    | 171k/2.82M [00:00<00:08, 316kB/s]
  8%|███▎                                   | 237k/2.82M [00:00<00:07, 348kB/s]
 14%|█████▎                                 | 383k/2.82M [00:01<00:04, 536kB/s]
 18%|██████▉                                | 505k/2.82M [00:01<00:03, 607kB/s]
 25%|█████████▉                             | 717k/2.82M [00:01<00:02, 831kB/s]
 32%|████████████▋                          | 913k/2.82M [00:01<00:02, 951kB/s]
 45%|████████████████▍                    | 1.26M/2.82M [00:01<00:01, 1.31MB/s]
 58%|█████████████████████▍               | 1.63M/2.82M [00:01<00:00, 1.63MB/s]
 75%|███████████████████████████▊         | 2.12M/2.82M [00:01<00:00, 2.06MB/s]
 98%|████████████████████████████████████▏| 2.76M/2.82M [00:02<00:00, 2.63MB/s]
  0%|                                              | 0.00/2.82M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.82M/2.82M [00:00<00:00, 17.8GB/s]

  0%|                                              | 0.00/2.77M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.77M [00:00<07:53, 5.84kB/s]
  1%|▌                                     | 41.0k/2.77M [00:00<00:18, 147kB/s]
  3%|█▎                                    | 95.2k/2.77M [00:00<00:11, 239kB/s]
  5%|█▉                                     | 140k/2.77M [00:00<00:10, 260kB/s]
  8%|███                                    | 214k/2.77M [00:00<00:07, 339kB/s]
 10%|████                                   | 288k/2.77M [00:00<00:06, 386kB/s]
 15%|█████▋                                 | 402k/2.77M [00:01<00:04, 504kB/s]
 19%|███████▎                               | 516k/2.77M [00:01<00:03, 579kB/s]
 26%|██████████                             | 713k/2.77M [00:01<00:02, 798kB/s]
 34%|████████████▉                         | 941k/2.77M [00:01<00:01, 1.01MB/s]
 45%|████████████████▌                    | 1.24M/2.77M [00:01<00:01, 1.29MB/s]
 59%|█████████████████████▉               | 1.64M/2.77M [00:01<00:00, 1.71MB/s]
 75%|███████████████████████████▋         | 2.07M/2.77M [00:02<00:00, 2.03MB/s]
  0%|                                              | 0.00/2.77M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.77M/2.77M [00:00<00:00, 9.28GB/s]

  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
  0%|▏                                    | 11.3k/2.72M [00:00<00:45, 59.2kB/s]
  1%|▌                                     | 36.9k/2.72M [00:00<00:23, 114kB/s]
  3%|█▏                                    | 86.0k/2.72M [00:00<00:13, 198kB/s]
  6%|██▏                                    | 152k/2.72M [00:00<00:09, 277kB/s]
  7%|██▉                                    | 201k/2.72M [00:00<00:08, 287kB/s]
 11%|████▎                                  | 297k/2.72M [00:00<00:06, 391kB/s]
 15%|█████▉                                 | 412k/2.72M [00:01<00:04, 495kB/s]
 20%|███████▊                               | 543k/2.72M [00:01<00:03, 593kB/s]
 27%|██████████▌                            | 738k/2.72M [00:01<00:02, 786kB/s]
 33%|████████████▋                          | 886k/2.72M [00:01<00:02, 826kB/s]
 45%|████████████████▌                    | 1.21M/2.72M [00:01<00:01, 1.19MB/s]
 52%|███████████████████▍                 | 1.43M/2.72M [00:01<00:01, 1.23MB/s]
 72%|██████████████████████████▋          | 1.97M/2.72M [00:02<00:00, 1.87MB/s]
 92%|██████████████████████████████████   | 2.50M/2.72M [00:02<00:00, 2.32MB/s]
  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.72M/2.72M [00:00<00:00, 16.8GB/s]

  0%|                                              | 0.00/2.75M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.75M [00:00<00:39, 68.9kB/s]
  1%|▌                                     | 39.9k/2.75M [00:00<00:21, 128kB/s]
  3%|█▎                                    | 93.2k/2.75M [00:00<00:12, 221kB/s]
  5%|██                                     | 143k/2.75M [00:00<00:10, 258kB/s]
  8%|██▉                                    | 207k/2.75M [00:00<00:08, 309kB/s]
 11%|████▎                                  | 305k/2.75M [00:00<00:05, 414kB/s]
 13%|█████▏                                 | 370k/2.75M [00:01<00:05, 412kB/s]
 19%|███████▌                               | 535k/2.75M [00:01<00:03, 612kB/s]
 24%|█████████▍                             | 666k/2.75M [00:01<00:03, 673kB/s]
 35%|█████████████▍                        | 976k/2.75M [00:01<00:01, 1.07MB/s]
 47%|█████████████████▎                   | 1.29M/2.75M [00:01<00:01, 1.34MB/s]
 64%|███████████████████████▋             | 1.76M/2.75M [00:01<00:00, 1.84MB/s]
 81%|█████████████████████████████▊       | 2.22M/2.75M [00:02<00:00, 2.16MB/s]
  0%|                                              | 0.00/2.75M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.75M/2.75M [00:00<00:00, 15.7GB/s]

  0%|                                              | 0.00/3.26M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/3.26M [00:00<00:50, 65.0kB/s]
  1%|▍                                     | 41.0k/3.26M [00:00<00:24, 130kB/s]
  3%|█                                     | 93.2k/3.26M [00:00<00:14, 222kB/s]
  5%|█▉                                     | 160k/3.26M [00:00<00:10, 303kB/s]
  6%|██▌                                    | 212k/3.26M [00:00<00:09, 316kB/s]
 10%|███▋                                   | 313k/3.26M [00:00<00:06, 432kB/s]
 12%|████▌                                  | 377k/3.26M [00:01<00:06, 426kB/s]
 17%|██████▌                                | 554k/3.26M [00:01<00:04, 657kB/s]
 20%|███████▉                               | 668k/3.26M [00:01<00:03, 683kB/s]
 30%|███████████▏                          | 963k/3.26M [00:01<00:02, 1.06MB/s]
 35%|████████████▉                        | 1.14M/3.26M [00:01<00:01, 1.10MB/s]
 52%|███████████████████                  | 1.68M/3.26M [00:01<00:00, 1.83MB/s]
 67%|████████████████████████▋            | 2.17M/3.26M [00:02<00:00, 2.23MB/s]
 91%|█████████████████████████████████▌   | 2.96M/3.26M [00:02<00:00, 3.10MB/s]
  0%|                                              | 0.00/3.26M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.26M/3.26M [00:00<00:00, 18.4GB/s]

  0%|                                              | 0.00/3.33M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/3.33M [00:00<00:50, 65.2kB/s]
  1%|▍                                     | 39.9k/3.33M [00:00<00:26, 122kB/s]
  3%|█                                     | 92.2k/3.33M [00:00<00:15, 209kB/s]
  4%|█▋                                     | 142k/3.33M [00:00<00:12, 247kB/s]
  7%|██▋                                    | 233k/3.33M [00:00<00:08, 357kB/s]
  9%|███▎                                   | 286k/3.33M [00:01<00:08, 344kB/s]
 12%|████▋                                  | 399k/3.33M [00:01<00:06, 457kB/s]
 15%|█████▉                                 | 510k/3.33M [00:01<00:05, 526kB/s]
 19%|███████▎                               | 625k/3.33M [00:01<00:04, 579kB/s]
 22%|████████▋                              | 738k/3.33M [00:01<00:04, 615kB/s]
 26%|██████████▏                            | 869k/3.33M [00:01<00:03, 671kB/s]
 29%|███████████▎                           | 968k/3.33M [00:01<00:03, 650kB/s]
 34%|████████████▋                         | 1.12M/3.33M [00:02<00:03, 726kB/s]
 39%|██████████████▉                       | 1.31M/3.33M [00:02<00:02, 867kB/s]
 43%|████████████████▍                     | 1.44M/3.33M [00:02<00:02, 847kB/s]
 52%|███████████████████                  | 1.72M/3.33M [00:02<00:01, 1.10MB/s]
 59%|█████████████████████▋               | 1.95M/3.33M [00:02<00:01, 1.19MB/s]
 69%|█████████████████████████▋           | 2.31M/3.33M [00:02<00:00, 1.49MB/s]
 78%|████████████████████████████▊        | 2.59M/3.33M [00:03<00:00, 1.56MB/s]
 92%|██████████████████████████████████▏  | 3.08M/3.33M [00:03<00:00, 1.99MB/s]
  0%|                                              | 0.00/3.33M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.33M/3.33M [00:00<00:00, 16.7GB/s]

  0%|                                              | 0.00/3.23M [00:00<?, ?B/s]
  0%|▏                                    | 13.3k/3.23M [00:00<00:42, 75.4kB/s]
  1%|▍                                     | 41.0k/3.23M [00:00<00:24, 130kB/s]
  3%|█▏                                    | 97.3k/3.23M [00:00<00:13, 229kB/s]
  5%|█▉                                     | 165k/3.23M [00:00<00:10, 303kB/s]
  8%|██▉                                    | 247k/3.23M [00:00<00:07, 377kB/s]
 10%|███▉                                   | 331k/3.23M [00:00<00:06, 426kB/s]
 14%|█████▎                                 | 440k/3.23M [00:01<00:05, 509kB/s]
 16%|██████                                 | 506k/3.23M [00:01<00:05, 477kB/s]
 22%|████████▋                              | 719k/3.23M [00:01<00:03, 742kB/s]
 27%|██████████▋                            | 882k/3.23M [00:01<00:02, 826kB/s]
 38%|██████████████                       | 1.23M/3.23M [00:01<00:01, 1.23MB/s]
 46%|█████████████████                    | 1.49M/3.23M [00:01<00:01, 1.35MB/s]
 62%|███████████████████████              | 2.01M/3.23M [00:02<00:00, 1.93MB/s]
 81%|██████████████████████████████▏      | 2.63M/3.23M [00:02<00:00, 2.51MB/s]
  0%|                                              | 0.00/3.23M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.23M/3.23M [00:00<00:00, 16.5GB/s]

  0%|                                              | 0.00/6.92M [00:00<?, ?B/s]
  0%|                                     | 12.3k/6.92M [00:00<01:40, 68.7kB/s]
  1%|▏                                     | 39.9k/6.92M [00:00<00:54, 127kB/s]
  1%|▌                                     | 93.2k/6.92M [00:00<00:31, 216kB/s]
  2%|▊                                      | 146k/6.92M [00:00<00:26, 260kB/s]
  3%|█▎                                     | 240k/6.92M [00:00<00:17, 373kB/s]
  4%|█▌                                     | 278k/6.92M [00:00<00:20, 327kB/s]
  6%|██▎                                    | 415k/6.92M [00:01<00:13, 498kB/s]
  8%|██▉                                    | 531k/6.92M [00:01<00:11, 569kB/s]
 10%|████                                   | 711k/6.92M [00:01<00:08, 738kB/s]
 12%|████▌                                  | 809k/6.92M [00:01<00:08, 699kB/s]
 15%|█████▋                                | 1.04M/6.92M [00:01<00:06, 920kB/s]
 19%|██████▉                              | 1.30M/6.92M [00:01<00:04, 1.13MB/s]
 22%|████████▏                            | 1.53M/6.92M [00:02<00:04, 1.22MB/s]
 28%|██████████▎                          | 1.92M/6.92M [00:02<00:03, 1.59MB/s]
 33%|████████████▏                        | 2.28M/6.92M [00:02<00:02, 1.78MB/s]
 39%|██████████████▍                      | 2.71M/6.92M [00:02<00:02, 2.04MB/s]
 46%|████████████████▉                    | 3.18M/6.92M [00:02<00:01, 2.31MB/s]
 52%|███████████████████▎                 | 3.62M/6.92M [00:02<00:01, 2.44MB/s]
 59%|█████████████████████▊               | 4.08M/6.92M [00:03<00:01, 2.56MB/s]
 65%|███████████████████████▉             | 4.49M/6.92M [00:03<00:00, 2.55MB/s]
 71%|██████████████████████████▎          | 4.93M/6.92M [00:03<00:00, 2.60MB/s]
 77%|████████████████████████████▌        | 5.34M/6.92M [00:03<00:00, 2.59MB/s]
 83%|██████████████████████████████▊      | 5.76M/6.92M [00:03<00:00, 2.60MB/s]
 89%|█████████████████████████████████    | 6.19M/6.92M [00:03<00:00, 2.61MB/s]
 95%|███████████████████████████████████▎ | 6.60M/6.92M [00:04<00:00, 2.59MB/s]
  0%|                                              | 0.00/6.92M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 6.92M/6.92M [00:00<00:00, 36.0GB/s]

  0%|                                              | 0.00/5.35M [00:00<?, ?B/s]
  0%|                                     | 13.3k/5.35M [00:00<01:12, 73.3kB/s]
  1%|▎                                     | 41.0k/5.35M [00:00<00:41, 128kB/s]
  2%|▋                                     | 95.2k/5.35M [00:00<00:23, 221kB/s]
  3%|█▎                                     | 176k/5.35M [00:00<00:15, 330kB/s]
  5%|█▉                                     | 271k/5.35M [00:00<00:11, 424kB/s]
  7%|██▉                                    | 399k/5.35M [00:00<00:09, 549kB/s]
 11%|████                                   | 563k/5.35M [00:01<00:06, 702kB/s]
 14%|█████▍                                 | 742k/5.35M [00:01<00:05, 832kB/s]
 18%|███████                               | 988k/5.35M [00:01<00:04, 1.05MB/s]
 24%|████████▊                            | 1.28M/5.35M [00:01<00:03, 1.29MB/s]
 31%|███████████▌                         | 1.68M/5.35M [00:01<00:02, 1.64MB/s]
 39%|██████████████▌                      | 2.10M/5.35M [00:01<00:01, 1.94MB/s]
 49%|██████████████████▎                  | 2.64M/5.35M [00:02<00:01, 2.37MB/s]
 62%|██████████████████████▊              | 3.29M/5.35M [00:02<00:00, 2.88MB/s]
 80%|█████████████████████████████▌       | 4.28M/5.35M [00:02<00:00, 3.85MB/s]
 99%|████████████████████████████████████▋| 5.31M/5.35M [00:02<00:00, 4.62MB/s]
  0%|                                              | 0.00/5.35M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 5.35M/5.35M [00:00<00:00, 28.1GB/s]

Filter bank processing, determine the filter automatically from the stimulation frequency values of events.

TRCA processing also relies on filter bank that is automatically designed.

MsetCCA processing

After processing the four, we simply concatenate the results.

Plot Results#

Here we display the results using the MOABB score plot with chance level annotations. The 3-class SSVEP paradigm has a theoretical chance level of 33.3%.

chance_levels = chance_by_chance(results, alpha=[0.05, 0.01])

fig, _ = moabb_plt.score_plot(results, chance_level=chance_levels)
plt.show()
plot cross subject ssvep

Total running time of the script: (10 minutes 10.225 seconds)

Estimated memory usage: 350 MB

Gallery generated by Sphinx-Gallery