braindecode 1.7.0.dev183981614__tar.gz → 1.8.0.dev1122__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 (179) hide show
  1. {braindecode-1.7.0.dev183981614/braindecode.egg-info → braindecode-1.8.0.dev1122}/PKG-INFO +1 -1
  2. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/augmentation/base.py +25 -1
  3. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/augmentation/functional.py +2 -4
  4. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/augmentation/transforms.py +5 -3
  5. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/classifier.py +2 -1
  6. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/sleep_physionet.py +9 -3
  7. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/eegneuralnet.py +4 -2
  8. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/__init__.py +2 -0
  9. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/fblightconvnet.py +31 -4
  10. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/summary.csv +1 -0
  11. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/util.py +9 -0
  12. braindecode-1.8.0.dev1122/braindecode/models/zuna.py +612 -0
  13. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/preprocessing/eegprep_preprocess.py +1 -1
  14. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/regressor.py +2 -1
  15. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/training/losses.py +7 -4
  16. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/util.py +16 -10
  17. braindecode-1.8.0.dev1122/braindecode/version.py +1 -0
  18. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122/braindecode.egg-info}/PKG-INFO +1 -1
  19. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode.egg-info/SOURCES.txt +1 -0
  20. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/api.rst +1 -0
  21. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/whats_new.rst +97 -1
  22. braindecode-1.7.0.dev183981614/braindecode/version.py +0 -1
  23. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/LICENSE.txt +0 -0
  24. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/MANIFEST.in +0 -0
  25. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/NOTICE.txt +0 -0
  26. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/README.rst +0 -0
  27. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/__init__.py +0 -0
  28. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/augmentation/__init__.py +0 -0
  29. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/__init__.py +0 -0
  30. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/base.py +0 -0
  31. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bbci.py +0 -0
  32. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bcicomp.py +0 -0
  33. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/__init__.py +0 -0
  34. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/datasets.py +0 -0
  35. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/format.py +0 -0
  36. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/hub.py +0 -0
  37. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/hub_format.py +0 -0
  38. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/hub_io.py +0 -0
  39. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/hub_validation.py +0 -0
  40. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/bids/iterable.py +0 -0
  41. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/chb_mit.py +0 -0
  42. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/collate.py +0 -0
  43. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/mne.py +0 -0
  44. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/moabb.py +0 -0
  45. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/nmt.py +0 -0
  46. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/registry.py +0 -0
  47. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/siena.py +0 -0
  48. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
  49. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/tuh.py +0 -0
  50. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/utils.py +0 -0
  51. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datasets/xy.py +0 -0
  52. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datautil/__init__.py +0 -0
  53. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datautil/channel_utils.py +0 -0
  54. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datautil/hub_formats.py +0 -0
  55. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datautil/serialization.py +0 -0
  56. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/datautil/util.py +0 -0
  57. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/functional/__init__.py +0 -0
  58. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/functional/functions.py +0 -0
  59. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/functional/initialization.py +0 -0
  60. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/atcnet.py +0 -0
  61. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/attentionbasenet.py +0 -0
  62. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/attn_sleep.py +0 -0
  63. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/base.py +0 -0
  64. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/bendr.py +0 -0
  65. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/biot.py +0 -0
  66. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/brainmodule.py +0 -0
  67. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/cbramod.py +0 -0
  68. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/codebrain.py +0 -0
  69. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/config.py +0 -0
  70. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/contrawr.py +0 -0
  71. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/ctnet.py +0 -0
  72. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/dance.py +0 -0
  73. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/deep4.py +0 -0
  74. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/deepsleepnet.py +0 -0
  75. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/dgcnn.py +0 -0
  76. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegconformer.py +0 -0
  77. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegdino.py +0 -0
  78. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eeginception_erp.py +0 -0
  79. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eeginception_mi.py +0 -0
  80. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegitnet.py +0 -0
  81. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegminer.py +0 -0
  82. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegnet.py +0 -0
  83. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegnex.py +0 -0
  84. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegpt.py +0 -0
  85. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegsimpleconv.py +0 -0
  86. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegsym.py +0 -0
  87. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/eegtcnet.py +0 -0
  88. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/emg2qwerty.py +0 -0
  89. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/fbcnet.py +0 -0
  90. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/fbmsnet.py +0 -0
  91. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/hybrid.py +0 -0
  92. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/ifnet.py +0 -0
  93. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/interpolated.py +0 -0
  94. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/labram.py +0 -0
  95. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/luna.py +0 -0
  96. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/medformer.py +0 -0
  97. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/meta_neuromotor.py +0 -0
  98. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/msvtnet.py +0 -0
  99. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/mvpformer.py +0 -0
  100. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/patchedtransformer.py +0 -0
  101. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/reve.py +0 -0
  102. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/sccnet.py +0 -0
  103. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/shallow_fbcsp.py +0 -0
  104. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/signal_jepa.py +0 -0
  105. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/sinc_shallow.py +0 -0
  106. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
  107. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
  108. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/sparcnet.py +0 -0
  109. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/sstdpn.py +0 -0
  110. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/steegformer.py +0 -0
  111. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/syncnet.py +0 -0
  112. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/tcformer.py +0 -0
  113. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/tcn.py +0 -0
  114. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/tidnet.py +0 -0
  115. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/tsinception.py +0 -0
  116. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/models/usleep.py +0 -0
  117. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/__init__.py +0 -0
  118. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/activation.py +0 -0
  119. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/attention.py +0 -0
  120. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/blocks.py +0 -0
  121. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/convolution.py +0 -0
  122. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/dance_modules.py +0 -0
  123. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/filter.py +0 -0
  124. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/interpolation.py +0 -0
  125. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/layers.py +0 -0
  126. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/linear.py +0 -0
  127. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/parametrization.py +0 -0
  128. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/stats.py +0 -0
  129. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/util.py +0 -0
  130. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/modules/wrapper.py +0 -0
  131. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/preprocessing/__init__.py +0 -0
  132. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/preprocessing/mne_preprocess.py +0 -0
  133. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/preprocessing/preprocess.py +0 -0
  134. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/preprocessing/util.py +0 -0
  135. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/preprocessing/windowers.py +0 -0
  136. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/samplers/__init__.py +0 -0
  137. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/samplers/base.py +0 -0
  138. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/samplers/ssl.py +0 -0
  139. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/training/__init__.py +0 -0
  140. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/training/callbacks.py +0 -0
  141. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/training/scoring.py +0 -0
  142. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/visualization/__init__.py +0 -0
  143. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/visualization/attribution.py +0 -0
  144. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/visualization/confusion_matrices.py +0 -0
  145. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/visualization/frequency.py +0 -0
  146. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/visualization/metrics.py +0 -0
  147. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/visualization/sanity.py +0 -0
  148. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode/visualization/topology.py +0 -0
  149. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode.egg-info/dependency_links.txt +0 -0
  150. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode.egg-info/requires.txt +0 -0
  151. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/braindecode.egg-info/top_level.txt +0 -0
  152. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/Makefile +0 -0
  153. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/_templates/autosummary/class.rst +0 -0
  154. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
  155. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/_templates/autosummary/function.rst +0 -0
  156. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
  157. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/cite.rst +0 -0
  158. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/conf.py +0 -0
  159. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/help.rst +0 -0
  160. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/index.rst +0 -0
  161. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/install/install.rst +0 -0
  162. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/install/install_pip.rst +0 -0
  163. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/install/install_source.rst +0 -0
  164. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/attention.rst +0 -0
  165. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/channel.rst +0 -0
  166. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/convolution.rst +0 -0
  167. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/filterbank.rst +0 -0
  168. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/gnn.rst +0 -0
  169. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/interpretable.rst +0 -0
  170. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/lbm.rst +0 -0
  171. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/recurrent.rst +0 -0
  172. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/categorization/spd.rst +0 -0
  173. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/models.rst +0 -0
  174. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/models_categorization.rst +0 -0
  175. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/models_table.rst +0 -0
  176. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/models/models_visualization.rst +0 -0
  177. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/docs/sg_execution_times.rst +0 -0
  178. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/pyproject.toml +0 -0
  179. {braindecode-1.7.0.dev183981614 → braindecode-1.8.0.dev1122}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.7.0.dev183981614
