Braindecode 1.8.1.dev172484635__tar.gz → 1.8.1.dev172496780__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 (194) hide show
  1. {braindecode-1.8.1.dev172484635/braindecode.egg-info → braindecode-1.8.1.dev172496780}/PKG-INFO +1 -1
  2. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/deep4.py +15 -8
  3. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegpt.py +14 -2
  4. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/shallow_fbcsp.py +15 -8
  5. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/convolution.py +10 -9
  6. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/layers.py +4 -2
  7. braindecode-1.8.1.dev172496780/braindecode/version.py +1 -0
  8. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780/braindecode.egg-info}/PKG-INFO +1 -1
  9. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/whats_new.rst +26 -0
  10. braindecode-1.8.1.dev172484635/braindecode/version.py +0 -1
  11. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/LICENSE.txt +0 -0
  12. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/MANIFEST.in +0 -0
  13. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/NOTICE.txt +0 -0
  14. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/README.rst +0 -0
  15. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/__init__.py +0 -0
  16. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/augmentation/__init__.py +0 -0
  17. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/augmentation/base.py +0 -0
  18. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/augmentation/functional.py +0 -0
  19. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/augmentation/transforms.py +0 -0
  20. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/classifier.py +0 -0
  21. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/__init__.py +0 -0
  22. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/_notebook_viewer.py +0 -0
  23. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/base.py +0 -0
  24. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bbci.py +0 -0
  25. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bcicomp.py +0 -0
  26. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/__init__.py +0 -0
  27. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/datasets.py +0 -0
  28. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/format.py +0 -0
  29. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/hub.py +0 -0
  30. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/hub_format.py +0 -0
  31. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/hub_io.py +0 -0
  32. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/hub_validation.py +0 -0
  33. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/bids/iterable.py +0 -0
  34. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/chb_mit.py +0 -0
  35. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/collate.py +0 -0
  36. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/mne.py +0 -0
  37. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/moabb.py +0 -0
  38. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/nmt.py +0 -0
  39. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/registry.py +0 -0
  40. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/siena.py +0 -0
  41. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
  42. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/sleep_physionet.py +0 -0
  43. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/tuh.py +0 -0
  44. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/utils.py +0 -0
  45. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datasets/xy.py +0 -0
  46. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datautil/__init__.py +0 -0
  47. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datautil/channel_utils.py +0 -0
  48. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datautil/hub_formats.py +0 -0
  49. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datautil/serialization.py +0 -0
  50. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/datautil/util.py +0 -0
  51. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/eegneuralnet.py +0 -0
  52. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/functional/__init__.py +0 -0
  53. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/functional/_real_dft.py +0 -0
  54. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/functional/functions.py +0 -0
  55. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/functional/initialization.py +0 -0
  56. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/__init__.py +0 -0
  57. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/atcnet.py +0 -0
  58. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/attentionbasenet.py +0 -0
  59. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/attn_sleep.py +0 -0
  60. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/barista.py +0 -0
  61. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/base.py +0 -0
  62. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/bendr.py +0 -0
  63. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/biot.py +0 -0
  64. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/brainbert.py +0 -0
  65. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/brainmodule.py +0 -0
  66. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/brant.py +0 -0
  67. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/cbramod.py +0 -0
  68. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/codebrain.py +0 -0
  69. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/config.py +0 -0
  70. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/contrawr.py +0 -0
  71. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/ctnet.py +0 -0
  72. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/dance.py +0 -0
  73. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/deepsleepnet.py +0 -0
  74. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/dgcnn.py +0 -0
  75. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/diver1.py +0 -0
  76. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegconformer.py +0 -0
  77. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegdino.py +0 -0
  78. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eeginception_erp.py +0 -0
  79. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eeginception_mi.py +0 -0
  80. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegitnet.py +0 -0
  81. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegminer.py +0 -0
  82. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegnet.py +0 -0
  83. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegnex.py +0 -0
  84. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegsimpleconv.py +0 -0
  85. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegsym.py +0 -0
  86. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/eegtcnet.py +0 -0
  87. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/emg2qwerty.py +0 -0
  88. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/fbcnet.py +0 -0
  89. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/fblightconvnet.py +0 -0
  90. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/fbmsnet.py +0 -0
  91. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/hybrid.py +0 -0
  92. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/ifnet.py +0 -0
  93. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/interpolated.py +0 -0
  94. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/labram.py +0 -0
  95. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/luna.py +0 -0
  96. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/medformer.py +0 -0
  97. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/meta_neuromotor.py +0 -0
  98. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/mirepnet.py +0 -0
  99. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/mscformer.py +0 -0
  100. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/msvtnet.py +0 -0
  101. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/mvpformer.py +0 -0
  102. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/neuropose.py +0 -0
  103. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/patchedtransformer.py +0 -0
  104. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/popt.py +0 -0
  105. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/reve.py +0 -0
  106. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/sccnet.py +0 -0
  107. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/sensingdynamics.py +0 -0
  108. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/signal_jepa.py +0 -0
  109. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/sinc_shallow.py +0 -0
  110. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
  111. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
  112. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/sparcnet.py +0 -0
  113. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/sstdpn.py +0 -0
  114. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/steegformer.py +0 -0
  115. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/summary.csv +0 -0
  116. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/syncnet.py +0 -0
  117. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/tcformer.py +0 -0
  118. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/tcn.py +0 -0
  119. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/tidnet.py +0 -0
  120. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/tsinception.py +0 -0
  121. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/usleep.py +0 -0
  122. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/util.py +0 -0
  123. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/vemg2pose.py +0 -0
  124. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/models/zuna.py +0 -0
  125. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/__init__.py +0 -0
  126. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/activation.py +0 -0
  127. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/attention.py +0 -0
  128. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/blocks.py +0 -0
  129. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/dance_modules.py +0 -0
  130. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/filter.py +0 -0
  131. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/interpolation.py +0 -0
  132. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/linear.py +0 -0
  133. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/parametrization.py +0 -0
  134. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/popt_modules.py +0 -0
  135. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/stats.py +0 -0
  136. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/util.py +0 -0
  137. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/modules/wrapper.py +0 -0
  138. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/preprocessing/__init__.py +0 -0
  139. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
  140. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/preprocessing/mne_preprocess.py +0 -0
  141. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/preprocessing/preprocess.py +0 -0
  142. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/preprocessing/util.py +0 -0
  143. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/preprocessing/windowers.py +0 -0
  144. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/regressor.py +0 -0
  145. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/samplers/__init__.py +0 -0
  146. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/samplers/base.py +0 -0
  147. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/samplers/ssl.py +0 -0
  148. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/training/__init__.py +0 -0
  149. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/training/callbacks.py +0 -0
  150. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/training/losses.py +0 -0
  151. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/training/scoring.py +0 -0
  152. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/util.py +0 -0
  153. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/__init__.py +0 -0
  154. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/activations.py +0 -0
  155. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/attribution.py +0 -0
  156. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/confusion_matrices.py +0 -0
  157. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/frequency.py +0 -0
  158. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/metrics.py +0 -0
  159. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/sanity.py +0 -0
  160. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode/visualization/topology.py +0 -0
  161. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode.egg-info/SOURCES.txt +0 -0
  162. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode.egg-info/dependency_links.txt +0 -0
  163. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode.egg-info/requires.txt +0 -0
  164. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/braindecode.egg-info/top_level.txt +0 -0
  165. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/Makefile +0 -0
  166. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/_templates/autosummary/class.rst +0 -0
  167. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
  168. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/_templates/autosummary/function.rst +0 -0
  169. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
  170. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/agent_docs.rst +0 -0
  171. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/api.rst +0 -0
  172. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/cite.rst +0 -0
  173. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/conf.py +0 -0
  174. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/help.rst +0 -0
  175. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/index.rst +0 -0
  176. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/install/install.rst +0 -0
  177. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/install/install_pip.rst +0 -0
  178. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/install/install_source.rst +0 -0
  179. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/attention.rst +0 -0
  180. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/channel.rst +0 -0
  181. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/convolution.rst +0 -0
  182. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/filterbank.rst +0 -0
  183. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/gnn.rst +0 -0
  184. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/interpretable.rst +0 -0
  185. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/lbm.rst +0 -0
  186. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/recurrent.rst +0 -0
  187. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/categorization/spd.rst +0 -0
  188. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/models.rst +0 -0
  189. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/models_categorization.rst +0 -0
  190. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/models_table.rst +0 -0
  191. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/models/models_visualization.rst +0 -0
  192. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/docs/sg_execution_times.rst +0 -0
  193. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/pyproject.toml +0 -0
  194. {braindecode-1.8.1.dev172484635 → braindecode-1.8.1.dev172496780}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.8.1.dev172484635
