braindecode 0.8.1__py3-none-any.whl → 1.1.0__py3-none-any.whl

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.

Potentially problematic release.


This version of braindecode might be problematic. Click here for more details.

Files changed (108) hide show
  1. braindecode/__init__.py +1 -2
  2. braindecode/augmentation/__init__.py +39 -19
  3. braindecode/augmentation/base.py +25 -28
  4. braindecode/augmentation/functional.py +237 -100
  5. braindecode/augmentation/transforms.py +325 -158
  6. braindecode/classifier.py +26 -24
  7. braindecode/datasets/__init__.py +28 -10
  8. braindecode/datasets/base.py +220 -134
  9. braindecode/datasets/bbci.py +43 -52
  10. braindecode/datasets/bcicomp.py +47 -32
  11. braindecode/datasets/bids.py +245 -0
  12. braindecode/datasets/mne.py +45 -24
  13. braindecode/datasets/moabb.py +87 -27
  14. braindecode/datasets/nmt.py +311 -0
  15. braindecode/datasets/sleep_physio_challe_18.py +412 -0
  16. braindecode/datasets/sleep_physionet.py +43 -26
  17. braindecode/datasets/tuh.py +324 -140
  18. braindecode/datasets/xy.py +27 -12
  19. braindecode/datautil/__init__.py +37 -18
  20. braindecode/datautil/serialization.py +110 -72
  21. braindecode/eegneuralnet.py +63 -47
  22. braindecode/functional/__init__.py +22 -0
  23. braindecode/functional/functions.py +250 -0
  24. braindecode/functional/initialization.py +47 -0
  25. braindecode/models/__init__.py +84 -14
  26. braindecode/models/atcnet.py +193 -164
  27. braindecode/models/attentionbasenet.py +599 -0
  28. braindecode/models/base.py +86 -102
  29. braindecode/models/biot.py +504 -0
  30. braindecode/models/contrawr.py +317 -0
  31. braindecode/models/ctnet.py +536 -0
  32. braindecode/models/deep4.py +116 -77
  33. braindecode/models/deepsleepnet.py +149 -119
  34. braindecode/models/eegconformer.py +112 -173
  35. braindecode/models/eeginception_erp.py +109 -118
  36. braindecode/models/eeginception_mi.py +161 -97
  37. braindecode/models/eegitnet.py +215 -152
  38. braindecode/models/eegminer.py +254 -0
  39. braindecode/models/eegnet.py +228 -161
  40. braindecode/models/eegnex.py +247 -0
  41. braindecode/models/eegresnet.py +234 -152
  42. braindecode/models/eegsimpleconv.py +199 -0
  43. braindecode/models/eegtcnet.py +335 -0
  44. braindecode/models/fbcnet.py +221 -0
  45. braindecode/models/fblightconvnet.py +313 -0
  46. braindecode/models/fbmsnet.py +324 -0
  47. braindecode/models/hybrid.py +52 -71
  48. braindecode/models/ifnet.py +441 -0
  49. braindecode/models/labram.py +1186 -0
  50. braindecode/models/msvtnet.py +375 -0
  51. braindecode/models/sccnet.py +207 -0
  52. braindecode/models/shallow_fbcsp.py +50 -56
  53. braindecode/models/signal_jepa.py +1011 -0
  54. braindecode/models/sinc_shallow.py +337 -0
  55. braindecode/models/sleep_stager_blanco_2020.py +55 -46
  56. braindecode/models/sleep_stager_chambon_2018.py +54 -53
  57. braindecode/models/sleep_stager_eldele_2021.py +247 -141
  58. braindecode/models/sparcnet.py +424 -0
  59. braindecode/models/summary.csv +41 -0
  60. braindecode/models/syncnet.py +232 -0
  61. braindecode/models/tcn.py +158 -88
  62. braindecode/models/tidnet.py +280 -167
  63. braindecode/models/tsinception.py +283 -0
  64. braindecode/models/usleep.py +190 -177
  65. braindecode/models/util.py +109 -145
  66. braindecode/modules/__init__.py +84 -0
  67. braindecode/modules/activation.py +60 -0
  68. braindecode/modules/attention.py +757 -0
  69. braindecode/modules/blocks.py +108 -0
  70. braindecode/modules/convolution.py +274 -0
  71. braindecode/modules/filter.py +628 -0
  72. braindecode/modules/layers.py +131 -0
  73. braindecode/modules/linear.py +49 -0
  74. braindecode/modules/parametrization.py +38 -0
  75. braindecode/modules/stats.py +77 -0
  76. braindecode/modules/util.py +76 -0
  77. braindecode/modules/wrapper.py +73 -0
  78. braindecode/preprocessing/__init__.py +36 -11
  79. braindecode/preprocessing/mne_preprocess.py +13 -7
  80. braindecode/preprocessing/preprocess.py +139 -75
  81. braindecode/preprocessing/windowers.py +576 -187
  82. braindecode/regressor.py +23 -12
  83. braindecode/samplers/__init__.py +16 -8
  84. braindecode/samplers/base.py +146 -32
  85. braindecode/samplers/ssl.py +162 -17
  86. braindecode/training/__init__.py +18 -10
  87. braindecode/training/callbacks.py +2 -4
  88. braindecode/training/losses.py +3 -8
  89. braindecode/training/scoring.py +76 -68
  90. braindecode/util.py +55 -59
  91. braindecode/version.py +1 -1
  92. braindecode/visualization/__init__.py +2 -3
  93. braindecode/visualization/confusion_matrices.py +117 -73
  94. braindecode/visualization/gradients.py +14 -10
  95. {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info}/METADATA +42 -58
  96. braindecode-1.1.0.dist-info/RECORD +101 -0
  97. {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info}/WHEEL +1 -1
  98. {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info/licenses}/LICENSE.txt +1 -1
  99. braindecode-1.1.0.dist-info/licenses/NOTICE.txt +20 -0
  100. braindecode/datautil/mne.py +0 -9
  101. braindecode/datautil/preprocess.py +0 -12
  102. braindecode/datautil/windowers.py +0 -6
  103. braindecode/datautil/xy.py +0 -9
  104. braindecode/models/eeginception.py +0 -317
  105. braindecode/models/functions.py +0 -47
  106. braindecode/models/modules.py +0 -358
  107. braindecode-0.8.1.dist-info/RECORD +0 -68
  108. {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info}/top_level.txt +0 -0
