Braindecode 1.6.1.dev1049__tar.gz → 1.6.1.dev1052__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {braindecode-1.6.1.dev1049/braindecode.egg-info → braindecode-1.6.1.dev1052}/PKG-INFO +1 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/__init__.py +0 -2
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/summary.csv +0 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/util.py +0 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/__init__.py +1 -2
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/blocks.py +0 -82
- braindecode-1.6.1.dev1052/braindecode/version.py +1 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052/braindecode.egg-info}/PKG-INFO +1 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode.egg-info/SOURCES.txt +0 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/api.rst +0 -2
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/whats_new.rst +0 -2
- braindecode-1.6.1.dev1049/braindecode/models/eegdino.py +0 -533
- braindecode-1.6.1.dev1049/braindecode/version.py +0 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/LICENSE.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/MANIFEST.in +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/NOTICE.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/README.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/augmentation/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/augmentation/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/augmentation/functional.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/augmentation/transforms.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/classifier.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bbci.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bcicomp.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/datasets.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/format.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/hub.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/hub_format.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/hub_io.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/hub_validation.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/bids/iterable.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/chb_mit.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/mne.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/moabb.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/nmt.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/registry.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/siena.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/sleep_physionet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/tuh.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/utils.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datasets/xy.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datautil/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datautil/channel_utils.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datautil/hub_formats.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datautil/serialization.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/datautil/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/eegneuralnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/functional/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/functional/functions.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/functional/initialization.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/atcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/attentionbasenet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/attn_sleep.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/bendr.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/biot.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/brainmodule.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/cbramod.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/codebrain.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/config.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/contrawr.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/ctnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/deep4.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/deepsleepnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/dgcnn.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegconformer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eeginception_erp.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eeginception_mi.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegitnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegminer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegnex.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegpt.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegsimpleconv.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegsym.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/eegtcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/emg2qwerty.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/fbcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/fblightconvnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/fbmsnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/hybrid.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/ifnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/interpolated.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/labram.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/luna.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/medformer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/meta_neuromotor.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/msvtnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/patchedtransformer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/reve.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/sccnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/shallow_fbcsp.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/signal_jepa.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/sinc_shallow.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/sparcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/sstdpn.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/syncnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/tcn.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/tidnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/tsinception.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/models/usleep.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/activation.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/attention.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/convolution.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/filter.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/interpolation.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/layers.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/linear.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/parametrization.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/stats.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/modules/wrapper.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/preprocessing/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/preprocessing/mne_preprocess.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/preprocessing/preprocess.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/preprocessing/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/preprocessing/windowers.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/regressor.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/samplers/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/samplers/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/samplers/ssl.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/training/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/training/callbacks.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/training/losses.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/training/scoring.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/visualization/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/visualization/attribution.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/visualization/confusion_matrices.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/visualization/frequency.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/visualization/metrics.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/visualization/sanity.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode/visualization/topology.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode.egg-info/dependency_links.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode.egg-info/requires.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/braindecode.egg-info/top_level.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/Makefile +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/_templates/autosummary/class.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/_templates/autosummary/function.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/cite.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/conf.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/help.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/index.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/install/install.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/install/install_pip.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/install/install_source.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/attention.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/channel.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/convolution.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/filterbank.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/gnn.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/interpretable.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/lbm.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/recurrent.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/categorization/spd.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/models.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/models_categorization.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/models_table.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/models/models_visualization.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/docs/sg_execution_times.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/pyproject.toml +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1052}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.6.1.
|
|
3
|
+
Version: 1.6.1.dev1052
|
|
4
4
|
Summary: Deep learning software to decode EEG, ECG or MEG signals
|
|
5
5
|
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Alexandre Gramfort <agramfort@meta.com>
|
|
6
6
|
Maintainer-email: Alexandre Gramfort <agramfort@meta.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
@@ -15,7 +15,6 @@ from .deep4 import Deep4Net
|
|
|
15
15
|
from .deepsleepnet import DeepSleepNet
|
|
16
16
|
from .dgcnn import DGCNN
|
|
17
17
|
from .eegconformer import EEGConformer
|
|
18
|
-
from .eegdino import EEGDINO
|
|
19
18
|
from .eeginception_erp import EEGInceptionERP
|
|
20
19
|
from .eeginception_mi import EEGInceptionMI
|
|
21
20
|
from .eegitnet import EEGITNet
|
|
@@ -85,7 +84,6 @@ __all__ = [
|
|
|
85
84
|
"DeepSleepNet",
|
|
86
85
|
"BrainModule",
|
|
87
86
|
"EEGConformer",
|
|
88
|
-
"EEGDINO",
|
|
89
87
|
"EEGPT",
|
|
90
88
|
"InterpolatedEEGPT",
|
|
91
89
|
"EEGInceptionERP",
|
|
@@ -56,4 +56,3 @@ InterpolatedBIOT,"Sleep Staging, Epilepsy",Classification,200,"chs_info, n_outpu
|
|
|
56
56
|
InterpolatedEEGPT,General,Classification,256,"chs_info, n_outputs, n_times",25323137,"InterpolatedEEGPT(chs_info=<user>, n_outputs=4, n_times=1024)","Foundation Model,Attention/Transformer,Channel"
|
|
57
57
|
InterpolatedLaBraM,General,"Classification, Embedding",200,"chs_info, n_outputs, n_times",5866196,"InterpolatedLaBraM(chs_info=<user>, n_outputs=4, n_times=1000)","Convolution,Foundation Model,Channel"
|
|
58
58
|
InterpolatedSignalJEPA,"Motor Imagery, ERP, SSVEP",Embedding,128,"chs_info",3456882,"InterpolatedSignalJEPA(chs_info=<user>)","Convolution,Channel,Foundation Model"
|
|
59
|
-
EEGDINO,General,Classification,200,"n_chans, n_outputs, n_times",4539698,"EEGDINO(n_chans=19, n_outputs=4, n_times=1000)","Foundation Model,Attention/Transformer"
|
|
@@ -432,7 +432,6 @@ models_mandatory_parameters: list[
|
|
|
432
432
|
{"n_chans": 19, "n_times": 6000},
|
|
433
433
|
),
|
|
434
434
|
("DGCNN", ["n_chans", "n_outputs", "n_times", "chs_info"], None),
|
|
435
|
-
("EEGDINO", ["n_chans", "n_outputs", "n_times"], None),
|
|
436
435
|
]
|
|
437
436
|
|
|
438
437
|
################################################################
|
|
@@ -14,7 +14,7 @@ from .attention import (
|
|
|
14
14
|
MultiHeadAttention,
|
|
15
15
|
SqueezeAndExcitation,
|
|
16
16
|
)
|
|
17
|
-
from .blocks import MLP, FeedForwardBlock, InceptionBlock
|
|
17
|
+
from .blocks import MLP, FeedForwardBlock, InceptionBlock
|
|
18
18
|
from .convolution import (
|
|
19
19
|
AvgPool2dWithConv,
|
|
20
20
|
CausalConv1d,
|
|
@@ -68,7 +68,6 @@ __all__ = [
|
|
|
68
68
|
"MLP",
|
|
69
69
|
"FeedForwardBlock",
|
|
70
70
|
"InceptionBlock",
|
|
71
|
-
"PatchTokenizer",
|
|
72
71
|
"AvgPool2dWithConv",
|
|
73
72
|
"CausalConv1d",
|
|
74
73
|
"CombinedConv",
|
|
@@ -1,89 +1,7 @@
|
|
|
1
|
-
from warnings import warn
|
|
2
|
-
|
|
3
1
|
import torch
|
|
4
2
|
from torch import nn
|
|
5
3
|
|
|
6
4
|
|
|
7
|
-
class PatchTokenizer(nn.Module):
|
|
8
|
-
r"""Tokenize an EEG signal into non-overlapping temporal patches.
|
|
9
|
-
|
|
10
|
-
Transforms ``(batch, n_chans, n_times)`` into
|
|
11
|
-
``(batch, n_chans, n_patches, patch_dim)`` by splitting the time axis into
|
|
12
|
-
non-overlapping patches of ``patch_size`` samples. This is the shared
|
|
13
|
-
patch / "tokenization" step used by transformer EEG foundation models
|
|
14
|
-
(e.g. LaBraM, CBraMod, EEG-DINO).
|
|
15
|
-
|
|
16
|
-
As in the filter-bank models (:class:`~braindecode.models.FBCNet`,
|
|
17
|
-
:class:`~braindecode.models.FBMSNet`), when ``n_times`` is not a multiple of
|
|
18
|
-
``patch_size`` the input is right zero-padded (a warning is emitted at
|
|
19
|
-
construction); it is never an error.
|
|
20
|
-
|
|
21
|
-
Two modes:
|
|
22
|
-
|
|
23
|
-
- **non-learnable** (``learnable=False``, default): a pure reshape, so
|
|
24
|
-
``patch_dim == patch_size`` and the raw samples of each patch are kept
|
|
25
|
-
(the patch embedding, if any, lives in the model).
|
|
26
|
-
- **learnable** (``learnable=True``): a strided ``Conv1d`` (kernel and
|
|
27
|
-
stride equal to ``patch_size``, applied per channel) maps each patch to
|
|
28
|
-
``emb_dim`` features, so ``patch_dim == emb_dim``.
|
|
29
|
-
|
|
30
|
-
Parameters
|
|
31
|
-
----------
|
|
32
|
-
patch_size : int
|
|
33
|
-
Number of time samples per patch.
|
|
34
|
-
n_times : int
|
|
35
|
-
Number of time samples of the input, used to set up the right-padding
|
|
36
|
-
when ``n_times`` is not a multiple of ``patch_size``.
|
|
37
|
-
emb_dim : int, optional
|
|
38
|
-
Output features per patch in learnable mode. Defaults to ``patch_size``.
|
|
39
|
-
Ignored when ``learnable=False``.
|
|
40
|
-
learnable : bool, default=False
|
|
41
|
-
Whether the tokenizer is a learned convolution or a fixed reshape.
|
|
42
|
-
|
|
43
|
-
Examples
|
|
44
|
-
--------
|
|
45
|
-
>>> import torch
|
|
46
|
-
>>> from braindecode.modules import PatchTokenizer
|
|
47
|
-
>>> tokenizer = PatchTokenizer(patch_size=200, n_times=1000)
|
|
48
|
-
>>> tokenizer(torch.randn(2, 19, 1000)).shape
|
|
49
|
-
torch.Size([2, 19, 5, 200])
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
def __init__(self, patch_size, n_times, emb_dim=None, learnable=False):
|
|
53
|
-
super().__init__()
|
|
54
|
-
self.patch_size = patch_size
|
|
55
|
-
self.learnable = learnable
|
|
56
|
-
self.emb_dim = (emb_dim or patch_size) if learnable else patch_size
|
|
57
|
-
if n_times % patch_size:
|
|
58
|
-
warn(
|
|
59
|
-
f"Time dimension ({n_times}) is not divisible by patch_size "
|
|
60
|
-
f"({patch_size}). Input will be padded.",
|
|
61
|
-
UserWarning,
|
|
62
|
-
)
|
|
63
|
-
self.padding_layer = nn.ConstantPad1d(
|
|
64
|
-
(0, patch_size - n_times % patch_size), 0.0
|
|
65
|
-
)
|
|
66
|
-
else:
|
|
67
|
-
self.padding_layer = nn.Identity()
|
|
68
|
-
# Defined unconditionally (Identity when not learnable) so the attribute
|
|
69
|
-
# always exists for torch.jit.script, which type-checks both branches.
|
|
70
|
-
if learnable:
|
|
71
|
-
self.patcher = nn.Conv1d(1, self.emb_dim, patch_size, stride=patch_size)
|
|
72
|
-
else:
|
|
73
|
-
self.patcher = nn.Identity()
|
|
74
|
-
|
|
75
|
-
def forward(self, x):
|
|
76
|
-
x = self.padding_layer(x)
|
|
77
|
-
batch_size, n_chans, _ = x.shape
|
|
78
|
-
if self.learnable:
|
|
79
|
-
x = x.flatten(0, 1).unsqueeze(1) # (batch * chans, 1, time)
|
|
80
|
-
x = self.patcher(x) # (batch * chans, emb, patches)
|
|
81
|
-
return x.reshape(batch_size, n_chans, x.shape[-2], x.shape[-1]).permute(
|
|
82
|
-
0, 1, 3, 2
|
|
83
|
-
)
|
|
84
|
-
return x.reshape(batch_size, n_chans, -1, self.patch_size)
|
|
85
|
-
|
|
86
|
-
|
|
87
5
|
class InceptionBlock(nn.Module):
|
|
88
6
|
"""
|
|
89
7
|
Inception block module.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.6.1.dev1052"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.6.1.
|
|
3
|
+
Version: 1.6.1.dev1052
|
|
4
4
|
Summary: Deep learning software to decode EEG, ECG or MEG signals
|
|
5
5
|
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Alexandre Gramfort <agramfort@meta.com>
|
|
6
6
|
Maintainer-email: Alexandre Gramfort <agramfort@meta.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
@@ -67,7 +67,6 @@ braindecode/models/deep4.py
|
|
|
67
67
|
braindecode/models/deepsleepnet.py
|
|
68
68
|
braindecode/models/dgcnn.py
|
|
69
69
|
braindecode/models/eegconformer.py
|
|
70
|
-
braindecode/models/eegdino.py
|
|
71
70
|
braindecode/models/eeginception_erp.py
|
|
72
71
|
braindecode/models/eeginception_mi.py
|
|
73
72
|
braindecode/models/eegitnet.py
|
|
@@ -143,7 +143,6 @@ interface for all EEG models and can derive variable names when needed.
|
|
|
143
143
|
Deep4Net
|
|
144
144
|
DeepSleepNet
|
|
145
145
|
EEGConformer
|
|
146
|
-
EEGDINO
|
|
147
146
|
EEGInceptionERP
|
|
148
147
|
EEGInceptionMI
|
|
149
148
|
EEGITNet
|
|
@@ -256,7 +255,6 @@ perceptrons (MLPs) and inception blocks.
|
|
|
256
255
|
MLP
|
|
257
256
|
FeedForwardBlock
|
|
258
257
|
InceptionBlock
|
|
259
|
-
PatchTokenizer
|
|
260
258
|
|
|
261
259
|
Convolution
|
|
262
260
|
===========
|
|
@@ -36,8 +36,6 @@ Enhancements
|
|
|
36
36
|
variant of :class:`braindecode.models.EEGPT` built with
|
|
37
37
|
:func:`~braindecode.models.interpolated.InterpolatedModel`.
|
|
38
38
|
By `Pierre Guetschel`_.
|
|
39
|
-
- Add :class:`braindecode.models.EEGDINO`, the EEG-DINO self-distillation
|
|
40
|
-
foundation model (Small/Medium/Large) with pretrained S/M weights. By `Bruno Aristimunha`_.
|
|
41
39
|
|
|
42
40
|
API and behavior changes
|
|
43
41
|
========================
|