Braindecode 1.6.1.dev1037__tar.gz → 1.6.1.dev1041__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 (172) hide show
  1. {braindecode-1.6.1.dev1037/braindecode.egg-info → braindecode-1.6.1.dev1041}/PKG-INFO +2 -2
  2. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/moabb.py +10 -0
  3. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/__init__.py +2 -3
  4. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/attn_sleep.py +10 -0
  5. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegnet.py +10 -1
  6. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/summary.csv +0 -1
  7. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/tsinception.py +11 -1
  8. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/util.py +2 -1
  9. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/__init__.py +1 -2
  10. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/blocks.py +0 -82
  11. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/preprocessing/mne_preprocess.py +1 -28
  12. braindecode-1.6.1.dev1041/braindecode/version.py +1 -0
  13. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041/braindecode.egg-info}/PKG-INFO +2 -2
  14. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode.egg-info/SOURCES.txt +0 -1
  15. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode.egg-info/requires.txt +1 -1
  16. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/api.rst +0 -2
  17. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/index.rst +4 -4
  18. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/whats_new.rst +2 -30
  19. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/pyproject.toml +1 -7
  20. braindecode-1.6.1.dev1037/braindecode/models/eegdino.py +0 -533
  21. braindecode-1.6.1.dev1037/braindecode/version.py +0 -1
  22. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/LICENSE.txt +0 -0
  23. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/MANIFEST.in +0 -0
  24. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/NOTICE.txt +0 -0
  25. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/README.rst +0 -0
  26. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/__init__.py +0 -0
  27. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/augmentation/__init__.py +0 -0
  28. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/augmentation/base.py +0 -0
  29. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/augmentation/functional.py +0 -0
  30. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/augmentation/transforms.py +0 -0
  31. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/classifier.py +0 -0
  32. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/__init__.py +0 -0
  33. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/base.py +0 -0
  34. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bbci.py +0 -0
  35. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bcicomp.py +0 -0
  36. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/__init__.py +0 -0
  37. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/datasets.py +0 -0
  38. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/format.py +0 -0
  39. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/hub.py +0 -0
  40. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/hub_format.py +0 -0
  41. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/hub_io.py +0 -0
  42. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/hub_validation.py +0 -0
  43. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/bids/iterable.py +0 -0
  44. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/chb_mit.py +0 -0
  45. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/mne.py +0 -0
  46. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/nmt.py +0 -0
  47. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/registry.py +0 -0
  48. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/siena.py +0 -0
  49. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
  50. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/sleep_physionet.py +0 -0
  51. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/tuh.py +0 -0
  52. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/utils.py +0 -0
  53. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datasets/xy.py +0 -0
  54. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datautil/__init__.py +0 -0
  55. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datautil/channel_utils.py +0 -0
  56. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datautil/hub_formats.py +0 -0
  57. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datautil/serialization.py +0 -0
  58. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/datautil/util.py +0 -0
  59. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/eegneuralnet.py +0 -0
  60. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/functional/__init__.py +0 -0
  61. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/functional/functions.py +0 -0
  62. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/functional/initialization.py +0 -0
  63. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/atcnet.py +0 -0
  64. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/attentionbasenet.py +0 -0
  65. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/base.py +0 -0
  66. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/bendr.py +0 -0
  67. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/biot.py +0 -0
  68. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/brainmodule.py +0 -0
  69. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/cbramod.py +0 -0
  70. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/codebrain.py +0 -0
  71. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/config.py +0 -0
  72. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/contrawr.py +0 -0
  73. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/ctnet.py +0 -0
  74. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/deep4.py +0 -0
  75. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/deepsleepnet.py +0 -0
  76. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/dgcnn.py +0 -0
  77. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegconformer.py +0 -0
  78. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eeginception_erp.py +0 -0
  79. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eeginception_mi.py +0 -0
  80. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegitnet.py +0 -0
  81. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegminer.py +0 -0
  82. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegnex.py +0 -0
  83. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegpt.py +0 -0
  84. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegsimpleconv.py +0 -0
  85. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegsym.py +0 -0
  86. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/eegtcnet.py +0 -0
  87. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/emg2qwerty.py +0 -0
  88. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/fbcnet.py +0 -0
  89. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/fblightconvnet.py +0 -0
  90. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/fbmsnet.py +0 -0
  91. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/hybrid.py +0 -0
  92. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/ifnet.py +0 -0
  93. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/interpolated.py +0 -0
  94. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/labram.py +0 -0
  95. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/luna.py +0 -0
  96. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/medformer.py +0 -0
  97. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/meta_neuromotor.py +0 -0
  98. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/msvtnet.py +0 -0
  99. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/patchedtransformer.py +0 -0
  100. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/reve.py +0 -0
  101. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/sccnet.py +0 -0
  102. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/shallow_fbcsp.py +0 -0
  103. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/signal_jepa.py +0 -0
  104. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/sinc_shallow.py +0 -0
  105. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
  106. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
  107. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/sparcnet.py +0 -0
  108. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/sstdpn.py +0 -0
  109. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/syncnet.py +0 -0
  110. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/tcn.py +0 -0
  111. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/tidnet.py +0 -0
  112. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/models/usleep.py +0 -0
  113. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/activation.py +0 -0
  114. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/attention.py +0 -0
  115. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/convolution.py +0 -0
  116. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/filter.py +0 -0
  117. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/interpolation.py +0 -0
  118. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/layers.py +0 -0
  119. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/linear.py +0 -0
  120. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/parametrization.py +0 -0
  121. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/stats.py +0 -0
  122. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/util.py +0 -0
  123. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/modules/wrapper.py +0 -0
  124. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/preprocessing/__init__.py +0 -0
  125. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
  126. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/preprocessing/preprocess.py +0 -0
  127. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/preprocessing/util.py +0 -0
  128. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/preprocessing/windowers.py +0 -0
  129. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/regressor.py +0 -0
  130. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/samplers/__init__.py +0 -0
  131. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/samplers/base.py +0 -0
  132. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/samplers/ssl.py +0 -0
  133. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/training/__init__.py +0 -0
  134. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/training/callbacks.py +0 -0
  135. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/training/losses.py +0 -0
  136. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/training/scoring.py +0 -0
  137. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/util.py +0 -0
  138. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/visualization/__init__.py +0 -0
  139. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/visualization/attribution.py +0 -0
  140. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/visualization/confusion_matrices.py +0 -0
  141. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/visualization/frequency.py +0 -0
  142. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/visualization/metrics.py +0 -0
  143. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/visualization/sanity.py +0 -0
  144. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode/visualization/topology.py +0 -0
  145. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode.egg-info/dependency_links.txt +0 -0
  146. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/braindecode.egg-info/top_level.txt +0 -0
  147. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/Makefile +0 -0
  148. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/_templates/autosummary/class.rst +0 -0
  149. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
  150. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/_templates/autosummary/function.rst +0 -0
  151. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
  152. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/cite.rst +0 -0
  153. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/conf.py +0 -0
  154. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/help.rst +0 -0
  155. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/install/install.rst +0 -0
  156. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/install/install_pip.rst +0 -0
  157. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/install/install_source.rst +0 -0
  158. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/attention.rst +0 -0
  159. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/channel.rst +0 -0
  160. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/convolution.rst +0 -0
  161. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/filterbank.rst +0 -0
  162. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/gnn.rst +0 -0
  163. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/interpretable.rst +0 -0
  164. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/lbm.rst +0 -0
  165. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/recurrent.rst +0 -0
  166. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/categorization/spd.rst +0 -0
  167. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/models.rst +0 -0
  168. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/models_categorization.rst +0 -0
  169. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/models_table.rst +0 -0
  170. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/models/models_visualization.rst +0 -0
  171. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/docs/sg_execution_times.rst +0 -0
  172. {braindecode-1.6.1.dev1037 → braindecode-1.6.1.dev1041}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.6.1.dev1037
