Skip to main content

Self-Supervised Learning for EEG

Project description

Picture

Latest Release latest release
Build Status documentation build status GitHub Actions Testing Status
License license
Publications

What is selfEEG?

selfEEG is a pytorch-based library designed to facilitate self-supervised learning (SSL) experiments on electroencephalography (EEG) data. In selfEEG, you can find different functions and classes that will help you build an SSL pipeline, from the creation of the dataloaders to the model's fine-tuning, covering other important aspects such as the definitions of custom data augmenters, models, and pretraining strategies. In particular, selfEEG comprises of the following modules:

  1. dataloading - collection of custom pytorch Dataset and Sampler classes as well as functions to split your dataset.
  2. augmentation - collection of data augmentation with fully support on GPU as well as other classes designed to combine them.
  3. models - collection of deep neural models widely used in the EEG analysis (e.g., DeepConvNet, EEGNet, ResNet, TinySleepNet, STNet, etc)
  4. ssl - collection of self-supervised algorithms with a highly customizable fit method (e.g., SimCLR, SimSiam, MoCo, BYOL, etc) and other useful objects such as a custom earlyStopper or a fine-tuning function.
  5. losses - collection of self-supervised learning losses.
  6. utils - other useful functions to manage EEG data.

What makes selfEEG good? We have designed some modules keeping in mind EEG applications, but lots of functionalities can be easily exported on other types of signal as well!

What will you not find in selfEEG? SelfEEG isn't an EEG preprocessing library. You will not find functions to preprocess EEG data in the best possible way (no IC rejection or ASR). However, some simple operations like filtering and resampling can be performed with functions implemented in the utils and augmentation modules. If you want to preprocess EEG data in a really good way, we suggest to take a look at:

  • MNE (python based)
  • EEGLAB (matlab based)
  • BIDSAlign (an EEGLab extension provided by our team)

installation

SelfEEG may be installed via pip (recommended):

pip install selfeeg

Additionally, optional but useful packages which we suggest to include in your environment, especially if you plan to work with jupyter, can be automatically installed with the following pip command:

pip install selfeeg[interactive]

SelfEEG can be also installed via conda by running the following command:

conda install -c Pup_Fede_Cnd -c pytorch selfeeg

Good practice

Although the dependency list is pretty short, it is strongly suggested to install selfEEG in a fresh environment. The following links provide a guide for creating a new Python virtual environment or a new conda environment:

  1. new virtual environment
  2. new conda environment

In addition, if PyTorch, Torchvision and Torchaudio are not present in your environment, the previous commands will install the CPU_only versions of such packages. If you have CUDA installed on your system, we strongly encourage you to first install PyTorch, Torchvision and Torchaudio by choosing the right configuration, which varies depending on your OS and CUDA versions; then, install selfEEG. The official PyTorch documentation provides an installation command selector, which is available at the following link.

Dependencies

selfEEG requires the following packages to correctly work. If you want to use selfEEG by forking and cloning the project, be sure to install them:

  • pandas >=1.5.3
  • scipy >=1.10.1
  • torch >= 2.0.0
  • torchaudio >=2.0.2
  • torchvision >=0.15.2
  • tqdm

The following list was extracted via pipdeptree. Packages like numpy does not appear because they are dependencies of other listed packages.

Optional packages which we suggest to include in your environment are:

  • jupyterlab
  • scikit-learn
  • seaborn (or simply matplotlib)
  • MNE-Python

Usage

in the Notebooks folder, you can find some notebooks which will explain how to properly use some modules. These notebooks are also included in the official documentation.

Contribution Guidelines

If you'd like to contribute to selfEEG, please take a look at our contributing guidelines.

If you also have suggestions regarding novel features to add, or simply want some support, please consider writing to our research team.

MedMax Team

Our team is open to new collaborations!

Requests and bug tracker

If you have some requests or you have noticed some bugs, use the GitHub issues page to report them. We will try to solve reported major bugs as fast as possible.

Authors and Citation

We have worked really hard to develop this library. If you use selfEEG during your research, please cite our work published in the Journal of Open Source Software (JOSS). It would help us to continue our research.

@article{DelPup2024,
  title = {SelfEEG: A Python library for Self-Supervised Learning in Electroencephalography},
  author = {Federico Del Pup and
            Andrea Zanola and
            Louis Fabrice Tshimanga and
            Paolo Emilio Mazzon and
            Manfredo Atzori},
  year = {2024},
  publisher = {The Open Journal},
  journal = {Journal of Open Source Software}
  volume = {9},
  number = {95},
  pages = {6224},
  doi = {10.21105/joss.06224},
  url = {https://doi.org/10.21105/joss.06224}
}

Contributors:

  • Eng. Federico Del Pup
  • M.Sc. Andrea Zanola
  • M.Sc. Louis Fabrice Tshimanga
  • Eng. Paolo Emilio Mazzon
  • Prof. Manfredo Atzori

License

SelfEEG is released under the MIT Licence

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

selfeeg-0.2.0.tar.gz (120.8 kB view details)

Uploaded Source

Built Distribution

selfeeg-0.2.0-py3-none-any.whl (116.7 kB view details)

Uploaded Python 3

File details

Details for the file selfeeg-0.2.0.tar.gz.

File metadata

  • Download URL: selfeeg-0.2.0.tar.gz
  • Upload date:
  • Size: 120.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for selfeeg-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9e55261fd2771a3662642e6d7e3ae50fdbe3a97820f6e041447f328637fecf78
MD5 0cf84a206cb7a6e81f22bd478b0e95e8
BLAKE2b-256 be9584c2bf53606c9e000b003aa1887e08ac232a0f7ee0351288aac7225d045b

See more details on using hashes here.

File details

Details for the file selfeeg-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: selfeeg-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 116.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for selfeeg-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db5f52580ee0e07d8a5fc0bcdcd79213ac8384e38158aa1a840fc45d1509e22e
MD5 79612670f6bd7a271ed44662cbf52a7e
BLAKE2b-256 4b6bd609dcbb4b0dcd799d9e8675eb39d69dee1803c99eb974501b8d4b44d376

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page