Braindecode 1.3.0.dev181594385__tar.gz → 1.3.0.dev182330353__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.
Files changed (144) hide show
  1. {braindecode-1.3.0.dev181594385/braindecode.egg-info → braindecode-1.3.0.dev182330353}/PKG-INFO +1 -1
  2. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/__init__.py +2 -2
  3. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/moabb.py +15 -5
  4. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datautil/__init__.py +11 -1
  5. braindecode-1.3.0.dev182330353/braindecode/datautil/channel_utils.py +114 -0
  6. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/__init__.py +4 -0
  7. braindecode-1.3.0.dev182330353/braindecode/models/eegsym.py +917 -0
  8. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/fbcnet.py +3 -1
  9. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/fbmsnet.py +18 -6
  10. braindecode-1.3.0.dev182330353/braindecode/models/medformer.py +758 -0
  11. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/summary.csv +2 -0
  12. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/util.py +2 -0
  13. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/filter.py +0 -6
  14. braindecode-1.3.0.dev182330353/braindecode/preprocessing/__init__.py +266 -0
  15. braindecode-1.3.0.dev182330353/braindecode/preprocessing/mne_preprocess.py +209 -0
  16. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/preprocessing/preprocess.py +16 -6
  17. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/preprocessing/windowers.py +2 -1
  18. braindecode-1.3.0.dev182330353/braindecode/version.py +1 -0
  19. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353/braindecode.egg-info}/PKG-INFO +1 -1
  20. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode.egg-info/SOURCES.txt +3 -0
  21. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/api.rst +109 -18
  22. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/conf.py +27 -0
  23. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/whats_new.rst +9 -0
  24. braindecode-1.3.0.dev181594385/braindecode/preprocessing/__init__.py +0 -61
  25. braindecode-1.3.0.dev181594385/braindecode/preprocessing/mne_preprocess.py +0 -77
  26. braindecode-1.3.0.dev181594385/braindecode/version.py +0 -1
  27. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/LICENSE.txt +0 -0
  28. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/MANIFEST.in +0 -0
  29. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/NOTICE.txt +0 -0
  30. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/README.rst +0 -0
  31. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/__init__.py +0 -0
  32. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/augmentation/__init__.py +0 -0
  33. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/augmentation/base.py +0 -0
  34. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/augmentation/functional.py +0 -0
  35. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/augmentation/transforms.py +0 -0
  36. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/classifier.py +0 -0
  37. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/base.py +0 -0
  38. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/bbci.py +0 -0
  39. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/bcicomp.py +0 -0
  40. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/bids.py +0 -0
  41. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/experimental.py +0 -0
  42. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/mne.py +0 -0
  43. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/nmt.py +0 -0
  44. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
  45. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/sleep_physionet.py +0 -0
  46. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/tuh.py +0 -0
  47. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datasets/xy.py +0 -0
  48. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datautil/serialization.py +0 -0
  49. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/datautil/util.py +0 -0
  50. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/eegneuralnet.py +0 -0
  51. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/functional/__init__.py +0 -0
  52. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/functional/functions.py +0 -0
  53. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/functional/initialization.py +0 -0
  54. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/atcnet.py +0 -0
  55. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/attentionbasenet.py +0 -0
  56. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/attn_sleep.py +0 -0
  57. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/base.py +0 -0
  58. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/bendr.py +0 -0
  59. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/biot.py +0 -0
  60. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/contrawr.py +0 -0
  61. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/ctnet.py +0 -0
  62. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/deep4.py +0 -0
  63. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/deepsleepnet.py +0 -0
  64. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eegconformer.py +0 -0
  65. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eeginception_erp.py +0 -0
  66. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eeginception_mi.py +0 -0
  67. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eegitnet.py +0 -0
  68. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eegminer.py +0 -0
  69. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eegnet.py +0 -0
  70. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eegnex.py +0 -0
  71. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eegsimpleconv.py +0 -0
  72. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/eegtcnet.py +0 -0
  73. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/fblightconvnet.py +0 -0
  74. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/hybrid.py +0 -0
  75. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/ifnet.py +0 -0
  76. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/labram.py +0 -0
  77. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/msvtnet.py +0 -0
  78. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/patchedtransformer.py +0 -0
  79. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/sccnet.py +0 -0
  80. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/shallow_fbcsp.py +0 -0
  81. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/signal_jepa.py +0 -0
  82. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/sinc_shallow.py +0 -0
  83. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
  84. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
  85. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/sparcnet.py +0 -0
  86. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/sstdpn.py +0 -0
  87. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/syncnet.py +0 -0
  88. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/tcn.py +0 -0
  89. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/tidnet.py +0 -0
  90. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/tsinception.py +0 -0
  91. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/models/usleep.py +0 -0
  92. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/__init__.py +0 -0
  93. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/activation.py +0 -0
  94. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/attention.py +0 -0
  95. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/blocks.py +0 -0
  96. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/convolution.py +0 -0
  97. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/layers.py +0 -0
  98. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/linear.py +0 -0
  99. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/parametrization.py +0 -0
  100. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/stats.py +0 -0
  101. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/util.py +0 -0
  102. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/modules/wrapper.py +0 -0
  103. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
  104. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/preprocessing/util.py +0 -0
  105. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/regressor.py +0 -0
  106. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/samplers/__init__.py +0 -0
  107. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/samplers/base.py +0 -0
  108. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/samplers/ssl.py +0 -0
  109. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/training/__init__.py +0 -0
  110. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/training/callbacks.py +0 -0
  111. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/training/losses.py +0 -0
  112. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/training/scoring.py +0 -0
  113. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/util.py +0 -0
  114. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/visualization/__init__.py +0 -0
  115. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/visualization/confusion_matrices.py +0 -0
  116. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode/visualization/gradients.py +0 -0
  117. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode.egg-info/dependency_links.txt +0 -0
  118. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode.egg-info/requires.txt +0 -0
  119. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/braindecode.egg-info/top_level.txt +0 -0
  120. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/Makefile +0 -0
  121. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/_templates/autosummary/class.rst +0 -0
  122. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/_templates/autosummary/function.rst +0 -0
  123. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/cite.rst +0 -0
  124. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/help.rst +0 -0
  125. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/index.rst +0 -0
  126. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/install/install.rst +0 -0
  127. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/install/install_pip.rst +0 -0
  128. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/install/install_source.rst +0 -0
  129. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/attention.rst +0 -0
  130. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/channel.rst +0 -0
  131. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/convolution.rst +0 -0
  132. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/filterbank.rst +0 -0
  133. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/gnn.rst +0 -0
  134. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/interpretable.rst +0 -0
  135. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/lbm.rst +0 -0
  136. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/recurrent.rst +0 -0
  137. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/categorization/spd.rst +0 -0
  138. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/models.rst +0 -0
  139. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/models_categorization.rst +0 -0
  140. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/models_table.rst +0 -0
  141. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/models/models_visualization.rst +0 -0
  142. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/docs/sg_execution_times.rst +0 -0
  143. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/pyproject.toml +0 -0
  144. {braindecode-1.3.0.dev181594385 → braindecode-1.3.0.dev182330353}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.3.0.dev181594385
