braindecode 1.7.0.dev174022531__tar.gz → 1.7.0.dev176045030__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 (176) hide show
  1. {braindecode-1.7.0.dev174022531/braindecode.egg-info → braindecode-1.7.0.dev176045030}/PKG-INFO +1 -1
  2. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/classifier.py +7 -7
  3. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/eegneuralnet.py +4 -7
  4. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/__init__.py +2 -0
  5. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/config.py +5 -5
  6. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/reve.py +32 -33
  7. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/util.py +45 -1
  8. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/regressor.py +7 -7
  9. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/training/scoring.py +7 -5
  10. braindecode-1.7.0.dev176045030/braindecode/version.py +1 -0
  11. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030/braindecode.egg-info}/PKG-INFO +1 -1
  12. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/index.rst +6 -6
  13. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/models.rst +2 -2
  14. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/models_table.rst +9 -0
  15. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/whats_new.rst +18 -3
  16. braindecode-1.7.0.dev174022531/braindecode/version.py +0 -1
  17. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/LICENSE.txt +0 -0
  18. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/MANIFEST.in +0 -0
  19. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/NOTICE.txt +0 -0
  20. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/README.rst +0 -0
  21. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/__init__.py +0 -0
  22. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/augmentation/__init__.py +0 -0
  23. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/augmentation/base.py +0 -0
  24. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/augmentation/functional.py +0 -0
  25. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/augmentation/transforms.py +0 -0
  26. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/__init__.py +0 -0
  27. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/base.py +0 -0
  28. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bbci.py +0 -0
  29. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bcicomp.py +0 -0
  30. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/__init__.py +0 -0
  31. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/datasets.py +0 -0
  32. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/format.py +0 -0
  33. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/hub.py +0 -0
  34. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/hub_format.py +0 -0
  35. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/hub_io.py +0 -0
  36. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/hub_validation.py +0 -0
  37. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/bids/iterable.py +0 -0
  38. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/chb_mit.py +0 -0
  39. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/collate.py +0 -0
  40. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/mne.py +0 -0
  41. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/moabb.py +0 -0
  42. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/nmt.py +0 -0
  43. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/registry.py +0 -0
  44. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/siena.py +0 -0
  45. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/sleep_physio_challe_18.py +0 -0
  46. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/sleep_physionet.py +0 -0
  47. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/tuh.py +0 -0
  48. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/utils.py +0 -0
  49. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datasets/xy.py +0 -0
  50. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datautil/__init__.py +0 -0
  51. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datautil/channel_utils.py +0 -0
  52. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datautil/hub_formats.py +0 -0
  53. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datautil/serialization.py +0 -0
  54. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/datautil/util.py +0 -0
  55. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/functional/__init__.py +0 -0
  56. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/functional/functions.py +0 -0
  57. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/functional/initialization.py +0 -0
  58. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/atcnet.py +0 -0
  59. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/attentionbasenet.py +0 -0
  60. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/attn_sleep.py +0 -0
  61. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/base.py +0 -0
  62. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/bendr.py +0 -0
  63. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/biot.py +0 -0
  64. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/brainmodule.py +0 -0
  65. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/cbramod.py +0 -0
  66. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/codebrain.py +0 -0
  67. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/contrawr.py +0 -0
  68. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/ctnet.py +0 -0
  69. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/deep4.py +0 -0
  70. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/deepsleepnet.py +0 -0
  71. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/dgcnn.py +0 -0
  72. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegconformer.py +0 -0
  73. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegdino.py +0 -0
  74. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eeginception_erp.py +0 -0
  75. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eeginception_mi.py +0 -0
  76. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegitnet.py +0 -0
  77. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegminer.py +0 -0
  78. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegnet.py +0 -0
  79. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegnex.py +0 -0
  80. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegpt.py +0 -0
  81. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegsimpleconv.py +0 -0
  82. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegsym.py +0 -0
  83. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/eegtcnet.py +0 -0
  84. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/emg2qwerty.py +0 -0
  85. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/fbcnet.py +0 -0
  86. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/fblightconvnet.py +0 -0
  87. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/fbmsnet.py +0 -0
  88. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/hybrid.py +0 -0
  89. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/ifnet.py +0 -0
  90. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/interpolated.py +0 -0
  91. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/labram.py +0 -0
  92. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/luna.py +0 -0
  93. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/medformer.py +0 -0
  94. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/meta_neuromotor.py +0 -0
  95. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/msvtnet.py +0 -0
  96. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/mvpformer.py +0 -0
  97. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/patchedtransformer.py +0 -0
  98. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/sccnet.py +0 -0
  99. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/shallow_fbcsp.py +0 -0
  100. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/signal_jepa.py +0 -0
  101. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/sinc_shallow.py +0 -0
  102. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/sleep_stager_blanco_2020.py +0 -0
  103. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/sleep_stager_chambon_2018.py +0 -0
  104. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/sparcnet.py +0 -0
  105. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/sstdpn.py +0 -0
  106. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/steegformer.py +0 -0
  107. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/summary.csv +0 -0
  108. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/syncnet.py +0 -0
  109. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/tcformer.py +0 -0
  110. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/tcn.py +0 -0
  111. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/tidnet.py +0 -0
  112. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/tsinception.py +0 -0
  113. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/models/usleep.py +0 -0
  114. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/__init__.py +0 -0
  115. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/activation.py +0 -0
  116. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/attention.py +0 -0
  117. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/blocks.py +0 -0
  118. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/convolution.py +0 -0
  119. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/filter.py +0 -0
  120. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/interpolation.py +0 -0
  121. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/layers.py +0 -0
  122. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/linear.py +0 -0
  123. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/parametrization.py +0 -0
  124. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/stats.py +0 -0
  125. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/util.py +0 -0
  126. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/modules/wrapper.py +0 -0
  127. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/preprocessing/__init__.py +0 -0
  128. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/preprocessing/eegprep_preprocess.py +0 -0
  129. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/preprocessing/mne_preprocess.py +0 -0
  130. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/preprocessing/preprocess.py +0 -0
  131. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/preprocessing/util.py +0 -0
  132. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/preprocessing/windowers.py +0 -0
  133. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/samplers/__init__.py +0 -0
  134. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/samplers/base.py +0 -0
  135. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/samplers/ssl.py +0 -0
  136. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/training/__init__.py +0 -0
  137. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/training/callbacks.py +0 -0
  138. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/training/losses.py +0 -0
  139. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/util.py +0 -0
  140. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/visualization/__init__.py +0 -0
  141. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/visualization/attribution.py +0 -0
  142. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/visualization/confusion_matrices.py +0 -0
  143. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/visualization/frequency.py +0 -0
  144. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/visualization/metrics.py +0 -0
  145. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/visualization/sanity.py +0 -0
  146. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode/visualization/topology.py +0 -0
  147. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode.egg-info/SOURCES.txt +0 -0
  148. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode.egg-info/dependency_links.txt +0 -0
  149. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode.egg-info/requires.txt +0 -0
  150. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/braindecode.egg-info/top_level.txt +0 -0
  151. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/Makefile +0 -0
  152. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/_templates/autosummary/class.rst +0 -0
  153. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/_templates/autosummary/class_in_subdir.rst +0 -0
  154. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/_templates/autosummary/function.rst +0 -0
  155. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/_templates/autosummary/function_in_subdir.rst +0 -0
  156. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/api.rst +0 -0
  157. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/cite.rst +0 -0
  158. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/conf.py +0 -0
  159. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/help.rst +0 -0
  160. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/install/install.rst +0 -0
  161. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/install/install_pip.rst +0 -0
  162. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/install/install_source.rst +0 -0
  163. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/attention.rst +0 -0
  164. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/channel.rst +0 -0
  165. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/convolution.rst +0 -0
  166. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/filterbank.rst +0 -0
  167. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/gnn.rst +0 -0
  168. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/interpretable.rst +0 -0
  169. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/lbm.rst +0 -0
  170. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/recurrent.rst +0 -0
  171. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/categorization/spd.rst +0 -0
  172. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/models_categorization.rst +0 -0
  173. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/models/models_visualization.rst +0 -0
  174. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/docs/sg_execution_times.rst +0 -0
  175. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/pyproject.toml +0 -0
  176. {braindecode-1.7.0.dev174022531 → braindecode-1.7.0.dev176045030}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.7.0.dev174022531