3
+ Version: 1.8.1.dev172496780
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>
@@ -186,13 +186,18 @@ class Deep4Net(EEGModuleMixin, nn.Sequential):
186
186
  # When padronize all layers,
187
187
  # add the old's parameters here
188
188
  self.mapping = {
189
- "conv_time.weight": "conv_time_spat.conv_time.weight",
190
- "conv_spat.weight": "conv_time_spat.conv_spat.weight",
191
- "conv_time.bias": "conv_time_spat.conv_time.bias",
192
- "conv_spat.bias": "conv_time_spat.conv_spat.bias",
193
189
  "conv_classifier.weight": "final_layer.conv_classifier.weight",
194
190
  "conv_classifier.bias": "final_layer.conv_classifier.bias",
195
191
  }
192
+ if self.split_first_layer:
193
+ self.mapping.update(
194
+ {
195
+ "conv_time.weight": "conv_time_spat.conv_time.weight",
196
+ "conv_spat.weight": "conv_time_spat.conv_spat.weight",
197
+ "conv_time.bias": "conv_time_spat.conv_time.bias",
198
+ "conv_spat.bias": "conv_time_spat.conv_spat.bias",
199
+ }
200
+ )
196
201
 
197
202
  if self.stride_before_pool:
198
203
  conv_stride = self.pool_time_stride