3
+ Version: 1.6.1.dev1041
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>
@@ -46,7 +46,7 @@ Requires-Dist: zarr>=3.0; extra == "hub"
46
46
  Provides-Extra: viz
47
47
  Requires-Dist: captum>=0.7.0; extra == "viz"
48
48
  Provides-Extra: tests
49
- Requires-Dist: pytest<9.1; extra == "tests"
49
+ Requires-Dist: pytest; extra == "tests"
50
50
  Requires-Dist: pytest-cov; extra == "tests"
51
51
  Requires-Dist: codecov; extra == "tests"
52
52
  Requires-Dist: pytest_cases; extra == "tests"
@@ -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
 
@@ -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
@@ -15,12 +15,11 @@ from .deep4 import Deep4Net
15
15
  from .deepsleepnet import DeepSleepNet
16
16
  from .dgcnn import DGCNN
17
17
  from .eegconformer import EEGConformer
18
- from .eegdino import EEGDINO
19
18
  from .eeginception_erp import EEGInceptionERP
20
19
  from .eeginception_mi import EEGInceptionMI
21
20
  from .eegitnet import EEGITNet
22
21
  from .eegminer import EEGMiner
23
- from .eegnet import EEGNet
22
+ from .eegnet import EEGNet, EEGNetv4
24
23
  from .eegnex import EEGNeX