3
+ Version: 1.7.0.dev176045030
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
  # Lukas Gemein <l.gemein@gmail.com>
4
4
  # Bruno Aristimunha <b.aristimunha@gmail.com>
5
5
  # Pierre Guetschel <pierre.guetschel@gmail.com>
6
+ # Sarthak Tayal <sarthaktayal2@gmail.com>
6
7
  #
7
8
  # License: BSD (3-clause)
8
9
 
@@ -195,9 +196,7 @@ class EEGClassifier(_EEGNeuralNet, NeuralNetClassifier):
195
196
  return self.predict_proba(X).argmax(1)
196
197
 
197
198
  def predict_trials(self, X, return_targets=True):
198
- """Create trialwise predictions and optionally also return trialwise.
199
-
200
- labels from cropped dataset.
199
+ """Create trialwise predictions from a cropped dataset.
201
200
 
202
201
  Parameters
203
202
  ----------
@@ -212,10 +211,11 @@ class EEGClassifier(_EEGNeuralNet, NeuralNetClassifier):
212
211
  3-dimensional array (n_trials x n_classes x n_predictions), where
213
212
  the number of predictions depend on the chosen window size and the
214
213
  receptive field of the network.
215
- trial_labels : np.ndarray
216
- 2-dimensional array (n_trials x n_targets) where the number of
217
- targets depends on the decoding paradigm and can be either a single
218
- value, multiple values, or a sequence.
214
+ trial_targets : np.ndarray
215
+ Ground-truth targets from the dataset in a 2-dimensional array
216
+ (n_trials x n_targets). Only returned when ``return_targets=True``.
217
+ The number of targets depends on the decoding paradigm and can be
218
+ either a single value, multiple values, or a sequence.
219
219
  """
220
220
  if not self.cropped:
221
221
  warnings.warn(
@@ -8,7 +8,7 @@ import abc
8
8
  import inspect
9
9
  import logging
10
10
  import warnings
11
- from typing import Literal
11
+ from typing import Any, Literal
12
12
 
13
13
  import mne
14
14
  import numpy as np
@@ -20,7 +20,7 @@ from skorch.utils import noop, to_numpy, train_loss_score, valid_loss_score
20
20
 
21
21
  from braindecode.datautil import infer_signal_properties
22
22
 
23
- from .models.util import models_dict
23
+ from .models.util import _get_model_class
24
24
  from .training.scoring import (
25
25
  CroppedTimeSeriesEpochScoring,
26
26
  CroppedTrialEpochScoring,
@@ -30,13 +30,10 @@ from .training.scoring import (
30
30
  log = logging.getLogger(__name__)
31
31
 
32
32
 
33
- def _get_model(model: str):
33
+ def _get_model(model: Any) -> Any:
34
34
  """Returns the corresponding class in case the model passed is a string."""
35
35
  if isinstance(model, str):
36
- if model in models_dict:
37
- model = models_dict[model]
38
- else:
39
- raise ValueError(f"Unknown model name {model!r}.")
36
+ model = _get_model_class(model)
40
37
  return model
41
38
 
42
39
 
@@ -66,6 +66,7 @@ from .util import (
66
66
  _init_models_dict,
67
67
  build_model_config,
68
68
  extract_channel_locations_from_chs_info,
69
+ interpolated_models_dict,
69
70
  models_mandatory_parameters,
70
71
  positions_from_chs_info,
71
72
  )
@@ -145,4 +146,5 @@ __all__ = [
145
146
  "build_model_config",
146
147
  "_init_models_dict",
147
148
  "models_mandatory_parameters",
149
+ "interpolated_models_dict",
148
150
  ]
@@ -11,7 +11,9 @@ from typing_extensions import TypedDict
11
11
  from braindecode.models.base import EEGModuleMixin
12
12
  from braindecode.models.util import (
13
13
  SigArgName,
14
+ _get_model_class,
14
15
  _init_models_dict,
16
+ interpolated_models_dict,
15
17
  models_dict,
16
18
  models_mandatory_parameters,
17
19
  )
@@ -65,9 +67,7 @@ class BaseBraindecodeModelConfig(pydantic.BaseModel):
65
67
  """Base class for braindecode model pydantic configs."""
66
68
 
67
69
  def create_instance(self) -> EEGModuleMixin:
68
- if self.model_name_ not in models_dict:
69
- _init_models_dict()
70
- model_cls = models_dict[self.model_name_]
70
+ model_cls = _get_model_class(self.model_name_)
71
71
  kwargs = self.model_dump(mode="python", exclude={"model_name_"})
72
72
  if kwargs.get("n_chans") is not None and kwargs.get("chs_info") is not None:
73
73
  kwargs.pop("n_chans")
@@ -208,12 +208,12 @@ def make_model_config(
208
208
  # and define __all__ based on generated classes
209
209
  __all__ = ["make_model_config"]
210
210
 
211
- if not models_dict:
211
+ if not models_dict and not interpolated_models_dict:
212
212
  _init_models_dict()
213
213
 
214
214
  models_configs: list[type[BaseBraindecodeModelConfig]] = []
215
215
  for model_name, req, _ in models_mandatory_parameters:
216
- model_cls = models_dict[model_name]
216
+ model_cls = _get_model_class(model_name)
217
217
  model_cfg = make_model_config(model_cls, req)
218
218
  globals()[model_cfg.__name__] = model_cfg
219
219
  __all__.append(model_cfg.__name__)
@@ -8,13 +8,13 @@ import json
8
8
  import logging
9
9
  import math
10
10
  import os
11
- from pathlib import Path
12
11
  from typing import Optional, Union
13
12
 
14
- import requests
13
+ import pooch
15
14
  import torch
16
15
  import torch.nn.functional as F
17
16
  from einops import rearrange
17
+ from mne.datasets.utils import _get_path
18
18
  from torch import nn
19
19
 
20
20
  # Safe import for older PyTorch versions (Support for Intel-based Macs)
@@ -785,10 +785,13 @@ class FourierEmb4D(nn.Module):
785
785
  class RevePositionBank(torch.nn.Module):
786
786
  """Position bank for REVE model that maps standard EEG channel names to 3D coordinates.
