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.
- braindecode/__init__.py +1 -2
- braindecode/augmentation/__init__.py +39 -19
- braindecode/augmentation/base.py +25 -28
- braindecode/augmentation/functional.py +237 -100
- braindecode/augmentation/transforms.py +325 -158
- braindecode/classifier.py +26 -24
- braindecode/datasets/__init__.py +28 -10
- braindecode/datasets/base.py +220 -134
- braindecode/datasets/bbci.py +43 -52
- braindecode/datasets/bcicomp.py +47 -32
- braindecode/datasets/bids.py +245 -0
- braindecode/datasets/mne.py +45 -24
- braindecode/datasets/moabb.py +87 -27
- braindecode/datasets/nmt.py +311 -0
- braindecode/datasets/sleep_physio_challe_18.py +412 -0
- braindecode/datasets/sleep_physionet.py +43 -26
- braindecode/datasets/tuh.py +324 -140
- braindecode/datasets/xy.py +27 -12
- braindecode/datautil/__init__.py +37 -18
- braindecode/datautil/serialization.py +110 -72
- braindecode/eegneuralnet.py +63 -47
- braindecode/functional/__init__.py +22 -0
- braindecode/functional/functions.py +250 -0
- braindecode/functional/initialization.py +47 -0
- braindecode/models/__init__.py +84 -14
- braindecode/models/atcnet.py +193 -164
- braindecode/models/attentionbasenet.py +599 -0
- braindecode/models/base.py +86 -102
- braindecode/models/biot.py +504 -0
- braindecode/models/contrawr.py +317 -0
- braindecode/models/ctnet.py +536 -0
- braindecode/models/deep4.py +116 -77
- braindecode/models/deepsleepnet.py +149 -119
- braindecode/models/eegconformer.py +112 -173
- braindecode/models/eeginception_erp.py +109 -118
- braindecode/models/eeginception_mi.py +161 -97
- braindecode/models/eegitnet.py +215 -152
- braindecode/models/eegminer.py +254 -0
- braindecode/models/eegnet.py +228 -161
- braindecode/models/eegnex.py +247 -0
- braindecode/models/eegresnet.py +234 -152
- braindecode/models/eegsimpleconv.py +199 -0
- braindecode/models/eegtcnet.py +335 -0
- braindecode/models/fbcnet.py +221 -0
- braindecode/models/fblightconvnet.py +313 -0
- braindecode/models/fbmsnet.py +324 -0
- braindecode/models/hybrid.py +52 -71
- braindecode/models/ifnet.py +441 -0
- braindecode/models/labram.py +1186 -0
- braindecode/models/msvtnet.py +375 -0
- braindecode/models/sccnet.py +207 -0
- braindecode/models/shallow_fbcsp.py +50 -56
- braindecode/models/signal_jepa.py +1011 -0
- braindecode/models/sinc_shallow.py +337 -0
- braindecode/models/sleep_stager_blanco_2020.py +55 -46
- braindecode/models/sleep_stager_chambon_2018.py +54 -53
- braindecode/models/sleep_stager_eldele_2021.py +247 -141
- braindecode/models/sparcnet.py +424 -0
- braindecode/models/summary.csv +41 -0
- braindecode/models/syncnet.py +232 -0
- braindecode/models/tcn.py +158 -88
- braindecode/models/tidnet.py +280 -167
- braindecode/models/tsinception.py +283 -0
- braindecode/models/usleep.py +190 -177
- braindecode/models/util.py +109 -145
- braindecode/modules/__init__.py +84 -0
- braindecode/modules/activation.py +60 -0
- braindecode/modules/attention.py +757 -0
- braindecode/modules/blocks.py +108 -0
- braindecode/modules/convolution.py +274 -0
- braindecode/modules/filter.py +628 -0
- braindecode/modules/layers.py +131 -0
- braindecode/modules/linear.py +49 -0
- braindecode/modules/parametrization.py +38 -0
- braindecode/modules/stats.py +77 -0
- braindecode/modules/util.py +76 -0
- braindecode/modules/wrapper.py +73 -0
- braindecode/preprocessing/__init__.py +36 -11
- braindecode/preprocessing/mne_preprocess.py +13 -7
- braindecode/preprocessing/preprocess.py +139 -75
- braindecode/preprocessing/windowers.py +576 -187
- braindecode/regressor.py +23 -12
- braindecode/samplers/__init__.py +16 -8
- braindecode/samplers/base.py +146 -32
- braindecode/samplers/ssl.py +162 -17
- braindecode/training/__init__.py +18 -10
- braindecode/training/callbacks.py +2 -4
- braindecode/training/losses.py +3 -8
- braindecode/training/scoring.py +76 -68
- braindecode/util.py +55 -59
- braindecode/version.py +1 -1
- braindecode/visualization/__init__.py +2 -3
- braindecode/visualization/confusion_matrices.py +117 -73
- braindecode/visualization/gradients.py +14 -10
- {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info}/METADATA +42 -58
- braindecode-1.1.0.dist-info/RECORD +101 -0
- {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info}/WHEEL +1 -1
- {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info/licenses}/LICENSE.txt +1 -1
- braindecode-1.1.0.dist-info/licenses/NOTICE.txt +20 -0
- braindecode/datautil/mne.py +0 -9
- braindecode/datautil/preprocess.py +0 -12
- braindecode/datautil/windowers.py +0 -6
- braindecode/datautil/xy.py +0 -9
- braindecode/models/eeginception.py +0 -317
- braindecode/models/functions.py +0 -47
- braindecode/models/modules.py +0 -358
- braindecode-0.8.1.dist-info/RECORD +0 -68
- {braindecode-0.8.1.dist-info → braindecode-1.1.0.dist-info}/top_level.txt +0 -0
braindecode/models/modules.py
DELETED
|
@@ -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,,
|
|
File without changes
|