SelfEEG

SelfEEG: A Python library for Self-Supervised Learning in Electroencephalography - Published in JOSS (2024)

https://github.com/medmaxlab/selfeeg

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 9 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    1 of 7 committers (14.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

deep-learning eeg self-supervised-learning

Scientific Fields

Artificial Intelligence and Machine Learning Computer Science - 38% confidence
Last synced: 4 months ago · JSON representation ·

Repository

selfEEG: a Python library for Self-Supervised Learning on Electroencephalography (EEG) data

Basic Info
Statistics
  • Stars: 60
  • Watchers: 6
  • Forks: 14
  • Open Issues: 0
  • Releases: 4
Topics
deep-learning eeg self-supervised-learning
Created over 2 years ago · Last pushed 7 months ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md


PyPI Conda Docs Unittest DOI License

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

SelfEEG can be also installed via conda by running the following command: conda install conda-forge::selfeeg

Additionally, optional but useful packages that 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]

Good practices

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.

bibtex @article{DelPup2024, title = {SelfEEG: A Python library for Self-Supervised Learning in Electroencephalography}, author = {Del Pup, Federico and Zanola, Andrea and Tshimanga, Louis Fabrice and Mazzon, Paolo Emilio and Atzori, Manfredo}, 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

Owner

  • Name: MedMaxLab
  • Login: MedMaxLab
  • Kind: organization

JOSS Publication

SelfEEG: A Python library for Self-Supervised Learning in Electroencephalography
Published
March 17, 2024
Volume 9, Issue 95, Page 6224
Authors
Federico Del Pup ORCID
Department of Information Engineering, University of Padova, Padova, Italy, Department of Neuroscience, University of Padova, Padova, Italy, Padova Neuroscience Center, University of Padova, Padova, Italy
Andrea Zanola ORCID
Padova Neuroscience Center, University of Padova, Padova, Italy
Louis Fabrice Tshimanga ORCID
Department of Neuroscience, University of Padova, Padova, Italy, Padova Neuroscience Center, University of Padova, Padova, Italy
Paolo Emilio Mazzon
Padova Neuroscience Center, University of Padova, Padova, Italy
Manfredo Atzori ORCID
Department of Neuroscience, University of Padova, Padova, Italy, Padova Neuroscience Center, University of Padova, Padova, Italy, Information Systems Institute, University of Applied Sciences Western Switzerland (HES-SO Valais), Sierre, Switzerland
Editor
Elizabeth DuPre ORCID
Tags
PyTorch Deep Learning (DL) Self-Supervised Learning (SSL) Contrastive Learning (CL) Electroencephalography (EEG) Biomedical signals

Citation (CITATION.cff)

cff-version: "1.2.0"
authors:
- family-names: Del Pup
  given-names: Federico
  orcid: "https://orcid.org/0009-0004-0698-962X"
- family-names: Zanola
  given-names: Andrea
  orcid: "https://orcid.org/0000-0001-6973-8634"
- family-names: Tshimanga
  given-names: Louis Fabrice
  orcid: "https://orcid.org/0009-0002-1240-4830"
- family-names: Mazzon
  given-names: Paolo Emilio
- family-names: Atzori
  given-names: Manfredo
  orcid: "https://orcid.org/0000-0001-5397-2063"
doi: 10.5281/zenodo.10813095
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Del Pup
    given-names: Federico
    orcid: "https://orcid.org/0009-0004-0698-962X"
  - family-names: Zanola
    given-names: Andrea
    orcid: "https://orcid.org/0000-0001-6973-8634"
  - family-names: Tshimanga
    given-names: Louis Fabrice
    orcid: "https://orcid.org/0009-0002-1240-4830"
  - family-names: Mazzon
    given-names: Paolo Emilio
  - family-names: Atzori
    given-names: Manfredo
    orcid: "https://orcid.org/0000-0001-5397-2063"
  date-published: 2024-03-17
  doi: 10.21105/joss.06224
  issn: 2475-9066
  issue: 95
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 6224
  title: "SelfEEG: A Python library for Self-Supervised Learning in
    Electroencephalography"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.06224"
  volume: 9
title: "SelfEEG: A Python library for Self-Supervised Learning in
  Electroencephalography"

GitHub Events

Total
  • Watch event: 18
  • Push event: 7
  • Pull request event: 8
  • Fork event: 1
Last Year
  • Watch event: 18
  • Push event: 7
  • Pull request event: 8
  • Fork event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 189
  • Total Committers: 7
  • Avg Commits per committer: 27.0
  • Development Distribution Score (DDS): 0.116
Past Year
  • Commits: 18
  • Committers: 1
  • Avg Commits per committer: 18.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
fedepup f****p@s****t 167
andreazanola98 “****8@g****” 8
Marijn van Vliet w****t@g****m 7
Federico Del Pup f****p@M****l 3
Louis Fabrice Tshimanga l****3@g****m 2
andreazanola98 a****8@g****m 1
Elizabeth DuPre e****2@c****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 4
  • Total pull requests: 15
  • Average time to close issues: 7 days
  • Average time to close pull requests: about 1 hour
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 3.75
  • Average comments per pull request: 0.33
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 6
  • Average time to close issues: N/A
  • Average time to close pull requests: 4 minutes
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • wmvanvliet (2)
  • adejumoridwan (1)
  • vferat (1)
Pull Request Authors
  • fedepup (16)
  • wmvanvliet (2)
  • emdupre (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 51 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
  • Total maintainers: 1
pypi.org: selfeeg

Self-Supervised Learning for EEG

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 51 Last month
Rankings
Dependent packages count: 10.2%
Average: 38.6%
Dependent repos count: 67.0%
Maintainers (1)
Last synced: 4 months ago

Dependencies

.github/workflows/doc_build_test.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
.github/workflows/draft-pdf.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
.github/workflows/python-app.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
docs/doc_requirements.txt pypi
  • IPython *
  • matplotlib *
  • myst_parser *
  • nbsphinx *
  • numpy *
  • pandas *
  • scikit-learn *
  • selfeeg *
  • sphinx_automodapi *
  • sphinx_rtd_theme *
  • torch *
  • torchaudio *
  • torchvision *
pyproject.toml pypi
requirements.txt pypi
  • pandas >=2.0.0
  • pip >=23.3
  • scikit-learn >=1.2.2
  • torch >=2.0.1
  • torchaudio >=2.0.2
  • torchvision >=0.15.2
  • tqdm >=4.65.0
setup.py pypi