Releases: braindecode/braindecode
v1.3.0
Current 1.3 (stable)
Enhancements
- Adding Hugging Face Hub integration documentation with comprehensive examples for
loading pre-trained models (:class:braindecode.models.BIOT,
:class:braindecode.models.Labram, :class:braindecode.models.REVE,
:class:braindecode.models.LUNA, :class:braindecode.models.BENDR,
:class:braindecode.models.SignalJEPA) and pushing models to the Hub (:gh:879by
Bruno Aristimunha_) - Adding :class:
braindecode.models.REVEwith comprehensive documentation covering
architecture details, 4D positional encoding, and pretraining scale (:gh:866by
Jonathan Lys_ ) - Adding augmentation :class:
braindecode.augmentation.AmplitudeScale(:gh:848by
Bruna Lopes_) - Adding augmentation :class:
braindecode.augmentation.ChannelsReref(:gh:848by
Bruna Lopes_) - Added Patched Brain Transformer from Klein T et al 2025 at
:class:braindecode.models.PBT(:gh:787byJosé Mauricio_) - Including typing in the augmentation module (:gh:
709by Aphel_) - Adding :class:
braindecode.models.SSTDPN(:gh:790byCan Han_ andBruno Aristimunha_ ) - Adding :class:
braindecode.models.BrainModule(:gh:743byBruno Aristimunha_ ) - Added :class:
braindecode.models.BENDR(:gh:802byBruno Aristimunha_ ) - Adding a tutorial for fine-tuning a pre-trained foundation model (:gh:
794byPierre Guetschel_) - Added 25 new MNE preprocessing functions, expanding from 6 to 31 total preprocessing
classes. New functions include: :class:braindecode.preprocessing.NotchFilter,
:class:braindecode.preprocessing.SavgolFilter,
:class:braindecode.preprocessing.ApplyHilbert,
:class:braindecode.preprocessing.InterpolateBads,
:class:braindecode.preprocessing.InterpolateTo,
:class:braindecode.preprocessing.RenameChannels,
:class:braindecode.preprocessing.ReorderChannels,
:class:braindecode.preprocessing.EqualizeChannels,
:class:braindecode.preprocessing.AddChannels,
:class:braindecode.preprocessing.SetMontage,
:class:braindecode.preprocessing.AddReferenceChannels,
:class:braindecode.preprocessing.AddProj,
:class:braindecode.preprocessing.ApplyProj,
:class:braindecode.preprocessing.DelProj,
:class:braindecode.preprocessing.ComputeCurrentSourceDensity,
:class:braindecode.preprocessing.FixStimArtifact,
:class:braindecode.preprocessing.CropByAnnotations,
:class:braindecode.preprocessing.Anonymize,
:class:braindecode.preprocessing.SetAnnotations,
:class:braindecode.preprocessing.SetChannelTypes,
:class:braindecode.preprocessing.SetMeasDate,
:class:braindecode.preprocessing.FixMagCoilTypes,
:class:braindecode.preprocessing.ApplyGradientCompensation,
:class:braindecode.preprocessing.AddEvents, and
:class:braindecode.preprocessing.Rescale(:gh:801byBruno Aristimunha_) - Adding artifact removal preprocessing steps, incl.
:class:braindecode.preprocessing.EEGPrep(:gh:796byChristian Kothe_) - Including huggingface hub mixin to all models (:gh:
795byKuntal Kokate_ ) - Better inheritance between the different dataset classes (:gh:
806byPierre Guetschel_ ) - Fix minor documentation issues in Labram (:gh:
808byMatthew Chen_) - Including missed tag in all the models and creating some test for it (:gh:
811by
Bruno Aristimunha_ ) - Added :class:
braindecode.models.LUNA(:gh:802byBruno Aristimunha,Thorir Mar Ingolfsson) - Improve :class:
braindecode.preprocessing.Preprocessorserialisation (:gh:813by
Pierre Guetschel_ ) - Modify verbosity of create_window_from_events (:gh:
814byMatthew Chen_) - Including SIENA dataset and CHB_MIT datasets (:gh:
818byJonathan Dan_ andBruno Aristimunha_ ) - Modify the interface of FBMSNet for consistency with FBCNet + Unit Tests (:gh:
819by
Matthew Chen_) - Adding :class:
braindecode.models.MEDFormer(:gh:821byBruno Aristimunha_ ) - Adding :class:
braindecode.models.EEGSymmodel (:gh:697byPierre Guetschel_ and
Bruno Aristimunha_ ) - Adding tutorial for
:func:braindecode.preprocessing.windowers.create_fixed_length_windows(:gh:746by
Aniela BuliczandArina SchippersandAron van Zuijlen) - Including interface with Hugging Face Hub for dataset sharing and loading (:gh:
820
byKuntal Kokate_ andBruno Aristimunha_ ) - Adding a CITATION.cff file, allowing researchers to directly cite the Braindecode
library via a Zenodo DOI (:gh:847and :gh:872byPierre Guetschel_ ) - Add automatically-generated pydantic models configs (:gh:
850byPierre Guetschel_
) - Refactor: standardized parameter names in transformer and LabRam modules (:gh:
850by
José Mauricio_) - Added a tutorial for temporal generalization (:gh:
857byMatthew Chen_) - Including colab buttons to all tutorials (:gh:
861byBruno Aristimunha_ ) - Adding example Pydantic and Exca (:gh:
858byPierre Guetschel_) - Renaming the model category "Foundation Models" from "Large Brain Models (LBM)"
(:gh:867byBruno Aristimunha_ ) - Make the dataset at huggingface hub more bids compatible (:gh:
871byBruno Aristimunha_ ) - Reorganized BIDS-related modules into :py:mod:
braindecode.datasets.bidssubpackage
for better code organization. The subpackage includes: dataset loading
(datasets.py), Hub format utilities (hub_format.py), Hub integration
(hub.py), and validation utilities (hub_validation.py) (:gh:871byBruno Aristimunha_) - Changed metadata storage in Zarr format from JSON attributes to TSV files
(metadata.tsv) for better scalability with large datasets (:gh:871byBruno Aristimunha_) - Improved JSON serialization in zarr.json by storing
descriptionandinfoas
proper JSON objects instead of stringified JSON, with NaN/Inf sanitization for valid
JSON output (:gh:871byBruno Aristimunha_)
API changes
-
BIDS and Hub modules moved to :py:mod:
braindecode.datasets.bidssubpackage:
braindecode.datasets.bids.hub,braindecode.datasets.bids.hub_format,
braindecode.datasets.bids.datasets,braindecode.datasets.bids.hub_validation
(:gh:871byBruno Aristimunha_) -
Deprecating the old naming of MOABB Dataset name (:gh:
826byBruno Aristimunha_) -
Exposing the :func:
braindecode.datautil.infer_signal_propertiesutility function
(:gh:856byPierre Guetschel_) -
Deprecating the old naming of MOABB Dataset name :gh:
826byBruno Aristimunha_ -
Drop support for Python 3.10 and increase support to Python 3.13 and python 3.14
(:gh:840byBruno Aristimunha_)- Model config helpers now soft-import
pydantic/numpydantic; if the optional
dependencies are missing the module skips config generation and warns to install
pip install braindecode[pydantic].
- Model config helpers now soft-import
Bugs
- Fixing the issues with :class:
braindecode.models.ATCNet(:gh:782byHamdi Altaheri_) - Fixing expired path when loading a preprocessed dataset that was moved (:gh:
786by
Pierre Guetschel_) - Fix OverflowError sometimes when saving description to a json file (:gh:
789by
Pierre Guetschel_) - Small adjustment in :class:
braindecode.models.Labrammodel to allow pre-loading of
weights (:gh:792byBruno Aristimunha_) - Fixing many warnings for generating the documentation (:gh:
805byBruno Aristimunha_) - Fix test compatibility with scikit-learn 1.8+ by adding
__sklearn_tags__support
to test mocks (:gh:868byBruno Aristimunha_)
Release 1.2.0
Check the whats new file
v1.1.1
What's Changed
- Fix whats_new by @PierreGtch in #749
- [FIX] Fix Deep4Net initialization issue by @bruAristimunha in #752
- [FIX] Initialization issue with atcnet. by @bruAristimunha in #754
- [FIX] Update and fix various neural network models by @bruAristimunha in #756
- [FIX] Labram with small input by @bruAristimunha in #757
- Consolidate pre-commit repositories and update configurations by @bruAristimunha in #759
- [FIX] Embedding size parameters should be index based on the conv and depth parameters by @bruAristimunha in #760
- Optimize installation time by updating dependencies by @bruAristimunha in #761
- Release 1.1.0 by @bruAristimunha in #762
- Release 1.1.1 by @bruAristimunha in #764
Full Changelog: v1.0...v1.1.1
v1.1
What's Changed
- Fix whats_new by @PierreGtch in #749
- [FIX] Fix Deep4Net initialization issue by @bruAristimunha in #752
- [FIX] Initialization issue with atcnet. by @bruAristimunha in #754
- [FIX] Update and fix various neural network models by @bruAristimunha in #756
- [FIX] Labram with small input by @bruAristimunha in #757
- Consolidate pre-commit repositories and update configurations by @bruAristimunha in #759
- [FIX] Embedding size parameters should be index based on the conv and depth parameters by @bruAristimunha in #760
- Optimize installation time by updating dependencies by @bruAristimunha in #761
Full Changelog: v1.0...v1.1
v1.0
What's Changed
- V0.8 by @bruAristimunha in #557
- Fix annotations by @dcwil in #563
- [MNT] changing the whats new checker and fixing tests with deprecated things by @bruAristimunha in #569
- [MRG] Adding BIOT to braindecode by @bruAristimunha in #573
- Allow inferring signal parameters from torch tensors by @PierreGtch in #574
- [MRG] Creating tests to ensure that all the models work with default parameters, mapping the mandatory parameters for the models by @bruAristimunha in #571
- Adding Labram by @bruAristimunha in #578
- [ENH] Add new model: EEG-SimpleConv by @elouayas in #581
- adding NMT dataset by @MohammadJavadD in #443
- [MNT] Black codebase by @bruAristimunha in #584
- Adding extra options for MOABB dataset by @bruAristimunha in #587
- ENH Add type hints to datasets by @PierreGtch in #590
- MNT trying to solve the issue with test by @bruAristimunha in #591
- EHN Increase test coverage by @bruAristimunha in #592
- MNT temporary solution for MNE version by @bruAristimunha in #594
- [WIP] Adding Attention Base Net by @bruAristimunha in #572
- [MRG] TUH: standardize channel name and define their positions by @PierreGtch in #593
- Add
offsetarg topreprocesfunction by @PierreGtch in #599 - Add type hints to preprocessing functions by @PierreGtch in #600
- Update nmt.py by @MohammadJavadD in #601
- Add mypy to CI by @PierreGtch in #606
- Preprocessing
EEGWindowsDatasetby @PierreGtch in #607 - Fix dead link & Sphinx URL formatting by @OverLordGoldDragon in #602
- [MNT] Fix matplotlib colormaps deprecation by @bruAristimunha in #617
- Adding SPARCNet and ContraWR by @bruAristimunha in #611
- MNT Ensure mypy to work for every commit by @bruAristimunha in #619
- Add SegmentationReconstruction augmentation by @gustavohenriquesr in #608
- Code clarity changes in
windowers.pyby @OverLordGoldDragon in #615 - MNT Optimizing the CI by @bruAristimunha in #620
- Lazy index for fixed length windower by @PierreGtch in #597
- Deprecate moabb 1.0.0 by @PierreGtch in #627
- Log Softmax as False by @bruAristimunha in #624
- MNT Removing MNE version pin by @bruAristimunha in #629
- Add MaskEncoding augmentation by @gustavohenriquesr in #631
- MNT Increasing the moabb version by @bruAristimunha in #632
- EHN: Including EEGNex by @bruAristimunha in #635
- EHN: Ensure consistency in the last layer using tests by @bruAristimunha in #642
- MNT: removing deprecated EEGInception and deprecating EEGNetV1 by @bruAristimunha in #639
- Exposing activation function by @bruAristimunha in #637
- EHN: including EEGTCNet by @bruAristimunha in #640
- Adding SleepPhysionetChallenge2018 dataset by @bruAristimunha in #621
- MNT: solving windows CI. by @bruAristimunha in #644
- EHN: Including Syncnet by @bruAristimunha in #643
- DOC: Solving issues with Sphinx by @bruAristimunha in #646
- [EHN] Normalizing the parameters for dropout by @bruAristimunha in #654
- [EHN]: Add TSInceptionV1 by @bruAristimunha in #641
- [WIP] No more relative imports and moving some functions by @bruAristimunha in #653
- FIX: small merge issue from #653 by @bruAristimunha in #655
- [MNT] Updating the only tutorial that doesn't run on CI (Lazy benchmark) by @bruAristimunha in #652
- EHN: Including pytorch audio by @bruAristimunha in #661
- [EHN] Filterbank as module by @bruAristimunha in #656
- FIX: Suppress TUHAbnormal warnings when running in parallel by @itsaphel in #670
- [MNT] Bye old parameters by @bruAristimunha in #672
- [ENH] Including CTNet into braindecode by @bruAristimunha in #666
- [MNT] or [EHN] (?) Exposing EEGITNet parameters by @bruAristimunha in #673
- [EHN] EEGMiner by @bruAristimunha in #667
- [MNT] EEGNetv4 FIX by @bruAristimunha in #676
- [EHN] Including SCC by @bruAristimunha in #679
- [EHN] Including MSVTNet by @bruAristimunha in #659
- [EHN] Inclusion of SincShallowNet by @bruAristimunha in #678
- [MNT] Including figures in the docstring of all models that I could find by @bruAristimunha in #682
- [MNT] Including figures by @bruAristimunha in #683
- [MNT] TCN and Hybrid are not longer models by @bruAristimunha in #674
- [MNT] Adjusting doc from EEGMiner by @bruAristimunha in #685
- MTN unpin sckit-learn after skorch release by @tomMoral in #688
- Bump
actions/upload-artifactto v4 by @itsaphel in #691 - fix joblib usage for NMT dataset by @itsaphel in #690
- MTN fix mne caching in doc build by @tomMoral in #693
- [MNT] updating the pre-commit and applying by @bruAristimunha in #699
- [MNT] Eegnetv4 fix v2 by @bruAristimunha in #680
- [FIX] Update preprocess.py for Windows compatibility by @arnodelorme in #700
- [FIX] Making the MOABB dataset work with BIDS cache by @bruAristimunha in #694
- Add
BIDSDatasetby @PierreGtch in #701 - Add
BIDSDatasetto doc by @PierreGtch in #702 - Distributed samplers for recording and relative positioning sampling by @dungscout96 in #695
- Include Signal-JEPA models by @PierreGtch in #703
- [MNT] updating the CI by @bruAristimunha in #705
- Small fixes on BIDS datasets by @PierreGtch in #704
- Fixes on sJEPA and BIDS docstrings by @PierreGtch in #706
- [EHN] Allowing Slicedataset inference by @bruAristimunha in #716
- [EHN] Including model list into documentation by @lucas-heck in #715
- Include summary.csv in package data and update MANIFEST.in by @Samuel-Boehm in #719
- Enhance model summary page with structured layout, tags, and dropdown filters by @Ganasekhar-gif in #718
- [EHN] FBCNet model by @bruAristimunha in #722
- [EHN] FBLightConvNet by @bruAristimunha in #723
- Add FBMSNet model implementation by @bruAristimunha in #724
- Add IFNet model to the library by @bruAristimunha in #726
- DOC: Fixing broken links and warnings by @lucas-heck in #727
- Refactor and update modules for improved organization and functionality by @bruArist...
v0.8.1
See changes at https://braindecode.org/stable/whats_new.html
New Contributors
Version 0.7.0
See changes at https://braindecode.org/stable/whats_new.html
What's Changed
- Update base.py by @MohammadJavadD in #371
- Adding source code button for documentation. by @bruAristimunha in #380
- [MRG] Fix predict_trials by @gemeinl in #381
- [WIP] Move stored preds in callbacks to CPU by @robintibor in #384
- Changing the name of function for sklearn compatibility. by @bruAristimunha in #388
- [WIP] Adding docstrings for models by @dcwil in #281
- [WIP] Data augmentation search by @bruAristimunha in #389
- [WIP] Scikit-learn hyperparameter tuning example by @gemeinl in #349
- [WIP] Nicer more structured docs by @robintibor and @bruAristimunha in #272
- More natural phrasing in README.rst by @cedricrommel in #396
- WIP: added unified validation scheme by @martinwimpff and @bruAristimunha in #397
- added verbosity args to windowers by @gemeinl in #391
- Fix torch.linalg issue in rotation augmentations by @cedricrommel in #398
- Resolving some Sphinx Doc Warnings. Related to Issue #266 by @bruAristimunha in #403
- adding EEG-ITNET model by @GhBlg, @bruAristimunha and @sliwy in #400
- Updating What's New, related with PR #391. by @bruAristimunha in #407
- Adding a new parameter in the class AugmentedDataloader to send transformation to the device. by @bruAristimunha in #406
- [WIP] EEG-Inception by @bruAristimunha in #390
- bugfix ft_surrogate by @martinwimpff in #409
- Removing subject_ids argument in TUHAbnormal example. by @bruAristimunha in #402
- Removing functions by @bruAristimunha in #415
- [WIP] Drop last in train by @robintibor in #411
- Updated depreciation by @bruAristimunha in #413
- Updating the versions.json. by @bruAristimunha in #416
- V0.7 release by @bruAristimunha in #421
- Updating Path to CI by @bruAristimunha in #423
New Contributors
- @MohammadJavadD made their first contribution in #371
- @bruAristimunha made their first contribution in #380
- @martinwimpff made their first contribution in #397
- @GhBlg made their first contribution in #400
Full Changelog: v0.6.0...v0.7.0
Version 0.6.0
See changes at https://braindecode.org/whats_new.html
Version 0.5.1
See Changes at https://braindecode.org/whats_new.html
Version 0.5.0
First release on PyPI.