mne-tools / mne-tools/mne-python

Add an SSVEP classification algorithm as a new feature

Open
#12,630 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ENH
Dominant language
Python
Stars
3.5k
Forks
1.6k
Avg merge
1d 6h
Merged PRs (30d)
100

Description

Describe the new feature or enhancement

Hi,

I recently have been looking for a Python library for SSVEP classification, but it seems that there is no such major one offering this feature. Thus, I am writing a function myself and was wondering if it would be okay to include this to MNE, for people like me to benefit from this.

Currently, the most of the public scripts for SSVEP classification are written in MATLAB, and the only SSVEP classification method in MNE (using epochs.compute_psd) is based on PSD, which is suitable to grasp a basic concept of SSVEP classification but not practical.

Describe your proposed implementation

Canonical correlation analysis (CCA) (Lin 2006) and multivariate synchronization index (MSI) (Zhang 2014) are the two decent methods to classify SSVEP responses without requiring training dataset. These find a spatial filter to maximize the correlation between multi-channel EEG data and the reference signals (sine or cosine waves with stimulation frequencies). CCA is probably the most popular algorithm for SSVEP classification, and also most of the state-of-the-art algorithms are based on this (Wong 2021, Nakanishi 2018). MSI is less popular, but it always showed a better performance in my experience.

I guess this would best fit under mne.decoding as a new class. The name can be mne.decoding.SSVEPClassification, for example. It would process mne.Epochs and yield the stimulation index as an output.

Describe possible alternatives

To the best of my knowledge, it is best option to create a new class to add this feature.

Additional context

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the proposed mne.decoding entry point and the existing epochs.compute_psd SSVEP approach. Compare the requested CCA and MSI methods, then define how a new class would process mne.Epochs and yield a stimulation index; the issue does not name tests or implementation files.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.