25
24
  from .eegpt import EEGPT, InterpolatedEEGPT
26
25
  from .eegsimpleconv import EEGSimpleConv
@@ -85,7 +84,6 @@ __all__ = [
85
84
  "DeepSleepNet",
86
85
  "BrainModule",
87
86
  "EEGConformer",
88
- "EEGDINO",
89
87
  "EEGPT",
90
88
  "InterpolatedEEGPT",
91
89
  "EEGInceptionERP",
@@ -93,6 +91,7 @@ __all__ = [
93
91
  "EEGITNet",
94
92
  "EEGMiner",
95
93
  "EEGNet",
94
+ "EEGNetv4",
96
95
  "EEGNeX",
97
96
  "EEGSym",
98
97
  "EEGSimpleConv",
@@ -8,6 +8,7 @@ from copy import deepcopy
8
8
 
9
9
  import torch
10
10
  import torch.nn.functional as F
11
+ from mne.utils import deprecated
11
12
  from torch import nn
12
13
 
13
14
  from braindecode.models.base import EEGModuleMixin
@@ -537,3 +538,12 @@ class _PositionwiseFeedForward(nn.Module):
537
538
  def forward(self, x: torch.Tensor) -> torch.Tensor:
538
539
  """Implements FFN equation."""
539
540
  return self.w_2(self.dropout(self.activate(self.w_1(x))))
541
+
542
+
543
+ @deprecated(
544
+ "`SleepStagerEldele2021` was renamed to `AttnSleep` in v1.12 to follow original author's name; this alias will be removed in v1.14."
545
+ )
546
+ class SleepStagerEldele2021(AttnSleep):
547
+ r"""Deprecated alias for SleepStagerEldele2021."""
548
+
549
+ pass
@@ -6,7 +6,7 @@ from __future__ import annotations
6
6
  from typing import Dict, Optional
7
7
 
8
8
  from einops.layers.torch import Rearrange
9
- from mne.utils import warn
9
+ from mne.utils import deprecated, warn
10
10
  from torch import nn
11
11
 
12
12
  from braindecode.functional import glorot_weight_zero_bias
@@ -348,3 +348,12 @@ class EEGNet(EEGModuleMixin, nn.Sequential):
348
348
  self.add_module("final_layer", module)
349
349
 
350
350
  glorot_weight_zero_bias(self)
351
+
352
+
353
+ @deprecated(
354
+ "`EEGNetv4` was renamed to `EEGNet` in v1.12; this alias will be removed in v1.14."
355
+ )
356
+ class EEGNetv4(EEGNet):
357
+ r"""Deprecated alias for EEGNet."""
358
+
359
+ pass
@@ -56,4 +56,3 @@ InterpolatedBIOT,"Sleep Staging, Epilepsy",Classification,200,"chs_info, n_outpu
56
56
  InterpolatedEEGPT,General,Classification,256,"chs_info, n_outputs, n_times",25323137,"InterpolatedEEGPT(chs_info=<user>, n_outputs=4, n_times=1024)","Foundation Model,Attention/Transformer,Channel"
57
57
  InterpolatedLaBraM,General,"Classification, Embedding",200,"chs_info, n_outputs, n_times",5866196,"InterpolatedLaBraM(chs_info=<user>, n_outputs=4, n_times=1000)","Convolution,Foundation Model,Channel"
58
58
  InterpolatedSignalJEPA,"Motor Imagery, ERP, SSVEP",Embedding,128,"chs_info",3456882,"InterpolatedSignalJEPA(chs_info=<user>)","Convolution,Channel,Foundation Model"
59
- EEGDINO,General,Classification,200,"n_chans, n_outputs, n_times",4539698,"EEGDINO(n_chans=19, n_outputs=4, n_times=1000)","Foundation Model,Attention/Transformer"
@@ -7,7 +7,7 @@ from __future__ import annotations
7
7
  import torch
8
8
  import torch.nn as nn
9
9
  from einops.layers.torch import Rearrange
10
- from mne.utils import warn
10
+ from mne.utils import deprecated, warn
11
11
 
12
12
  from braindecode.models.base import EEGModuleMixin
13
13
 
@@ -283,3 +283,13 @@ class TSception(EEGModuleMixin, nn.Module):
283
283
  activation(),
284
284
  nn.AvgPool2d(kernel_size=(1, pool_size), stride=(1, pool_size)),
285
285
  )
286
+
287
+
288
+ @deprecated(
289
+ "`TSceptionV1` was renamed to `TSception` in v1.12; "
290
+ "this alias will be removed in v1.14."
291
+ )
292
+ class TSceptionV1(TSception):
293
+ r"""Deprecated alias for TSception."""
294
+
295
+ pass
@@ -189,6 +189,8 @@ def _init_models_dict():
189
189
  issubclass(m[1], models.base.EEGModuleMixin)
190
190
  and m[1] != models.base.EEGModuleMixin
191
191
  ):