@@ -1,358 +0,0 @@
1
- # Authors: Robin Schirrmeister <robintibor@gmail.com>
2
- #
3
- # License: BSD (3-clause)
4
-
5
- import numpy as np
6
-
7
- import torch
8
- from torch import nn
9
- import torch.nn.functional as F
10
-
11
- from ..util import np_to_th
12
-
13
-
14
- class Ensure4d(nn.Module):
15
- def forward(self, x):
16
- while len(x.shape) < 4:
17
- x = x.unsqueeze(-1)
18
- return x
19
-
20
-
21
- class Expression(nn.Module):
22
- """Compute given expression on forward pass.
23
-
24
- Parameters
25
- ----------
26
- expression_fn : callable
27
- Should accept variable number of objects of type
28
- `torch.autograd.Variable` to compute its output.
29
- """
30
-
31
- def __init__(self, expression_fn):
32
- super(Expression, self).__init__()
33
- self.expression_fn = expression_fn
34
-
35
- def forward(self, *x):
36
- return self.expression_fn(*x)
37
-
38
- def __repr__(self):
39
- if hasattr(self.expression_fn, "func") and hasattr(
40
- self.expression_fn, "kwargs"
41
- ):
42
- expression_str = "{:s} {:s}".format(
43
- self.expression_fn.func.__name__, str(self.expression_fn.kwargs)
44
- )
45
- elif hasattr(self.expression_fn, "__name__"):
46
- expression_str = self.expression_fn.__name__
47
- else:
48
- expression_str = repr(self.expression_fn)
49
- return self.__class__.__name__ + "(expression=%s) " % expression_str
50
-
51
-
52
- class AvgPool2dWithConv(nn.Module):
53
- """
54
- Compute average pooling using a convolution, to have the dilation parameter.
55
-
56
- Parameters
57
- ----------
58
- kernel_size: (int,int)
59
- Size of the pooling region.
60
- stride: (int,int)
61
- Stride of the pooling operation.
62
- dilation: int or (int,int)
63
- Dilation applied to the pooling filter.
64
- padding: int or (int,int)
65
- Padding applied before the pooling operation.
66
- """
67
-
68
- def __init__(self, kernel_size, stride, dilation=1, padding=0):
69
- super(AvgPool2dWithConv, self).__init__()
70
- self.kernel_size = kernel_size
71
- self.stride = stride
72
- self.dilation = dilation
73
- self.padding = padding
74
- # don't name them "weights" to
75
- # make sure these are not accidentally used by some procedure
76
- # that initializes parameters or something
77
- self._pool_weights = None
78
-
79
- def forward(self, x):
80
- # Create weights for the convolution on demand:
81
- # size or type of x changed...
82
- in_channels = x.size()[1]
83
- weight_shape = (
84
- in_channels,
85
- 1,
86
- self.kernel_size[0],
87
- self.kernel_size[1],
88
- )
89
- if self._pool_weights is None or (
90
- (tuple(self._pool_weights.size()) != tuple(weight_shape))
91
- or (self._pool_weights.is_cuda != x.is_cuda)
92
- or (self._pool_weights.data.type() != x.data.type())
93
- ):
94
- n_pool = np.prod(self.kernel_size)
95
- weights = np_to_th(np.ones(weight_shape, dtype=np.float32) / float(n_pool))
96
- weights = weights.type_as(x)
97
- if x.is_cuda:
98
- weights = weights.cuda()
99
- self._pool_weights = weights
100
-
101
- pooled = F.conv2d(
102
- x,
103
- self._pool_weights,
104
- bias=None,
105
- stride=self.stride,
106
- dilation=self.dilation,
107
- padding=self.padding,
108
- groups=in_channels,
109
- )
110
- return pooled
111
-
112
-
113
- class IntermediateOutputWrapper(nn.Module):
114
- """Wraps network model such that outputs of intermediate layers can be returned.
115
- forward() returns list of intermediate activations in a network during forward pass.
116
-
117
- Parameters
118
- ----------
119
- to_select : list
120
- list of module names for which activation should be returned
121
- model : model object
122
- network model
123
-
124
- Examples
125
- --------
126
- >>> model = Deep4Net()
127
- >>> select_modules = ['conv_spat','conv_2','conv_3','conv_4'] # Specify intermediate outputs
128
- >>> model_pert = IntermediateOutputWrapper(select_modules,model) # Wrap model
129
- """
130
-
131
- def __init__(self, to_select, model):
132
- if not len(list(model.children())) == len(list(model.named_children())):
133
- raise Exception("All modules in model need to have names!")
134
-
135
- super(IntermediateOutputWrapper, self).__init__()
136
-
137
- modules_list = model.named_children()
138
- for key, module in modules_list:
139
- self.add_module(key, module)
140
- self._modules[key].load_state_dict(module.state_dict())
141
- self._to_select = to_select
142
-
143
- def forward(self, x):
144
- # Call modules individually and append activation to output if module is in to_select
145
- o = []
146
- for name, module in self._modules.items():
147
- x = module(x)
148
- if name in self._to_select:
149
- o.append(x)
150
- return o
151
-
152
-
153
- class TimeDistributed(nn.Module):
154
- """Apply module on multiple windows.
155
-
156
- Apply the provided module on a sequence of windows and return their
157
- concatenation.
158
- Useful with sequence-to-prediction models (e.g. sleep stager which must map
159
- a sequence of consecutive windows to the label of the middle window in the
160
- sequence).
161
-
162
- Parameters
163
- ----------
164
- module : nn.Module
165
- Module to be applied to the input windows. Must accept an input of
166
- shape (batch_size, n_channels, n_times).
167
- """
168
-
169
- def __init__(self, module):
170
- super().__init__()
171
- self.module = module
172
-
173
- def forward(self, x):
174
- """
175
- Parameters
176
- ----------
177
- x : torch.Tensor
178
- Sequence of windows, of shape (batch_size, seq_len, n_channels,
179
- n_times).
180
-
181
- Returns
182
- -------
183
- torch.Tensor
184
- Shape (batch_size, seq_len, output_size).
185
- """
186
- b, s, c, t = x.shape
187
- out = self.module(x.view(b * s, c, t))
188
- return out.view(b, s, -1)
189
-
190
-
191
- class CausalConv1d(nn.Conv1d):
192
- """Causal 1-dimensional convolution
193
-
194
- Code modified from [1]_ and [2]_.
195
-
196
- Parameters
197
- ----------
198
- in_channels : int
199
- Input channels.
200
- out_channels : int
201
- Output channels (number of filters).
202
- kernel_size : int
203
- Kernel size.
204
- dilation : int, optional
205
- Dilation (number of elements to skip within kernel multiplication).
206
- Default to 1.
207
- **kwargs :
208
- Other keyword arguments to pass to torch.nn.Conv1d, except for
209
- `padding`!!
210
-
211
- References
212
- ----------
213
- .. [1] https://discuss.pytorch.org/t/causal-convolution/3456/4
214
- .. [2] https://gist.github.com/paultsw/7a9d6e3ce7b70e9e2c61bc9287addefc
215
- """
216
-
217
- def __init__(
218
- self,
219
- in_channels,
220
- out_channels,
221
- kernel_size,
222
- dilation=1,
223
- **kwargs,
224
- ):
225
- assert "padding" not in kwargs, (
226
- "The padding parameter is controlled internally by "
227
- f"{type(self).__name__} class. You should not try to override this"
228
- " parameter."
229
- )
230
-
231
- super().__init__(
232
- in_channels=in_channels,
233
- out_channels=out_channels,
234
- kernel_size=kernel_size,
235
- dilation=dilation,
236
- padding=(kernel_size - 1) * dilation,
237
- **kwargs,
238
- )
239
-
240
- def forward(self, X):
241
- out = super().forward(X)
242
- return out[..., : -self.padding[0]]
243
-
244
-
245
- class MaxNormLinear(nn.Linear):
246
- """Linear layer with MaxNorm constraining on weights.
247
-
248
- Equivalent of Keras tf.keras.Dense(..., kernel_constraint=max_norm())
249
- [1, 2]_. Implemented as advised in [3]_.
250
-
251
- Parameters
252
- ----------
253
- in_features: int
254
- Size of each input sample.
255
- out_features: int
256
- Size of each output sample.
257
- bias: bool, optional
258
- If set to ``False``, the layer will not learn an additive bias.
259
- Default: ``True``.
260
-
261
- References
262
- ----------
263
- .. [1] https://keras.io/api/layers/core_layers/dense/#dense-class
264
- .. [2] https://www.tensorflow.org/api_docs/python/tf/keras/constraints/
265
- MaxNorm
266
- .. [3] https://discuss.pytorch.org/t/how-to-correctly-implement-in-place-
267
- max-norm-constraint/96769
268
- """
269
-
270
- def __init__(
271
- self, in_features, out_features, bias=True, max_norm_val=2, eps=1e-5, **kwargs
272
- ):
273
- super().__init__(
274
- in_features=in_features, out_features=out_features, bias=bias, **kwargs
275
- )
276
- self._max_norm_val = max_norm_val
277
- self._eps = eps
278
-
279
- def forward(self, X):
280
- self._max_norm()
281
- return super().forward(X)
282
-
283
- def _max_norm(self):
284
- with torch.no_grad():
285
- norm = self.weight.norm(2, dim=0, keepdim=True).clamp(
286
- min=self._max_norm_val / 2
287
- )
288
- desired = torch.clamp(norm, max=self._max_norm_val)
289
- self.weight *= desired / (self._eps + norm)
290
-
291
-
292
- class CombinedConv(nn.Module):
293
- """Merged convolutional layer for temporal and spatial convs in Deep4/ShallowFBCSP
294
-
295
- Numerically equivalent to the separate sequential approach, but this should be faster.
296
-
297
- Parameters
298
- ----------
299
- in_chans : int
300
- Number of EEG input channels.
301
- n_filters_time: int
302
- Number of temporal filters.
303
- filter_time_length: int
304
- Length of the temporal filter.
305
- n_filters_spat: int
306
- Number of spatial filters.
307
- bias_time: bool
308
- Whether to use bias in the temporal conv
309
- bias_spat: bool
310
- Whether to use bias in the spatial conv
311
-
312
- """
313
-
314
- def __init__(
315
- self,
316
- in_chans,
317
- n_filters_time=40,
318
- n_filters_spat=40,
319
- filter_time_length=25,
320
- bias_time=True,
321
- bias_spat=True,
322
- ):
323
- super().__init__()
324
- self.bias_time = bias_time
325
- self.bias_spat = bias_spat
326
- self.conv_time = nn.Conv2d(
327
- 1, n_filters_time, (filter_time_length, 1), bias=bias_time, stride=1
328
- )
329
- self.conv_spat = nn.Conv2d(
330
- n_filters_time, n_filters_spat, (1, in_chans), bias=bias_spat, stride=1
331
- )
332
-
333
- def forward(self, x):
334
- # Merge time and spat weights
335
- combined_weight = (
336
- (self.conv_time.weight * self.conv_spat.weight.permute(1, 0, 2, 3))
337
- .sum(0)
338
- .unsqueeze(1)
339
- )
340
-
341
- # Calculate bias term
342
- if not self.bias_spat and not self.bias_time:
343
- bias = None
344
- else:
345
- bias = 0
346
- if self.bias_time:
347
- bias += (
348
- self.conv_spat.weight.squeeze()
349
- .sum(-1)
350
- .mm(self.conv_time.bias.unsqueeze(-1))
351
- .squeeze()
352
- )
353
- if self.bias_spat:
354
- bias += self.conv_spat.bias
355
-
356
- return F.conv2d(
357
- x, weight=combined_weight, bias=bias, stride=(1, 1)
358
- )
@@ -1,68 +0,0 @@
1
- braindecode/__init__.py,sha256=DVr7xakvqGSkno_VZoOmXHot-PeRHfkSGGBwGq8b1Us,183
2
- braindecode/classifier.py,sha256=IONNZmZHyoKmWSdmuL9pZqEDxlS0aJvcLD_M9O41CP0,9816
3
- braindecode/eegneuralnet.py,sha256=P8Trs2m6X6lEKnrQH-FOdQPmQ8cqaLwPl1rEzk_pJaw,14818
4
- braindecode/regressor.py,sha256=zXrYi3fEvQdROe-BQ79ZFHfbrCvFb4KJa0_zesbvAXw,9359
5
- braindecode/util.py,sha256=OW4UATTHvnpem9O6vD3UfJSA0y76kons_VBchVPMGM8,13037
6
- braindecode/version.py,sha256=WY9HbkgoxJlUCfEaMASIAo3wFTh3K3UXHty6LsjolMg,20
7
- braindecode/augmentation/__init__.py,sha256=WmtUAQVKR735X1B9e9Dz1_nFUUVs2jlmF0p9yOaLLsA,869
8
- braindecode/augmentation/base.py,sha256=MvUnxJcXdsu_uKfSHFzVVQ_0bal6QCc1dBndLsP62fw,7356
9
- braindecode/augmentation/functional.py,sha256=QTqlRMiVLdmwM_pJacZXvyTE6FT47pPmpcZ3TohIGpc,33343
10
- braindecode/augmentation/transforms.py,sha256=UZj0C7ksJmbs6PD302jAXVRbkTDsW28_CgP1SS0KFvg,38000
11
- braindecode/datasets/__init__.py,sha256=fsIBanNucO9xCKKtMKxI1aDgg6nYoE9amnMAI7iZXx8,658
12
- braindecode/datasets/base.py,sha256=HHBICxUjNS2Jz80i08ZPwyaQimM-DCqNGPEc55uqz2A,30613
13
- braindecode/datasets/bbci.py,sha256=eeX408xg_VtgxsIoev21VJXbyatjQMDO4WRsJtbpsks,19130
14
- braindecode/datasets/bcicomp.py,sha256=cJZiF2Z6IB0nlkFXbtCftke8zxoV8Ics24nL48Ed7uU,7421
15
- braindecode/datasets/mne.py,sha256=bcR2vNWuRgE1KjFIheX-v5uvO2nQDJFcVXgVDC1zbeA,5824
16
- braindecode/datasets/moabb.py,sha256=qHC_4VBJw1A5OCJt_vfHvZK9FSKv_nSoIvS2N6AZE1M,5134
17
- braindecode/datasets/sleep_physionet.py,sha256=m1twC8MxQweyx0zBK0ZrrBP9EmyIdqvGmFboU6viz_I,3908
18
- braindecode/datasets/tuh.py,sha256=xFjn7C50kZ8npHCrB0unjZ_EghvlGNfrWogNHsuxAoo,18450
19
- braindecode/datasets/xy.py,sha256=n2d_rYyLJZEyrLiqJlUhxMtU44Ok2feAfZRqGnQP47k,2799
20
- braindecode/datautil/__init__.py,sha256=G6E1sIxPr2awx8UvvJG3FNxqRR-OHuJGWYIb_vuKjFU,1628
21
- braindecode/datautil/mne.py,sha256=lSaXS9ZwYY11JaOVRvP0q7buoLLbr4xWZ7SCe_y_u4E,287
22
- braindecode/datautil/preprocess.py,sha256=jwO58bP0-NU2AczFJUrIRIOicpbCOymsabhm-UNQ_9o,374
23
- braindecode/datautil/serialization.py,sha256=WyVdjubnZbKZ9FHQBZECKyfD6_m2kGC6tySEk3RmcSI,12430
24
- braindecode/datautil/util.py,sha256=ZfDoxLieKsgI8xcWQqebV-vJ5pJYRvRRHkEwhwpgoKU,674
25
- braindecode/datautil/windowers.py,sha256=0QsJiOWvdWxoTFKceVXxqmWoNyVKtpBxk8VllpTysFM,251
26
- braindecode/datautil/xy.py,sha256=rS4W19sAKG94pjZEQLqYXlvy2h8IInkoDYM0QlixzHs,283
27
- braindecode/models/__init__.py,sha256=epIddo-wqmWEPgT3ONHh5fhAGr4l9y0XMpinmi1iVYA,1059
28
- braindecode/models/atcnet.py,sha256=0ckyrqTmeGAwNBcCZXedDpyyZS8a--g3RS7I6yjQT0U,23059
29
- braindecode/models/base.py,sha256=O23DV08ef-QFM-h8jkKRUt5OLZ8tQPa7kvFUy3a9uGk,11158
30
- braindecode/models/deep4.py,sha256=WABnxH2iN_PMNYunqLnduxB5cO8WPHufWTcu_nEBLKA,12675
31
- braindecode/models/deepsleepnet.py,sha256=l5xT9Ri7_cLPzdInrTpctEgtncWV62mCssW24W2aln8,7821
32
- braindecode/models/eegconformer.py,sha256=Iae5GARAELxcYHiZsbFfKqbVTnH1QhZ9AvlM8xuNaYg,14228
33
- braindecode/models/eeginception.py,sha256=P6qzqkf8ug-c4kLLeOqiJAgSKbuoAOh-onn6pwDFwLo,12148
34
- braindecode/models/eeginception_erp.py,sha256=xf1HdPF14bAlAIUkmdB29gn7katPw2dv6UcwGuBKUW4,12150
35
- braindecode/models/eeginception_mi.py,sha256=yvLEZwVAduIMnEvZN6C5PLOecd5LDCrnGO0FZkhuNp8,10219
36
- braindecode/models/eegitnet.py,sha256=TfH5RWU_eEUO0gDp-rgvUEl1Y7ehE0oykUm3PovgnCo,7858
37
- braindecode/models/eegnet.py,sha256=08DBm4cFYcVZT7oZrP97-pMeYQ3Yya97UQsEKPdO0IY,13478
38
- braindecode/models/eegresnet.py,sha256=pyMA711K03_Hi6TCkddfJb46j6S68ekKTCQ3uelaXYM,11655
39
- braindecode/models/functions.py,sha256=_GfkZHSWR2X2QNH_7-KeU8TPIO8Mu6uC-RdZEWmuOEM,917
40
- braindecode/models/hybrid.py,sha256=rQCZIXecsP7phxUdM8h64b4pld-eApz-pu6DN7bTgeo,4865
41
- braindecode/models/modules.py,sha256=p4J4I4PcJWpyUaAOSGSai10-PrpBR3S2Vyqt50zzUqA,10672
42
- braindecode/models/shallow_fbcsp.py,sha256=zMLTokGwSSp8K_aSqc7TaQBs_hkM0IbuBq7-F8_QXkY,8078
43
- braindecode/models/sleep_stager_blanco_2020.py,sha256=fqsv9W9ba_3ZkHAgnPRFCUjk-30pUOObXEumgFsbcVo,5920
44
- braindecode/models/sleep_stager_chambon_2018.py,sha256=h_EcnoFf1hhdl-YI5jrgRBW7Lv1nGdAOsYwsrmo_vwY,5314
45
- braindecode/models/sleep_stager_eldele_2021.py,sha256=jnwF3MXH1xbCcNrDrVS0A9Xoy0w76LLf_td2lZShBzY,15141
46
- braindecode/models/tcn.py,sha256=KrjhwgGN-bzrMGlxZ6Iz6uDKINiZQGhFkGfrHpNA-GE,6389
47
- braindecode/models/tidnet.py,sha256=TrnS-uYYcYS2lxTH0m-TZOHIl57nh0XAtA8wzigOVZw,9886
48
- braindecode/models/usleep.py,sha256=ILeqiBvse9Weg_neL_uO34H5-MMlD53ijdtGmFX2kDA,11465
49
- braindecode/models/util.py,sha256=ntEkLSyFDjBC2X47YLOdNfJxLYc4K6av6z1SwTtiYQg,5624
50
- braindecode/preprocessing/__init__.py,sha256=sSxOr6tW4rUFigFMRjjbgD9c1bQvveIAHRHNisE60s0,740
51
- braindecode/preprocessing/mne_preprocess.py,sha256=nyrnN_ee-5CkIJWzzyl5aTuFH1rDPIZh5SlIE79mRgo,2258
52
- braindecode/preprocessing/preprocess.py,sha256=0-08-h8i9u68PIYZ0gxDsLjyCQ2D8UPQGb3HA-eNC_M,16116
53
- braindecode/preprocessing/windowers.py,sha256=3h8Ne-KtbsTGMnTD3AaoI1izbfDP5MvRqgcuCEZOc4M,27737
54
- braindecode/samplers/__init__.py,sha256=9ExHqtv8UhvCN-7dy8LhFE-r9AG0x6_c2DIS-eb_kEE,298
55
- braindecode/samplers/base.py,sha256=eBQtwz_-yxxCQOV7JlURcIjkYlSB-778UV2nGP5zwfY,10268
56
- braindecode/samplers/ssl.py,sha256=dK0IrSMk01rCqMo7sAjTCP70nApeo2JPBDtV7X8NQJo,4282
57
- braindecode/training/__init__.py,sha256=MUe_eYFND18KzQYHQxtqvpZ4-gu1CdfvpSsFdFl6nLc,543
58
- braindecode/training/callbacks.py,sha256=OdOz0d443PdiTuw2LLuPVHHLVYvMj3t7j0lxzmFyLY8,877
59
- braindecode/training/losses.py,sha256=Pavq9ttQSq2bQXFc7ii5asDepcjiDEEawah36Fgz21E,3779
60
- braindecode/training/scoring.py,sha256=7oOssI7UVrwzgbW32TDnnl_Ys19dlYBtwN2ipNmk_XQ,19082
61
- braindecode/visualization/__init__.py,sha256=59XpOfKASsCpd4_oZmk9gvmy5GSy_yhrwG2Ygpb322M,251
62
- braindecode/visualization/confusion_matrices.py,sha256=eK5UQy26t2fsGxqheEdDjci0zgIm4aWeRdW2TJDSYU0,9543
63
- braindecode/visualization/gradients.py,sha256=7rzYDzdexJIEk1T7PM7Vse1D53gHnLBkTeWxTqBK5JA,1976
64
- braindecode-0.8.1.dist-info/LICENSE.txt,sha256=1IX7wR-nRXQap6IOIEXe-ZtJHIaXuiX5UOMsQCrou2I,1520
65
- braindecode-0.8.1.dist-info/METADATA,sha256=TFtdNiyHenyq2dp1AMwMalbCPHr3Kh0UQf8HxHZDPns,8051
66
- braindecode-0.8.1.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
67
- braindecode-0.8.1.dist-info/top_level.txt,sha256=pHsWQmSy0uhIez62-HA9j0iaXKvSbUL39ifFRkFnChA,12
68
- braindecode-0.8.1.dist-info/RECORD,,