787
787
 
788
- The position bank is cached locally in the library root to avoid repeated downloads.
789
-
790
788
  The coordinates come from the 92 datasets used during REVE pretraining.
791
789
 
790
+ The bank is cached in the MNE data directory after the first download, so it
791
+ works offline afterwards. On restricted nodes (e.g. HPC compute nodes without
792
+ a proxy), drop a prefetched ``reve_positions.json`` in that directory and no
793
+ download is attempted.
794
+
792
795
  Parameters
793
796
  ----------
794
797
  url : str, optional
@@ -796,7 +799,9 @@ class RevePositionBank(torch.nn.Module):
796
799
  timeout : int, optional
797
800
  Timeout in seconds for the HTTP request. Default is 5 seconds.
798
801
  cache_dir : str, optional
799
- Directory to cache the position bank. Default is the models folder within the library.
802
+ Directory to cache the position bank. If ``None``, resolved like other
803
+ braindecode datasets via the ``REVE_POSITIONS_PATH`` config key, falling
804
+ back to the MNE data directory (usually ``~/mne_data``).
800
805
  """
801
806
 
802
807
  def __init__(
@@ -807,38 +812,32 @@ class RevePositionBank(torch.nn.Module):
807
812
  ):
808
813
  super().__init__()
809
814
 
810
- if cache_dir is None:
811
- # Use the model root directory
812
- cache_dir = str(Path(__file__).parent)
813
-
814
- cache_file = os.path.join(cache_dir, ".cache", "reve_positions.json")
815
- os.makedirs(os.path.dirname(cache_file), exist_ok=True)
816
-
817
- config = None
815
+ cache_dir = _get_path(cache_dir, "REVE_POSITIONS_PATH", "REVE positions")
816
+ cache_file = os.path.join(cache_dir, "reve_positions.json")
818
817
 
819
- # Try to load from cache first
820
- if os.path.exists(cache_file):
818
+ # Offline path: reuse the cached/prefetched file. Download only on a miss
819
+ # or if the cached copy is unreadable (e.g. an interrupted download).
820
+ try:
821
+ with open(cache_file) as f:
822
+ config = json.load(f)
823
+ except (OSError, json.JSONDecodeError):
821
824
  try:
822
- with open(cache_file, "r") as f:
825
+ if os.path.exists(cache_file):
826
+ os.remove(cache_file) # corrupt/partial; force a fresh copy
827
+ # pooch ships with mne and writes straight into the cache dir.
828
+ pooch.retrieve(
829
+ url,
830
+ known_hash=None,
831
+ fname="reve_positions.json",
832
+ path=cache_dir,
833
+ downloader=pooch.HTTPDownloader(timeout=timeout),
834
+ )
835
+ with open(cache_file) as f:
823
836
  config = json.load(f)
824
- logger.info(f"Loaded position bank from cache: {cache_file}")
825
- except (json.JSONDecodeError, IOError) as e:
826
- logger.warning(f"Failed to load cache, downloading: {e}")
827
-
828
- # Download if cache miss or failed to load
829
- if config is None:
830
- try:
831
- response = requests.get(url, timeout=timeout)
832
- response.raise_for_status()
833
- config = json.loads(response.text)
834
-
835
- # Save to cache
836
- with open(cache_file, "w") as f:
837
- json.dump(config, f)
838
- logger.info(f"Downloaded and cached position bank to: {cache_file}")
839
- except (requests.RequestException, json.JSONDecodeError) as e:
837
+ except Exception as e:
840
838
  raise RuntimeError(
841
- f"Failed to download or parse the position bank from {url}: {e}"
839
+ f"Failed to download the position bank from {url}. On an "
840
+ f"offline node, prefetch it to {cache_file} first: {e}"
842
841
  ) from e
843
842
 
844
843
  try:
@@ -16,6 +16,12 @@ import torch # noqa: F401 # exposed so TorchScript can resolve ``torch`` throu
16
16
  from torch import nn
17
17
 
18
18
  models_dict = {}
19
+ # Interpolated models are channel-interpolating wrappers around existing
20
+ # braindecode backbones (see :func:`braindecode.models.InterpolatedModel`).
21
+ # They are derivatives of existing models rather than standalone
22
+ # architectures, so they are kept in a separate registry to avoid polluting
23
+ # ``models_dict`` (e.g. for benchmarking that iterates over all "real" models).
24
+ interpolated_models_dict = {}
19
25
 
20
26
  _IMPORT_ADAPTER = pydantic.TypeAdapter(pydantic.ImportString)
21
27
 
@@ -189,7 +195,45 @@ def _init_models_dict():
189
195
  issubclass(m[1], models.base.EEGModuleMixin)
190
196
  and m[1] != models.base.EEGModuleMixin
191
197
  ):
192
- models_dict[m[0]] = m[1]
198
+ # Interpolated models are wrappers around existing backbones
199
+ # (identified by the ``_TARGET_CHS_INFO`` class attribute set by
200
+ # :func:`braindecode.models.InterpolatedModel`). Keep them in a
201
+ # dedicated registry instead of ``models_dict``.
202
+ if getattr(m[1], "_TARGET_CHS_INFO", None) is not None:
203
+ interpolated_models_dict[m[0]] = m[1]
204
+ else:
205
+ models_dict[m[0]] = m[1]
206
+
207
+
208
+ def _get_model_class(model_name: str):
209
+ """Return the model class registered under ``model_name``.
210
+
211
+ Searches both the standard :data:`models_dict` and the
212
+ :data:`interpolated_models_dict` so that interpolated models remain
213
+ resolvable by name (e.g. for skorch wrappers and pydantic configs).
214
+
215
+ Parameters
216
+ ----------
217
+ model_name : str
218
+ Name of the model class to retrieve.
219
+
220
+ Returns
221
+ -------
222
+ type
223
+ The model class registered under ``model_name``.
224
+
225
+ Raises
226
+ ------
227
+ ValueError
228
+ If ``model_name`` is not found in either registry.
229
+ """
230
+ if not models_dict and not interpolated_models_dict:
231
+ _init_models_dict()
232
+ if model_name in models_dict:
233
+ return models_dict[model_name]
234
+ if model_name in interpolated_models_dict:
235
+ return interpolated_models_dict[model_name]
236
+ raise ValueError(f"Unknown model name {model_name!r}.")
193
237
 
194
238
 
195
239
  # Keep in sync with _EEG_PARAMS above.
@@ -3,6 +3,7 @@
3
3
  # Lukas Gemein <l.gemein@gmail.com>
4
4
  # Bruno Aristimunha <b.aristimunha@gmail.com>
5
5
  # Pierre Guetschel <pierre.guetschel@gmail.com>
6
+ # Sarthak Tayal <sarthaktayal2@gmail.com>
6
7
  #
7
8
  # License: BSD (3-clause)
8
9
 
@@ -139,9 +140,7 @@ class EEGRegressor(_EEGNeuralNet, NeuralNetRegressor):
139
140
  return y_pred
140
141
 
141
142
  def predict_trials(self, X, return_targets=True):
142
- """Create trialwise predictions and optionally also return trialwise.
143
-
144
- labels from cropped dataset.
143
+ """Create trialwise predictions from a cropped dataset.
145
144
 
146
145
  Parameters
147
146
  ----------
@@ -156,10 +155,11 @@ class EEGRegressor(_EEGNeuralNet, NeuralNetRegressor):
156
155
  3-dimensional array (n_trials x n_classes x n_predictions), where
157
156
  the number of predictions depend on the chosen window size and the
158
157
  receptive field of the network.
159
- trial_labels : np.ndarray
160
- 2-dimensional array (n_trials x n_targets) where the number of
161
- targets depends on the decoding paradigm and can be either a single
162
- value, multiple values, or a sequence.
158
+ trial_targets : np.ndarray
159
+ Ground-truth targets from the dataset in a 2-dimensional array
160
+ (n_trials x n_targets). Only returned when ``return_targets=True``.
161
+ The number of targets depends on the decoding paradigm and can be
162
+ either a single value, multiple values, or a sequence.
163
163
  """