192
+ if m[1].__name__ == "EEGNetv4":
193
+ continue
192
194
  models_dict[m[0]] = m[1]
193
195
 
194
196
 
@@ -432,7 +434,6 @@ models_mandatory_parameters: list[
432
434
  {"n_chans": 19, "n_times": 6000},
433
435
  ),
434
436
  ("DGCNN", ["n_chans", "n_outputs", "n_times", "chs_info"], None),
435
- ("EEGDINO", ["n_chans", "n_outputs", "n_times"], None),
436
437
  ]
437
438
 
438
439
  ################################################################
@@ -14,7 +14,7 @@ from .attention import (
14
14
  MultiHeadAttention,
15
15
  SqueezeAndExcitation,
16
16
  )
17
- from .blocks import MLP, FeedForwardBlock, InceptionBlock, PatchTokenizer
17
+ from .blocks import MLP, FeedForwardBlock, InceptionBlock
18
18
  from .convolution import (
19
19
  AvgPool2dWithConv,
20
20
  CausalConv1d,
@@ -68,7 +68,6 @@ __all__ = [
68
68
  "MLP",
69
69
  "FeedForwardBlock",
70
70
  "InceptionBlock",
71
- "PatchTokenizer",
72
71
  "AvgPool2dWithConv",
73
72
  "CausalConv1d",
74
73
  "CombinedConv",
@@ -1,89 +1,7 @@
1
- from warnings import warn
2
-
3
1
  import torch
4
2
  from torch import nn
5
3
 
6
4
 
7
- class PatchTokenizer(nn.Module):
8
- r"""Tokenize an EEG signal into non-overlapping temporal patches.
9
-
10
- Transforms ``(batch, n_chans, n_times)`` into
11
- ``(batch, n_chans, n_patches, patch_dim)`` by splitting the time axis into
12
- non-overlapping patches of ``patch_size`` samples. This is the shared
13
- patch / "tokenization" step used by transformer EEG foundation models
14
- (e.g. LaBraM, CBraMod, EEG-DINO).
15
-
16
- As in the filter-bank models (:class:`~braindecode.models.FBCNet`,
17
- :class:`~braindecode.models.FBMSNet`), when ``n_times`` is not a multiple of
18
- ``patch_size`` the input is right zero-padded (a warning is emitted at
19
- construction); it is never an error.
20
-
21
- Two modes:
22
-
23
- - **non-learnable** (``learnable=False``, default): a pure reshape, so
24
- ``patch_dim == patch_size`` and the raw samples of each patch are kept
25
- (the patch embedding, if any, lives in the model).
26
- - **learnable** (``learnable=True``): a strided ``Conv1d`` (kernel and
27
- stride equal to ``patch_size``, applied per channel) maps each patch to
28
- ``emb_dim`` features, so ``patch_dim == emb_dim``.
29
-
30
- Parameters
31
- ----------
32
- patch_size : int
33
- Number of time samples per patch.
34
- n_times : int
35
- Number of time samples of the input, used to set up the right-padding
36
- when ``n_times`` is not a multiple of ``patch_size``.
37
- emb_dim : int, optional
38
- Output features per patch in learnable mode. Defaults to ``patch_size``.
39
- Ignored when ``learnable=False``.
40
- learnable : bool, default=False
41
- Whether the tokenizer is a learned convolution or a fixed reshape.
42
-
43
- Examples
44
- --------
45
- >>> import torch
46
- >>> from braindecode.modules import PatchTokenizer
47
- >>> tokenizer = PatchTokenizer(patch_size=200, n_times=1000)
48
- >>> tokenizer(torch.randn(2, 19, 1000)).shape
49
- torch.Size([2, 19, 5, 200])
50
- """
51
-
52
- def __init__(self, patch_size, n_times, emb_dim=None, learnable=False):
53
- super().__init__()
54
- self.patch_size = patch_size
55
- self.learnable = learnable
56
- self.emb_dim = (emb_dim or patch_size) if learnable else patch_size
57
- if n_times % patch_size:
58
- warn(
59
- f"Time dimension ({n_times}) is not divisible by patch_size "
60
- f"({patch_size}). Input will be padded.",
61
- UserWarning,
62
- )
63
- self.padding_layer = nn.ConstantPad1d(
64
- (0, patch_size - n_times % patch_size), 0.0
65
- )
66
- else:
67
- self.padding_layer = nn.Identity()
68
- # Defined unconditionally (Identity when not learnable) so the attribute
69
- # always exists for torch.jit.script, which type-checks both branches.
70
- if learnable:
71
- self.patcher = nn.Conv1d(1, self.emb_dim, patch_size, stride=patch_size)
72
- else:
73
- self.patcher = nn.Identity()
74
-
75
- def forward(self, x):
76
- x = self.padding_layer(x)
77
- batch_size, n_chans, _ = x.shape
78
- if self.learnable:
79
- x = x.flatten(0, 1).unsqueeze(1) # (batch * chans, 1, time)
80
- x = self.patcher(x) # (batch * chans, emb, patches)
81
- return x.reshape(batch_size, n_chans, x.shape[-2], x.shape[-1]).permute(
82
- 0, 1, 3, 2
83
- )
84
- return x.reshape(batch_size, n_chans, -1, self.patch_size)
85
-
86
-
87
5
  class InceptionBlock(nn.Module):
88
6
  """
89
7
  Inception block module.
@@ -13,28 +13,6 @@ 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
-
38
16
 
39
17
  def _is_standalone_function(func):
40
18
  """
@@ -101,12 +79,7 @@ def _generate_init_method(func, force_copy_false=False):
101
79
  raise TypeError(
102
80
  f"{func_name}() missing required arguments: {', '.join(mandatory)}"
103
81
  )
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)
82
+ Preprocessor.__init__(self, fn=func_name, apply_on_array=False, **init_kwargs)
110
83
 
111
84
  init_method.__signature__ = inspect.signature(func)
112
85
  return init_method
@@ -0,0 +1 @@
1
+ __version__ = "1.6.1.dev1041"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.6.1.dev1037
3
+ Version: 1.6.1.dev1041
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>
@@ -46,7 +46,7 @@ Requires-Dist: zarr>=3.0; extra == "hub"
46
46
  Provides-Extra: viz
47
47
  Requires-Dist: captum>=0.7.0; extra == "viz"
48
48
  Provides-Extra: tests
49
- Requires-Dist: pytest<9.1; extra == "tests"
49
+ Requires-Dist: pytest; extra == "tests"
50
50
  Requires-Dist: pytest-cov; extra == "tests"
51
51
  Requires-Dist: codecov; extra == "tests"
52
52
  Requires-Dist: pytest_cases; extra == "tests"
@@ -67,7 +67,6 @@ braindecode/models/deep4.py
67
67
  braindecode/models/deepsleepnet.py
68
68
  braindecode/models/dgcnn.py
69
69
  braindecode/models/eegconformer.py
70
- braindecode/models/eegdino.py
71
70
  braindecode/models/eeginception_erp.py
72
71
  braindecode/models/eeginception_mi.py
73
72
  braindecode/models/eegitnet.py
@@ -56,7 +56,7 @@ zarr>=3.0
56
56
  moabb>=1.4.3
57
57
 
58
58
  [tests]
59
- pytest<9.1
59
+ pytest
60
60
  pytest-cov
61
61
  codecov
62
62
  pytest_cases
@@ -143,7 +143,6 @@ interface for all EEG models and can derive variable names when needed.
143
143
  Deep4Net
144
144
  DeepSleepNet
145
145
  EEGConformer
146
- EEGDINO
147
146
  EEGInceptionERP
148
147
  EEGInceptionMI
149
148
  EEGITNet
@@ -256,7 +255,6 @@ perceptrons (MLPs) and inception blocks.
256
255
  MLP
257
256
  FeedForwardBlock
258
257
  InceptionBlock
259
- PatchTokenizer
260
258
 
261
259
  Convolution
262
260
  ===========
@@ -293,14 +293,14 @@
293
293
  <span class="code-step-num">02</span>
294
294
  <span class="code-step-text">
295
295
  <span class="code-step-title">Preprocess &amp; window</span>
296
- <span class="code-step-desc">Keep EEG sensors, bandpass-filter, then window the trials.</span>
296
+ <span class="code-step-desc">Bandpass-filter, then cut motor-imagery trials.</span>
297
297
  </span>
298
298
  </li>
299
299
  <li class="code-step">
300
300
  <span class="code-step-num">03</span>
301
301
  <span class="code-step-text">
302
302
  <span class="code-step-title">Pick a model</span>
303
- <span class="code-step-desc">EEGNeX, sized from the data: 22 channels, 4 classes, 4 s @ 250 Hz.</span>
303
+ <span class="code-step-desc">EEGNeX with 22 channels, 4 classes, 4.5 s @ 250 Hz.</span>
304
304
  </span>
305
305
  </li>
306
306
  <li class="code-step">
@@ -321,8 +321,8 @@
321
321
  <div class="code-window-meta">PyTorch · CUDA</div>
322
322
  </div>
323
323
  <div class="code-window-body">
324
- <div class="code-gutter"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div><div>10</div><div>11</div><div>12</div><div>13</div><div>14</div><div>15</div><div>16</div><div>17</div><div>18</div><div>19</div><div>20</div></div>
325
- <div class="code-content"><div data-step="0"><span class="tok-com"># 1. Load BCI Competition IV-2a (subject 3) via MOABB</span></div><div data-step="0"><span class="tok-kw">from</span> <span class="tok-var">braindecode.datasets</span> <span class="tok-kw">import</span> <span class="tok-cls">MOABBDataset</span></div><div data-step="0"></div><div data-step="0"><span class="tok-var">dataset</span> = <span class="tok-fn">MOABBDataset</span>(<span class="tok-str">"BNCI2014_001"</span>, <span class="tok-attr">subject_ids</span>=[<span class="tok-num">3</span>])</div><div data-step="1"><span class="tok-com"># 2. Keep EEG channels, bandpass-filter, and window the trials</span></div><div data-step="1"><span class="tok-kw">from</span> <span class="tok-var">braindecode.preprocessing</span> <span class="tok-kw">import</span> (</div><div data-step="1"> <span class="tok-cls">Preprocessor</span>, <span class="tok-fn">preprocess</span>, <span class="tok-fn">create_windows_from_events</span>,</div><div data-step="1">)</div><div data-step="1"></div><div data-step="1"><span class="tok-fn">preprocess</span>(<span class="tok-var">dataset</span>, [</div><div data-step="1"> <span class="tok-fn">Preprocessor</span>(<span class="tok-str">"pick_types"</span>, <span class="tok-attr">eeg</span>=<span class="tok-kw">True</span>),</div><div data-step="1"> <span class="tok-fn">Preprocessor</span>(<span class="tok-str">"filter"</span>, <span class="tok-attr">l_freq</span>=<span class="tok-num">4.</span>, <span class="tok-attr">h_freq</span>=<span class="tok-num">38.</span>),</div><div data-step="1">])</div><div data-step="1"><span class="tok-var">windows</span> = <span class="tok-fn">create_windows_from_events</span>(<span class="tok-var">dataset</span>)</div><div data-step="2"><span class="tok-com"># 3. Pick a published architecture by name</span></div><div data-step="2"><span class="tok-kw">from</span> <span class="tok-var">braindecode</span> <span class="tok-kw">import</span> <span class="tok-cls">EEGClassifier</span></div><div data-step="2"></div><div data-step="2"><span class="tok-var">clf</span> = <span class="tok-fn">EEGClassifier</span>(<span class="tok-str">"EEGNeX"</span>, <span class="tok-attr">max_epochs</span>=<span class="tok-num">10</span>, <span class="tok-attr">train_split</span>=<span class="tok-kw">None</span>)</div><div data-step="3"><span class="tok-com"># 4. Train with sklearn-style fit()</span></div><div data-step="3"><span class="tok-var">clf</span>.<span class="tok-fn">fit</span>(<span class="tok-var">windows</span>, <span class="tok-attr">y</span>=<span class="tok-kw">None</span>)</div></div>
324
+ <div class="code-gutter"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div><div>10</div><div>11</div><div>12</div><div>13</div><div>14</div><div>15</div><div>16</div><div>17</div><div>18</div><div>19</div></div>
325
+ <div class="code-content"><div data-step="0"><span class="tok-com"># 1. Load BCI Competition IV-2a (subject 3) via MOABB</span></div><div data-step="0"><span class="tok-kw">from</span> <span class="tok-var">braindecode.datasets</span> <span class="tok-kw">import</span> <span class="tok-cls">MOABBDataset</span></div><div data-step="0"></div><div data-step="0"><span class="tok-var">dataset</span> = <span class="tok-fn">MOABBDataset</span>(<span class="tok-str">"BNCI2014_001"</span>, <span class="tok-attr">subject_ids</span>=[<span class="tok-num">3</span>])</div><div data-step="1"><span class="tok-com"># 2. Bandpass-filter and create event-aligned windows</span></div><div data-step="1"><span class="tok-kw">from</span> <span class="tok-var">braindecode.preprocessing</span> <span class="tok-kw">import</span> (</div><div data-step="1"> <span class="tok-cls">Preprocessor</span>, <span class="tok-fn">preprocess</span>, <span class="tok-fn">create_windows_from_events</span>,</div><div data-step="1">)</div><div data-step="1"></div><div data-step="1"><span class="tok-fn">preprocess</span>(<span class="tok-var">dataset</span>, [<span class="tok-fn">Preprocessor</span>(<span class="tok-str">"filter"</span>, <span class="tok-attr">l_freq</span>=<span class="tok-num">4.</span>, <span class="tok-attr">h_freq</span>=<span class="tok-num">38.</span>)])</div><div data-step="1"><span class="tok-var">windows</span> = <span class="tok-fn">create_windows_from_events</span>(<span class="tok-var">dataset</span>)</div><div data-step="2"><span class="tok-com"># 3. Instantiate a published architecture</span></div><div data-step="2"><span class="tok-kw">from</span> <span class="tok-var">braindecode.models</span> <span class="tok-kw">import</span> <span class="tok-cls">EEGNeX</span></div><div data-step="2"></div><div data-step="2"><span class="tok-var">model</span> = <span class="tok-fn">EEGNeX</span>(<span class="tok-attr">n_chans</span>=<span class="tok-num">22</span>, <span class="tok-attr">n_outputs</span>=<span class="tok-num">4</span>, <span class="tok-attr">n_times</span>=<span class="tok-num">1125</span>)</div><div data-step="3"><span class="tok-com"># 4. Train with the skorch-based EEGClassifier</span></div><div data-step="3"><span class="tok-kw">from</span> <span class="tok-var">braindecode</span> <span class="tok-kw">import</span> <span class="tok-cls">EEGClassifier</span></div><div data-step="3"></div><div data-step="3"><span class="tok-var">clf</span> = <span class="tok-fn">EEGClassifier</span>(<span class="tok-attr">module</span>=<span class="tok-var">model</span>, <span class="tok-attr">max_epochs</span>=<span class="tok-num">10</span>)</div><div data-step="3"><span class="tok-var">clf</span>.<span class="tok-fn">fit</span>(<span class="tok-var">windows</span>, <span class="tok-attr">y</span>=<span class="tok-kw">None</span>)</div></div>
326
326
  </div>
327
327
  <div class="code-output">
328
328
  <span class="ok"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg> Trains on CPU or GPU</span>
@@ -36,27 +36,16 @@ Enhancements
36
36
  variant of :class:`braindecode.models.EEGPT` built with
37
37
  :func:`~braindecode.models.interpolated.InterpolatedModel`.
38
38
  By `Pierre Guetschel`_.
39
- - Add :class:`braindecode.models.EEGDINO`, the EEG-DINO self-distillation
40
- foundation model (Small/Medium/Large) with pretrained S/M weights. By `Bruno Aristimunha`_.
41
39
 
42
40
  API and behavior changes
43
41
  ========================
44
42
 
45
- - Removed the deprecated aliases that were scheduled for removal after their
46
- deprecation in v1.2/v1.3: ``EEGNetv4`` (use
47
- :class:`braindecode.models.EEGNet`), ``SleepStagerEldele2021`` (use
48
- :class:`braindecode.models.AttnSleep`), ``TSceptionV1`` (use
49
- :class:`braindecode.models.TSception`), and ``BNCI2014001`` (use
50
- :class:`braindecode.datasets.BNCI2014_001`). (:gh:`1045` by `Bhargav Kowshik`_)
43
+ - None yet
51
44
 
52
45
  Requirements
53
46
  ============
54
47
 
55
- - Cap the test dependency to ``pytest<9.1`` in the ``tests`` extra. ``pytest``
56
- 9.1.0 changed the ``IdMaker`` constructor signature, which breaks
57
- ``pytest_cases`` 3.10.1 and makes the whole test suite crash at collection
58
- time. The cap can be lifted once ``pytest_cases`` supports ``pytest>=9.1``.
59
- By `Adam Mounir`_.
48
+ - None yet
60
49
 
61
50
  Bug fixes
62
51
  ==========
@@ -70,24 +59,8 @@ Bug fixes
70
59
  use running statistics when ``batch_size == 1`` in train mode.
71
60
  By `Bruno Aristimunha`_.
72
61
 
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`_)
82
62
  - Fix incorrect import path in CONTRIBUTING.md by `Yiheng Li`_
83
63
 
84
- - Fix the broken EEGNeX quickstart snippet on the documentation landing page,
85
- which kept non-EEG channels (including the STIM trigger), hardcoded a
86
- mismatched ``n_times``, and failed at the default stratified validation split
87
- with ``y=None``; it now restricts to EEG channels and lets
88
- :class:`~braindecode.EEGClassifier` infer the signal dimensions from the data.
89
- By `Bhargav Kowshik`_
90
-
91
64
  Code health
92
65
  ============
93
66
 
@@ -1270,4 +1243,3 @@ Authors
1270
1243
  .. _Léo Burgund: https://github.com/leob000
1271
1244
  .. _Adam Mounir: https://github.com/adammounir
1272
1245
  .. _Yiheng Li: https://github.com/YihengLi-1
1273
- .. _Bhargav Kowshik: https://github.com/bkowshik
@@ -80,7 +80,7 @@ eegprep = ["eegprep[eeglabio]>=0.2.23"]
80
80
  hub = ["huggingface_hub[torch]>=0.20.0", "zarr>=3.0"]
81
81
  viz = ["captum>=0.7.0"]
82
82
  tests = [
83
- 'pytest<9.1', # pytest 9.1.0 changed IdMaker's signature, which breaks pytest_cases 3.10.1 (crash at collection time). Remove the cap once pytest_cases supports pytest >=9.1.
83
+ 'pytest',
84
84
  'pytest-cov',
85
85
  'codecov',
86
86
  'pytest_cases',
@@ -162,9 +162,3 @@ testpaths = ["test"]
162
162
  python_files = ["test_*.py", "*_test.py"]
163
163
  # which functions inside them count as tests
164
164
  python_functions = ["test_*"]
165
- markers = [
166
- "integration: integration tests",
167
- "network: tests that require network access",
168
- "huggingface: tests that access Hugging Face Hub",
169
- "slow: slow tests",
170
- ]