3
+ Version: 1.8.0.dev1122
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>
@@ -3,6 +3,7 @@
3
3
  # Bruno Aristimunha <b.aristimunha@gmail.com>
4
4
  # Martin Wimpff <martin.wimpff@iss.uni-stuttgart.de>
5
5
  # Valentin Iovene <val@too.gy>
6
+ # Sarthak Tayal <sarthaktayal2@gmail.com>
6
7
  # License: BSD (3-clause)
7
8
 
8
9
  from numbers import Real
@@ -176,6 +177,14 @@ class Compose(Transform):
176
177
  return X, y
177
178
 
178
179
 
180
+ def _as_mixed_target(y, lam_dtype):
181
+ # an untouched target is the same as being mixed with itself with lam of one
182
+ if isinstance(y, (tuple, list)) and len(y) == 3:
183
+ return tuple(y)
184
+ lam = torch.ones(y.shape[0], device=y.device, dtype=lam_dtype)
185
+ return y, y, lam
186
+
187
+
179
188
  class _AugmentationCollate:
180
189
  """Collate that applies a transform to each batch, with optional expansion.
181
190
 
@@ -193,7 +202,10 @@ class _AugmentationCollate:
193
202
  ``0`` (default) applies the transform in place (batch size unchanged).
194
203
  ``> 0`` keeps the clean originals and appends ``n_augmentation``
195
204
  independently transformed copies, returning ``(X, y)`` of
196
- ``(1 + n_augmentation)`` times the original size.
205
+ ``(1 + n_augmentation)`` times the original size. When the transform
206
+ mixes targets, as :class:`braindecode.augmentation.Mixup` does, ``y``
207
+ stays the ``(y_a, y_b, lam)`` triple and the clean originals get a
208
+ mixing coefficient of one.
197
209
  """