164
164
  if not self.cropped:
165
165
  warnings.warn(
@@ -3,6 +3,7 @@
3
3
  # Alexandre Gramfort <alexandre.gramfort@inria.fr>
4
4
  # Lukas Gemein <l.gemein@gmail.com>
5
5
  # Mohammed Fattouh <mo.fattouh@gmail.com>
6
+ # Sarthak Tayal <sarthaktayal2@gmail.com>
6
7
  #
7
8
  # License: BSD-3
8
9
 
@@ -401,7 +402,7 @@ class PostEpochTrainScoring(EpochScoring):
401
402
 
402
403
  def predict_trials(module, dataset, return_targets=True, batch_size=1, num_workers=0):
403
404
  """Create trialwise predictions and optionally also return trialwise
404
- labels from cropped dataset given module.
405
+ targets from a cropped dataset given a module.
405
406
 
406
407
  Parameters
407
408
  ----------
@@ -422,10 +423,11 @@ def predict_trials(module, dataset, return_targets=True, batch_size=1, num_worke
422
423
  3-dimensional array (n_trials x n_classes x n_predictions), where
423
424
  the number of predictions depend on the chosen window size and the
424
425
  receptive field of the network.
425
- trial_labels: np.ndarray
426
- 2-dimensional array (n_trials x n_targets) where the number of
427
- targets depends on the decoding paradigm and can be either a single
428
- value, multiple values, or a sequence.
426
+ trial_targets: np.ndarray
427
+ Ground-truth targets from the dataset in a 2-dimensional array
428
+ (n_trials x n_targets). Only returned when ``return_targets=True``.
429
+ The number of targets depends on the decoding paradigm and can be
430
+ either a single value, multiple values, or a sequence.
429
431
  """
430
432
  # Ensure the model is in evaluation mode
431
433
  module.eval()
@@ -0,0 +1 @@
1
+ __version__ = "1.7.0.dev176045030"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: braindecode
3
- Version: 1.7.0.dev174022531
3
+ Version: 1.7.0.dev176045030
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>
@@ -161,7 +161,7 @@
161
161
  <div class="container bd-facts-inner">
162
162
  <span class="bd-facts-label">By the numbers</span>
163
163
  <div class="bd-facts-row">
164
- <a href="models/models.html"><b>65+</b> models</a>
164
+ <a href="models/models_table.html"><b>65+</b> models</a>
165
165
  <a href="api.html#augmentation"><b>20+</b> augmentations</a>
166
166
  <a href="https://moabb.neurotechx.com/" target="_blank" rel="noopener"><b>150+</b> datasets <span style="color:var(--bd-muted)">via MOABB</span></a>
167
167
  <a href="https://eegdash.org/" target="_blank" rel="noopener"><b>700+</b> datasets <span style="color:var(--bd-muted)">via EEGDash</span></a>
@@ -224,7 +224,7 @@
224
224
  <p class="section-sub">Built to <strong>plug into the EEG ecosystem you already use</strong>: every <a href="https://moabb.neurotechx.com/" target="_blank" rel="noopener">MOABB</a> dataset, every <a href="https://mne.tools/" target="_blank" rel="noopener">MNE-Python</a> preprocessing function, every <a href="https://scikit-learn.org/" target="_blank" rel="noopener">scikit-learn</a> training loop, plus 700+ BIDS datasets via <a href="https://eegdash.org/" target="_blank" rel="noopener">EEGDash</a>. One library, no lock-in.</p>
225
225
  </div>
226
226
  <div class="feature-grid">
227
- <a href="models/models.html" class="feature-card">
227
+ <a href="models/models_table.html" class="feature-card">
228
228
  <span class="feature-icon"><svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12c2-4 4-4 6 0s4 4 6 0 4-4 6 0 4 4 2 0"/></svg></span>
229
229
  <h3>Decode raw electrophysiology</h3>
230
230
  <p>End-to-end models go straight from raw EEG/ECoG/MEG to predictions. No hand-crafted features required.</p>
@@ -248,7 +248,7 @@
248
248
  <p>Fully compatible with every <a class="feature-inline-link" href="https://mne.tools/" target="_blank" rel="noopener">MNE</a> preprocessing function and with <a class="feature-inline-link" href="https://eegprep.org/" target="_blank" rel="noopener">EEGPrep</a>, plus exponential standardization and 20+ EEG augmentations.</p>
249
249
  <a href="api.html#augmentation" class="feature-link">Augmentation <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="M5 12h14M13 5l7 7-7 7"/></svg></a>
250
250
  </div>
251
- <a href="models/models.html" class="feature-card">
251
+ <a href="models/models_table.html" class="feature-card">
252
252
  <span class="feature-icon"><svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="2"/><circle cx="6" cy="18" r="2"/><circle cx="18" cy="12" r="2"/><path d="M8 6h2a3 3 0 0 1 3 3v0a3 3 0 0 0 3 3M8 18h2a3 3 0 0 0 3-3v0a3 3 0 0 1 3-3"/></svg></span>
253
253
  <h3>Curated model zoo</h3>
254
254
  <p>EEGNeX, ConvNets, ATCNet, EEGConformer, foundation models. 60+ architectures reproduced from the original papers.</p>
@@ -359,7 +359,7 @@
359
359
  <div class="zoo-grid"><!-- populated by landing.js --></div>
360
360
  <div class="zoo-foot">
361
361
  <span class="zoo-foot-count">Loading…</span>
362
- <a href="models/models.html">Browse the full zoo on the Models page <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="M5 12h14M13 5l7 7-7 7"/></svg></a>
362
+ <a href="models/models_table.html">Browse the full zoo on the Models table <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="M5 12h14M13 5l7 7-7 7"/></svg></a>
363
363
  </div>
364
364
  </div>
365
365
  </section>
@@ -521,7 +521,7 @@
521
521
  <span class="pipeline-col-name">Modeling</span>
522
522
  </div>
523
523
  <div class="pipeline-col-cards">
524
- <a class="pipeline-card" href="models/models.html">
524
+ <a class="pipeline-card" href="models/models_table.html">
525
525
  <span class="pipeline-card-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="2"/><circle cx="6" cy="18" r="2"/><circle cx="18" cy="12" r="2"/><path d="M8 6h2a3 3 0 0 1 3 3v0a3 3 0 0 0 3 3M8 18h2a3 3 0 0 0 3-3v0a3 3 0 0 1 3-3"/></svg></span>
526
526
  <span class="pipeline-card-text">
527
527
  <span class="pipeline-card-name">braindecode.models</span>
@@ -679,7 +679,7 @@
679
679
  <ul>
680
680
  <li><a href="install/install.html">Install</a></li>
681
681
  <li><a href="auto_examples/index.html">Tutorials</a></li>
682
- <li><a href="models/models.html">Models</a></li>
682
+ <li><a href="models/models_table.html">Models</a></li>
683
683
  <li><a href="api.html">API reference</a></li>
684
684
  </ul>
685
685
  </div>
@@ -68,12 +68,12 @@ With this, in this model's sub-pages, we provide:
68
68
  - 4. :doc:`A visualization of the common important information from the models
69
69
  <models_visualization>`.
70
70
 
71
- .. button-ref:: models_categorization
71
+ .. button-ref:: models_table
72
72
  :ref-type: doc
73
73
  :color: primary
74
74
  :expand:
75
75
 
76
- Next: Models categorization
76
+ Browse the models table
77
77
 
78
78
  .. rubric:: References
79
79
 
@@ -191,6 +191,15 @@ Braindecode.
191
191
  // Initial color pass
192
192
  applyTagPalette(document);
193
193
 
194
+ function applyInitialModelFilter() {
195
+ var model = new URLSearchParams(window.location.search).get('model');
196
+ if (!model) return;
197
+ table.search(model).draw();
198
+ $(table.table().container()).find('div.dataTables_filter input').val(model);
199
+ }
200
+
201
+ applyInitialModelFilter();
202
+
194
203
  /* --- Bonus UX: click a column header to open panes focused there ----- */
195
204
  $('.sortable thead th').each(function (i) {
196
205
  if (!FILTER_COLS.includes(i)) return;
@@ -28,12 +28,18 @@ Current 1.7.0 (GitHub)
28
28
  Enhancements
29
29
  ============
30
30
 
31
- - None yet
31
+ - Add :data:`braindecode.models.util.interpolated_models_dict`, a dedicated
32
+ registry for the interpolated (channel-adapting) models, keeping them separate
33
+ from :data:`braindecode.models.util.models_dict` (:gh:`1093` by `Bruno Aristimunha`_)
32
34
 
33
35
  API and behavior changes
34
36
  ========================
35
37
 
36
- - None yet
38
+ - Interpolated models (e.g. ``InterpolatedBIOT``, ``InterpolatedLaBraM``) are no
39
+ longer included in :data:`braindecode.models.util.models_dict`; they now live
40
+ in the separate :data:`braindecode.models.util.interpolated_models_dict`
41
+ registry. They remain fully usable and resolvable by name in the skorch
42
+ wrappers and pydantic configs (:gh:`1093` by `Bruno Aristimunha`_)
37
43
 
38
44
  Requirements
39
45
  ============
@@ -43,7 +49,16 @@ Requirements
43
49
  Bug fixes
44
50
  ==========
45
51
 
46
- - None yet
52
+ - Clarify that :func:`braindecode.training.scoring.predict_trials`,
53
+ :meth:`braindecode.EEGClassifier.predict_trials`, and
54
+ :meth:`braindecode.EEGRegressor.predict_trials` return ground-truth dataset
55
+ targets alongside predictions. By `Sarthak Tayal`_.
56
+ - Make the :class:`braindecode.models.REVE` position bank robust on offline /
57
+ limited-network nodes: it is now cached in the writable MNE data directory
58
+ (resolved via the ``REVE_POSITIONS_PATH`` config key, defaulting under
59
+ ``~/mne_data``) instead of the package folder, so a prefetched
60
+ ``reve_positions.json`` there is used without any download (:gh:`1098` by
61
+ `Bruno Aristimunha`_)
47
62
 
48
63
  Code health
49
64
  ============
@@ -1 +0,0 @@
1
- __version__ = "1.7.0.dev174022531"