braindecode 1.3.0.dev180851780__py3-none-any.whl → 1.3.0.dev183667303__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/augmentation/base.py +1 -1
- braindecode/datasets/__init__.py +10 -2
- braindecode/datasets/base.py +115 -151
- braindecode/datasets/bcicomp.py +4 -4
- braindecode/datasets/bids.py +3 -3
- braindecode/datasets/experimental.py +2 -2
- braindecode/datasets/mne.py +3 -5
- braindecode/datasets/moabb.py +2 -2
- braindecode/datasets/nmt.py +2 -2
- braindecode/datasets/sleep_physio_challe_18.py +2 -2
- braindecode/datasets/sleep_physionet.py +2 -2
- braindecode/datasets/tuh.py +2 -2
- braindecode/datasets/xy.py +2 -2
- braindecode/datautil/serialization.py +7 -7
- braindecode/eegneuralnet.py +2 -0
- braindecode/functional/functions.py +6 -2
- braindecode/functional/initialization.py +2 -3
- braindecode/models/__init__.py +2 -0
- braindecode/models/atcnet.py +25 -26
- braindecode/models/attentionbasenet.py +39 -32
- braindecode/models/base.py +280 -2
- braindecode/models/bendr.py +469 -0
- braindecode/models/biot.py +2 -0
- braindecode/models/ctnet.py +6 -3
- braindecode/models/deepsleepnet.py +27 -18
- braindecode/models/eegconformer.py +2 -2
- braindecode/models/eeginception_erp.py +31 -25
- braindecode/models/eegnet.py +1 -1
- braindecode/models/labram.py +193 -87
- braindecode/models/signal_jepa.py +109 -27
- braindecode/models/sinc_shallow.py +10 -9
- braindecode/models/sstdpn.py +11 -11
- braindecode/models/summary.csv +1 -0
- braindecode/models/usleep.py +26 -21
- braindecode/models/util.py +1 -0
- braindecode/modules/attention.py +10 -10
- braindecode/modules/blocks.py +3 -3
- braindecode/modules/filter.py +2 -3
- braindecode/modules/layers.py +18 -17
- braindecode/preprocessing/__init__.py +24 -0
- braindecode/preprocessing/eegprep_preprocess.py +1202 -0
- braindecode/preprocessing/preprocess.py +12 -12
- braindecode/preprocessing/util.py +166 -0
- braindecode/preprocessing/windowers.py +24 -19
- braindecode/samplers/base.py +8 -8
- braindecode/version.py +1 -1
- {braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/METADATA +6 -2
- {braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/RECORD +52 -49
- {braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/WHEEL +0 -0
- {braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/licenses/LICENSE.txt +0 -0
- {braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/licenses/NOTICE.txt +0 -0
- {braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/top_level.txt +0 -0
|
@@ -30,8 +30,8 @@ from numpy.typing import NDArray
|
|
|
30
30
|
|
|
31
31
|
from braindecode.datasets.base import (
|
|
32
32
|
BaseConcatDataset,
|
|
33
|
-
BaseDataset,
|
|
34
33
|
EEGWindowsDataset,
|
|
34
|
+
RawDataset,
|
|
35
35
|
WindowsDataset,
|
|
36
36
|
)
|
|
37
37
|
from braindecode.datautil.serialization import (
|
|
@@ -119,7 +119,7 @@ def preprocess(
|
|
|
119
119
|
Parameters
|
|
120
120
|
----------
|
|
121
121
|
concat_ds : BaseConcatDataset
|
|
122
|
-
A concat of ``
|
|
122
|
+
A concat of ``RecordDataset`` to be preprocessed.
|
|
123
123
|
preprocessors : list of Preprocessor
|
|
124
124
|
Preprocessor objects to apply to each dataset.
|
|
125
125
|
save_dir : str | None
|
|
@@ -229,15 +229,15 @@ def _preprocess(
|
|
|
229
229
|
|
|
230
230
|
Parameters
|
|
231
231
|
----------
|
|
232
|
-
ds:
|
|
232
|
+
ds: RecordDataset
|
|
233
233
|
Dataset object to preprocess.
|
|
234
234
|
ds_index : int
|
|
235
|
-
Index of the
|
|
235
|
+
Index of the ``RecordDataset`` in its ``BaseConcatDataset``. Ignored if save_dir
|
|
236
236
|
is None.
|
|
237
237
|
preprocessors: list(Preprocessor)
|
|
238
238
|
List of preprocessors to apply to the dataset.
|
|
239
239
|
save_dir : str | None
|
|
240
|
-
If provided, save the preprocessed
|
|
240
|
+
If provided, save the preprocessed RecordDataset in the
|
|
241
241
|
specified directory.
|
|
242
242
|
overwrite : bool
|
|
243
243
|
If True, overwrite existing file with the same name.
|
|
@@ -263,8 +263,8 @@ def _preprocess(
|
|
|
263
263
|
_preprocess_raw_or_epochs(ds.windows, preprocessors)
|
|
264
264
|
else:
|
|
265
265
|
raise ValueError(
|
|
266
|
-
"Can only preprocess concatenation of
|
|
267
|
-
"
|
|
266
|
+
"Can only preprocess concatenation of RecordDataset, "
|
|
267
|
+
"with either a `raw` or `windows` attribute."
|
|
268
268
|
)
|
|
269
269
|
|
|
270
270
|
# Store preprocessing keyword arguments in the dataset
|
|
@@ -297,11 +297,11 @@ def _get_preproc_kwargs(preprocessors):
|
|
|
297
297
|
|
|
298
298
|
|
|
299
299
|
def _set_preproc_kwargs(ds, preprocessors):
|
|
300
|
-
"""Record preprocessing keyword arguments in
|
|
300
|
+
"""Record preprocessing keyword arguments in RecordDataset.
|
|
301
301
|
|
|
302
302
|
Parameters
|
|
303
303
|
----------
|
|
304
|
-
ds :
|
|
304
|
+
ds : RecordDataset
|
|
305
305
|
Dataset in which to record preprocessing keyword arguments.
|
|
306
306
|
preprocessors : list
|
|
307
307
|
List of preprocessors.
|
|
@@ -309,12 +309,12 @@ def _set_preproc_kwargs(ds, preprocessors):
|
|
|
309
309
|
preproc_kwargs = _get_preproc_kwargs(preprocessors)
|
|
310
310
|
if isinstance(ds, WindowsDataset):
|
|
311
311
|
kind = "window"
|
|
312
|
-
|
|
312
|
+
elif isinstance(ds, EEGWindowsDataset):
|
|
313
313
|
kind = "raw"
|
|
314
|
-
elif isinstance(ds,
|
|
314
|
+
elif isinstance(ds, RawDataset):
|
|
315
315
|
kind = "raw"
|
|
316
316
|
else:
|
|
317
|
-
raise TypeError(f"ds must be a
|
|
317
|
+
raise TypeError(f"ds must be a RecordDataset, got {type(ds)}")
|
|
318
318
|
setattr(ds, kind + "_preproc_kwargs", preproc_kwargs)
|
|
319
319
|
|
|
320
320
|
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"""Utilities for preprocessing functionality in Braindecode."""
|
|
2
|
+
|
|
3
|
+
# Authors: Christian Kothe <christian.kothe@intheon.io>
|
|
4
|
+
#
|
|
5
|
+
# License: BSD-3
|
|
6
|
+
|
|
7
|
+
import base64
|
|
8
|
+
import json
|
|
9
|
+
import re
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
import numpy as np
|
|
13
|
+
from mne.io.base import BaseRaw
|
|
14
|
+
|
|
15
|
+
__all__ = ["mne_store_metadata", "mne_load_metadata"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Use a unique marker for embedding structured data in info['description']
|
|
19
|
+
_MARKER_PATTERN = re.compile(r"<!-- braindecode-meta:\s*(\S+)\s*-->", re.DOTALL)
|
|
20
|
+
_MARKER_START = "<!-- braindecode-meta:"
|
|
21
|
+
_MARKER_END = "-->"
|
|
22
|
+
|
|
23
|
+
# Marker key for numpy arrays
|
|
24
|
+
_NP_ARRAY_TAG = "__numpy_array__"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _numpy_decoder(dct):
|
|
28
|
+
"""Internal JSON decoder hook to handle numpy arrays."""
|
|
29
|
+
if dct.get(_NP_ARRAY_TAG):
|
|
30
|
+
arr = np.array(dct["data"], dtype=dct["dtype"])
|
|
31
|
+
return arr.reshape(dct["shape"])
|
|
32
|
+
return dct
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class NumpyEncoder(json.JSONEncoder):
|
|
36
|
+
"""Custom JSON encoder hook to handle numpy arrays."""
|
|
37
|
+
|
|
38
|
+
def default(self, obj):
|
|
39
|
+
if isinstance(obj, np.ndarray):
|
|
40
|
+
# Reject complex-valued dtypes as they're not JSON serializable
|
|
41
|
+
if np.issubdtype(obj.dtype, np.complexfloating):
|
|
42
|
+
raise TypeError(
|
|
43
|
+
f"Cannot serialize numpy array with complex dtype {obj.dtype}. "
|
|
44
|
+
"Complex dtypes are not supported."
|
|
45
|
+
)
|
|
46
|
+
return {
|
|
47
|
+
_NP_ARRAY_TAG: True,
|
|
48
|
+
"dtype": obj.dtype.str,
|
|
49
|
+
"shape": obj.shape,
|
|
50
|
+
"data": obj.flatten().tolist(),
|
|
51
|
+
}
|
|
52
|
+
return super().default(obj)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _encode_payload(data: dict) -> str:
|
|
56
|
+
"""Serializes, encodes, and formats data into a marker string."""
|
|
57
|
+
json_str = json.dumps(data, cls=NumpyEncoder)
|
|
58
|
+
encoded = base64.b64encode(json_str.encode("utf-8")).decode("ascii")
|
|
59
|
+
return f"{_MARKER_START} {encoded} {_MARKER_END}"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def mne_store_metadata(
|
|
63
|
+
raw: BaseRaw, payload: Any, *, key: str, no_overwrite: bool = False
|
|
64
|
+
) -> None:
|
|
65
|
+
"""Embed a JSON-serializable metadata payload in an MNE BaseRaw dataset
|
|
66
|
+
under a specified key.
|
|
67
|
+
|
|
68
|
+
This will encode the payload as a base64-encoded JSON string and store it
|
|
69
|
+
in the `info['description']` field of the Raw object while preserving any
|
|
70
|
+
existing content. Note this is not particularly efficient and should not
|
|
71
|
+
be used for very large payloads.
|
|
72
|
+
|
|
73
|
+
Parameters
|
|
74
|
+
----------
|
|
75
|
+
raw : BaseRaw
|
|
76
|
+
The MNE Raw object to store data in.
|
|
77
|
+
payload : Any
|
|
78
|
+
The JSON-serializable data to store.
|
|
79
|
+
key : str
|
|
80
|
+
The key under which to store the payload.
|
|
81
|
+
no_overwrite : bool
|
|
82
|
+
If True, will not overwrite an existing entry with the same key.
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
# the description is apparently the only viable place where custom metadata may be
|
|
86
|
+
# stored in MNE Raw objects that persists through saving/loading
|
|
87
|
+
description = raw.info.get("description") or ""
|
|
88
|
+
|
|
89
|
+
# Try to find existing eegprep data
|
|
90
|
+
if match := _MARKER_PATTERN.search(description):
|
|
91
|
+
# Parse existing data
|
|
92
|
+
try:
|
|
93
|
+
decoded = base64.b64decode(match.group(1)).decode("utf-8")
|
|
94
|
+
existing_data = json.loads(decoded, object_hook=_numpy_decoder)
|
|
95
|
+
except (ValueError, json.JSONDecodeError):
|
|
96
|
+
existing_data = {}
|
|
97
|
+
# Check no_overwrite condition
|
|
98
|
+
if no_overwrite and key in existing_data:
|
|
99
|
+
return
|
|
100
|
+
# Update data
|
|
101
|
+
existing_data[key] = payload
|
|
102
|
+
new_marker = _encode_payload(existing_data)
|
|
103
|
+
# Replace the old marker with updated one
|
|
104
|
+
new_description = _MARKER_PATTERN.sub(new_marker, description, count=1)
|
|
105
|
+
else:
|
|
106
|
+
# No existing data, append new marker
|
|
107
|
+
data = {key: payload}
|
|
108
|
+
new_marker = _encode_payload(data)
|
|
109
|
+
# Append with spacing if description exists
|
|
110
|
+
if description.strip():
|
|
111
|
+
new_description = f"{description.rstrip()}\n{new_marker}"
|
|
112
|
+
else:
|
|
113
|
+
new_description = new_marker
|
|
114
|
+
|
|
115
|
+
raw.info["description"] = new_description
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def mne_load_metadata(raw: BaseRaw, *, key: str, delete: bool = False) -> Any | None:
|
|
119
|
+
"""Retrieves data that was previously stored using mne_store_metadata from an MNE
|
|
120
|
+
BaseRaw dataset.
|
|
121
|
+
|
|
122
|
+
This function can retrieve data from an MNE Raw object that was stored
|
|
123
|
+
using `mne_store_metadata`. It decodes the base64-encoded JSON string from the
|
|
124
|
+
`info['description']` field and extracts the payload associated with the
|
|
125
|
+
specified key.
|
|
126
|
+
|
|
127
|
+
Parameters
|
|
128
|
+
----------
|
|
129
|
+
raw : BaseRaw
|
|
130
|
+
The MNE Raw object to retrieve data from.
|
|
131
|
+
key : str
|
|
132
|
+
The key under which the payload was stored.
|
|
133
|
+
delete : bool
|
|
134
|
+
If True, removes the key from the stored data after retrieval.
|
|
135
|
+
|
|
136
|
+
Returns
|
|
137
|
+
-------
|
|
138
|
+
Any | None
|
|
139
|
+
The retrieved payload, or None if not found.
|
|
140
|
+
"""
|
|
141
|
+
description = raw.info.get("description") or ""
|
|
142
|
+
match = _MARKER_PATTERN.search(description)
|
|
143
|
+
if not match:
|
|
144
|
+
return None
|
|
145
|
+
|
|
146
|
+
try:
|
|
147
|
+
decoded = base64.b64decode(match.group(1)).decode("utf-8")
|
|
148
|
+
data = json.loads(decoded, object_hook=_numpy_decoder)
|
|
149
|
+
except (ValueError, json.JSONDecodeError):
|
|
150
|
+
return None
|
|
151
|
+
|
|
152
|
+
result = data.get(key)
|
|
153
|
+
|
|
154
|
+
if delete and key in data:
|
|
155
|
+
# Remove the key from data
|
|
156
|
+
del data[key]
|
|
157
|
+
if data:
|
|
158
|
+
# Still have other keys, update the marker
|
|
159
|
+
new_marker = _encode_payload(data)
|
|
160
|
+
new_description = _MARKER_PATTERN.sub(new_marker, description, count=1)
|
|
161
|
+
else:
|
|
162
|
+
# No more keys, remove the entire marker
|
|
163
|
+
new_description = _MARKER_PATTERN.sub("", description, count=1).rstrip()
|
|
164
|
+
raw.info["description"] = new_description
|
|
165
|
+
|
|
166
|
+
return result
|
|
@@ -25,7 +25,12 @@ import pandas as pd
|
|
|
25
25
|
from joblib import Parallel, delayed
|
|
26
26
|
from numpy.typing import ArrayLike
|
|
27
27
|
|
|
28
|
-
from ..datasets.base import
|
|
28
|
+
from ..datasets.base import (
|
|
29
|
+
BaseConcatDataset,
|
|
30
|
+
EEGWindowsDataset,
|
|
31
|
+
RawDataset,
|
|
32
|
+
WindowsDataset,
|
|
33
|
+
)
|
|
29
34
|
|
|
30
35
|
|
|
31
36
|
class _LazyDataFrame:
|
|
@@ -189,7 +194,7 @@ def _get_use_mne_epochs(use_mne_epochs, reject, picks, flat, drop_bad_windows):
|
|
|
189
194
|
|
|
190
195
|
# XXX it's called concat_ds...
|
|
191
196
|
def create_windows_from_events(
|
|
192
|
-
concat_ds: BaseConcatDataset,
|
|
197
|
+
concat_ds: BaseConcatDataset[RawDataset],
|
|
193
198
|
trial_start_offset_samples: int = 0,
|
|
194
199
|
trial_stop_offset_samples: int = 0,
|
|
195
200
|
window_size_samples: int | None = None,
|
|
@@ -206,7 +211,7 @@ def create_windows_from_events(
|
|
|
206
211
|
use_mne_epochs: bool | None = None,
|
|
207
212
|
n_jobs: int = 1,
|
|
208
213
|
verbose: bool | str | int | None = "error",
|
|
209
|
-
):
|
|
214
|
+
) -> BaseConcatDataset[WindowsDataset | EEGWindowsDataset]:
|
|
210
215
|
"""Create windows based on events in mne.Raw.
|
|
211
216
|
|
|
212
217
|
This function extracts windows of size window_size_samples in the interval
|
|
@@ -228,7 +233,7 @@ def create_windows_from_events(
|
|
|
228
233
|
|
|
229
234
|
Parameters
|
|
230
235
|
----------
|
|
231
|
-
concat_ds: BaseConcatDataset
|
|
236
|
+
concat_ds: BaseConcatDataset[RawDataset]
|
|
232
237
|
A concat of base datasets each holding raw and description.
|
|
233
238
|
trial_start_offset_samples: int
|
|
234
239
|
Start offset from original trial onsets, in samples. Defaults to zero.
|
|
@@ -268,7 +273,7 @@ def create_windows_from_events(
|
|
|
268
273
|
rejection based on flatness is done. See mne.Epochs.
|
|
269
274
|
on_missing: str
|
|
270
275
|
What to do if one or several event ids are not found in the recording.
|
|
271
|
-
Valid keys are ‘error
|
|
276
|
+
Valid keys are ‘error' | ‘warning' | ‘ignore'. See mne.Epochs.
|
|
272
277
|
accepted_bads_ratio: float, optional
|
|
273
278
|
Acceptable proportion of trials with inconsistent length in a raw. If
|
|
274
279
|
the number of trials whose length is exceeded by the window size is
|
|
@@ -286,7 +291,7 @@ def create_windows_from_events(
|
|
|
286
291
|
|
|
287
292
|
Returns
|
|
288
293
|
-------
|
|
289
|
-
windows_datasets: BaseConcatDataset
|
|
294
|
+
windows_datasets: BaseConcatDataset[WindowsDataset | EEGWindowsDataset]
|
|
290
295
|
Concatenated datasets of WindowsDataset containing the extracted windows.
|
|
291
296
|
"""
|
|
292
297
|
_check_windowing_arguments(
|
|
@@ -341,7 +346,7 @@ def create_windows_from_events(
|
|
|
341
346
|
|
|
342
347
|
|
|
343
348
|
def create_fixed_length_windows(
|
|
344
|
-
concat_ds: BaseConcatDataset,
|
|
349
|
+
concat_ds: BaseConcatDataset[RawDataset],
|
|
345
350
|
start_offset_samples: int = 0,
|
|
346
351
|
stop_offset_samples: int | None = None,
|
|
347
352
|
window_size_samples: int | None = None,
|
|
@@ -358,12 +363,12 @@ def create_fixed_length_windows(
|
|
|
358
363
|
on_missing: str = "error",
|
|
359
364
|
n_jobs: int = 1,
|
|
360
365
|
verbose: bool | str | int | None = "error",
|
|
361
|
-
):
|
|
366
|
+
) -> BaseConcatDataset[EEGWindowsDataset]:
|
|
362
367
|
"""Windower that creates sliding windows.
|
|
363
368
|
|
|
364
369
|
Parameters
|
|
365
370
|
----------
|
|
366
|
-
concat_ds: ConcatDataset
|
|
371
|
+
concat_ds: ConcatDataset[RawDataset]
|
|
367
372
|
A concat of base datasets each holding raw and description.
|
|
368
373
|
start_offset_samples: int
|
|
369
374
|
Start offset from beginning of recording in samples.
|
|
@@ -398,7 +403,7 @@ def create_fixed_length_windows(
|
|
|
398
403
|
by using the _LazyDataFrame (experimental).
|
|
399
404
|
on_missing: str
|
|
400
405
|
What to do if one or several event ids are not found in the recording.
|
|
401
|
-
Valid keys are ‘error
|
|
406
|
+
Valid keys are ‘error' | ‘warning' | ‘ignore'. See mne.Epochs.
|
|
402
407
|
n_jobs: int
|
|
403
408
|
Number of jobs to use to parallelize the windowing.
|
|
404
409
|
verbose: bool | str | int | None
|
|
@@ -406,7 +411,7 @@ def create_fixed_length_windows(
|
|
|
406
411
|
|
|
407
412
|
Returns
|
|
408
413
|
-------
|
|
409
|
-
windows_datasets: BaseConcatDataset
|
|
414
|
+
windows_datasets: BaseConcatDataset[EEGWindowsDataset]
|
|
410
415
|
Concatenated datasets of WindowsDataset containing the extracted windows.
|
|
411
416
|
"""
|
|
412
417
|
stop_offset_samples, drop_last_window = (
|
|
@@ -473,11 +478,11 @@ def _create_windows_from_events(
|
|
|
473
478
|
verbose="error",
|
|
474
479
|
use_mne_epochs=False,
|
|
475
480
|
):
|
|
476
|
-
"""Create WindowsDataset from
|
|
481
|
+
"""Create WindowsDataset from RawDataset based on events.
|
|
477
482
|
|
|
478
483
|
Parameters
|
|
479
484
|
----------
|
|
480
|
-
ds :
|
|
485
|
+
ds : RawDataset
|
|
481
486
|
Dataset containing continuous data and description.
|
|
482
487
|
infer_mapping : bool
|
|
483
488
|
If True, extract all events from all datasets and map them to
|
|
@@ -648,11 +653,11 @@ def _create_fixed_length_windows(
|
|
|
648
653
|
on_missing="error",
|
|
649
654
|
verbose="error",
|
|
650
655
|
):
|
|
651
|
-
"""Create WindowsDataset from
|
|
656
|
+
"""Create WindowsDataset from RawDataset with sliding windows.
|
|
652
657
|
|
|
653
658
|
Parameters
|
|
654
659
|
----------
|
|
655
|
-
ds :
|
|
660
|
+
ds : RawDataset
|
|
656
661
|
Dataset containing continuous data and description.
|
|
657
662
|
|
|
658
663
|
See `create_fixed_length_windows` for description of other parameters.
|
|
@@ -750,7 +755,7 @@ def _create_fixed_length_windows(
|
|
|
750
755
|
|
|
751
756
|
|
|
752
757
|
def create_windows_from_target_channels(
|
|
753
|
-
concat_ds,
|
|
758
|
+
concat_ds: BaseConcatDataset[RawDataset],
|
|
754
759
|
window_size_samples=None,
|
|
755
760
|
preload=False,
|
|
756
761
|
picks=None,
|
|
@@ -759,7 +764,7 @@ def create_windows_from_target_channels(
|
|
|
759
764
|
n_jobs=1,
|
|
760
765
|
last_target_only=True,
|
|
761
766
|
verbose="error",
|
|
762
|
-
):
|
|
767
|
+
) -> BaseConcatDataset[EEGWindowsDataset]:
|
|
763
768
|
list_of_windows_ds = Parallel(n_jobs=n_jobs)(
|
|
764
769
|
delayed(_create_windows_from_target_channels)(
|
|
765
770
|
ds,
|
|
@@ -788,11 +793,11 @@ def _create_windows_from_target_channels(
|
|
|
788
793
|
on_missing="error",
|
|
789
794
|
verbose="error",
|
|
790
795
|
):
|
|
791
|
-
"""Create WindowsDataset from
|
|
796
|
+
"""Create WindowsDataset from RawDataset using targets `misc` channels from mne.Raw.
|
|
792
797
|
|
|
793
798
|
Parameters
|
|
794
799
|
----------
|
|
795
|
-
ds :
|
|
800
|
+
ds : RawDataset
|
|
796
801
|
Dataset containing continuous data and description.
|
|
797
802
|
|
|
798
803
|
See `create_fixed_length_windows` for description of other parameters.
|
braindecode/samplers/base.py
CHANGED
|
@@ -122,14 +122,14 @@ class DistributedRecordingSampler(DistributedSampler):
|
|
|
122
122
|
DataFrame with at least one of {subject, session, run} columns for each
|
|
123
123
|
window in the BaseConcatDataset to sample examples from. Normally
|
|
124
124
|
obtained with `BaseConcatDataset.get_metadata()`. For instance,
|
|
125
|
-
`metadata.head()` might look like this
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
`metadata.head()` might look like this::
|
|
126
|
+
|
|
127
|
+
i_window_in_trial i_start_in_trial i_stop_in_trial target subject session run
|
|
128
|
+
0 0 0 500 -1 4 session_T run_0
|
|
129
|
+
1 1 500 1000 -1 4 session_T run_0
|
|
130
|
+
2 2 1000 1500 -1 4 session_T run_0
|
|
131
|
+
3 3 1500 2000 -1 4 session_T run_0
|
|
132
|
+
4 4 2000 2500 -1 4 session_T run_0
|
|
133
133
|
|
|
134
134
|
random_state : np.RandomState | int | None
|
|
135
135
|
Random state.
|
braindecode/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.3.0.
|
|
1
|
+
__version__ = "1.3.0.dev183667303"
|
{braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: braindecode
|
|
3
|
-
Version: 1.3.0.
|
|
3
|
+
Version: 1.3.0.dev183667303
|
|
4
4
|
Summary: Deep learning software to decode EEG, ECG or MEG signals
|
|
5
5
|
Author-email: Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
6
6
|
Maintainer-email: Alexandre Gramfort <agramfort@meta.com>, Bruno Aristimunha Pinto <b.aristimunha@gmail.com>, Robin Tibor Schirrmeister <robintibor@gmail.com>
|
|
@@ -40,6 +40,10 @@ Requires-Dist: linear_attention_transformer
|
|
|
40
40
|
Requires-Dist: docstring_inheritance
|
|
41
41
|
Provides-Extra: moabb
|
|
42
42
|
Requires-Dist: moabb>=1.2.0; extra == "moabb"
|
|
43
|
+
Provides-Extra: eegprep
|
|
44
|
+
Requires-Dist: eegprep[eeglabio]>=0.1.1; extra == "eegprep"
|
|
45
|
+
Provides-Extra: hug
|
|
46
|
+
Requires-Dist: huggingface_hub[torch]>=0.20.0; extra == "hug"
|
|
43
47
|
Provides-Extra: tests
|
|
44
48
|
Requires-Dist: pytest; extra == "tests"
|
|
45
49
|
Requires-Dist: pytest-cov; extra == "tests"
|
|
@@ -65,7 +69,7 @@ Requires-Dist: pre-commit; extra == "docs"
|
|
|
65
69
|
Requires-Dist: openneuro-py; extra == "docs"
|
|
66
70
|
Requires-Dist: plotly; extra == "docs"
|
|
67
71
|
Provides-Extra: all
|
|
68
|
-
Requires-Dist: braindecode[docs,moabb,tests]; extra == "all"
|
|
72
|
+
Requires-Dist: braindecode[docs,eegprep,hug,moabb,tests]; extra == "all"
|
|
69
73
|
Dynamic: license-file
|
|
70
74
|
|
|
71
75
|
.. image:: https://badges.gitter.im/braindecodechat/community.svg
|
{braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/RECORD
RENAMED
|
@@ -1,48 +1,49 @@
|
|
|
1
1
|
braindecode/__init__.py,sha256=Ac3LEEyIHWFY_fFh3eAY1GZUqXcUxVSJwOSUCwGEDvQ,182
|
|
2
2
|
braindecode/classifier.py,sha256=k9vSCtfQbld0YVleDi5rrrmk6k_k5JYEPPBYcNxYjZ8,9807
|
|
3
|
-
braindecode/eegneuralnet.py,sha256=
|
|
3
|
+
braindecode/eegneuralnet.py,sha256=U6kRdT2u8A2Ca0axMTR8IAESBsvgjLMusAbYappKAOk,15368
|
|
4
4
|
braindecode/regressor.py,sha256=VLfrpiXklwI4onkwue3QmzlBWcvspu0tlrLo9RT1Oiw,9375
|
|
5
5
|
braindecode/util.py,sha256=J-tBcDJNlMTIFW2mfOy6Ko0nsgdP4obRoEVDeg2rFH0,12686
|
|
6
|
-
braindecode/version.py,sha256=
|
|
6
|
+
braindecode/version.py,sha256=xSGlnqFNCt49Sydr6OEEnXh-9cFb0CnR0VQxaRDpxiA,35
|
|
7
7
|
braindecode/augmentation/__init__.py,sha256=LG7ONqCufYAF9NZt8POIp10lYXb8iSueYkF-CWGK2Ls,1001
|
|
8
|
-
braindecode/augmentation/base.py,sha256=
|
|
8
|
+
braindecode/augmentation/base.py,sha256=nK90HWzNwroDCC61e3bZfIsCdEHmGstJliS-TB6wrK0,7327
|
|
9
9
|
braindecode/augmentation/functional.py,sha256=lPhGpZcVtgfQ3oV6p6IQLBCWM_Psa60TwxH3Wj1WyOQ,41133
|
|
10
10
|
braindecode/augmentation/transforms.py,sha256=Ur05yLdROm5pfKTsS2opCWI--X6JwWjP7YMa2KTTZTw,44243
|
|
11
|
-
braindecode/datasets/__init__.py,sha256=
|
|
12
|
-
braindecode/datasets/base.py,sha256=
|
|
11
|
+
braindecode/datasets/__init__.py,sha256=OVv9sQf9eeHyHo9BuLWupFAKAMO9Gz4XXpe0dsLvBfQ,994
|
|
12
|
+
braindecode/datasets/base.py,sha256=BYpG2VofbSQN2UCn97pKg_zhPnL9E9mq7ibliXMUx8Y,30637
|
|
13
13
|
braindecode/datasets/bbci.py,sha256=BC9o1thEyYBREAo930O7zZz3xZB-l4Odt5j8E_1huXI,19277
|
|
14
|
-
braindecode/datasets/bcicomp.py,sha256=
|
|
15
|
-
braindecode/datasets/bids.py,sha256=
|
|
16
|
-
braindecode/datasets/experimental.py,sha256=
|
|
17
|
-
braindecode/datasets/mne.py,sha256=
|
|
18
|
-
braindecode/datasets/moabb.py,sha256=
|
|
19
|
-
braindecode/datasets/nmt.py,sha256=
|
|
20
|
-
braindecode/datasets/sleep_physio_challe_18.py,sha256=
|
|
21
|
-
braindecode/datasets/sleep_physionet.py,sha256=
|
|
22
|
-
braindecode/datasets/tuh.py,sha256=
|
|
23
|
-
braindecode/datasets/xy.py,sha256=
|
|
14
|
+
braindecode/datasets/bcicomp.py,sha256=WwSFfP9whc7Vw5-Jt9vQAHKnRUB5TUe7w945748uGjU,7551
|
|
15
|
+
braindecode/datasets/bids.py,sha256=BxiyGnZuhC56ITUQgJuFv62lgw0LimsSIMRVySgje1A,8843
|
|
16
|
+
braindecode/datasets/experimental.py,sha256=ij7tM_7bXFlvAh3sVVRhoh1CsF9OhMxQC6s4NZyinK8,8515
|
|
17
|
+
braindecode/datasets/mne.py,sha256=5l25ZSnYUX5-jnl4ArwKhVqqm2R852J2T9QdWiJ4npE,6110
|
|
18
|
+
braindecode/datasets/moabb.py,sha256=XsAHcPJYL5unLF4JBSO-8Ka-zs1cX9kew7Gr635jjak,7089
|
|
19
|
+
braindecode/datasets/nmt.py,sha256=vzmO1Ks8oMO7uwXhbysCelyuczSJAFz9QdeXyASshVw,10428
|
|
20
|
+
braindecode/datasets/sleep_physio_challe_18.py,sha256=rpgBtxIsq3qnk7L4ePtCd5_q5Bwr_ZCW3x9izsraoXk,15425
|
|
21
|
+
braindecode/datasets/sleep_physionet.py,sha256=N2KxENTuJb9L1sukPAliAeUD7qxgRrQpQNs6PyaMU6M,4085
|
|
22
|
+
braindecode/datasets/tuh.py,sha256=gdYWzY4F1wKsSSzUaKSRk9q6PPELb0byrgelCt0W9_A,22865
|
|
23
|
+
braindecode/datasets/xy.py,sha256=o6VFUalpgPHp6_ZwwbfV6H7AyCoQST7ugMOYltXqvmI,2984
|
|
24
24
|
braindecode/datautil/__init__.py,sha256=GB9xOudUhJGDyG08PBrnotw6HnWoWIXAHfRNFO-pxSk,1797
|
|
25
|
-
braindecode/datautil/serialization.py,sha256=
|
|
25
|
+
braindecode/datautil/serialization.py,sha256=ewnAOn-QRo7TIudX60pPfR3meWGhYzyhaCqjqLO8gAw,13150
|
|
26
26
|
braindecode/datautil/util.py,sha256=ZfDoxLieKsgI8xcWQqebV-vJ5pJYRvRRHkEwhwpgoKU,674
|
|
27
27
|
braindecode/functional/__init__.py,sha256=JPUDFeKtfogEzfrwPaZRBmxexPjBw7AglYMlImaAnWc,413
|
|
28
|
-
braindecode/functional/functions.py,sha256=
|
|
29
|
-
braindecode/functional/initialization.py,sha256=
|
|
30
|
-
braindecode/models/__init__.py,sha256=
|
|
31
|
-
braindecode/models/atcnet.py,sha256=
|
|
32
|
-
braindecode/models/attentionbasenet.py,sha256=
|
|
28
|
+
braindecode/functional/functions.py,sha256=x3_UGovZ9HPnSAL2DtMwHsGm6MdNm0CdHd3-pzHzEto,8649
|
|
29
|
+
braindecode/functional/initialization.py,sha256=f-4jIS9QY-YD-3R7N77UbBJh8GcuDvVUzn6Ad6Gx8LE,1382
|
|
30
|
+
braindecode/models/__init__.py,sha256=ovF_WX8ZkXEkleRwYsMMS7ldLPh8_2NzTeYGVqH9ilg,2581
|
|
31
|
+
braindecode/models/atcnet.py,sha256=XhcxnGYcrAsHPvYwCHUNZaSMzhfvg6Pm_PPy--7-W4A,32216
|
|
32
|
+
braindecode/models/attentionbasenet.py,sha256=bgc6_7jDT_fnfyCtPhI4i6H7Zornxe46-bMoINLl6YE,30416
|
|
33
33
|
braindecode/models/attn_sleep.py,sha256=m6sdFfD4en2hHf_TpotLPC1hVweJcYZvjgf12bV5FZg,17822
|
|
34
|
-
braindecode/models/base.py,sha256=
|
|
35
|
-
braindecode/models/
|
|
34
|
+
braindecode/models/base.py,sha256=iufKlZf_Oe7wPkkOvfNPOn387E_np6B9YLeVLHTlRHk,20191
|
|
35
|
+
braindecode/models/bendr.py,sha256=MZQdYFERVeBJnynEXDlCLdn_I0mJtgzzFuMhCXkbMkg,21591
|
|
36
|
+
braindecode/models/biot.py,sha256=LpJ8tXqQL2Zh_vcQnpUHEpAGQrPHtn2cBSTUPFCW8jQ,17546
|
|
36
37
|
braindecode/models/contrawr.py,sha256=eeR_ik4gNZ3rJLM6Mw9gJ2gTMkZ8CU8C4rN_GQMQTAE,10044
|
|
37
|
-
braindecode/models/ctnet.py,sha256=
|
|
38
|
+
braindecode/models/ctnet.py,sha256=ThKoZsosmkNOIKekL8uQVk1kdBlntuDmqM83sH9LgWc,17324
|
|
38
39
|
braindecode/models/deep4.py,sha256=-s-R3H7so2xlSiPsU226eSwscv1X9xJMYLm3LhZ3mSU,14645
|
|
39
|
-
braindecode/models/deepsleepnet.py,sha256=
|
|
40
|
-
braindecode/models/eegconformer.py,sha256=
|
|
41
|
-
braindecode/models/eeginception_erp.py,sha256=
|
|
40
|
+
braindecode/models/deepsleepnet.py,sha256=ht2MDuUp-pQBJTTWNEgN4_Orxz01yVyXhxYND6vgJFA,15263
|
|
41
|
+
braindecode/models/eegconformer.py,sha256=z8oSuo1Dv-MKGyxCFQVxQa3sbeku8v8u66c3Qjig38c,17429
|
|
42
|
+
braindecode/models/eeginception_erp.py,sha256=aAjpweNixFgOSL47r-IjHFZujJje8a7TWudtbYdY98M,16410
|
|
42
43
|
braindecode/models/eeginception_mi.py,sha256=VoWtsaWj1xQ4FlrvCbnPvo8eosufYUmTrL4uvFtqKcg,12456
|
|
43
44
|
braindecode/models/eegitnet.py,sha256=feXFmPCd-Ejxt7jgWPen1Ag0-oSclDVQai0Atwu9d_A,9827
|
|
44
45
|
braindecode/models/eegminer.py,sha256=ouKZah9Q7_sxT7DJJMcPObwVxNQE87sEljJg6QwiQNw,9847
|
|
45
|
-
braindecode/models/eegnet.py,sha256=
|
|
46
|
+
braindecode/models/eegnet.py,sha256=qmxQZa-owqEuha7iwOAdPQU29DoLpEyNjH-oouddWLc,13684
|
|
46
47
|
braindecode/models/eegnex.py,sha256=eahHolFl15LwNWeC5qjQqUGqURibQZIV425rI1p-dG8,13604
|
|
47
48
|
braindecode/models/eegsimpleconv.py,sha256=6V5ZQNWijmd3-2wv7lJB_HGBS3wHWWVrKoNIeWTXu-w,7300
|
|
48
49
|
braindecode/models/eegtcnet.py,sha256=Y53uJEX_hoB6eHCew9SIfzNxCYea8UhljDARJTk-Tq8,10837
|
|
@@ -51,42 +52,44 @@ braindecode/models/fblightconvnet.py,sha256=d5MwhawhkjilAMo0ckaYMxJhdGMEuorWgHX-
|
|
|
51
52
|
braindecode/models/fbmsnet.py,sha256=9bZn2_n1dTrI1Qh3Sz9zMZnH_a-Yq-13UHYSmF6r_UE,11659
|
|
52
53
|
braindecode/models/hybrid.py,sha256=hA8jwD3_3LL71BxUjRM1dkhqlHU9E9hjuDokh-jBq-4,4024
|
|
53
54
|
braindecode/models/ifnet.py,sha256=Y2bwfko3SDjD74AzgUEzgMhKJFGCCw_Q_Noh5VONEjQ,15137
|
|
54
|
-
braindecode/models/labram.py,sha256=
|
|
55
|
+
braindecode/models/labram.py,sha256=hxEA-MH3_di-m7FmKD9H9k7zDA9YR24zkgtd34_PX70,46688
|
|
55
56
|
braindecode/models/msvtnet.py,sha256=hxeCLkHS6w2w89YlLfEPCyQ4XQQpt45bEYPiQJ9SFzY,12642
|
|
56
57
|
braindecode/models/patchedtransformer.py,sha256=9TY9l2X4EoCuE9IoOObjubKFRdmsN5lbrVQLnmr66VY,23444
|
|
57
58
|
braindecode/models/sccnet.py,sha256=C7vdwIR5cI6wJCl5f8TnGQG6qinq21y4HG6l-D5AwbY,11971
|
|
58
59
|
braindecode/models/shallow_fbcsp.py,sha256=7U07DJBrm2JHV8v5ja-xuE5-IH5tfmryhJtrfO1n4jk,7531
|
|
59
|
-
braindecode/models/signal_jepa.py,sha256=
|
|
60
|
-
braindecode/models/sinc_shallow.py,sha256=
|
|
60
|
+
braindecode/models/signal_jepa.py,sha256=bBujhM9ItIJisKvbxEi5e1yuV-0mBb41GlyMeEs_TkA,41124
|
|
61
|
+
braindecode/models/sinc_shallow.py,sha256=SrYm45xaffDTP-SjWso89IvOgBFhQRO3BsFZGNt_OrI,11880
|
|
61
62
|
braindecode/models/sleep_stager_blanco_2020.py,sha256=vXulnDYutEFLM0UPXyAI0YIj5QImUMVEmYZb78j34H8,6034
|
|
62
63
|
braindecode/models/sleep_stager_chambon_2018.py,sha256=8w8IR2PsfG0jSc3o0YVopgHpOvCHNIuMi7-QRJOYEW4,5245
|
|
63
64
|
braindecode/models/sparcnet.py,sha256=MG1OB91guI7ssKRk8GvWlzUvaxo_otaYnbEGzNUZVyg,13973
|
|
64
|
-
braindecode/models/sstdpn.py,sha256=
|
|
65
|
-
braindecode/models/summary.csv,sha256=
|
|
65
|
+
braindecode/models/sstdpn.py,sha256=wJv-UYP1q8cMGp2wU1efzIZiigRmkJ8uY22rNB2D7Wc,35077
|
|
66
|
+
braindecode/models/summary.csv,sha256=vFmhpCGFZlxC9Zm8KLBaGRHvZZfdRY85NAGj1Wyv1yU,7209
|
|
66
67
|
braindecode/models/syncnet.py,sha256=nrWJC5ijCSWKVZyRn-dmOuc1t5vk2C6tx8U3U4j5d5Y,8362
|
|
67
68
|
braindecode/models/tcn.py,sha256=SQu56H9zdbcbbDIXZVgZtJg7es8CRAJ7z-IBnmf4UWM,8158
|
|
68
69
|
braindecode/models/tidnet.py,sha256=HSUL1al6gaRbJ-BRYAAs4KDvLuKEvh0NnBfAsPeWMpM,11837
|
|
69
70
|
braindecode/models/tsinception.py,sha256=nnQxzpqRy9FPuN5xgh9fNQ386VbreQ_nZBSFNkSfal0,10356
|
|
70
|
-
braindecode/models/usleep.py,sha256=
|
|
71
|
-
braindecode/models/util.py,sha256=
|
|
71
|
+
braindecode/models/usleep.py,sha256=oZv2Z78d2jfyyh-LbRBSgGfWjP8YugcXEHvQAENM_Q8,17296
|
|
72
|
+
braindecode/models/util.py,sha256=nrYBdd0FTCoYxgg21oz1UlW-PACx-0-_EyvMQua0QI8,5414
|
|
72
73
|
braindecode/modules/__init__.py,sha256=PD2LpeSHWW_MgEef7-G8ief5gheGObzsIoacchxWuyA,1756
|
|
73
74
|
braindecode/modules/activation.py,sha256=lTO2IjZWBDeXZ4ZVDgLmTDmxHdqyAny3Fsy07HY9tmQ,1466
|
|
74
|
-
braindecode/modules/attention.py,sha256=
|
|
75
|
-
braindecode/modules/blocks.py,sha256=
|
|
75
|
+
braindecode/modules/attention.py,sha256=N-GYLyDV5crKFg08x-lkosMjaOTJv8lk_2p1Jkh_PdU,24142
|
|
76
|
+
braindecode/modules/blocks.py,sha256=M_jWtr9kNOP-hZVVzb9hj-jsSV1mvv-eX1qtV5MacEU,3617
|
|
76
77
|
braindecode/modules/convolution.py,sha256=gZMMOa-2gy1nfduA_j2ezgdIdq5Bi2PtonNomWA4D8k,8481
|
|
77
|
-
braindecode/modules/filter.py,sha256=
|
|
78
|
-
braindecode/modules/layers.py,sha256=
|
|
78
|
+
braindecode/modules/filter.py,sha256=8Li7AYQeN5D2A0Q14m2LDlQBZJbVZoiH50A2EkGgqZc,25228
|
|
79
|
+
braindecode/modules/layers.py,sha256=LqkXuSaSPKD9qWBy7jYLJ9lBSHObYsmwfgGEFFZ6xq0,3659
|
|
79
80
|
braindecode/modules/linear.py,sha256=pNhSUU0u-IGEUCjAfEDq_TJWnIJMWuOk7Y5L-7I8Meg,1702
|
|
80
81
|
braindecode/modules/parametrization.py,sha256=sTvV21-sdpqpiY2PzwDebi7SeEvkFw8yDgA6OqJDo34,1310
|
|
81
82
|
braindecode/modules/stats.py,sha256=ETqZH6PPyYCss2PKBDNrO4uUeijR4bxvjCQCXjNJkH4,2398
|
|
82
83
|
braindecode/modules/util.py,sha256=tVXEhzeTsYrr_wZ5CiXaq3VYGtC5TmGEEW2hMYjTQAE,2609
|
|
83
84
|
braindecode/modules/wrapper.py,sha256=Z-aZ4wxA0psYefMOfj03r7D1XjD4az6GpZpaQoDPJv0,2421
|
|
84
|
-
braindecode/preprocessing/__init__.py,sha256=
|
|
85
|
+
braindecode/preprocessing/__init__.py,sha256=Odxj0HsNW-PTT_LSE87hVBz_8isrAWbGgAeZCaNRAUw,1336
|
|
86
|
+
braindecode/preprocessing/eegprep_preprocess.py,sha256=F3zJ76ww150czRZ5m70jj-6xytA3fjlivfUwHpLoYLY,54829
|
|
85
87
|
braindecode/preprocessing/mne_preprocess.py,sha256=_Jczaitqbx16utsUOhnonEcoExf6jPsWNwVOVvoKFfU,2210
|
|
86
|
-
braindecode/preprocessing/preprocess.py,sha256=
|
|
87
|
-
braindecode/preprocessing/
|
|
88
|
+
braindecode/preprocessing/preprocess.py,sha256=KV8CXOyv7Ns2dAQJfz6p3h5Ird-kCb9-ySA_nP7urb0,17811
|
|
89
|
+
braindecode/preprocessing/util.py,sha256=vshClUYXas0m6ZS-o1ld28g38ZN_6xraCz-Gn9LxHjo,5649
|
|
90
|
+
braindecode/preprocessing/windowers.py,sha256=AABYuMNNkU5Qf8EC-atSuAvoIwlMGzM1AkXLOwH0TA0,36837
|
|
88
91
|
braindecode/samplers/__init__.py,sha256=TLuO6gXv2WioJdX671MI_CHVSsOfbjnly1Xv9K3_WdA,452
|
|
89
|
-
braindecode/samplers/base.py,sha256=
|
|
92
|
+
braindecode/samplers/base.py,sha256=PTa4gGAKXH1Tnx4vBXBAb43x7wQKVvqK1mlM_zE3yY4,15133
|
|
90
93
|
braindecode/samplers/ssl.py,sha256=C-FKopnbncN_-spQPCrgljY5Qds4fgTLr2TG3s_-QqU,9146
|
|
91
94
|
braindecode/training/__init__.py,sha256=sxtfI6MgxX3aP03EFc0wJYA37uULoL9SQyUao1Oxyn0,523
|
|
92
95
|
braindecode/training/callbacks.py,sha256=LqXqzJd6s3w0pvAKy9TEVTxWwVRyWNEu2uyWVsvb9RQ,839
|
|
@@ -95,9 +98,9 @@ braindecode/training/scoring.py,sha256=WRkwqbitA3m_dzRnGp2ZIZPge5Nhx9gAEQhIHzeH4
|
|
|
95
98
|
braindecode/visualization/__init__.py,sha256=4EER_xHqZIDzEvmgUEm7K1bgNKpyZAIClR9ZCkMuY4M,240
|
|
96
99
|
braindecode/visualization/confusion_matrices.py,sha256=qIWMLEHow5CJ7PhGggD8mnD55Le6xhma9HSzt4R33fc,9509
|
|
97
100
|
braindecode/visualization/gradients.py,sha256=KZo-GA0uwiwty2_94j2IjmCR2SKcfPb1Bi3sQq7vpTk,2170
|
|
98
|
-
braindecode-1.3.0.
|
|
99
|
-
braindecode-1.3.0.
|
|
100
|
-
braindecode-1.3.0.
|
|
101
|
-
braindecode-1.3.0.
|
|
102
|
-
braindecode-1.3.0.
|
|
103
|
-
braindecode-1.3.0.
|
|
101
|
+
braindecode-1.3.0.dev183667303.dist-info/licenses/LICENSE.txt,sha256=7rg7k6hyj8m9whQ7dpKbqnCssoOEx_Mbtqb4uSOjljE,1525
|
|
102
|
+
braindecode-1.3.0.dev183667303.dist-info/licenses/NOTICE.txt,sha256=sOxuTbalPxTM8H6VqtvGbXCt_BoOF7JevEYG_knqbm4,620
|
|
103
|
+
braindecode-1.3.0.dev183667303.dist-info/METADATA,sha256=SOdhWdjFEtpA4WyD_8AhQ0oLlYTQfZlwQcfZywYZlW4,7307
|
|
104
|
+
braindecode-1.3.0.dev183667303.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
105
|
+
braindecode-1.3.0.dev183667303.dist-info/top_level.txt,sha256=pHsWQmSy0uhIez62-HA9j0iaXKvSbUL39ifFRkFnChA,12
|
|
106
|
+
braindecode-1.3.0.dev183667303.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{braindecode-1.3.0.dev180851780.dist-info → braindecode-1.3.0.dev183667303.dist-info}/top_level.txt
RENAMED
|
File without changes
|