198
210
 
199
211
  def __init__(self, transform, device=None, n_augmentation=0):
@@ -216,6 +228,18 @@ class _AugmentationCollate:
216
228
  aug_X, aug_y = self.transform(X, y)
217
229
  xs.append(aug_X)
218
230
  ys.append(aug_y)
231
+ mixed_ys = [
232
+ aug_y
233
+ for aug_y in ys
234
+ if isinstance(aug_y, (tuple, list)) and len(aug_y) == 3
235
+ ]
236
+ if mixed_ys:
237
+ # a target-mixing transform such as Mixup returns (y_a, y_b, lam),
238
+ # so the parts are concatenated one by one and the untouched copies
239
+ # are given a mixing coefficient of one
240
+ lam_dtype = mixed_ys[0][2].dtype
241
+ ys = [_as_mixed_target(aug_y, lam_dtype) for aug_y in ys]
242
+ return torch.cat(xs), tuple(torch.cat(part) for part in zip(*ys))
219
243
  return torch.cat(xs), torch.cat(ys)
220
244
 
221
245
 
@@ -1065,13 +1065,11 @@ def mixup(
1065
1065
  batch_size, n_channels, n_times = X.shape
1066
1066
 
1067
1067
  X_mix = torch.zeros((batch_size, n_channels, n_times)).to(device)
1068
- y_a = torch.arange(batch_size).to(device)
1069
- y_b = torch.arange(batch_size).to(device)
1068
+ y_a = y.clone()
1069
+ y_b = y[idx_perm].clone()
1070
1070
 
1071
1071
  for idx in range(batch_size):
1072
1072
  X_mix[idx] = lam[idx] * X[idx] + (1 - lam[idx]) * X[idx_perm[idx]]
1073
- y_a[idx] = y[idx]
1074
- y_b[idx] = y[idx_perm[idx]]
1075
1073
 
1076
1074
  return X_mix, (y_a, y_b, lam)
1077
1075
 
@@ -1068,16 +1068,18 @@ class Mixup(Transform):
1068
1068
  device = X.device
1069
1069
  batch_size, _, _ = X.shape
1070
1070
 
1071
+ # lam follows the dtype of X, numpy draws float64 and that would leak
1072
+ # into the mixed signal and into the loss returned by mixup_criterion
1071
1073
  if self.alpha > 0:
1072
1074
  if self.beta_per_sample:
1073
1075
  lam = torch.as_tensor(
1074
1076
  self.rng.beta(self.alpha, self.alpha, batch_size)
1075
- ).to(device)
1077
+ ).to(device=device, dtype=X.dtype)
1076
1078
  else:
1077
- lam = torch.ones(batch_size).to(device)
1079
+ lam = torch.ones(batch_size, dtype=X.dtype).to(device)
1078
1080
  lam *= self.rng.beta(self.alpha, self.alpha)
1079
1081
  else:
1080
- lam = torch.ones(batch_size).to(device)
1082
+ lam = torch.ones(batch_size, dtype=X.dtype).to(device)
1081
1083
 
