Braindecode 1.3.0.dev175368549__tar.gz → 1.3.0.dev175415232__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.3.0.dev175368549/braindecode.egg-info → braindecode-1.3.0.dev175415232}/PKG-INFO +3 -13
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/augmentation/base.py +1 -1
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/__init__.py +4 -12
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/base.py +152 -131
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/bcicomp.py +4 -4
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/bids.py +3 -3
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/experimental.py +2 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/mne.py +5 -3
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/moabb.py +7 -17
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/nmt.py +2 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/sleep_physio_challe_18.py +2 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/sleep_physionet.py +2 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/tuh.py +2 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/xy.py +2 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datautil/__init__.py +1 -11
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datautil/serialization.py +8 -7
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/eegneuralnet.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/functional/functions.py +2 -6
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/functional/initialization.py +3 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/__init__.py +1 -14
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/atcnet.py +27 -26
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/attentionbasenet.py +32 -39
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/attn_sleep.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/base.py +2 -280
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/biot.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/contrawr.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/ctnet.py +3 -8
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/deepsleepnet.py +19 -28
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eegconformer.py +2 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eeginception_erp.py +25 -31
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eegitnet.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eegminer.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eegnet.py +1 -1
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eegtcnet.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/fbcnet.py +1 -5
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/fblightconvnet.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/fbmsnet.py +6 -20
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/ifnet.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/labram.py +87 -193
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/msvtnet.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/patchedtransformer.py +1 -1
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/signal_jepa.py +27 -111
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/sinc_shallow.py +9 -12
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/sstdpn.py +11 -11
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/summary.csv +0 -4
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/syncnet.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/tcn.py +0 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/usleep.py +21 -26
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/util.py +0 -87
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/attention.py +10 -10
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/blocks.py +3 -3
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/filter.py +9 -2
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/layers.py +17 -18
- braindecode-1.3.0.dev175415232/braindecode/preprocessing/__init__.py +37 -0
- braindecode-1.3.0.dev175415232/braindecode/preprocessing/mne_preprocess.py +77 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/preprocessing/preprocess.py +51 -146
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/preprocessing/windowers.py +20 -26
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/samplers/base.py +8 -8
- braindecode-1.3.0.dev175415232/braindecode/version.py +1 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232/braindecode.egg-info}/PKG-INFO +3 -13
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode.egg-info/SOURCES.txt +0 -11
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode.egg-info/requires.txt +1 -13
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/api.rst +6 -130
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/conf.py +14 -53
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/index.rst +5 -5
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/install/install_pip.rst +1 -7
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/install/install_source.rst +1 -1
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/whats_new.rst +2 -25
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/pyproject.toml +2 -16
- braindecode-1.3.0.dev175368549/braindecode/datasets/hub.py +0 -962
- braindecode-1.3.0.dev175368549/braindecode/datasets/hub_validation.py +0 -113
- braindecode-1.3.0.dev175368549/braindecode/datasets/registry.py +0 -120
- braindecode-1.3.0.dev175368549/braindecode/datautil/channel_utils.py +0 -114
- braindecode-1.3.0.dev175368549/braindecode/datautil/hub_formats.py +0 -180
- braindecode-1.3.0.dev175368549/braindecode/models/bendr.py +0 -469
- braindecode-1.3.0.dev175368549/braindecode/models/eegsym.py +0 -917
- braindecode-1.3.0.dev175368549/braindecode/models/luna.py +0 -836
- braindecode-1.3.0.dev175368549/braindecode/models/medformer.py +0 -758
- braindecode-1.3.0.dev175368549/braindecode/preprocessing/__init__.py +0 -271
- braindecode-1.3.0.dev175368549/braindecode/preprocessing/eegprep_preprocess.py +0 -1317
- braindecode-1.3.0.dev175368549/braindecode/preprocessing/mne_preprocess.py +0 -240
- braindecode-1.3.0.dev175368549/braindecode/preprocessing/util.py +0 -177
- braindecode-1.3.0.dev175368549/braindecode/version.py +0 -1
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/LICENSE.txt +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/MANIFEST.in +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/NOTICE.txt +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/README.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/__init__.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/augmentation/__init__.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/augmentation/functional.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/augmentation/transforms.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/classifier.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/bbci.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datautil/util.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/functional/__init__.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/deep4.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eeginception_mi.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eegnex.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/eegsimpleconv.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/hybrid.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/sccnet.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/shallow_fbcsp.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/sparcnet.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/tidnet.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/models/tsinception.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/__init__.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/activation.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/convolution.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/linear.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/parametrization.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/stats.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/util.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/modules/wrapper.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/regressor.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/samplers/__init__.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/samplers/ssl.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/training/__init__.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/training/callbacks.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/training/losses.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/training/scoring.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/util.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/visualization/__init__.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/visualization/confusion_matrices.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/visualization/gradients.py +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode.egg-info/dependency_links.txt +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode.egg-info/top_level.txt +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/Makefile +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/_templates/autosummary/class.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/_templates/autosummary/function.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/cite.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/help.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/install/install.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/attention.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/channel.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/convolution.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/filterbank.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/gnn.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/interpretable.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/lbm.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/recurrent.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/categorization/spd.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/models.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/models_categorization.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/models_table.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/models/models_visualization.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/docs/sg_execution_times.rst +0 -0
- {braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/setup.cfg +0 -0
{braindecode-1.3.0.dev175368549/braindecode.egg-info → braindecode-1.3.0.dev175415232}/PKG-INFO
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.3.0.
|
|
3
|
+
Version: 1.3.0.dev175415232
|
|
4
4
|
Summary: Deep learning software to decode EEG, ECG or MEG signals
|
|
5
|
-
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com
|
|
5
|
+
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
6
6
|
Maintainer-email: Alexandre Gramfort <agramfort@meta.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
7
7
|
License: BSD-3-Clause
|
|
8
8
|
Project-URL: homepage, https://braindecode.org
|
|
@@ -38,14 +38,8 @@ Requires-Dist: wfdb
|
|
|
38
38
|
Requires-Dist: h5py
|
|
39
39
|
Requires-Dist: linear_attention_transformer
|
|
40
40
|
Requires-Dist: docstring_inheritance
|
|
41
|
-
Requires-Dist: rotary_embedding_torch
|
|
42
41
|
Provides-Extra: moabb
|
|
43
42
|
Requires-Dist: moabb>=1.2.0; extra == "moabb"
|
|
44
|
-
Provides-Extra: eegprep
|
|
45
|
-
Requires-Dist: eegprep[eeglabio]>=0.1.1; extra == "eegprep"
|
|
46
|
-
Provides-Extra: hub
|
|
47
|
-
Requires-Dist: huggingface_hub[torch]>=0.20.0; extra == "hub"
|
|
48
|
-
Requires-Dist: zarr<3.0,>=2.18; extra == "hub"
|
|
49
43
|
Provides-Extra: tests
|
|
50
44
|
Requires-Dist: pytest; extra == "tests"
|
|
51
45
|
Requires-Dist: pytest-cov; extra == "tests"
|
|
@@ -71,11 +65,7 @@ Requires-Dist: pre-commit; extra == "docs"
|
|
|
71
65
|
Requires-Dist: openneuro-py; extra == "docs"
|
|
72
66
|
Requires-Dist: plotly; extra == "docs"
|
|
73
67
|
Provides-Extra: all
|
|
74
|
-
Requires-Dist: braindecode[moabb]; extra == "all"
|
|
75
|
-
Requires-Dist: braindecode[hub]; extra == "all"
|
|
76
|
-
Requires-Dist: braindecode[tests]; extra == "all"
|
|
77
|
-
Requires-Dist: braindecode[docs]; extra == "all"
|
|
78
|
-
Requires-Dist: braindecode[eegprep]; extra == "all"
|
|
68
|
+
Requires-Dist: braindecode[docs,moabb,tests]; extra == "all"
|
|
79
69
|
Dynamic: license-file
|
|
80
70
|
|
|
81
71
|
.. image:: https://badges.gitter.im/braindecodechat/community.svg
|
{braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/augmentation/base.py
RENAMED
|
@@ -189,7 +189,7 @@ class AugmentedDataLoader(DataLoader):
|
|
|
189
189
|
|
|
190
190
|
Parameters
|
|
191
191
|
----------
|
|
192
|
-
dataset :
|
|
192
|
+
dataset : BaseDataset
|
|
193
193
|
The dataset containing the signals.
|
|
194
194
|
transforms : list | Transform, optional
|
|
195
195
|
Transform or sequence of Transform to be applied to each batch.
|
{braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/__init__.py
RENAMED
|
@@ -2,17 +2,11 @@
|
|
|
2
2
|
Loader code for some datasets.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from .base import
|
|
6
|
-
BaseConcatDataset,
|
|
7
|
-
EEGWindowsDataset,
|
|
8
|
-
RawDataset,
|
|
9
|
-
RecordDataset,
|
|
10
|
-
WindowsDataset,
|
|
11
|
-
)
|
|
5
|
+
from .base import BaseConcatDataset, BaseDataset, WindowsDataset
|
|
12
6
|
from .bcicomp import BCICompetitionIVDataset4
|
|
13
7
|
from .bids import BIDSDataset, BIDSEpochsDataset
|
|
14
8
|
from .mne import create_from_mne_epochs, create_from_mne_raw
|
|
15
|
-
from .moabb import
|
|
9
|
+
from .moabb import BNCI2014001, HGD, MOABBDataset
|
|
16
10
|
from .nmt import NMT
|
|
17
11
|
from .sleep_physio_challe_18 import SleepPhysionetChallenge2018
|
|
18
12
|
from .sleep_physionet import SleepPhysionet
|
|
@@ -21,15 +15,13 @@ from .xy import create_from_X_y
|
|
|
21
15
|
|
|
22
16
|
__all__ = [
|
|
23
17
|
"WindowsDataset",
|
|
24
|
-
"
|
|
25
|
-
"RecordDataset",
|
|
26
|
-
"RawDataset",
|
|
18
|
+
"BaseDataset",
|
|
27
19
|
"BaseConcatDataset",
|
|
28
20
|
"BIDSDataset",
|
|
29
21
|
"BIDSEpochsDataset",
|
|
30
22
|
"MOABBDataset",
|
|
31
23
|
"HGD",
|
|
32
|
-
"
|
|
24
|
+
"BNCI2014001",
|
|
33
25
|
"create_from_mne_raw",
|
|
34
26
|
"create_from_mne_epochs",
|
|
35
27
|
"TUH",
|
{braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/base.py
RENAMED
|
@@ -16,20 +16,14 @@ import json
|
|
|
16
16
|
import os
|
|
17
17
|
import shutil
|
|
18
18
|
import warnings
|
|
19
|
-
from abc import abstractmethod
|
|
20
19
|
from collections.abc import Callable
|
|
21
20
|
from glob import glob
|
|
22
|
-
from typing import
|
|
21
|
+
from typing import Iterable, no_type_check
|
|
23
22
|
|
|
24
23
|
import mne.io
|
|
25
24
|
import numpy as np
|
|
26
25
|
import pandas as pd
|
|
27
|
-
from mne.utils.docs import deprecated
|
|
28
26
|
from torch.utils.data import ConcatDataset, Dataset
|
|
29
|
-
from typing_extensions import TypeVar
|
|
30
|
-
|
|
31
|
-
from .hub import HubDatasetMixin
|
|
32
|
-
from .registry import register_dataset
|
|
33
27
|
|
|
34
28
|
|
|
35
29
|
def _create_description(description) -> pd.Series:
|
|
@@ -43,65 +37,7 @@ def _create_description(description) -> pd.Series:
|
|
|
43
37
|
return description
|
|
44
38
|
|
|
45
39
|
|
|
46
|
-
class
|
|
47
|
-
def __init__(
|
|
48
|
-
self,
|
|
49
|
-
description: dict | pd.Series | None = None,
|
|
50
|
-
transform: Callable | None = None,
|
|
51
|
-
):
|
|
52
|
-
self._description = _create_description(description)
|
|
53
|
-
self.transform = transform
|
|
54
|
-
|
|
55
|
-
@abstractmethod
|
|
56
|
-
def __len__(self) -> int:
|
|
57
|
-
pass
|
|
58
|
-
|
|
59
|
-
@property
|
|
60
|
-
def description(self) -> pd.Series:
|
|
61
|
-
return self._description
|
|
62
|
-
|
|
63
|
-
def set_description(self, description: dict | pd.Series, overwrite: bool = False):
|
|
64
|
-
"""Update (add or overwrite) the dataset description.
|
|
65
|
-
|
|
66
|
-
Parameters
|
|
67
|
-
----------
|
|
68
|
-
description: dict | pd.Series
|
|
69
|
-
Description in the form key: value.
|
|
70
|
-
overwrite: bool
|
|
71
|
-
Has to be True if a key in description already exists in the
|
|
72
|
-
dataset description.
|
|
73
|
-
"""
|
|
74
|
-
description = _create_description(description)
|
|
75
|
-
if self.description is None:
|
|
76
|
-
self._description = description
|
|
77
|
-
else:
|
|
78
|
-
for key, value in description.items():
|
|
79
|
-
# if the key is already in the existing description, drop it
|
|
80
|
-
if key in self._description:
|
|
81
|
-
assert overwrite, (
|
|
82
|
-
f"'{key}' already in description. Please "
|
|
83
|
-
f"rename or set overwrite to True."
|
|
84
|
-
)
|
|
85
|
-
self._description.pop(key)
|
|
86
|
-
self._description = pd.concat([self.description, description])
|
|
87
|
-
|
|
88
|
-
@property
|
|
89
|
-
def transform(self) -> Callable | None:
|
|
90
|
-
return self._transform
|
|
91
|
-
|
|
92
|
-
@transform.setter
|
|
93
|
-
def transform(self, value: Callable | None):
|
|
94
|
-
if value is not None and not callable(value):
|
|
95
|
-
raise ValueError("Transform needs to be a callable.")
|
|
96
|
-
self._transform = value
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
# Type of the datasets contained in BaseConcatDataset
|
|
100
|
-
T = TypeVar("T", bound=RecordDataset)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
@register_dataset
|
|
104
|
-
class RawDataset(RecordDataset):
|
|
40
|
+
class BaseDataset(Dataset):
|
|
105
41
|
"""Returns samples from an mne.io.Raw object along with a target.
|
|
106
42
|
|
|
107
43
|
Dataset which serves samples from an mne.io.Raw object along with a target.
|
|
@@ -128,12 +64,12 @@ class RawDataset(RecordDataset):
|
|
|
128
64
|
target_name: str | tuple[str, ...] | None = None,
|
|
129
65
|
transform: Callable | None = None,
|
|
130
66
|
):
|
|
131
|
-
super().__init__(description, transform)
|
|
132
67
|
self.raw = raw
|
|
68
|
+
self._description = _create_description(description)
|
|
69
|
+
self.transform = transform
|
|
133
70
|
|
|
134
71
|
# save target name for load/save later
|
|
135
72
|
self.target_name = self._target_name(target_name)
|
|
136
|
-
self.raw_preproc_kwargs: list[dict[str, Any]] = []
|
|
137
73
|
|
|
138
74
|
def __getitem__(self, index):
|
|
139
75
|
X = self.raw[:, index][0]
|
|
@@ -149,6 +85,45 @@ class RawDataset(RecordDataset):
|
|
|
149
85
|
def __len__(self):
|
|
150
86
|
return len(self.raw)
|
|
151
87
|
|
|
88
|
+
@property
|
|
89
|
+
def transform(self):
|
|
90
|
+
return self._transform
|
|
91
|
+
|
|
92
|
+
@transform.setter
|
|
93
|
+
def transform(self, value):
|
|
94
|
+
if value is not None and not callable(value):
|
|
95
|
+
raise ValueError("Transform needs to be a callable.")
|
|
96
|
+
self._transform = value
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def description(self) -> pd.Series:
|
|
100
|
+
return self._description
|
|
101
|
+
|
|
102
|
+
def set_description(self, description: dict | pd.Series, overwrite: bool = False):
|
|
103
|
+
"""Update (add or overwrite) the dataset description.
|
|
104
|
+
|
|
105
|
+
Parameters
|
|
106
|
+
----------
|
|
107
|
+
description: dict | pd.Series
|
|
108
|
+
Description in the form key: value.
|
|
109
|
+
overwrite: bool
|
|
110
|
+
Has to be True if a key in description already exists in the
|
|
111
|
+
dataset description.
|
|
112
|
+
"""
|
|
113
|
+
description = _create_description(description)
|
|
114
|
+
for key, value in description.items():
|
|
115
|
+
# if the key is already in the existing description, drop it
|
|
116
|
+
if self._description is not None and key in self._description:
|
|
117
|
+
assert overwrite, (
|
|
118
|
+
f"'{key}' already in description. Please "
|
|
119
|
+
f"rename or set overwrite to True."
|
|
120
|
+
)
|
|
121
|
+
self._description.pop(key)
|
|
122
|
+
if self._description is None:
|
|
123
|
+
self._description = description
|
|
124
|
+
else:
|
|
125
|
+
self._description = pd.concat([self.description, description])
|
|
126
|
+
|
|
152
127
|
def _target_name(self, target_name):
|
|
153
128
|
if target_name is not None and not isinstance(target_name, (str, tuple, list)):
|
|
154
129
|
raise ValueError("target_name has to be None, str, tuple or list")
|
|
@@ -175,19 +150,7 @@ class RawDataset(RecordDataset):
|
|
|
175
150
|
return target_name if len(target_name) > 1 else target_name[0]
|
|
176
151
|
|
|
177
152
|
|
|
178
|
-
|
|
179
|
-
"The BaseDataset class is deprecated. "
|
|
180
|
-
"If you want to instantiate a dataset containing raws, use RawDataset instead. "
|
|
181
|
-
"If you want to type a Braindecode dataset (i.e. RawDataset|EEGWindowsDataset|WindowsDataset), "
|
|
182
|
-
"use the RecordDataset class instead."
|
|
183
|
-
)
|
|
184
|
-
@register_dataset
|
|
185
|
-
class BaseDataset(RawDataset):
|
|
186
|
-
pass
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
@register_dataset
|
|
190
|
-
class EEGWindowsDataset(RecordDataset):
|
|
153
|
+
class EEGWindowsDataset(BaseDataset):
|
|
191
154
|
"""Returns windows from an mne.Raw object, its window indices, along with a target.
|
|
192
155
|
|
|
193
156
|
Dataset which serves windows from an mne.Epochs object along with their
|
|
@@ -198,12 +161,12 @@ class EEGWindowsDataset(RecordDataset):
|
|
|
198
161
|
required to serve information about the windowing (e.g., useful for cropped
|
|
199
162
|
training).
|
|
200
163
|
See `braindecode.datautil.windowers` to directly create a `WindowsDataset`
|
|
201
|
-
from a `
|
|
164
|
+
from a `BaseDataset` object.
|
|
202
165
|
|
|
203
166
|
Parameters
|
|
204
167
|
----------
|
|
205
168
|
windows : mne.Raw or mne.Epochs (Epochs is outdated)
|
|
206
|
-
Windows obtained through the application of a windower to a
|
|
169
|
+
Windows obtained through the application of a windower to a BaseDataset
|
|
207
170
|
(see `braindecode.datautil.windowers`).
|
|
208
171
|
description : dict | pandas.Series | None
|
|
209
172
|
Holds additional info about the windows.
|
|
@@ -222,17 +185,18 @@ class EEGWindowsDataset(RecordDataset):
|
|
|
222
185
|
|
|
223
186
|
def __init__(
|
|
224
187
|
self,
|
|
225
|
-
raw: mne.io.BaseRaw,
|
|
188
|
+
raw: mne.io.BaseRaw | mne.BaseEpochs,
|
|
226
189
|
metadata: pd.DataFrame,
|
|
227
190
|
description: dict | pd.Series | None = None,
|
|
228
191
|
transform: Callable | None = None,
|
|
229
192
|
targets_from: str = "metadata",
|
|
230
193
|
last_target_only: bool = True,
|
|
231
194
|
):
|
|
232
|
-
super().__init__(description, transform)
|
|
233
195
|
self.raw = raw
|
|
234
196
|
self.metadata = metadata
|
|
197
|
+
self._description = _create_description(description)
|
|
235
198
|
|
|
199
|
+
self.transform = transform
|
|
236
200
|
self.last_target_only = last_target_only
|
|
237
201
|
if targets_from not in ("metadata", "channels"):
|
|
238
202
|
raise ValueError("Wrong value for parameter `targets_from`.")
|
|
@@ -242,7 +206,6 @@ class EEGWindowsDataset(RecordDataset):
|
|
|
242
206
|
].to_numpy()
|
|
243
207
|
if self.targets_from == "metadata":
|
|
244
208
|
self.y = metadata.loc[:, "target"].to_list()
|
|
245
|
-
self.raw_preproc_kwargs: list[dict[str, Any]] = []
|
|
246
209
|
|
|
247
210
|
def __getitem__(self, index: int):
|
|
248
211
|
"""Get a window and its target.
|
|
@@ -292,9 +255,44 @@ class EEGWindowsDataset(RecordDataset):
|
|
|
292
255
|
def __len__(self):
|
|
293
256
|
return len(self.crop_inds)
|
|
294
257
|
|
|
258
|
+
@property
|
|
259
|
+
def transform(self):
|
|
260
|
+
return self._transform
|
|
261
|
+
|
|
262
|
+
@transform.setter
|
|
263
|
+
def transform(self, value):
|
|
264
|
+
if value is not None and not callable(value):
|
|
265
|
+
raise ValueError("Transform needs to be a callable.")
|
|
266
|
+
self._transform = value
|
|
267
|
+
|
|
268
|
+
@property
|
|
269
|
+
def description(self) -> pd.Series:
|
|
270
|
+
return self._description
|
|
271
|
+
|
|
272
|
+
def set_description(self, description: dict | pd.Series, overwrite: bool = False):
|
|
273
|
+
"""Update (add or overwrite) the dataset description.
|
|
274
|
+
|
|
275
|
+
Parameters
|
|
276
|
+
----------
|
|
277
|
+
description: dict | pd.Series
|
|
278
|
+
Description in the form key: value.
|
|
279
|
+
overwrite: bool
|
|
280
|
+
Has to be True if a key in description already exists in the
|
|
281
|
+
dataset description.
|
|
282
|
+
"""
|
|
283
|
+
description = _create_description(description)
|
|
284
|
+
for key, value in description.items():
|
|
285
|
+
# if they key is already in the existing description, drop it
|
|
286
|
+
if key in self._description:
|
|
287
|
+
assert overwrite, (
|
|
288
|
+
f"'{key}' already in description. Please "
|
|
289
|
+
f"rename or set overwrite to True."
|
|
290
|
+
)
|
|
291
|
+
self._description.pop(key)
|
|
292
|
+
self._description = pd.concat([self.description, description])
|
|
293
|
+
|
|
295
294
|
|
|
296
|
-
|
|
297
|
-
class WindowsDataset(RecordDataset):
|
|
295
|
+
class WindowsDataset(BaseDataset):
|
|
298
296
|
"""Returns windows from an mne.Epochs object along with a target.
|
|
299
297
|
|
|
300
298
|
Dataset which serves windows from an mne.Epochs object along with their
|
|
@@ -305,12 +303,12 @@ class WindowsDataset(RecordDataset):
|
|
|
305
303
|
required to serve information about the windowing (e.g., useful for cropped
|
|
306
304
|
training).
|
|
307
305
|
See `braindecode.datautil.windowers` to directly create a `WindowsDataset`
|
|
308
|
-
from a
|
|
306
|
+
from a `BaseDataset` object.
|
|
309
307
|
|
|
310
308
|
Parameters
|
|
311
309
|
----------
|
|
312
310
|
windows : mne.Epochs
|
|
313
|
-
Windows obtained through the application of a windower to a
|
|
311
|
+
Windows obtained through the application of a windower to a BaseDataset
|
|
314
312
|
(see `braindecode.datautil.windowers`).
|
|
315
313
|
description : dict | pandas.Series | None
|
|
316
314
|
Holds additional info about the windows.
|
|
@@ -329,22 +327,19 @@ class WindowsDataset(RecordDataset):
|
|
|
329
327
|
targets_from: str = "metadata",
|
|
330
328
|
last_target_only: bool = True,
|
|
331
329
|
):
|
|
332
|
-
super().__init__(description, transform)
|
|
333
330
|
self.windows = windows
|
|
331
|
+
self._description = _create_description(description)
|
|
332
|
+
self.transform = transform
|
|
334
333
|
self.last_target_only = last_target_only
|
|
335
334
|
if targets_from not in ("metadata", "channels"):
|
|
336
335
|
raise ValueError("Wrong value for parameter `targets_from`.")
|
|
337
336
|
self.targets_from = targets_from
|
|
338
337
|
|
|
339
|
-
|
|
340
|
-
assert metadata is not None, "WindowsDataset requires windows with metadata."
|
|
341
|
-
self.crop_inds = metadata.loc[
|
|
338
|
+
self.crop_inds = self.windows.metadata.loc[
|
|
342
339
|
:, ["i_window_in_trial", "i_start_in_trial", "i_stop_in_trial"]
|
|
343
340
|
].to_numpy()
|
|
344
341
|
if self.targets_from == "metadata":
|
|
345
|
-
self.y = metadata.loc[:, "target"].to_list()
|
|
346
|
-
self.raw_preproc_kwargs: list[dict[str, Any]] = []
|
|
347
|
-
self.window_preproc_kwargs: list[dict[str, Any]] = []
|
|
342
|
+
self.y = self.windows.metadata.loc[:, "target"].to_list()
|
|
348
343
|
|
|
349
344
|
def __getitem__(self, index: int):
|
|
350
345
|
"""Get a window and its target.
|
|
@@ -384,41 +379,68 @@ class WindowsDataset(RecordDataset):
|
|
|
384
379
|
def __len__(self) -> int:
|
|
385
380
|
return len(self.windows.events)
|
|
386
381
|
|
|
382
|
+
@property
|
|
383
|
+
def transform(self):
|
|
384
|
+
return self._transform
|
|
385
|
+
|
|
386
|
+
@transform.setter
|
|
387
|
+
def transform(self, value):
|
|
388
|
+
if value is not None and not callable(value):
|
|
389
|
+
raise ValueError("Transform needs to be a callable.")
|
|
390
|
+
self._transform = value
|
|
391
|
+
|
|
392
|
+
@property
|
|
393
|
+
def description(self) -> pd.Series:
|
|
394
|
+
return self._description
|
|
395
|
+
|
|
396
|
+
def set_description(self, description: dict | pd.Series, overwrite: bool = False):
|
|
397
|
+
"""Update (add or overwrite) the dataset description.
|
|
398
|
+
|
|
399
|
+
Parameters
|
|
400
|
+
----------
|
|
401
|
+
description: dict | pd.Series
|
|
402
|
+
Description in the form key: value.
|
|
403
|
+
overwrite: bool
|
|
404
|
+
Has to be True if a key in description already exists in the
|
|
405
|
+
dataset description.
|
|
406
|
+
"""
|
|
407
|
+
description = _create_description(description)
|
|
408
|
+
for key, value in description.items():
|
|
409
|
+
# if they key is already in the existing description, drop it
|
|
410
|
+
if key in self._description:
|
|
411
|
+
assert overwrite, (
|
|
412
|
+
f"'{key}' already in description. Please "
|
|
413
|
+
f"rename or set overwrite to True."
|
|
414
|
+
)
|
|
415
|
+
self._description.pop(key)
|
|
416
|
+
self._description = pd.concat([self.description, description])
|
|
387
417
|
|
|
388
|
-
|
|
389
|
-
class BaseConcatDataset(ConcatDataset
|
|
418
|
+
|
|
419
|
+
class BaseConcatDataset(ConcatDataset):
|
|
390
420
|
"""A base class for concatenated datasets.
|
|
391
421
|
|
|
392
422
|
Holds either mne.Raw or mne.Epoch in self.datasets and has
|
|
393
423
|
a pandas DataFrame with additional description.
|
|
394
424
|
|
|
395
|
-
Includes Hugging Face Hub integration via HubDatasetMixin for
|
|
396
|
-
uploading and downloading datasets.
|
|
397
|
-
|
|
398
425
|
Parameters
|
|
399
426
|
----------
|
|
400
427
|
list_of_ds : list
|
|
401
|
-
list of
|
|
428
|
+
list of BaseDataset, BaseConcatDataset or WindowsDataset
|
|
402
429
|
target_transform : callable | None
|
|
403
430
|
Optional function to call on targets before returning them.
|
|
404
431
|
|
|
405
432
|
"""
|
|
406
433
|
|
|
407
|
-
datasets: list[T]
|
|
408
|
-
|
|
409
434
|
def __init__(
|
|
410
435
|
self,
|
|
411
|
-
list_of_ds: list[
|
|
436
|
+
list_of_ds: list[BaseDataset | BaseConcatDataset | WindowsDataset]
|
|
437
|
+
| None = None,
|
|
412
438
|
target_transform: Callable | None = None,
|
|
413
439
|
):
|
|
414
440
|
# if we get a list of BaseConcatDataset, get all the individual datasets
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
flattened_list_of_ds.extend(ds.datasets)
|
|
419
|
-
else:
|
|
420
|
-
flattened_list_of_ds.append(ds)
|
|
421
|
-
super().__init__(flattened_list_of_ds)
|
|
441
|
+
if list_of_ds and isinstance(list_of_ds[0], BaseConcatDataset):
|
|
442
|
+
list_of_ds = [d for ds in list_of_ds for d in ds.datasets]
|
|
443
|
+
super().__init__(list_of_ds)
|
|
422
444
|
|
|
423
445
|
self.target_transform = target_transform
|
|
424
446
|
|
|
@@ -681,23 +703,22 @@ class BaseConcatDataset(ConcatDataset, HubDatasetMixin, Generic[T]):
|
|
|
681
703
|
ds.set_description({key: value_}, overwrite=overwrite)
|
|
682
704
|
|
|
683
705
|
def save(self, path: str, overwrite: bool = False, offset: int = 0):
|
|
684
|
-
"""Save datasets to files by creating one subdirectory for each dataset
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
0
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
1
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
target_name.json (if target_name is not None and dataset is raw)
|
|
706
|
+
"""Save datasets to files by creating one subdirectory for each dataset:
|
|
707
|
+
path/
|
|
708
|
+
0/
|
|
709
|
+
0-raw.fif | 0-epo.fif
|
|
710
|
+
description.json
|
|
711
|
+
raw_preproc_kwargs.json (if raws were preprocessed)
|
|
712
|
+
window_kwargs.json (if this is a windowed dataset)
|
|
713
|
+
window_preproc_kwargs.json (if windows were preprocessed)
|
|
714
|
+
target_name.json (if target_name is not None and dataset is raw)
|
|
715
|
+
1/
|
|
716
|
+
1-raw.fif | 1-epo.fif
|
|
717
|
+
description.json
|
|
718
|
+
raw_preproc_kwargs.json (if raws were preprocessed)
|
|
719
|
+
window_kwargs.json (if this is a windowed dataset)
|
|
720
|
+
window_preproc_kwargs.json (if windows were preprocessed)
|
|
721
|
+
target_name.json (if target_name is not None and dataset is raw)
|
|
701
722
|
|
|
702
723
|
Parameters
|
|
703
724
|
----------
|
|
@@ -809,7 +830,7 @@ class BaseConcatDataset(ConcatDataset, HubDatasetMixin, Generic[T]):
|
|
|
809
830
|
kwargs = getattr(ds, kwargs_name)
|
|
810
831
|
if kwargs is not None:
|
|
811
832
|
with open(kwargs_file_path, "w") as f:
|
|
812
|
-
json.dump(kwargs, f
|
|
833
|
+
json.dump(kwargs, f)
|
|
813
834
|
|
|
814
835
|
@staticmethod
|
|
815
836
|
def _save_target_name(sub_dir, ds):
|
{braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/bcicomp.py
RENAMED
|
@@ -16,7 +16,7 @@ import numpy as np
|
|
|
16
16
|
from mne.utils import verbose
|
|
17
17
|
from scipy.io import loadmat
|
|
18
18
|
|
|
19
|
-
from braindecode.datasets import BaseConcatDataset,
|
|
19
|
+
from braindecode.datasets import BaseConcatDataset, BaseDataset
|
|
20
20
|
|
|
21
21
|
DATASET_URL = (
|
|
22
22
|
"https://stacks.stanford.edu/file/druid:zk881ps0522/"
|
|
@@ -73,8 +73,8 @@ class BCICompetitionIVDataset4(BaseConcatDataset):
|
|
|
73
73
|
file_name=file_path.split("/")[-1],
|
|
74
74
|
session="test",
|
|
75
75
|
)
|
|
76
|
-
datasets.append(
|
|
77
|
-
datasets.append(
|
|
76
|
+
datasets.append(BaseDataset(raw_train, description=desc_train))
|
|
77
|
+
datasets.append(BaseDataset(raw_test, description=desc_test))
|
|
78
78
|
super().__init__(datasets)
|
|
79
79
|
|
|
80
80
|
@staticmethod
|
|
@@ -85,7 +85,7 @@ class BCICompetitionIVDataset4(BaseConcatDataset):
|
|
|
85
85
|
----------
|
|
86
86
|
path (None | str) – Location of where to look for the data storing location.
|
|
87
87
|
If None, the environment variable or config parameter
|
|
88
|
-
MNE_DATASETS_(dataset)_PATH is used. If it doesn
|
|
88
|
+
MNE_DATASETS_(dataset)_PATH is used. If it doesn’t exist, the “~/mne_data”
|
|
89
89
|
directory is used. If the dataset is not found under the given path, the data
|
|
90
90
|
will be automatically downloaded to the specified folder.
|
|
91
91
|
force_update (bool) – Force update of the dataset even if a local copy exists.
|
{braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/bids.py
RENAMED
|
@@ -19,7 +19,7 @@ import numpy as np
|
|
|
19
19
|
import pandas as pd
|
|
20
20
|
from joblib import Parallel, delayed
|
|
21
21
|
|
|
22
|
-
from .base import BaseConcatDataset,
|
|
22
|
+
from .base import BaseConcatDataset, BaseDataset, WindowsDataset
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def _description_from_bids_path(bids_path: mne_bids.BIDSPath) -> dict[str, Any]:
|
|
@@ -186,12 +186,12 @@ class BIDSDataset(BaseConcatDataset):
|
|
|
186
186
|
)
|
|
187
187
|
super().__init__(all_base_ds)
|
|
188
188
|
|
|
189
|
-
def _get_dataset(self, bids_path: mne_bids.BIDSPath) ->
|
|
189
|
+
def _get_dataset(self, bids_path: mne_bids.BIDSPath) -> BaseDataset:
|
|
190
190
|
description = _description_from_bids_path(bids_path)
|
|
191
191
|
raw = mne_bids.read_raw_bids(bids_path, verbose=False)
|
|
192
192
|
if self.preload:
|
|
193
193
|
raw.load_data()
|
|
194
|
-
return
|
|
194
|
+
return BaseDataset(raw, description)
|
|
195
195
|
|
|
196
196
|
|
|
197
197
|
class BIDSEpochsDataset(BIDSDataset):
|
|
@@ -25,14 +25,14 @@ class BIDSIterableDataset(IterableDataset):
|
|
|
25
25
|
|
|
26
26
|
Examples
|
|
27
27
|
--------
|
|
28
|
-
>>> from braindecode.datasets import
|
|
28
|
+
>>> from braindecode.datasets import BaseDataset, BaseConcatDataset
|
|
29
29
|
>>> from braindecode.datasets.bids import BIDSIterableDataset, _description_from_bids_path
|
|
30
30
|
>>> from braindecode.preprocessing import create_fixed_length_windows
|
|
31
31
|
>>>
|
|
32
32
|
>>> def my_reader_fn(path):
|
|
33
33
|
... raw = mne_bids.read_raw_bids(path)
|
|
34
34
|
... desc = _description_from_bids_path(path)
|
|
35
|
-
... ds =
|
|
35
|
+
... ds = BaseDataset(raw, description=desc)
|
|
36
36
|
... windows_ds = create_fixed_length_windows(
|
|
37
37
|
... BaseConcatDataset([ds]),
|
|
38
38
|
... window_size_samples=400,
|
{braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/mne.py
RENAMED
|
@@ -9,7 +9,7 @@ import mne
|
|
|
9
9
|
import numpy as np
|
|
10
10
|
import pandas as pd
|
|
11
11
|
|
|
12
|
-
from .base import BaseConcatDataset,
|
|
12
|
+
from .base import BaseConcatDataset, BaseDataset, WindowsDataset
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def create_from_mne_raw(
|
|
@@ -75,9 +75,11 @@ def create_from_mne_raw(
|
|
|
75
75
|
f"length of 'raws' ({len(raws)}) and 'description' "
|
|
76
76
|
f"({len(descriptions)}) has to match"
|
|
77
77
|
)
|
|
78
|
-
base_datasets = [
|
|
78
|
+
base_datasets = [
|
|
79
|
+
BaseDataset(raw, desc) for raw, desc in zip(raws, descriptions)
|
|
80
|
+
]
|
|
79
81
|
else:
|
|
80
|
-
base_datasets = [
|
|
82
|
+
base_datasets = [BaseDataset(raw) for raw in raws]
|
|
81
83
|
|
|
82
84
|
base_datasets = BaseConcatDataset(base_datasets)
|
|
83
85
|
windows_datasets = create_windows_from_events(
|
{braindecode-1.3.0.dev175368549 → braindecode-1.3.0.dev175415232}/braindecode/datasets/moabb.py
RENAMED
|
@@ -15,11 +15,10 @@ from typing import Any
|
|
|
15
15
|
|
|
16
16
|
import mne
|
|
17
17
|
import pandas as pd
|
|
18
|
-
from mne.utils import deprecated
|
|
19
18
|
|
|
20
19
|
from braindecode.util import _update_moabb_docstring
|
|
21
20
|
|
|
22
|
-
from .base import BaseConcatDataset,
|
|
21
|
+
from .base import BaseConcatDataset, BaseDataset
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
def _find_dataset_in_moabb(dataset_name, dataset_kwargs=None):
|
|
@@ -165,13 +164,13 @@ class MOABBDataset(BaseConcatDataset):
|
|
|
165
164
|
dataset_load_kwargs=dataset_load_kwargs,
|
|
166
165
|
)
|
|
167
166
|
all_base_ds = [
|
|
168
|
-
|
|
167
|
+
BaseDataset(raw, row) for raw, (_, row) in zip(raws, description.iterrows())
|
|
169
168
|
]
|
|
170
169
|
super().__init__(all_base_ds)
|
|
171
170
|
|
|
172
171
|
|
|
173
|
-
class
|
|
174
|
-
doc = """See moabb.datasets.bnci.
|
|
172
|
+
class BNCI2014001(MOABBDataset):
|
|
173
|
+
doc = """See moabb.datasets.bnci.BNCI2014001
|
|
175
174
|
|
|
176
175
|
Parameters
|
|
177
176
|
----------
|
|
@@ -180,14 +179,14 @@ class BNCI2014_001(MOABBDataset):
|
|
|
180
179
|
subjects is fetched.
|
|
181
180
|
"""
|
|
182
181
|
try:
|
|
183
|
-
from moabb.datasets import
|
|
182
|
+
from moabb.datasets import BNCI2014001
|
|
184
183
|
|
|
185
|
-
__doc__ = _update_moabb_docstring(
|
|
184
|
+
__doc__ = _update_moabb_docstring(BNCI2014001, doc)
|
|
186
185
|
except ModuleNotFoundError:
|
|
187
186
|
pass # keep moabb soft dependency, otherwise crash on loading of datasets.__init__.py
|
|
188
187
|
|
|
189
188
|
def __init__(self, subject_ids):
|
|
190
|
-
super().__init__("
|
|
189
|
+
super().__init__("BNCI2014001", subject_ids=subject_ids)
|
|
191
190
|
|
|
192
191
|
|
|
193
192
|
class HGD(MOABBDataset):
|
|
@@ -208,12 +207,3 @@ class HGD(MOABBDataset):
|
|
|
208
207
|
|
|
209
208
|
def __init__(self, subject_ids):
|
|
210
209
|
super().__init__("Schirrmeister2017", subject_ids=subject_ids)
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
@deprecated(
|
|
214
|
-
"`BNCI2014001` was renamed to `BNCI2014_001` in v1.13; this alias will be removed in v1.14."
|
|
215
|
-
)
|
|
216
|
-
class BNCI2014001(BNCI2014_001):
|
|
217
|
-
"""Deprecated alias for BNCI2014001."""
|
|
218
|
-
|
|
219
|
-
pass
|