@@ -319,14 +324,16 @@ class Deep4Net(EEGModuleMixin, nn.Sequential):
319
324
 
320
325
  # Initialization, xavier is same as in our paper...
321
326
  # was default from lasagne
322
- init.xavier_uniform_(self.conv_time_spat.conv_time.weight, gain=1)
323
- # maybe no bias in case of no split layer and batch norm
324
- if self.split_first_layer or (not self.batch_norm):
325
- init.constant_(self.conv_time_spat.conv_time.bias, 0)
326
327
  if self.split_first_layer:
328
+ init.xavier_uniform_(self.conv_time_spat.conv_time.weight, gain=1)
329
+ init.constant_(self.conv_time_spat.conv_time.bias, 0)
327
330
  init.xavier_uniform_(self.conv_time_spat.conv_spat.weight, gain=1)
328
331
  if not self.batch_norm:
329
332
  init.constant_(self.conv_time_spat.conv_spat.bias, 0)
333
+ else:
334
+ init.xavier_uniform_(self.conv_time.weight, gain=1)
335
+ if not self.batch_norm:
336
+ init.constant_(self.conv_time.bias, 0)
330
337
  if self.batch_norm:
331
338
  init.constant_(self.bnorm.weight, 1)
332
339
  init.constant_(self.bnorm.bias, 0)
@@ -88,7 +88,8 @@ class EEGPT(EEGModuleMixin, nn.Module):
88
88
  - *Role.* Maps raw spatio-temporal EEG patches into a sequence of latent tokens :math:`z`.
89
89
  - `EEGPT.chans_id` **(Channel Identification)**
90
90
  - *Operations.* A buffer containing channel indices mapped from the standard channel names provided
91
- in ``chs_info`` [eegpt]_.
91
+ in ``chs_info`` [eegpt]_. It is rebuilt from the montage at construction and not stored in
92
+ checkpoints, so pretrained weights load on any montage.
92
93
  - *Role.* Provides the spatial identity for each input channel, allowing the model to look up
93
94
  the correct channel embedding vector :math:`\varsigma_i`.
94
95
  - **Local Spatio-Temporal Embedding** (Input Processing)
@@ -338,8 +339,12 @@ class EEGPT(EEGModuleMixin, nn.Module):
338
339
  else:
339
340
  self.channel_names = None # type: ignore
340
341
 
342
+ # Derived from the montage above, so it is not saved in the state dict:
343
+ # loading a checkpoint must not replace the IDs of this model's channels.
341
344
  self.register_buffer(
342
- "chans_id", self.target_encoder.prepare_chan_ids(self.channel_names)
345
+ "chans_id",
346
+ self.target_encoder.prepare_chan_ids(self.channel_names),
347
+ persistent=False,
343
348
  )
344
349
 
345
350
  self.flattened_encoder_output_dim = (
@@ -391,6 +396,13 @@ class EEGPT(EEGModuleMixin, nn.Module):
391
396
  "embed_dim": self.embed_dim,
392
397
  }
393
398
 
399
+ def _load_from_state_dict(self, state_dict, prefix, *args, **kwargs):
400
+ # Checkpoints saved before ``chans_id`` became non-persistent (including
401
+ # the released EEGPT weights) still carry it. Drop it, so the IDs keep
402
+ # matching this model's montage and a different montage can load.
403
+ state_dict.pop(prefix + "chans_id", None)
404
+ super()._load_from_state_dict(state_dict, prefix, *args, **kwargs)
405
+
394
406
  def forward(self, x, return_features=False):