1082
1084
  idx_perm = torch.as_tensor(
1083
1085
  self.rng.permutation(
@@ -228,8 +228,9 @@ class EEGClassifier(_EEGNeuralNet, NeuralNetClassifier):
228
228
  if return_targets:
229
229
  return preds, X.get_metadata()["target"].to_numpy()
230
230
  return preds
231
+ self.check_is_fitted()
231
232
  return predict_trials(
232
- module=self.module,
233
+ module=self.module_,
233
234
  dataset=X,
234
235
  return_targets=return_targets,
235
236
  batch_size=self.batch_size,
@@ -117,9 +117,15 @@ class SleepPhysionet(BaseConcatDataset):
117
117
  sleep_event_inds = np.where(mask)[0]
118
118
 
119
119
  # Crop raw
120
- tmin = annots[int(sleep_event_inds[0])]["onset"] - crop_wake_mins * 60
121
- tmax = annots[int(sleep_event_inds[-1])]["onset"] + crop_wake_mins * 60
122
- raw.crop(tmin=max(tmin, raw.times[0]), tmax=min(tmax, raw.times[-1]))
120
+ a_tmin = annots[sleep_event_inds[0]]
121
+ a_tmax = annots[sleep_event_inds[-1]]
122
+ tmin = a_tmin["onset"] - crop_wake_mins * 60
123
+ tmax = a_tmax["onset"] + a_tmax["duration"] + crop_wake_mins * 60
124
+ raw.crop(
125
+ tmin=max(tmin, raw.times[0]),
126
+ tmax=min(tmax, raw.times[-1] + 1 / raw.info["sfreq"]),
127
+ include_tmax=False,
128
+ )
123
129
 
124
130
  # Rename EEG channels
125
131
  ch_names = {i: i.replace("EEG ", "") for i in raw.ch_names if "EEG" in i}
@@ -1,5 +1,6 @@
1
1
  # Authors: Bruno Aristimunha <b.aristimunha@gmail.com>
2
2
  # Pierre Guetschel <pierre.guetschel@gmail.com>
3
+ # Sarthak Tayal <sarthaktayal2@gmail.com>
3
4
  #
4
5
  # License: BSD (3-clause)
5
6
 
@@ -126,7 +127,8 @@ class _EEGNeuralNet(NeuralNet, abc.ABC):
126
127
  self._last_window_inds_ = None
127
128
 
128
129
  def predict_with_window_inds_and_ys(self, dataset):
129
- self.module.eval()
130
+ # self.module can still be a name or a class, self.module_ is the built one
131
+ self.module_.eval()
130
132
  preds = []
131
133
  i_window_in_trials = []
132
134
  i_window_stops = []
@@ -142,7 +144,7 @@ class _EEGNeuralNet(NeuralNet, abc.ABC):
142
144
  i_window_in_trials.append(i[0].cpu().numpy())
143
145
  i_window_stops.append(i[2].cpu().numpy())
144
146
  with torch.no_grad():
145
- preds.append(to_numpy(self.module.forward(X.to(self.device))))
147
+ preds.append(to_numpy(self.module_.forward(X.to(self.device))))
146
148
  window_ys.append(y.cpu().numpy())
147
149
  preds = np.concatenate(preds)
148
150
  i_window_in_trials = np.concatenate(i_window_in_trials)
@@ -71,6 +71,7 @@ from .util import (
71
71
  models_mandatory_parameters,
72
72
  positions_from_chs_info,
73
73
  )
74
+ from .zuna import ZUNA
74
75
 
75
76
  # Call this last in order to make sure the dataset list is populated with
76
77
  # the models imported in this file.
@@ -145,6 +146,7 @@ __all__ = [
145
146
  "TIDNet",
146
147
  "TSception",
147
148
  "USleep",
149
+ "ZUNA",
148
150
  "build_model_config",
149
151
  "_init_models_dict",
150
152
  "models_mandatory_parameters",
@@ -1,3 +1,7 @@
1
+ # Authors: Sarthak Tayal <sarthaktayal2@gmail.com>
2
+ #
3
+ # License: BSD-3
4
+
1
5
  from __future__ import annotations
2
6
 
3
7
  from typing import Optional
@@ -61,15 +65,18 @@ class FBLightConvNet(EEGModuleMixin, nn.Module):
61
65
 
62
66
  Parameters
63
67
  ----------
64
- n_bands : int or None or list of tuple of int, default=8
68
+ n_bands : int or None or list of tuple of int, default=9
65
69
  Number of frequency bands or a list of frequency band tuples. If a list of tuples is provided,
66
70
  each tuple defines the lower and upper bounds of a frequency band.
67
71
  n_filters_spat : int, default=32
68
72
  Number of spatial filters in the depthwise convolutional layer.
69
73
  n_dim : int, default=3
70
74
  Number of dimensions for the temporal reduction layer.
71
- stride_factor : int, default=4
72
- Stride factor used for reshaping the temporal dimension.
75
+ win_len : int, default=250
76
+ Length in samples of the non-overlapping temporal windows the signal is
77
+ split into before the variance based feature extraction. The number of
78
+ windows passed to the attention module is ``n_times // win_len``, so
79
+ ``n_times`` has to be at least ``win_len``.
73
80
  activation : nn.Module, default=nn.ELU
74
81
  Activation function class to apply after convolutional layers.
75
82
  verbose : bool, default=False
@@ -82,6 +89,9 @@ class FBLightConvNet(EEGModuleMixin, nn.Module):
82
89
  If True, applies softmax to the attention weights.
83
90
  bias : bool, default=False
84
91
  If True, includes a bias term in the convolutional layers.
92
+ stride_factor : int or None, default=None
93
+ Deprecated and ignored, it will be removed in a future release. The
94
+ temporal segmentation of this model is controlled by ``win_len``.
85
95
 
86
96
  References
87
97
  ----------
@@ -106,7 +116,7 @@ class FBLightConvNet(EEGModuleMixin, nn.Module):
106
116
  n_bands=9,
107
117
  n_filters_spat: int = 32,
108
118
  n_dim: int = 3,
109
- stride_factor: int = 4,
119
+ stride_factor: Optional[int] = None,
110
120
  win_len: int = 250,
111
121
  heads: int = 8,
112
122
  weight_softmax: bool = True,
@@ -125,6 +135,14 @@ class FBLightConvNet(EEGModuleMixin, nn.Module):
125
135
  )
126
136
  del n_outputs, n_chans, chs_info, n_times, input_window_seconds, sfreq
127
137
 
138
+ if stride_factor is not None:
139
+ warn(
140
+ "The parameter `stride_factor` is deprecated and ignored, it "
141
+ "will be removed in a future release. The temporal "
142
+ "segmentation of FBLightConvNet is set by `win_len`.",
143
+ DeprecationWarning,
144
+ )
145
+
128
146
  # Parameters
129
147
  self.n_bands = n_bands
130
148
  self.n_filters_spat = n_filters_spat
@@ -138,6 +156,13 @@ class FBLightConvNet(EEGModuleMixin, nn.Module):
138
156
  self.filter_parameters = filter_parameters or {}
139
157
 
140
158
  # Checkers
159
+ if self.n_times < self.win_len:
160
+ raise ValueError(
161
+ f"Time dimension ({self.n_times}) is shorter than win_len "
162
+ f"({self.win_len}), so the model cannot build a single "
163
+ f"temporal window. Pass a longer input or lower `win_len`."
164
+ )
165
+
141
166
  self.n_times_truncated = self.n_times
142
167
  if self.n_times % self.win_len != 0:
143
168
  warn(
@@ -194,10 +219,12 @@ class FBLightConvNet(EEGModuleMixin, nn.Module):
194
219
  def forward(self, x: torch.Tensor) -> torch.Tensor:
195
220
  """
196
221
  Forward pass of the FBLightConvNet model.
222
+
197
223
  Parameters
198
224
  ----------
199
225
  x : torch.Tensor
200
226
  Input tensor with shape (batch_size, n_chans, n_times).
227
+
201
228
  Returns
202
229
  -------
203
230
  torch.Tensor
@@ -61,3 +61,4 @@ EEGDINO,General,Classification,200,"n_chans, n_outputs, n_times",4539698,"EEGDIN
61
61
  DANCE,General,Event Detection,200,"n_chans, n_outputs, n_times, sfreq, chs_info",29813542,"DANCE(n_chans=19, n_outputs=4, n_times=6400, sfreq=200, input_window_seconds=32.0, chs_info=[{'ch_name': f'E{i+1}', 'kind': 'eeg', 'loc': numpy.random.default_rng(2024).random(12)} for i in range(19)])","Convolution,Attention/Transformer,Channel",EEG
62
62
  STEEGFormer,General,Classification,250,"n_chans, n_outputs, n_times",25305604,"STEEGFormer(n_chans=22, n_outputs=4, n_times=1000)","Attention/Transformer,Foundation Model",EEG
63
63
  MVPFormer,General,"Prediction, Embedding",512,"n_chans, n_outputs, n_times, sfreq",3356978,"MVPFormer(n_chans=22, n_outputs=4, n_times=2000, sfreq=100)","Foundation Model,Attention/Transformer",EEG
64
+ ZUNA,General,"Classification,Embedding",256,"chs_info, n_outputs, n_times",172104100,"ZUNA(chs_info=<user>, n_outputs=4, n_times=1280)","Foundation Model,Channel,Attention/Transformer",EEG
@@ -503,6 +503,15 @@ models_mandatory_parameters: list[
503
503
  ],
504
504
  },
505
505
  ),
506
+ (
507
+ "ZUNA",
508
+ ["chs_info", "n_outputs", "n_times"],
509
+ {
510
+ "n_times": 1280,
511
+ "sfreq": 256.0,
512
+ "input_window_seconds": 5.0,
513
+ },
514
+ ),
506
515
  ]
507
516
 
508
517
  ################################################################