3
+ Version: 1.3.0.dev182330353
4
4
  Summary: Deep learning software to decode EEG, ECG or MEG signals
5
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>
@@ -12,7 +12,7 @@ from .base import (
12
12
  from .bcicomp import BCICompetitionIVDataset4
13
13
  from .bids import BIDSDataset, BIDSEpochsDataset
14
14
  from .mne import create_from_mne_epochs, create_from_mne_raw
15
- from .moabb import BNCI2014001, HGD, MOABBDataset
15
+ from .moabb import BNCI2014_001, HGD, MOABBDataset
16
16
  from .nmt import NMT
17
17
  from .sleep_physio_challe_18 import SleepPhysionetChallenge2018
18
18
  from .sleep_physionet import SleepPhysionet
@@ -29,7 +29,7 @@ __all__ = [
29
29
  "BIDSEpochsDataset",
30
30
  "MOABBDataset",
31
31
  "HGD",
32
- "BNCI2014001",
32
+ "BNCI2014_001",
33
33
  "create_from_mne_raw",
34
34
  "create_from_mne_epochs",
35
35
  "TUH",
@@ -15,6 +15,7 @@ from typing import Any
15
15
 
16
16
  import mne
17
17
  import pandas as pd
18
+ from mne.utils import deprecated
18
19
 
19
20
  from braindecode.util import _update_moabb_docstring
20
21
 
@@ -169,8 +170,8 @@ class MOABBDataset(BaseConcatDataset):
169
170
  super().__init__(all_base_ds)
170
171
 
171
172
 
172
- class BNCI2014001(MOABBDataset):
173
- doc = """See moabb.datasets.bnci.BNCI2014001
173
+ class BNCI2014_001(MOABBDataset):
174
+ doc = """See moabb.datasets.bnci.BNCI2014_001
174
175
 
175
176
  Parameters
176
177
  ----------
@@ -179,14 +180,14 @@ class BNCI2014001(MOABBDataset):
179
180
  subjects is fetched.
180
181
  """
181
182
  try:
182
- from moabb.datasets import BNCI2014001
183
+ from moabb.datasets import BNCI2014_001
183
184
 
184
- __doc__ = _update_moabb_docstring(BNCI2014001, doc)
185
+ __doc__ = _update_moabb_docstring(BNCI2014_001, doc)
185
186
  except ModuleNotFoundError:
186
187
  pass # keep moabb soft dependency, otherwise crash on loading of datasets.__init__.py
187
188
 
188
189
  def __init__(self, subject_ids):
189
- super().__init__("BNCI2014001", subject_ids=subject_ids)
190
+ super().__init__("BNCI2014_001", subject_ids=subject_ids)
190
191
 
191
192
 
192
193
  class HGD(MOABBDataset):
@@ -207,3 +208,12 @@ class HGD(MOABBDataset):
207
208
 
208
209
  def __init__(self, subject_ids):
209
210
  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
@@ -2,6 +2,10 @@
2
2
  Utilities for data manipulation.
3
3
  """
4
4
 
5
+ from .channel_utils import (
6
+ division_channels_idx,
7
+ match_hemisphere_chans,
8
+ )
5
9
  from .serialization import (
6
10
  _check_save_dir_empty,
7
11
  load_concat_dataset,
@@ -49,4 +53,10 @@ def __getattr__(name):
49
53
  raise AttributeError("No possible import named " + name)
50
54
 
51
55
 
52
- __all__ = ["load_concat_dataset", "save_concat_dataset", "_check_save_dir_empty"]
56
+ __all__ = [
57
+ "load_concat_dataset",
58
+ "save_concat_dataset",
59
+ "_check_save_dir_empty",
60
+ "match_hemisphere_chans",
61
+ "division_channels_idx",
62
+ ]
@@ -0,0 +1,114 @@
1
+ """
2
+ Utilities for EEG channel manipulation and selection.
3
+
4
+ This module provides functions for dividing and matching EEG channels,
5
+ particularly for hemisphere-aware processing.
6
+ """
7
+
8
+ import re
9
+ from re import search
10
+
11
+
12
+ def match_hemisphere_chans(left_chs, right_chs):
13
+ """
14
+ Match channels of the left and right hemispheres based on their names.
15
+
16
+ This function pairs channels from the left and right hemispheres by matching
17
+ their numeric identifiers. For a left channel with number N, it finds the
18
+ corresponding right channel with number N+1.
19
+
20
+ Parameters
21
+ ----------
22
+ left_chs : list of str
23
+ A list of channel names from the left hemisphere.
24
+ right_chs : list of str
25
+ A list of channel names from the right hemisphere.
26
+
27
+ Returns
28
+ -------
29
+ list of tuples
30
+ List of tuples with matched channel names from the left and right hemispheres.
31
+ Each tuple contains (left_channel, right_channel).
32
+
33
+ Raises
34
+ ------
35
+ ValueError
36
+ If the left and right channels do not match in length.
37
+ ValueError
38
+ If a channel name does not contain a number.
39
+ ValueError
40
+ If no matching right hemisphere channel is found for a left channel.
41
+
42
+ Examples
43
+ --------
44
+ >>> left = ['C3', 'F3']
45
+ >>> right = ['C4', 'F4']
46
+ >>> match_hemisphere_chans(left, right)
47
+ [('C3', 'C4'), ('F3', 'F4')]
48
+ """
49
+ if len(left_chs) != len(right_chs):
50
+ raise ValueError("Left and right channels do not match.")
51
+ right_chs = list(right_chs)
52
+ regexp = r"\d+"
53
+ out = []
54
+ for left in left_chs:
55
+ match = re.search(regexp, left)
56
+ if match is None:
57
+ raise ValueError(f"Channel '{left}' does not contain a number.")
58
+ chan_idx = 1 + int(match.group())
59
+ target_r = re.sub(regexp, str(chan_idx), left)
60
+ for right in right_chs:
61
+ if right == target_r:
62
+ out.append((left, right))
63
+ right_chs.remove(right)
64
+ break
65
+ else:
66
+ raise ValueError(
67
+ f"Found no right hemisphere matching channel for '{left}'."
68
+ )
69
+ return out
70
+
71
+
72
+ def division_channels_idx(ch_names):
73
+ """
74
+ Divide EEG channel names into left, right, and middle based on numbering.
75
+
76
+ This function categorizes channels by their numeric suffix:
77
+ - Odd-numbered channels → left hemisphere
78
+ - Even-numbered channels → right hemisphere
79
+ - Channels without numbers → middle/midline
80
+
81
+ Parameters
82
+ ----------
83
+ ch_names : list of str
84
+ A list of EEG channel names to be divided based on their numbering.
85
+
86
+ Returns
87
+ -------
88
+ tuple of lists
89
+ Three lists containing the channel names:
90
+ - left: Odd-numbered channels (e.g., C3, F3, P3)
91
+ - right: Even-numbered channels (e.g., C4, F4, P4)
92
+ - middle: Channels without numbers (e.g., Cz, Fz, Pz)
93
+
94
+ Notes
95
+ -----
96
+ The function identifies channel numbers by searching for numeric characters
97
+ in the channel names. Standard 10-20 system EEG channel naming conventions
98
+ use odd numbers for left hemisphere and even numbers for right hemisphere.
99
+
100
+ Examples
101
+ --------
102
+ >>> channels = ['FP1', 'FP2', 'O1', 'O2', 'FZ']
103
+ >>> division_channels_idx(channels)
104
+ (['FP1', 'O1'], ['FP2', 'O2'], ['FZ'])
105
+ """
106
+ left, right, middle = [], [], []
107
+ for ch in ch_names:
108
+ number = search(r"\d+", ch)
109
+ if number is not None:
110
+ (left if int(number[0]) % 2 else right).append(ch)
111
+ else:
112
+ middle.append(ch)
113
+
114
+ return left, right, middle
@@ -20,6 +20,7 @@ from .eegminer import EEGMiner
20
20
  from .eegnet import EEGNet, EEGNetv4
21
21
  from .eegnex import EEGNeX
22
22
  from .eegsimpleconv import EEGSimpleConv
23
+ from .eegsym import EEGSym
23
24
  from .eegtcnet import EEGTCNet
24
25
  from .fbcnet import FBCNet
25
26
  from .fblightconvnet import FBLightConvNet
@@ -27,6 +28,7 @@ from .fbmsnet import FBMSNet
27
28
  from .hybrid import HybridNet
28
29
  from .ifnet import IFNet
29
30
  from .labram import Labram
31
+ from .medformer import MEDFormer
30
32
  from .msvtnet import MSVTNet
31
33
  from .patchedtransformer import PBT
32
34
  from .sccnet import SCCNet
@@ -72,6 +74,7 @@ __all__ = [
72
74
  "EEGNet",
73
75
  "EEGNetv4",
74
76
  "EEGNeX",
77
+ "EEGSym",
75
78
  "EEGSimpleConv",
76
79
  "EEGTCNet",
77
80
  "FBCNet",
@@ -80,6 +83,7 @@ __all__ = [
80
83
  "HybridNet",
81
84
  "IFNet",
82
85
  "Labram",
86
+ "MEDFormer",
83
87
  "MSVTNet",
84
88
  "PBT",
85
89
  "SCCNet",