395
407
  """
396
408
  Forward pass.
@@ -124,13 +124,18 @@ class ShallowFBCSPNet(EEGModuleMixin, nn.Sequential):
124
124
  self.drop_prob = drop_prob
125
125
 
126
126
  self.mapping = {
127
- "conv_time.weight": "conv_time_spat.conv_time.weight",
128
- "conv_spat.weight": "conv_time_spat.conv_spat.weight",
129
- "conv_time.bias": "conv_time_spat.conv_time.bias",
130
- "conv_spat.bias": "conv_time_spat.conv_spat.bias",
131
127
  "conv_classifier.weight": "final_layer.conv_classifier.weight",
132
128
  "conv_classifier.bias": "final_layer.conv_classifier.bias",
133
129
  }
130
+ if self.split_first_layer:
131
+ self.mapping.update(
132
+ {
133
+ "conv_time.weight": "conv_time_spat.conv_time.weight",
134
+ "conv_spat.weight": "conv_time_spat.conv_spat.weight",
135
+ "conv_time.bias": "conv_time_spat.conv_time.bias",
136
+ "conv_spat.bias": "conv_time_spat.conv_spat.bias",
137
+ }
138
+ )
134
139
 
135
140
  self.add_module("ensuredims", Ensure4d())
136
141
  pool_class = dict(max=nn.MaxPool2d, mean=nn.AvgPool2d)[self.pool_mode]
@@ -203,14 +208,16 @@ class ShallowFBCSPNet(EEGModuleMixin, nn.Sequential):
203
208
  self.add_module("final_layer", module)
204
209
 
205
210
  # Initialization, xavier is same as in paper...
206
- init.xavier_uniform_(self.conv_time_spat.conv_time.weight, gain=1)
207
- # maybe no bias in case of no split layer and batch norm
208
- if self.split_first_layer or (not self.batch_norm):
209
- init.constant_(self.conv_time_spat.conv_time.bias, 0)
210
211
  if self.split_first_layer:
212
+ init.xavier_uniform_(self.conv_time_spat.conv_time.weight, gain=1)
213
+ init.constant_(self.conv_time_spat.conv_time.bias, 0)
211
214
  init.xavier_uniform_(self.conv_time_spat.conv_spat.weight, gain=1)
212
215
  if not self.batch_norm:
213
216
  init.constant_(self.conv_time_spat.conv_spat.bias, 0)
217
+ else:
218
+ init.xavier_uniform_(self.conv_time.weight, gain=1)
219
+ if not self.batch_norm:
220
+ init.constant_(self.conv_time.bias, 0)
214
221
  if self.batch_norm:
215
222
  init.constant_(self.bnorm.weight, 1)
216
223
  init.constant_(self.bnorm.bias, 0)
@@ -48,6 +48,14 @@ class AvgPool2dWithConv(nn.Module):
48
48
  # that initializes parameters or something
49
49
  self._pool_weights = None
50
50
 
51
+ def _pool_weights_match_input(self, x, weight_shape):
52
+ return (
53
+ self._pool_weights is not None
54
+ and tuple(self._pool_weights.size()) == tuple(weight_shape)
55
+ and self._pool_weights.device == x.device
56
+ and self._pool_weights.dtype == x.dtype
57
+ )
58
+
51
59
  def forward(self, x):
52
60
  # Create weights for the convolution on demand:
53
61
  # size or type of x changed...
@@ -58,17 +66,10 @@ class AvgPool2dWithConv(nn.Module):
58
66
  self.kernel_size[0],
59
67
  self.kernel_size[1],
60
68
  )
61
- if self._pool_weights is None or (
62
- (tuple(self._pool_weights.size()) != tuple(weight_shape))
63
- or (self._pool_weights.is_cuda != x.is_cuda)
64
- or (self._pool_weights.data.type() != x.data.type())
65
- ):
69
+ if not self._pool_weights_match_input(x, weight_shape):
66
70
  n_pool = np.prod(self.kernel_size)
67
71
  weights = np_to_th(np.ones(weight_shape, dtype=np.float32) / float(n_pool))
68
- weights = weights.type_as(x)
69
- if x.is_cuda:
70
- weights = weights.cuda()
71
- self._pool_weights = weights
72
+ self._pool_weights = weights.to(device=x.device, dtype=x.dtype)
72
73
 
73
74
  pooled = F.conv2d(
74
75
  x,
@@ -62,6 +62,8 @@ class Chomp1d(nn.Module):
62
62
  return "chomp_size={}".format(self.chomp_size)
63
63
 
64
64
  def forward(self, x):
65
+ if self.chomp_size == 0:
66
+ return x.contiguous()
65
67
  return x[:, :, : -self.chomp_size].contiguous()
66
68
 
67
69
 
@@ -110,8 +112,8 @@ class TimeDistributed(nn.Module):
110
112
  Shape (batch_size, seq_len, output_size).
111
113
  """
