braindecode 1.6.1.dev1049__tar.gz → 1.6.1.dev1053__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.dev1053}/PKG-INFO +1 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/eegneuralnet.py +41 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/mne_preprocess.py +28 -1
- braindecode-1.6.1.dev1053/braindecode/version.py +1 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053/braindecode.egg-info}/PKG-INFO +1 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/whats_new.rst +23 -0
- braindecode-1.6.1.dev1049/braindecode/version.py +0 -1
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/LICENSE.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/MANIFEST.in +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/NOTICE.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/README.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/augmentation/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/augmentation/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/augmentation/functional.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/augmentation/transforms.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/classifier.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bbci.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bcicomp.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/datasets.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/format.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/hub.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/hub_format.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/hub_io.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/hub_validation.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/iterable.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/chb_mit.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/mne.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/moabb.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/nmt.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/registry.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/siena.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/sleep_physionet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/tuh.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/utils.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/xy.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datautil/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datautil/channel_utils.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datautil/hub_formats.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datautil/serialization.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datautil/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/functional/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/functional/functions.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/functional/initialization.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/atcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/attentionbasenet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/attn_sleep.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/bendr.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/biot.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/brainmodule.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/cbramod.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/codebrain.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/config.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/contrawr.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/ctnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/deep4.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/deepsleepnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/dgcnn.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegconformer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegdino.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eeginception_erp.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eeginception_mi.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegitnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegminer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegnex.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegpt.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegsimpleconv.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegsym.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eegtcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/emg2qwerty.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/fbcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/fblightconvnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/fbmsnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/hybrid.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/ifnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/interpolated.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/labram.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/luna.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/medformer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/meta_neuromotor.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/msvtnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/patchedtransformer.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/reve.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/sccnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/shallow_fbcsp.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/signal_jepa.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/sinc_shallow.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/sparcnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/sstdpn.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/summary.csv +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/syncnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/tcn.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/tidnet.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/tsinception.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/usleep.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/activation.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/attention.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/blocks.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/convolution.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/filter.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/interpolation.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/layers.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/linear.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/parametrization.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/stats.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/wrapper.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/preprocess.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/windowers.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/regressor.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/samplers/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/samplers/base.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/samplers/ssl.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/training/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/training/callbacks.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/training/losses.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/training/scoring.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/util.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/__init__.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/attribution.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/confusion_matrices.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/frequency.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/metrics.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/sanity.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/topology.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode.egg-info/SOURCES.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode.egg-info/dependency_links.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode.egg-info/requires.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode.egg-info/top_level.txt +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/Makefile +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/_templates/autosummary/class.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/_templates/autosummary/function.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/api.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/cite.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/conf.py +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/help.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/index.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/install/install.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/install/install_pip.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/install/install_source.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/attention.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/channel.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/convolution.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/filterbank.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/gnn.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/interpretable.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/lbm.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/recurrent.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/spd.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/models.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/models_categorization.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/models_table.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/models_visualization.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/sg_execution_times.rst +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/pyproject.toml +0 -0
- {braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/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.dev1053
|
|
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>
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import abc
|
|
8
8
|
import inspect
|
|
9
9
|
import logging
|
|
10
|
+
import warnings
|
|
10
11
|
from typing import Literal
|
|
11
12
|
|
|
12
13
|
import mne
|
|
@@ -41,6 +42,7 @@ def _get_model(model: str):
|
|
|
41
42
|
|
|
42
43
|
class _EEGNeuralNet(NeuralNet, abc.ABC):
|
|
43
44
|
signal_args_set_ = False
|
|
45
|
+
_warned_drop_last_ = False
|
|
44
46
|
|
|
45
47
|
@property
|
|
46
48
|
def log(self):
|
|
@@ -267,6 +269,44 @@ class _EEGNeuralNet(NeuralNet, abc.ABC):
|
|
|
267
269
|
X = X.get_data(units="uV")
|
|
268
270
|
return super().get_dataset(X, y)
|
|
269
271
|
|
|
272
|
+
def get_iterator(self, dataset, training=False):
|
|
273
|
+
iterator = super().get_iterator(dataset, training=training)
|
|
274
|
+
# Warn (once per fit) if drop_last would discard every training batch,
|
|
275
|
+
# e.g. a training set smaller than batch_size. This silently skips
|
|
276
|
+
# training without raising any error, which is hard to diagnose.
|
|
277
|
+
if training and not self._warned_drop_last_:
|
|
278
|
+
self._warn_if_training_batches_dropped(iterator)
|
|
279
|
+
return iterator
|
|
280
|
+
|
|
281
|
+
def _warn_if_training_batches_dropped(self, loader):
|
|
282
|
+
"""Warn if ``drop_last`` discards all training batches.
|
|
283
|
+
|
|
284
|
+
With ``iterator_train__drop_last=True`` (the braindecode default), a
|
|
285
|
+
training set smaller than ``batch_size`` yields zero batches, so no
|
|
286
|
+
forward/backward pass runs and the model is left untrained without any
|
|
287
|
+
error. We inspect the resolved training ``DataLoader`` (after
|
|
288
|
+
``train_split`` has been applied), so the count reflects the actual
|
|
289
|
+
number of training examples.
|
|
290
|
+
"""
|
|
291
|
+
self._warned_drop_last_ = True
|
|
292
|
+
if not getattr(loader, "drop_last", False):
|
|
293
|
+
return
|
|
294
|
+
batch_size = getattr(loader, "batch_size", None)
|
|
295
|
+
try:
|
|
296
|
+
n_train = len(loader.dataset)
|
|
297
|
+
except TypeError:
|
|
298
|
+
return # e.g. an IterableDataset whose length is unknown
|
|
299
|
+
if not batch_size or n_train == 0 or n_train >= batch_size:
|
|
300
|
+
return
|
|
301
|
+
warnings.warn(
|
|
302
|
+
f"The training set has {n_train} example(s), which is smaller than "
|
|
303
|
+
f"batch_size={batch_size}. With iterator_train__drop_last=True "
|
|
304
|
+
f"(the braindecode default), all training batches are dropped and "
|
|
305
|
+
f"the model is not trained. Reduce batch_size to at most {n_train}, "
|
|
306
|
+
f"or pass iterator_train__drop_last=False.",
|
|
307
|
+
UserWarning,
|
|
308
|
+
)
|
|
309
|
+
|
|
270
310
|
def partial_fit(self, X, y=None, classes=None, **fit_params):
|
|
271
311
|
"""Fit the module.
|
|
272
312
|
|
|
@@ -366,6 +406,7 @@ class _EEGNeuralNet(NeuralNet, abc.ABC):
|
|
|
366
406
|
the module and to the ``self.train_split`` call.
|
|
367
407
|
"""
|
|
368
408
|
# this needs to be executed before the net is initialized:
|
|
409
|
+
self._warned_drop_last_ = False # re-check on every fresh fit
|
|
369
410
|
if not self.signal_args_set_:
|
|
370
411
|
self._set_signal_args(X, y, classes=None)
|
|
371
412
|
self.signal_args_set_ = True
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/mne_preprocess.py
RENAMED
|
@@ -13,6 +13,28 @@ import mne.preprocessing
|
|
|
13
13
|
from braindecode.preprocessing.preprocess import Preprocessor
|
|
14
14
|
from braindecode.util import _clean_docstring_sections
|
|
15
15
|
|
|
16
|
+
# Standalone MNE functions that are safe to wrap as a *callable* preprocessor.
|
|
17
|
+
#
|
|
18
|
+
# When ``fn`` is a callable and ``apply_on_array=False``, ``Preprocessor`` calls
|
|
19
|
+
# ``fn(raw, **kwargs)`` and reassigns the dataset to whatever ``fn`` returns. That
|
|
20
|
+
# is only correct for functions that return the modified ``Raw``/``Epochs``
|
|
21
|
+
# instance. Many standalone MNE functions instead return auxiliary data
|
|
22
|
+
# (annotations, a list of bad channels, a ``(inst, ...)`` tuple, ...), so passing
|
|
23
|
+
# them as callables would silently replace the recording with that auxiliary
|
|
24
|
+
# object. We therefore restrict the callable path to functions verified to return
|
|
25
|
+
# the modified instance; every other standalone function keeps the existing
|
|
26
|
+
# (string-name) behaviour. See :gh:`885`.
|
|
27
|
+
_SAFE_STANDALONE_FUNCTIONS = frozenset(
|
|
28
|
+
{
|
|
29
|
+
# returns the Raw with the CSD-transformed data
|
|
30
|
+
mne.preprocessing.compute_current_source_density,
|
|
31
|
+
# returns the Raw with the new bipolar reference channel
|
|
32
|
+
mne.set_bipolar_reference,
|
|
33
|
+
# returns the Raw with the OTP-cleaned data
|
|
34
|
+
mne.preprocessing.oversampled_temporal_projection,
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
|
|
16
38
|
|
|
17
39
|
def _is_standalone_function(func):
|
|
18
40
|
"""
|
|
@@ -79,7 +101,12 @@ def _generate_init_method(func, force_copy_false=False):
|
|
|
79
101
|
raise TypeError(
|
|
80
102
|
f"{func_name}() missing required arguments: {', '.join(mandatory)}"
|
|
81
103
|
)
|
|
82
|
-
|
|
104
|
+
# For standalone functions verified to return the modified instance,
|
|
105
|
+
# pass the callable itself so it is actually applied. Every other
|
|
106
|
+
# function keeps the legacy string-name behaviour (see #885 and
|
|
107
|
+
# ``_SAFE_STANDALONE_FUNCTIONS`` above).
|
|
108
|
+
fn = func if func in _SAFE_STANDALONE_FUNCTIONS else func_name
|
|
109
|
+
Preprocessor.__init__(self, fn=fn, apply_on_array=False, **init_kwargs)
|
|
83
110
|
|
|
84
111
|
init_method.__signature__ = inspect.signature(func)
|
|
85
112
|
return init_method
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.6.1.dev1053"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.6.1.
|
|
3
|
+
Version: 1.6.1.dev1053
|
|
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>
|
|
@@ -70,6 +70,15 @@ Bug fixes
|
|
|
70
70
|
use running statistics when ``batch_size == 1`` in train mode.
|
|
71
71
|
By `Bruno Aristimunha`_.
|
|
72
72
|
|
|
73
|
+
- Fix the auto-generated standalone-function preprocessors
|
|
74
|
+
(:class:`braindecode.preprocessing.ComputeCurrentSourceDensity`,
|
|
75
|
+
:class:`braindecode.preprocessing.SetBipolarReference`, and
|
|
76
|
+
:class:`braindecode.preprocessing.OversampledTemporalProjection`) passing the
|
|
77
|
+
function name as a string instead of the callable, so they failed to apply.
|
|
78
|
+
These functions return the modified instance and are now wrapped as callables.
|
|
79
|
+
Standalone functions that return auxiliary data (e.g. annotations or bad
|
|
80
|
+
channels) are intentionally left on the existing path for now. (:gh:`885` by
|
|
81
|
+
`Yiheng Li`_)
|
|
73
82
|
- Fix incorrect import path in CONTRIBUTING.md by `Yiheng Li`_
|
|
74
83
|
|
|
75
84
|
- Fix the broken EEGNeX quickstart snippet on the documentation landing page,
|
|
@@ -79,9 +88,23 @@ Bug fixes
|
|
|
79
88
|
:class:`~braindecode.EEGClassifier` infer the signal dimensions from the data.
|
|
80
89
|
By `Bhargav Kowshik`_
|
|
81
90
|
|
|
91
|
+
- Fix :class:`~braindecode.EEGClassifier` and
|
|
92
|
+
:class:`~braindecode.EEGRegressor` silently skipping all training when the
|
|
93
|
+
training set is smaller than ``batch_size`` (with the default
|
|
94
|
+
``iterator_train__drop_last=True``). Previously every batch was dropped and
|
|
95
|
+
the model was left untrained without any message; a :class:`UserWarning` is
|
|
96
|
+
now raised telling the user to lower ``batch_size`` or set
|
|
97
|
+
``iterator_train__drop_last=False``.
|
|
98
|
+
(:gh:`1053` by `Bhargav Kowshik`_)
|
|
99
|
+
|
|
82
100
|
Code health
|
|
83
101
|
============
|
|
84
102
|
|
|
103
|
+
- Install CPU-only PyTorch wheels in the ``tests`` and ``docs`` CI
|
|
104
|
+
workflows via ``UV_TORCH_BACKEND=cpu``. GitHub runners have no GPU, so
|
|
105
|
+
the default CUDA build pulled ~1.8 GiB of unused ``nvidia-*`` wheels and
|
|
106
|
+
contributed to a disk-exhaustion crash. (:gh:`1054` by `Bhargav Kowshik`_)
|
|
107
|
+
|
|
85
108
|
- Add a monthly scheduled workflow that cuts a stable PyPI release on
|
|
86
109
|
the 1st of every month, complementing the existing per-push ``.devN``
|
|
87
110
|
pipeline. (:gh:`1030` by `Bruno Aristimunha`_)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.6.1.dev1049"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/augmentation/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/augmentation/functional.py
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/augmentation/transforms.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/__init__.py
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/datasets.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/hub_format.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/hub_validation.py
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/bids/iterable.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datasets/sleep_physionet.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datautil/channel_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/datautil/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/functional/initialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/attentionbasenet.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eeginception_erp.py
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/eeginception_mi.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/fblightconvnet.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/meta_neuromotor.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/models/patchedtransformer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/interpolation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/modules/parametrization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/preprocess.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/preprocessing/windowers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/__init__.py
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/attribution.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/frequency.py
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/metrics.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode/visualization/topology.py
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/braindecode.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/_templates/autosummary/class.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/_templates/autosummary/function.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/attention.rst
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/channel.rst
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/convolution.rst
RENAMED
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/filterbank.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/interpretable.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/categorization/recurrent.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/models_categorization.rst
RENAMED
|
File without changes
|
|
File without changes
|
{braindecode-1.6.1.dev1049 → braindecode-1.6.1.dev1053}/docs/models/models_visualization.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|