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%|                                     | 6.14k/2.27M [00:00<00:43, 51.7kB/s]
  4%|█▋                                    | 98.3k/2.27M [00:00<00:06, 347kB/s]
 11%|████▍                                  | 259k/2.27M [00:00<00:03, 586kB/s]
 21%|████████▎                              | 484k/2.27M [00:00<00:02, 824kB/s]
 34%|█████████████                         | 779k/2.27M [00:00<00:01, 1.32MB/s]
 44%|████████████████▌                     | 992k/2.27M [00:00<00:01, 1.24MB/s]
 66%|████████████████████████▍            | 1.50M/2.27M [00:01<00:00, 2.09MB/s]
 95%|███████████████████████████████████  | 2.15M/2.27M [00:01<00:00, 2.60MB/s]
  0%|                                              | 0.00/2.27M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.27M/2.27M [00:00<00:00, 10.7GB/s]

  0%|                                              | 0.00/2.13M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/2.13M [00:00<00:22, 92.2kB/s]
  4%|█▋                                    | 95.2k/2.13M [00:00<00:06, 317kB/s]
  9%|███▌                                   | 194k/2.13M [00:00<00:04, 408kB/s]
 15%|█████▉                                 | 325k/2.13M [00:00<00:03, 515kB/s]
 21%|████████▏                              | 450k/2.13M [00:00<00:02, 561kB/s]
 27%|██████████▍                            | 569k/2.13M [00:01<00:02, 696kB/s]
 32%|████████████▍                          | 678k/2.13M [00:01<00:02, 643kB/s]
 41%|███████████████▉                       | 868k/2.13M [00:01<00:01, 913kB/s]
 48%|██████████████████▎                   | 1.02M/2.13M [00:01<00:01, 866kB/s]
 56%|████████████████████▋                | 1.19M/2.13M [00:01<00:00, 1.04MB/s]
 62%|███████████████████████▍              | 1.31M/2.13M [00:01<00:00, 882kB/s]
 68%|█████████████████████████▊            | 1.45M/2.13M [00:01<00:00, 818kB/s]
 78%|████████████████████████████▉        | 1.67M/2.13M [00:02<00:00, 1.10MB/s]
 84%|████████████████████████████████      | 1.80M/2.13M [00:02<00:00, 943kB/s]
 90%|██████████████████████████████████    | 1.91M/2.13M [00:02<00:00, 815kB/s]
 98%|█████████████████████████████████████▏| 2.08M/2.13M [00:02<00:00, 998kB/s]
  0%|                                              | 0.00/2.13M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.13M/2.13M [00:00<00:00, 6.45GB/s]

  0%|                                              | 0.00/2.29M [00:00<?, ?B/s]
  1%|▏                                     | 12.3k/2.29M [00:00<00:21, 106kB/s]
  4%|█▍                                    | 90.1k/2.29M [00:00<00:05, 396kB/s]
  7%|██▊                                    | 169k/2.29M [00:00<00:04, 456kB/s]
 15%|█████▉                                 | 349k/2.29M [00:00<00:02, 792kB/s]
 23%|████████▊                              | 519k/2.29M [00:00<00:01, 915kB/s]
 35%|█████████████▍                        | 814k/2.29M [00:00<00:01, 1.32MB/s]
 50%|██████████████████▍                  | 1.14M/2.29M [00:00<00:00, 1.60MB/s]
 74%|███████████████████████████▎         | 1.70M/2.29M [00:01<00:00, 2.56MB/s]
  0%|                                              | 0.00/2.29M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.29M/2.29M [00:00<00:00, 8.17GB/s]

  0%|                                              | 0.00/2.06M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/2.06M [00:00<00:22, 92.9kB/s]
  4%|█▋                                    | 89.1k/2.06M [00:00<00:06, 301kB/s]
 12%|████▊                                  | 253k/2.06M [00:00<00:03, 572kB/s]
 27%|██████████▍                            | 549k/2.06M [00:00<00:01, 973kB/s]
 50%|██████████████████▍                  | 1.02M/2.06M [00:00<00:00, 1.53MB/s]
 74%|███████████████████████████▍         | 1.52M/2.06M [00:00<00:00, 2.28MB/s]
  0%|                                              | 0.00/2.06M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.06M/2.06M [00:00<00:00, 7.44GB/s]

  0%|                                              | 0.00/2.12M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.12M [00:00<04:06, 8.60kB/s]
  4%|█▌                                    | 84.0k/2.12M [00:00<00:06, 299kB/s]
 10%|███▋                                   | 202k/2.12M [00:00<00:03, 527kB/s]
 18%|███████▏                               | 389k/2.12M [00:00<00:02, 796kB/s]
 30%|███████████▎                          | 632k/2.12M [00:00<00:01, 1.23MB/s]
 38%|██████████████▌                       | 815k/2.12M [00:00<00:01, 1.27MB/s]
 49%|██████████████████▏                  | 1.04M/2.12M [00:01<00:00, 1.34MB/s]
 68%|█████████████████████████▎           | 1.45M/2.12M [00:01<00:00, 2.01MB/s]
 97%|███████████████████████████████████▉ | 2.06M/2.12M [00:01<00:00, 2.81MB/s]
  0%|                                              | 0.00/2.12M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.12M/2.12M [00:00<00:00, 11.0GB/s]

  0%|                                              | 0.00/2.47M [00:00<?, ?B/s]
  0%|▏                                     | 12.3k/2.47M [00:00<00:22, 108kB/s]
  4%|█▍                                    | 92.2k/2.47M [00:00<00:04, 492kB/s]
  7%|██▋                                    | 172k/2.47M [00:00<00:05, 440kB/s]
 12%|████▌                                  | 292k/2.47M [00:00<00:03, 673kB/s]
 17%|██████▍                                | 411k/2.47M [00:00<00:03, 642kB/s]
 28%|██████████▋                           | 693k/2.47M [00:00<00:01, 1.19MB/s]
 37%|██████████████▏                       | 925k/2.47M [00:00<00:01, 1.49MB/s]
 54%|████████████████████                 | 1.34M/2.47M [00:01<00:00, 2.22MB/s]
 82%|██████████████████████████████▍      | 2.03M/2.47M [00:01<00:00, 2.80MB/s]
  0%|                                              | 0.00/2.47M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.47M/2.47M [00:00<00:00, 14.7GB/s]

  0%|                                              | 0.00/2.71M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.71M [00:00<00:27, 97.1kB/s]
  3%|█▎                                    | 93.2k/2.71M [00:00<00:08, 318kB/s]
  8%|███▏                                   | 218k/2.71M [00:00<00:05, 482kB/s]
 17%|██████▋                                | 463k/2.71M [00:00<00:02, 807kB/s]
 30%|███████████▎                          | 807k/2.71M [00:00<00:01, 1.17MB/s]
 44%|████████████████▎                    | 1.20M/2.71M [00:01<00:01, 1.47MB/s]
 62%|██████████████████████▉              | 1.68M/2.71M [00:01<00:00, 2.16MB/s]
 80%|█████████████████████████████▋       | 2.18M/2.71M [00:01<00:00, 2.33MB/s]
  0%|                                              | 0.00/2.71M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.71M/2.71M [00:00<00:00, 15.4GB/s]

  0%|                                              | 0.00/2.33M [00:00<?, ?B/s]
  1%|▏                                     | 12.3k/2.33M [00:00<00:22, 105kB/s]
  4%|█▎                                    | 82.9k/2.33M [00:00<00:06, 358kB/s]
  7%|██▉                                    | 172k/2.33M [00:00<00:04, 467kB/s]
 11%|████▍                                  | 264k/2.33M [00:00<00:03, 543kB/s]
 17%|██████▋                                | 395k/2.33M [00:00<00:02, 659kB/s]
 25%|█████████▉                             | 592k/2.33M [00:00<00:01, 908kB/s]
 35%|█████████████▍                        | 821k/2.33M [00:00<00:01, 1.10MB/s]
 47%|█████████████████▍                   | 1.10M/2.33M [00:01<00:00, 1.38MB/s]
 63%|███████████████████████▏             | 1.46M/2.33M [00:01<00:00, 1.69MB/s]
 79%|█████████████████████████████▎       | 1.84M/2.33M [00:01<00:00, 2.18MB/s]
 94%|██████████████████████████████████▋  | 2.18M/2.33M [00:01<00:00, 2.27MB/s]
  0%|                                              | 0.00/2.33M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.33M/2.33M [00:00<00:00, 8.63GB/s]

  0%|                                              | 0.00/2.27M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/2.27M [00:00<00:24, 92.8kB/s]
  2%|▋                                     | 41.0k/2.27M [00:00<00:11, 193kB/s]
  8%|███                                    | 176k/2.27M [00:00<00:04, 487kB/s]
 13%|█████▏                                 | 305k/2.27M [00:00<00:03, 566kB/s]
 21%|████████▎                              | 484k/2.27M [00:00<00:02, 704kB/s]
 34%|████████████▉                         | 774k/2.27M [00:00<00:01, 1.20MB/s]
 51%|██████████████████▊                  | 1.16M/2.27M [00:01<00:00, 1.49MB/s]
 70%|█████████████████████████▉           | 1.60M/2.27M [00:01<00:00, 2.13MB/s]
 94%|██████████████████████████████████▋  | 2.13M/2.27M [00:01<00:00, 2.90MB/s]
  0%|                                              | 0.00/2.27M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.27M/2.27M [00:00<00:00, 13.6GB/s]

  0%|                                              | 0.00/1.99M [00:00<?, ?B/s]
  1%|▏                                    | 12.3k/1.99M [00:00<00:20, 95.6kB/s]
  5%|█▊                                    | 96.3k/1.99M [00:00<00:05, 323kB/s]
  9%|███▋                                   | 188k/1.99M [00:00<00:04, 396kB/s]
 14%|█████▍                                 | 274k/1.99M [00:00<00:04, 414kB/s]
 20%|███████▉                               | 404k/1.99M [00:00<00:03, 507kB/s]
 26%|█████████▉                             | 508k/1.99M [00:01<00:02, 619kB/s]
 33%|████████████▊                          | 654k/1.99M [00:01<00:01, 816kB/s]
 42%|████████████████▎                      | 835k/1.99M [00:01<00:01, 856kB/s]
 53%|████████████████████                  | 1.05M/1.99M [00:01<00:01, 938kB/s]
 60%|██████████████████████▏              | 1.19M/1.99M [00:01<00:00, 1.05MB/s]
 71%|██████████████████████████▎          | 1.41M/1.99M [00:01<00:00, 1.31MB/s]
 78%|████████████████████████████▉        | 1.56M/1.99M [00:01<00:00, 1.09MB/s]
 87%|████████████████████████████████▎    | 1.73M/1.99M [00:02<00:00, 1.24MB/s]
 95%|██████████████████████████████████▉  | 1.88M/1.99M [00:02<00:00, 1.05MB/s]
  0%|                                              | 0.00/1.99M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 1.99M/1.99M [00:00<00:00, 10.6GB/s]

  0%|                                              | 0.00/2.98M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.98M [00:00<00:32, 90.9kB/s]
  3%|█                                     | 78.8k/2.98M [00:00<00:09, 322kB/s]
  5%|██▏                                    | 163k/2.98M [00:00<00:06, 431kB/s]
 11%|████▍                                  | 340k/2.98M [00:00<00:03, 756kB/s]
 17%|██████▊                                | 517k/2.98M [00:00<00:02, 907kB/s]
 25%|█████████▌                            | 746k/2.98M [00:00<00:01, 1.15MB/s]
 37%|█████████████▋                       | 1.11M/2.98M [00:01<00:01, 1.56MB/s]
 50%|██████████████████▌                  | 1.50M/2.98M [00:01<00:00, 1.95MB/s]
 67%|████████████████████████▉            | 2.00M/2.98M [00:01<00:00, 2.39MB/s]
 87%|████████████████████████████████▏    | 2.59M/2.98M [00:01<00:00, 3.20MB/s]
  0%|                                              | 0.00/2.98M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.98M/2.98M [00:00<00:00, 11.1GB/s]

  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
  0%|▏                                     | 12.3k/2.72M [00:00<00:26, 100kB/s]
  3%|█▎                                    | 91.1k/2.72M [00:00<00:08, 309kB/s]
  8%|███                                    | 213k/2.72M [00:00<00:04, 614kB/s]
 11%|████▎                                  | 299k/2.72M [00:00<00:04, 529kB/s]
 15%|██████                                 | 419k/2.72M [00:00<00:03, 703kB/s]
 23%|████████▋                             | 620k/2.72M [00:00<00:01, 1.06MB/s]
 30%|███████████▎                          | 812k/2.72M [00:01<00:01, 1.03MB/s]
 44%|████████████████▎                    | 1.20M/2.72M [00:01<00:00, 1.71MB/s]
 56%|████████████████████▋                | 1.52M/2.72M [00:01<00:00, 2.10MB/s]
 82%|██████████████████████████████▍      | 2.23M/2.72M [00:01<00:00, 3.44MB/s]
  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.72M/2.72M [00:00<00:00, 10.6GB/s]

  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
  0%|▏                                     | 12.3k/2.74M [00:00<00:26, 104kB/s]
  3%|█▎                                    | 95.2k/2.74M [00:00<00:08, 327kB/s]
  8%|███                                    | 211k/2.74M [00:00<00:04, 608kB/s]
 12%|████▊                                  | 340k/2.74M [00:00<00:03, 634kB/s]
 20%|███████▋                              | 557k/2.74M [00:00<00:02, 1.04MB/s]
 32%|████████████                          | 867k/2.74M [00:00<00:01, 1.27MB/s]
 44%|████████████████▎                    | 1.21M/2.74M [00:01<00:00, 1.78MB/s]
 63%|███████████████████████▏             | 1.71M/2.74M [00:01<00:00, 2.61MB/s]
 79%|█████████████████████████████▏       | 2.16M/2.74M [00:01<00:00, 3.09MB/s]
 98%|████████████████████████████████████▏| 2.68M/2.74M [00:01<00:00, 3.68MB/s]
  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.74M/2.74M [00:00<00:00, 17.0GB/s]

  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.74M [00:00<07:15, 6.29kB/s]
  1%|▍                                    | 30.7k/2.74M [00:00<00:27, 98.3kB/s]
  6%|██▍                                    | 175k/2.74M [00:00<00:06, 402kB/s]
 12%|████▊                                  | 340k/2.74M [00:00<00:04, 581kB/s]
 21%|████████                               | 566k/2.74M [00:00<00:02, 964kB/s]
 26%|██████████▎                            | 722k/2.74M [00:01<00:02, 904kB/s]
 42%|███████████████▍                     | 1.15M/2.74M [00:01<00:00, 1.64MB/s]
 57%|█████████████████████                | 1.56M/2.74M [00:01<00:00, 2.24MB/s]
 74%|███████████████████████████▏         | 2.01M/2.74M [00:01<00:00, 2.83MB/s]
  0%|                                              | 0.00/2.74M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.74M/2.74M [00:00<00:00, 9.50GB/s]

  0%|                                              | 0.00/2.73M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.73M [00:00<00:30, 90.5kB/s]
  3%|█▎                                    | 91.1k/2.73M [00:00<00:07, 374kB/s]
  6%|██▏                                    | 151k/2.73M [00:00<00:06, 378kB/s]
 10%|███▊                                   | 263k/2.73M [00:00<00:05, 470kB/s]
 16%|██████                                 | 424k/2.73M [00:00<00:03, 759kB/s]
 19%|███████▎                               | 511k/2.73M [00:00<00:03, 630kB/s]
 25%|█████████▋                             | 677k/2.73M [00:01<00:02, 710kB/s]
 31%|████████████                           | 840k/2.73M [00:01<00:02, 751kB/s]
 36%|█████████████▉                         | 971k/2.73M [00:01<00:02, 724kB/s]
 42%|███████████████▉                      | 1.14M/2.73M [00:01<00:01, 920kB/s]
 46%|█████████████████▋                    | 1.27M/2.73M [00:01<00:01, 816kB/s]
 53%|████████████████████▏                 | 1.44M/2.73M [00:02<00:01, 847kB/s]
 58%|██████████████████████                | 1.58M/2.73M [00:02<00:01, 950kB/s]
 65%|████████████████████████▋             | 1.77M/2.73M [00:02<00:00, 957kB/s]
 70%|█████████████████████████▊           | 1.91M/2.73M [00:02<00:00, 1.04MB/s]
 78%|████████████████████████████▊        | 2.12M/2.73M [00:02<00:00, 1.29MB/s]
 83%|██████████████████████████████▊      | 2.27M/2.73M [00:02<00:00, 1.08MB/s]
 90%|█████████████████████████████████▏   | 2.45M/2.73M [00:02<00:00, 1.24MB/s]
 95%|███████████████████████████████████▏ | 2.59M/2.73M [00:02<00:00, 1.04MB/s]
  0%|                                              | 0.00/2.73M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.73M/2.73M [00:00<00:00, 8.23GB/s]

  0%|                                              | 0.00/3.97M [00:00<?, ?B/s]
  0%|                                     | 1.02k/3.97M [00:00<08:26, 7.84kB/s]
  2%|▊                                     | 90.1k/3.97M [00:00<00:09, 393kB/s]
  4%|█▋                                     | 177k/3.97M [00:00<00:07, 480kB/s]
  9%|███▍                                   | 349k/3.97M [00:00<00:04, 778kB/s]
 14%|█████▎                                 | 544k/3.97M [00:00<00:03, 967kB/s]
 25%|█████████▍                            | 985k/3.97M [00:00<00:01, 1.87MB/s]
 35%|████████████▉                        | 1.39M/3.97M [00:00<00:01, 2.26MB/s]
 52%|███████████████████▏                 | 2.06M/3.97M [00:01<00:00, 3.01MB/s]
 75%|███████████████████████████▌         | 2.96M/3.97M [00:01<00:00, 4.50MB/s]
  0%|                                              | 0.00/3.97M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.97M/3.97M [00:00<00:00, 14.2GB/s]

  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.72M [00:00<06:03, 7.48kB/s]
  2%|▋                                     | 45.1k/2.72M [00:00<00:11, 228kB/s]
  6%|██▎                                    | 160k/2.72M [00:00<00:04, 615kB/s]
  9%|███▋                                   | 256k/2.72M [00:00<00:04, 553kB/s]
 15%|█████▉                                 | 414k/2.72M [00:00<00:02, 844kB/s]
 26%|█████████▊                            | 707k/2.72M [00:00<00:01, 1.45MB/s]
 37%|█████████████▌                       | 1.00M/2.72M [00:00<00:01, 1.48MB/s]
 54%|████████████████████                 | 1.48M/2.72M [00:01<00:00, 2.29MB/s]
 68%|█████████████████████████▏           | 1.85M/2.72M [00:01<00:00, 2.67MB/s]
  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.72M/2.72M [00:00<00:00, 9.86GB/s]

  0%|                                              | 0.00/2.82M [00:00<?, ?B/s]
  0%|▏                                    | 11.3k/2.82M [00:00<00:36, 77.2kB/s]
  3%|█▎                                    | 98.3k/2.82M [00:00<00:08, 336kB/s]
  5%|██                                     | 152k/2.82M [00:00<00:06, 393kB/s]
 12%|████▋                                  | 336k/2.82M [00:00<00:03, 662kB/s]
 19%|███████▏                               | 522k/2.82M [00:00<00:02, 787kB/s]
 24%|█████████▎                             | 669k/2.82M [00:01<00:02, 779kB/s]
 32%|████████████▍                          | 898k/2.82M [00:01<00:02, 920kB/s]
 42%|███████████████▍                     | 1.18M/2.82M [00:01<00:01, 1.09MB/s]
 50%|██████████████████▍                  | 1.40M/2.82M [00:01<00:01, 1.12MB/s]
 57%|█████████████████████                | 1.60M/2.82M [00:01<00:01, 1.09MB/s]
 65%|████████████████████████▏            | 1.85M/2.82M [00:01<00:00, 1.15MB/s]
 70%|█████████████████████████▉           | 1.98M/2.82M [00:02<00:00, 1.00MB/s]
 78%|████████████████████████████▋        | 2.19M/2.82M [00:02<00:00, 1.04MB/s]
 85%|███████████████████████████████▌     | 2.40M/2.82M [00:02<00:00, 1.05MB/s]
 90%|██████████████████████████████████▎   | 2.55M/2.82M [00:02<00:00, 968kB/s]
 97%|█████████████████████████████████████ | 2.75M/2.82M [00:02<00:00, 983kB/s]
  0%|                                              | 0.00/2.82M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.82M/2.82M [00:00<00:00, 11.8GB/s]

  0%|                                              | 0.00/2.77M [00:00<?, ?B/s]
  0%|▏                                     | 13.3k/2.77M [00:00<00:25, 109kB/s]
  3%|█▎                                    | 95.2k/2.77M [00:00<00:08, 324kB/s]
  9%|███▋                                   | 259k/2.77M [00:00<00:04, 580kB/s]
 16%|██████▏                                | 435k/2.77M [00:00<00:03, 713kB/s]
 23%|████████▋                             | 636k/2.77M [00:00<00:02, 1.01MB/s]
 30%|███████████▎                          | 827k/2.77M [00:01<00:01, 1.00MB/s]
 40%|██████████████▊                      | 1.11M/2.77M [00:01<00:01, 1.40MB/s]
 51%|██████████████████▉                  | 1.42M/2.77M [00:01<00:00, 1.48MB/s]
 63%|███████████████████████▏             | 1.74M/2.77M [00:01<00:00, 1.86MB/s]
 77%|████████████████████████████▌        | 2.14M/2.77M [00:01<00:00, 1.94MB/s]
 91%|█████████████████████████████████▊   | 2.53M/2.77M [00:01<00:00, 2.37MB/s]
  0%|                                              | 0.00/2.77M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.77M/2.77M [00:00<00:00, 11.0GB/s]

  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
  0%|                                     | 1.02k/2.72M [00:00<05:31, 8.19kB/s]
  4%|█▎                                    | 98.3k/2.72M [00:00<00:07, 349kB/s]
  9%|███▍                                   | 244k/2.72M [00:00<00:04, 549kB/s]
 16%|██████                                 | 424k/2.72M [00:00<00:03, 707kB/s]
 25%|█████████▌                             | 670k/2.72M [00:00<00:02, 917kB/s]
 40%|██████████████▋                      | 1.08M/2.72M [00:00<00:01, 1.60MB/s]
 50%|██████████████████▋                  | 1.37M/2.72M [00:01<00:00, 1.58MB/s]
 71%|██████████████████████████▎          | 1.94M/2.72M [00:01<00:00, 2.46MB/s]
 94%|██████████████████████████████████▊  | 2.56M/2.72M [00:01<00:00, 3.36MB/s]
  0%|                                              | 0.00/2.72M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.72M/2.72M [00:00<00:00, 10.6GB/s]

  0%|                                              | 0.00/2.75M [00:00<?, ?B/s]
  0%|▏                                    | 12.3k/2.75M [00:00<00:28, 95.2kB/s]
  3%|█▎                                    | 95.2k/2.75M [00:00<00:08, 321kB/s]
  9%|███▎                                   | 238k/2.75M [00:00<00:04, 524kB/s]
 15%|█████▉                                 | 423k/2.75M [00:00<00:03, 701kB/s]
 24%|█████████▏                             | 651k/2.75M [00:00<00:02, 980kB/s]
 36%|█████████████▋                        | 995k/2.75M [00:01<00:01, 1.38MB/s]
 54%|███████████████████▊                 | 1.48M/2.75M [00:01<00:00, 2.17MB/s]
 72%|██████████████████████████▊          | 1.99M/2.75M [00:01<00:00, 2.67MB/s]
  0%|                                              | 0.00/2.75M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 2.75M/2.75M [00:00<00:00, 10.3GB/s]

  0%|                                              | 0.00/3.26M [00:00<?, ?B/s]
  0%|▏                                    | 11.3k/3.26M [00:00<00:35, 90.6kB/s]
  2%|▉                                     | 76.8k/3.26M [00:00<00:09, 327kB/s]
  5%|██                                     | 175k/3.26M [00:00<00:06, 486kB/s]
 11%|████▍                                  | 374k/3.26M [00:00<00:03, 769kB/s]
 18%|██████▊                               | 580k/3.26M [00:00<00:02, 1.08MB/s]
 32%|███████████▉                         | 1.05M/3.26M [00:00<00:01, 1.71MB/s]
 46%|████████████████▉                    | 1.50M/3.26M [00:00<00:00, 2.31MB/s]
 68%|█████████████████████████            | 2.21M/3.26M [00:01<00:00, 3.54MB/s]
 96%|███████████████████████████████████▌ | 3.13M/3.26M [00:01<00:00, 4.20MB/s]
  0%|                                              | 0.00/3.26M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.26M/3.26M [00:00<00:00, 18.8GB/s]

  0%|                                              | 0.00/3.33M [00:00<?, ?B/s]
  0%|▏                                     | 13.3k/3.33M [00:00<00:30, 109kB/s]
  3%|█                                     | 91.1k/3.33M [00:00<00:10, 309kB/s]
  6%|██▍                                    | 206k/3.33M [00:00<00:06, 447kB/s]
 10%|███▉                                   | 332k/3.33M [00:00<00:04, 663kB/s]
 13%|█████                                  | 433k/3.33M [00:00<00:04, 603kB/s]
 21%|████████▏                             | 712k/3.33M [00:00<00:02, 1.12MB/s]
 32%|███████████▊                         | 1.07M/3.33M [00:01<00:01, 1.74MB/s]
 41%|███████████████▏                     | 1.37M/3.33M [00:01<00:01, 1.67MB/s]
 64%|███████████████████████▋             | 2.14M/3.33M [00:01<00:00, 3.08MB/s]
 84%|███████████████████████████████      | 2.80M/3.33M [00:01<00:00, 3.97MB/s]
  0%|                                              | 0.00/3.33M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.33M/3.33M [00:00<00:00, 19.9GB/s]

  0%|                                              | 0.00/3.23M [00:00<?, ?B/s]
  0%|▏                                    | 11.3k/3.23M [00:00<00:34, 93.0kB/s]
  3%|█                                     | 90.1k/3.23M [00:00<00:10, 309kB/s]
  6%|██▎                                    | 187k/3.23M [00:00<00:07, 402kB/s]
 10%|███▊                                   | 321k/3.23M [00:00<00:04, 650kB/s]
 12%|████▊                                  | 402k/3.23M [00:00<00:05, 553kB/s]
 17%|██████▍                                | 534k/3.23M [00:00<00:03, 733kB/s]
 22%|████████▍                             | 719k/3.23M [00:01<00:02, 1.02MB/s]
 26%|██████████▏                            | 844k/3.23M [00:01<00:02, 861kB/s]
 30%|███████████▊                           | 982k/3.23M [00:01<00:02, 982kB/s]
 34%|████████████▋                        | 1.11M/3.23M [00:01<00:01, 1.06MB/s]
 41%|███████████████▏                     | 1.33M/3.23M [00:01<00:01, 1.07MB/s]
 47%|█████████████████▍                   | 1.52M/3.23M [00:01<00:01, 1.28MB/s]
 58%|█████████████████████▎               | 1.87M/3.23M [00:01<00:00, 1.46MB/s]
 64%|███████████████████████▌             | 2.06M/3.23M [00:02<00:00, 1.30MB/s]
 69%|█████████████████████████▋           | 2.24M/3.23M [00:02<00:00, 1.40MB/s]
 75%|███████████████████████████▉         | 2.44M/3.23M [00:02<00:00, 1.25MB/s]
 81%|█████████████████████████████▊       | 2.61M/3.23M [00:02<00:00, 1.35MB/s]
 90%|█████████████████████████████████▎   | 2.91M/3.23M [00:02<00:00, 1.42MB/s]
 98%|████████████████████████████████████▍| 3.18M/3.23M [00:02<00:00, 1.69MB/s]
  0%|                                              | 0.00/3.23M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 3.23M/3.23M [00:00<00:00, 20.1GB/s]

  0%|                                              | 0.00/6.92M [00:00<?, ?B/s]
  0%|                                     | 12.3k/6.92M [00:00<01:13, 93.5kB/s]
  1%|▌                                     | 96.3k/6.92M [00:00<00:21, 323kB/s]
  4%|█▌                                     | 269k/6.92M [00:00<00:11, 601kB/s]
  7%|██▉                                    | 512k/6.92M [00:00<00:07, 868kB/s]
 12%|████▌                                 | 823k/6.92M [00:00<00:04, 1.39MB/s]
 15%|█████▌                               | 1.05M/6.92M [00:01<00:04, 1.31MB/s]
 21%|███████▋                             | 1.44M/6.92M [00:01<00:02, 1.88MB/s]
 26%|█████████▋                           | 1.82M/6.92M [00:01<00:02, 2.16MB/s]
 34%|████████████▍                        | 2.33M/6.92M [00:01<00:01, 2.54MB/s]
 44%|████████████████▍                    | 3.08M/6.92M [00:01<00:01, 3.70MB/s]
 58%|█████████████████████▋               | 4.05M/6.92M [00:01<00:00, 5.21MB/s]
 76%|███████████████████████████▉         | 5.24M/6.92M [00:01<00:00, 6.97MB/s]
 97%|███████████████████████████████████▊ | 6.70M/6.92M [00:01<00:00, 9.07MB/s]
  0%|                                              | 0.00/6.92M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 6.92M/6.92M [00:00<00:00, 24.4GB/s]

  0%|                                              | 0.00/5.35M [00:00<?, ?B/s]
  0%|                                     | 11.3k/5.35M [00:00<01:04, 83.4kB/s]
  1%|▌                                     | 76.8k/5.35M [00:00<00:16, 316kB/s]
  3%|█▎                                     | 175k/5.35M [00:00<00:10, 477kB/s]
  7%|██▋                                    | 366k/5.35M [00:00<00:06, 824kB/s]
 10%|███▊                                   | 529k/5.35M [00:00<00:05, 922kB/s]
 17%|██████▌                               | 922k/5.35M [00:00<00:02, 1.71MB/s]
 27%|█████████▉                           | 1.44M/5.35M [00:00<00:01, 2.43MB/s]
 37%|█████████████▌                       | 1.97M/5.35M [00:01<00:01, 2.80MB/s]
 55%|████████████████████▌                | 2.97M/5.35M [00:01<00:00, 4.58MB/s]
 77%|████████████████████████████▌        | 4.13M/5.35M [00:01<00:00, 6.42MB/s]
  0%|                                              | 0.00/5.35M [00:00<?, ?B/s]
100%|█████████████████████████████████████| 5.35M/5.35M [00:00<00:00, 19.2GB/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 17.189 seconds)

Estimated memory usage: 426 MB

Gallery generated by Sphinx-Gallery