112
114
  b, s, c, t = x.shape
113
- out = self.module(x.view(b * s, c, t))
114
- return out.view(b, s, -1)
115
+ out = self.module(x.reshape(b * s, c, t))
116
+ return out.reshape(b, s, -1)
115
117
 
116
118
 
117
119
  class DropPath(nn.Module):
@@ -0,0 +1 @@
1
+ __version__ = "1.8.1.dev172496780"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.8.1.dev172484635
3
+ Version: 1.8.1.dev172496780
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>
@@ -28,6 +28,10 @@ Current 1.8.1 (2026-08-31)
28
28
  Enhancements
29
29
  ============
30
30
 
31
+ - Add registry-wide model contract tests that automatically cover every registered
32
+ model, checking eval-mode input/state purity, finite batched outputs,
33
+ batch-permutation equivariance, and ``get_config`` + ``state_dict``
34
+ reconstruction (:gh:`1208` by `lindicaphxag-tech`_).
31
35
  - Generate a version-scoped ``llms.txt`` and selected Markdown documentation
32
36
  entry points with source-commit attribution and critical-page coverage checks.
33
37
 
@@ -130,6 +134,22 @@ Requirements
130
134
  Bug fixes
131
135
  ==========
132
136
 
137
+ - Fix :class:`braindecode.modules.AvgPool2dWithConv` to invalidate cached pooling weights when the exact input device changes, preventing stale weights from being reused across CUDA devices or non-CUDA backends with the same dtype. By `lindicaphxag-tech`_.
138
+ - Fix :class:`braindecode.models.ShallowFBCSPNet` with
139
+ ``split_first_layer=False``, which attempted to initialize and remap
140
+ checkpoint keys through the split-only ``conv_time_spat`` module after the
141
+ CombinedConv refactor. The unsplit path now initializes and loads its direct
142
+ temporal convolution as before (:gh:`1212` by `lindicaphxag-tech`_).
143
+
144
+ - Fix :class:`braindecode.models.Deep4Net` with
145
+ ``split_first_layer=False``, which attempted to initialize and remap
146
+ checkpoint keys through the split-only ``conv_time_spat`` module after the
147
+ CombinedConv refactor. The unsplit path now initializes and loads its direct
148
+ temporal convolution as before (:gh:`1207` by `lindicaphxag-tech`_).
149
+ - Make :class:`braindecode.modules.TimeDistributed` accept non-contiguous sequence batches by reshaping rather than requiring view-compatible strides. By `lindicaphxag-tech`_.
150
+
151
+ - Make :class:`braindecode.modules.Chomp1d` preserve the input when ``chomp_size=0`` instead of returning an empty time axis. This restores :class:`braindecode.models.TCN` with ``kernel_size=1``, whose causal padding is zero. By `lindicaphxag-tech`_.
152
+
133
153
  - Preserve ``Deep4Net``'s first-block temporal stride when using the merged
134
154
  ``CombinedConv`` path with ``stride_before_pool=True``; dense-prediction
135
155
  outputs now retain the historical temporal geometry (:gh:`1205` by `lindicaphxag-tech`_).
@@ -261,6 +281,12 @@ Bug fixes
261
281
  intermediate gradients, and rows at or below ``max_norm`` are unchanged.
262
282
  Empty tensors pass through and a negative ``max_norm`` raises, as
263
283
  ``Tensor.renorm`` does (:gh:`1187` by `Bruno Aristimunha`_).
284
+ - Keep the channel IDs of :class:`braindecode.models.EEGPT` (``chans_id``) out
285
+ of the state dict. They are rebuilt from ``chs_info``, and a checkpoint that
286
+ still stores them no longer overrides them: the released weights now load on
287
+ any montage and with the default channel projection, where they failed with a
288
+ size mismatch, and a montage with the same channel count no longer silently
289
+ takes the checkpoint's IDs (:gh:`1195` by `Bruno Aristimunha`_).
264
290
 
265
291
  - Fix :class:`braindecode.models.Labram` so the released weights keep their
266
292
  pretrained time embedding at every window length: it now holds the original
@@ -1 +0,0 @@
1
- __version__ = "1.8.1.dev172484635"