eegdash 0.3.6.dev183416654__py3-none-any.whl → 0.3.7.dev104__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 eegdash might be problematic. Click here for more details.

eegdash/__init__.py CHANGED
@@ -1,10 +1,11 @@
1
1
  from .api import EEGDash, EEGDashDataset
2
2
  from .dataset import EEGChallengeDataset
3
+ from .hbn import preprocessing # noqa: F401
3
4
  from .utils import __init__mongo_client
4
5
 
5
6
  __init__mongo_client()
6
7
 
7
8
 
8
- __all__ = ["EEGDash", "EEGDashDataset", "EEGChallengeDataset"]
9
+ __all__ = ["EEGDash", "EEGDashDataset", "EEGChallengeDataset", "preprocessing"]
9
10
 
10
- __version__ = "0.3.6.dev183416654"
11
+ __version__ = "0.3.7.dev104"
eegdash/api.py CHANGED
@@ -17,6 +17,7 @@ from s3fs import S3FileSystem
17
17
 
18
18
  from braindecode.datasets import BaseConcatDataset
19
19
 
20
+ from .const import RELEASE_TO_OPENNEURO_DATASET_MAP
20
21
  from .data_config import config as data_config
21
22
  from .data_utils import EEGBIDSDataset, EEGDashBaseDataset
22
23
  from .mongodb import MongoConnectionManager
@@ -710,6 +711,7 @@ class EEGDashDataset(BaseConcatDataset):
710
711
  eeg_dash_instance=None,
711
712
  records: list[dict] | None = None,
712
713
  offline_mode: bool = False,
714
+ n_jobs: int = -1,
713
715
  **kwargs,
714
716
  ):
715
717
  """Create a new EEGDashDataset from a given query or local BIDS dataset directory
@@ -758,6 +760,8 @@ class EEGDashDataset(BaseConcatDataset):
758
760
  offline_mode : bool
759
761
  If True, do not attempt to query MongoDB at all. This is useful if you want to
760
762
  work with a local cache only, or if you are offline.
763
+ n_jobs : int
764
+ The number of jobs to run in parallel (default is -1, meaning using all processors).
761
765
  kwargs : dict
762
766
  Additional keyword arguments to be passed to the EEGDashBaseDataset
763
767
  constructor.
@@ -780,7 +784,22 @@ class EEGDashDataset(BaseConcatDataset):
780
784
  raise ValueError("You must provide a 'dataset' argument")
781
785
 
782
786
  self.data_dir = self.cache_dir / self.query["dataset"]
783
-
787
+ if self.query["dataset"] in RELEASE_TO_OPENNEURO_DATASET_MAP.values():
788
+ warn(
789
+ "If you are not participating in the competition, you can ignore this warning!"
790
+ "\n\n"
791
+ "EEG 2025 Competition Data Notice:\n"
792
+ "---------------------------------\n"
793
+ " You are loading the dataset that is used in the EEG 2025 Competition:\n"
794
+ "IMPORTANT: The data accessed via `EEGDashDataset` is NOT identical to what you get from `EEGChallengeDataset` object directly.\n"
795
+ "and it is not what you will use for the competition. Downsampling and filtering were applied to the data"
796
+ "to allow more people to participate.\n"
797
+ "\n"
798
+ "If you are participating in the competition, always use `EEGChallengeDataset` to ensure consistency with the challenge data.\n"
799
+ "\n",
800
+ UserWarning,
801
+ module="eegdash",
802
+ )
784
803
  _owns_client = False
785
804
  if self.eeg_dash is None and records is None:
786
805
  self.eeg_dash = EEGDash()
@@ -801,11 +820,12 @@ class EEGDashDataset(BaseConcatDataset):
801
820
  elif offline_mode: # only assume local data is complete if in offline mode
802
821
  if self.data_dir.exists():
803
822
  # This path loads from a local directory and is not affected by DB query logic
804
- datasets = self.load_bids_dataset(
823
+ datasets = self.load_bids_daxtaset(
805
824
  dataset=self.query["dataset"],
806
825
  data_dir=self.data_dir,
807
826
  description_fields=description_fields,
808
827
  s3_bucket=s3_bucket,
828
+ n_jobs=n_jobs,
809
829
  **base_dataset_kwargs,
810
830
  )
811
831
  else:
@@ -898,6 +918,7 @@ class EEGDashDataset(BaseConcatDataset):
898
918
  data_dir: str | Path,
899
919
  description_fields: list[str],
900
920
  s3_bucket: str | None = None,
921
+ n_jobs: int = -1,
901
922
  **kwargs,
902
923
  ):
903
924
  """Helper method to load a single local BIDS dataset and return it as a list of
@@ -912,13 +933,17 @@ class EEGDashDataset(BaseConcatDataset):
912
933
  description_fields : list[str]
913
934
  A list of fields to be extracted from the dataset records
914
935
  and included in the returned dataset description(s).
936
+ s3_bucket : str | None
937
+ The S3 bucket to upload the dataset files to (if any).
938
+ n_jobs : int
939
+ The number of jobs to run in parallel (default is -1, meaning using all processors).
915
940
 
916
941
  """
917
942
  bids_dataset = EEGBIDSDataset(
918
943
  data_dir=data_dir,
919
944
  dataset=dataset,
920
945
  )
921
- datasets = Parallel(n_jobs=-1, prefer="threads", verbose=1)(
946
+ datasets = Parallel(n_jobs=n_jobs, prefer="threads", verbose=1)(
922
947
  delayed(self.get_base_dataset_from_bids_file)(
923
948
  bids_dataset=bids_dataset,
924
949
  bids_file=bids_file,
eegdash/const.py ADDED
@@ -0,0 +1,258 @@
1
+ RELEASE_TO_OPENNEURO_DATASET_MAP = {
2
+ "R11": "ds005516",
3
+ "R10": "ds005515",
4
+ "R9": "ds005514",
5
+ "R8": "ds005512",
6
+ "R7": "ds005511",
7
+ "R6": "ds005510",
8
+ "R4": "ds005508",
9
+ "R5": "ds005509",
10
+ "R3": "ds005507",
11
+ "R2": "ds005506",
12
+ "R1": "ds005505",
13
+ }
14
+
15
+ SUBJECT_MINI_RELEASE_MAP = {
16
+ "R11": [
17
+ "NDARAB678VYW",
18
+ "NDARAG788YV9",
19
+ "NDARAM946HJE",
20
+ "NDARAY977BZT",
21
+ "NDARAZ532KK0",
22
+ "NDARCE912ZXW",
23
+ "NDARCM214WFE",
24
+ "NDARDL033XRG",
25
+ "NDARDT889RT9",
26
+ "NDARDZ794ZVP",
27
+ "NDAREV869CPW",
28
+ "NDARFN221WW5",
29
+ "NDARFV289RKB",
30
+ "NDARFY623ZTE",
31
+ "NDARGA890MKA",
32
+ "NDARHN206XY3",
33
+ "NDARHP518FUR",
34
+ "NDARJL292RYV",
35
+ "NDARKM199DXW",
36
+ "NDARKW236TN7",
37
+ ],
38
+ "R10": [
39
+ "NDARAR935TGZ",
40
+ "NDARAV474ADJ",
41
+ "NDARCB869VM8",
42
+ "NDARCJ667UPL",
43
+ "NDARCM677TC1",
44
+ "NDARET671FTC",
45
+ "NDARKM061NHZ",
46
+ "NDARLD501HDK",
47
+ "NDARLL176DJR",
48
+ "NDARMT791WDH",
49
+ "NDARMW299ZAB",
50
+ "NDARNC405WJA",
51
+ "NDARNP962TJK",
52
+ "NDARPB967KU7",
53
+ "NDARRU560AGK",
54
+ "NDARTB173LY2",
55
+ "NDARUW377KAE",
56
+ "NDARVH565FX9",
57
+ "NDARVP799KGY",
58
+ "NDARVY962GB5",
59
+ ],
60
+ "R9": [
61
+ "NDARAC589YMB",
62
+ "NDARAC853CR6",
63
+ "NDARAH239PGG",
64
+ "NDARAL897CYV",
65
+ "NDARAN160GUF",
66
+ "NDARAP049KXJ",
67
+ "NDARAP457WB5",
68
+ "NDARAW216PM7",
69
+ "NDARBA004KBT",
70
+ "NDARBD328NUQ",
71
+ "NDARBF042LDM",
72
+ "NDARBH019KPD",
73
+ "NDARBH728DFK",
74
+ "NDARBM370JCB",
75
+ "NDARBU183TDJ",
76
+ "NDARBW971DCW",
77
+ "NDARBZ444ZHK",
78
+ "NDARCC620ZFT",
79
+ "NDARCD182XT1",
80
+ "NDARCK113CJM",
81
+ ],
82
+ "R8": [
83
+ "NDARAB514MAJ",
84
+ "NDARAD571FLB",
85
+ "NDARAF003VCL",
86
+ "NDARAG191AE8",
87
+ "NDARAJ977PRJ",
88
+ "NDARAP912JK3",
89
+ "NDARAV454VF0",
90
+ "NDARAY298THW",
91
+ "NDARBJ375VP4",
92
+ "NDARBT436PMT",
93
+ "NDARBV630BK6",
94
+ "NDARCB627KDN",
95
+ "NDARCC059WTH",
96
+ "NDARCM953HKD",
97
+ "NDARCN681CXW",
98
+ "NDARCT889DMB",
99
+ "NDARDJ204EPU",
100
+ "NDARDJ544BU5",
101
+ "NDARDP292DVC",
102
+ "NDARDW178AC6",
103
+ ],
104
+ "R7": [
105
+ "NDARAY475AKD",
106
+ "NDARBW026UGE",
107
+ "NDARCK162REX",
108
+ "NDARCK481KRH",
109
+ "NDARCV378MMX",
110
+ "NDARCX462NVA",
111
+ "NDARDJ970ELG",
112
+ "NDARDU617ZW1",
113
+ "NDAREM609ZXW",
114
+ "NDAREW074ZM2",
115
+ "NDARFE555KXB",
116
+ "NDARFT176NJP",
117
+ "NDARGK442YHH",
118
+ "NDARGM439FZD",
119
+ "NDARGT634DUJ",
120
+ "NDARHE283KZN",
121
+ "NDARHG260BM9",
122
+ "NDARHL684WYU",
123
+ "NDARHN224TPA",
124
+ "NDARHP841RMR",
125
+ ],
126
+ "R6": [
127
+ "NDARAD224CRB",
128
+ "NDARAE301XTM",
129
+ "NDARAT680GJA",
130
+ "NDARCA578CEB",
131
+ "NDARDZ147ETZ",
132
+ "NDARFL793LDE",
133
+ "NDARFX710UZA",
134
+ "NDARGE994BMX",
135
+ "NDARGP191YHN",
136
+ "NDARGV436PFT",
137
+ "NDARHF545HFW",
138
+ "NDARHP039DBU",
139
+ "NDARHT774ZK1",
140
+ "NDARJA830BYV",
141
+ "NDARKB614KGY",
142
+ "NDARKM250ET5",
143
+ "NDARKZ085UKQ",
144
+ "NDARLB581AXF",
145
+ "NDARNJ899HW7",
146
+ "NDARRZ606EDP",
147
+ ],
148
+ "R4": [
149
+ "NDARAC350BZ0",
150
+ "NDARAD615WLJ",
151
+ "NDARAG584XLU",
152
+ "NDARAH503YG1",
153
+ "NDARAX272ZJL",
154
+ "NDARAY461TZZ",
155
+ "NDARBC734UVY",
156
+ "NDARBL444FBA",
157
+ "NDARBT640EBN",
158
+ "NDARBU098PJT",
159
+ "NDARBU928LV0",
160
+ "NDARBV059CGE",
161
+ "NDARCG037CX4",
162
+ "NDARCG947ZC0",
163
+ "NDARCH001CN2",
164
+ "NDARCU001ZN7",
165
+ "NDARCW497XW2",
166
+ "NDARCX053GU5",
167
+ "NDARDF568GL5",
168
+ "NDARDJ092YKH",
169
+ ],
170
+ "R5": [
171
+ "NDARAH793FBF",
172
+ "NDARAJ689BVN",
173
+ "NDARAP785CTE",
174
+ "NDARAU708TL8",
175
+ "NDARBE091BGD",
176
+ "NDARBE103DHM",
177
+ "NDARBF851NH6",
178
+ "NDARBH228RDW",
179
+ "NDARBJ674TVU",
180
+ "NDARBM433VER",
181
+ "NDARCA740UC8",
182
+ "NDARCU633GCZ",
183
+ "NDARCU736GZ1",
184
+ "NDARCU744XWL",
185
+ "NDARDC843HHM",
186
+ "NDARDH086ZKK",
187
+ "NDARDL305BT8",
188
+ "NDARDU853XZ6",
189
+ "NDARDV245WJG",
190
+ "NDAREC480KFA",
191
+ ],
192
+ "R3": [
193
+ "NDARAA948VFH",
194
+ "NDARAD774HAZ",
195
+ "NDARAE828CML",
196
+ "NDARAG340ERT",
197
+ "NDARBA839HLG",
198
+ "NDARBE641DGZ",
199
+ "NDARBG574KF4",
200
+ "NDARBM642JFT",
201
+ "NDARCL016NHB",
202
+ "NDARCV944JA6",
203
+ "NDARCY178KJP",
204
+ "NDARDY150ZP9",
205
+ "NDAREC542MH3",
206
+ "NDAREK549XUQ",
207
+ "NDAREM887YY8",
208
+ "NDARFA815FXE",
209
+ "NDARFF644ZGD",
210
+ "NDARFV557XAA",
211
+ "NDARFV780ABD",
212
+ "NDARGB102NWJ",
213
+ ],
214
+ "R2": [
215
+ "NDARAB793GL3",
216
+ "NDARAM675UR8",
217
+ "NDARBM839WR5",
218
+ "NDARBU730PN8",
219
+ "NDARCT974NAJ",
220
+ "NDARCW933FD5",
221
+ "NDARCZ770BRG",
222
+ "NDARDW741HCF",
223
+ "NDARDZ058NZN",
224
+ "NDAREC377AU2",
225
+ "NDAREM500WWH",
226
+ "NDAREV527ZRF",
227
+ "NDAREV601CE7",
228
+ "NDARFF070XHV",
229
+ "NDARFR108JNB",
230
+ "NDARFT305CG1",
231
+ "NDARGA056TMW",
232
+ "NDARGH775KF5",
233
+ "NDARGJ878ZP4",
234
+ "NDARHA387FPM",
235
+ ],
236
+ "R1": [
237
+ "NDARAC904DMU",
238
+ "NDARAM704GKZ",
239
+ "NDARAP359UM6",
240
+ "NDARBD879MBX",
241
+ "NDARBH024NH2",
242
+ "NDARBK082PDD",
243
+ "NDARCA153NKE",
244
+ "NDARCE721YB5",
245
+ "NDARCJ594BWQ",
246
+ "NDARCN669XPR",
247
+ "NDARCW094JCG",
248
+ "NDARCZ947WU5",
249
+ "NDARDH670PXH",
250
+ "NDARDL511UND",
251
+ "NDARDU986RBM",
252
+ "NDAREM731BYM",
253
+ "NDAREN519BLJ",
254
+ "NDARFK610GY5",
255
+ "NDARFT581ZW5",
256
+ "NDARFW972KFQ",
257
+ ],
258
+ }
eegdash/dataset.py CHANGED
@@ -1,266 +1,13 @@
1
+ import logging
1
2
  from pathlib import Path
2
3
 
4
+ from mne.utils import warn
5
+
3
6
  from .api import EEGDashDataset
7
+ from .const import RELEASE_TO_OPENNEURO_DATASET_MAP, SUBJECT_MINI_RELEASE_MAP
4
8
  from .registry import register_openneuro_datasets
5
9
 
6
- RELEASE_TO_OPENNEURO_DATASET_MAP = {
7
- "R11": "ds005516",
8
- "R10": "ds005515",
9
- "R9": "ds005514",
10
- "R8": "ds005512",
11
- "R7": "ds005511",
12
- "R6": "ds005510",
13
- "R4": "ds005508",
14
- "R5": "ds005509",
15
- "R3": "ds005507",
16
- "R2": "ds005506",
17
- "R1": "ds005505",
18
- }
19
-
20
- SUBJECT_MINI_RELEASE_MAP = {
21
- "R11": [
22
- "NDARAB678VYW",
23
- "NDARAG788YV9",
24
- "NDARAM946HJE",
25
- "NDARAY977BZT",
26
- "NDARAZ532KK0",
27
- "NDARCE912ZXW",
28
- "NDARCM214WFE",
29
- "NDARDL033XRG",
30
- "NDARDT889RT9",
31
- "NDARDZ794ZVP",
32
- "NDAREV869CPW",
33
- "NDARFN221WW5",
34
- "NDARFV289RKB",
35
- "NDARFY623ZTE",
36
- "NDARGA890MKA",
37
- "NDARHN206XY3",
38
- "NDARHP518FUR",
39
- "NDARJL292RYV",
40
- "NDARKM199DXW",
41
- "NDARKW236TN7",
42
- ],
43
- "R10": [
44
- "NDARAR935TGZ",
45
- "NDARAV474ADJ",
46
- "NDARCB869VM8",
47
- "NDARCJ667UPL",
48
- "NDARCM677TC1",
49
- "NDARET671FTC",
50
- "NDARKM061NHZ",
51
- "NDARLD501HDK",
52
- "NDARLL176DJR",
53
- "NDARMT791WDH",
54
- "NDARMW299ZAB",
55
- "NDARNC405WJA",
56
- "NDARNP962TJK",
57
- "NDARPB967KU7",
58
- "NDARRU560AGK",
59
- "NDARTB173LY2",
60
- "NDARUW377KAE",
61
- "NDARVH565FX9",
62
- "NDARVP799KGY",
63
- "NDARVY962GB5",
64
- ],
65
- "R9": [
66
- "NDARAC589YMB",
67
- "NDARAC853CR6",
68
- "NDARAH239PGG",
69
- "NDARAL897CYV",
70
- "NDARAN160GUF",
71
- "NDARAP049KXJ",
72
- "NDARAP457WB5",
73
- "NDARAW216PM7",
74
- "NDARBA004KBT",
75
- "NDARBD328NUQ",
76
- "NDARBF042LDM",
77
- "NDARBH019KPD",
78
- "NDARBH728DFK",
79
- "NDARBM370JCB",
80
- "NDARBU183TDJ",
81
- "NDARBW971DCW",
82
- "NDARBZ444ZHK",
83
- "NDARCC620ZFT",
84
- "NDARCD182XT1",
85
- "NDARCK113CJM",
86
- ],
87
- "R8": [
88
- "NDARAB514MAJ",
89
- "NDARAD571FLB",
90
- "NDARAF003VCL",
91
- "NDARAG191AE8",
92
- "NDARAJ977PRJ",
93
- "NDARAP912JK3",
94
- "NDARAV454VF0",
95
- "NDARAY298THW",
96
- "NDARBJ375VP4",
97
- "NDARBT436PMT",
98
- "NDARBV630BK6",
99
- "NDARCB627KDN",
100
- "NDARCC059WTH",
101
- "NDARCM953HKD",
102
- "NDARCN681CXW",
103
- "NDARCT889DMB",
104
- "NDARDJ204EPU",
105
- "NDARDJ544BU5",
106
- "NDARDP292DVC",
107
- "NDARDW178AC6",
108
- ],
109
- "R7": [
110
- "NDARAY475AKD",
111
- "NDARBW026UGE",
112
- "NDARCK162REX",
113
- "NDARCK481KRH",
114
- "NDARCV378MMX",
115
- "NDARCX462NVA",
116
- "NDARDJ970ELG",
117
- "NDARDU617ZW1",
118
- "NDAREM609ZXW",
119
- "NDAREW074ZM2",
120
- "NDARFE555KXB",
121
- "NDARFT176NJP",
122
- "NDARGK442YHH",
123
- "NDARGM439FZD",
124
- "NDARGT634DUJ",
125
- "NDARHE283KZN",
126
- "NDARHG260BM9",
127
- "NDARHL684WYU",
128
- "NDARHN224TPA",
129
- "NDARHP841RMR",
130
- ],
131
- "R6": [
132
- "NDARAD224CRB",
133
- "NDARAE301XTM",
134
- "NDARAT680GJA",
135
- "NDARCA578CEB",
136
- "NDARDZ147ETZ",
137
- "NDARFL793LDE",
138
- "NDARFX710UZA",
139
- "NDARGE994BMX",
140
- "NDARGP191YHN",
141
- "NDARGV436PFT",
142
- "NDARHF545HFW",
143
- "NDARHP039DBU",
144
- "NDARHT774ZK1",
145
- "NDARJA830BYV",
146
- "NDARKB614KGY",
147
- "NDARKM250ET5",
148
- "NDARKZ085UKQ",
149
- "NDARLB581AXF",
150
- "NDARNJ899HW7",
151
- "NDARRZ606EDP",
152
- ],
153
- "R4": [
154
- "NDARAC350BZ0",
155
- "NDARAD615WLJ",
156
- "NDARAG584XLU",
157
- "NDARAH503YG1",
158
- "NDARAX272ZJL",
159
- "NDARAY461TZZ",
160
- "NDARBC734UVY",
161
- "NDARBL444FBA",
162
- "NDARBT640EBN",
163
- "NDARBU098PJT",
164
- "NDARBU928LV0",
165
- "NDARBV059CGE",
166
- "NDARCG037CX4",
167
- "NDARCG947ZC0",
168
- "NDARCH001CN2",
169
- "NDARCU001ZN7",
170
- "NDARCW497XW2",
171
- "NDARCX053GU5",
172
- "NDARDF568GL5",
173
- "NDARDJ092YKH",
174
- ],
175
- "R5": [
176
- "NDARAH793FBF",
177
- "NDARAJ689BVN",
178
- "NDARAP785CTE",
179
- "NDARAU708TL8",
180
- "NDARBE091BGD",
181
- "NDARBE103DHM",
182
- "NDARBF851NH6",
183
- "NDARBH228RDW",
184
- "NDARBJ674TVU",
185
- "NDARBM433VER",
186
- "NDARCA740UC8",
187
- "NDARCU633GCZ",
188
- "NDARCU736GZ1",
189
- "NDARCU744XWL",
190
- "NDARDC843HHM",
191
- "NDARDH086ZKK",
192
- "NDARDL305BT8",
193
- "NDARDU853XZ6",
194
- "NDARDV245WJG",
195
- "NDAREC480KFA",
196
- ],
197
- "R3": [
198
- "NDARAA948VFH",
199
- "NDARAD774HAZ",
200
- "NDARAE828CML",
201
- "NDARAG340ERT",
202
- "NDARBA839HLG",
203
- "NDARBE641DGZ",
204
- "NDARBG574KF4",
205
- "NDARBM642JFT",
206
- "NDARCL016NHB",
207
- "NDARCV944JA6",
208
- "NDARCY178KJP",
209
- "NDARDY150ZP9",
210
- "NDAREC542MH3",
211
- "NDAREK549XUQ",
212
- "NDAREM887YY8",
213
- "NDARFA815FXE",
214
- "NDARFF644ZGD",
215
- "NDARFV557XAA",
216
- "NDARFV780ABD",
217
- "NDARGB102NWJ",
218
- ],
219
- "R2": [
220
- "NDARAB793GL3",
221
- "NDARAM675UR8",
222
- "NDARBM839WR5",
223
- "NDARBU730PN8",
224
- "NDARCT974NAJ",
225
- "NDARCW933FD5",
226
- "NDARCZ770BRG",
227
- "NDARDW741HCF",
228
- "NDARDZ058NZN",
229
- "NDAREC377AU2",
230
- "NDAREM500WWH",
231
- "NDAREV527ZRF",
232
- "NDAREV601CE7",
233
- "NDARFF070XHV",
234
- "NDARFR108JNB",
235
- "NDARFT305CG1",
236
- "NDARGA056TMW",
237
- "NDARGH775KF5",
238
- "NDARGJ878ZP4",
239
- "NDARHA387FPM",
240
- ],
241
- "R1": [
242
- "NDARAC904DMU",
243
- "NDARAM704GKZ",
244
- "NDARAP359UM6",
245
- "NDARBD879MBX",
246
- "NDARBH024NH2",
247
- "NDARBK082PDD",
248
- "NDARCA153NKE",
249
- "NDARCE721YB5",
250
- "NDARCJ594BWQ",
251
- "NDARCN669XPR",
252
- "NDARCW094JCG",
253
- "NDARCZ947WU5",
254
- "NDARDH670PXH",
255
- "NDARDL511UND",
256
- "NDARDU986RBM",
257
- "NDAREM731BYM",
258
- "NDAREN519BLJ",
259
- "NDARFK610GY5",
260
- "NDARFT581ZW5",
261
- "NDARFW972KFQ",
262
- ],
263
- }
10
+ logger = logging.getLogger("eegdash")
264
11
 
265
12
 
266
13
  class EEGChallengeDataset(EEGDashDataset):
@@ -334,6 +81,24 @@ class EEGChallengeDataset(EEGDashDataset):
334
81
  else:
335
82
  s3_bucket = f"{s3_bucket}/{release}_L100_bdf"
336
83
 
84
+ warn(
85
+ "\n\n"
86
+ "[EEGChallengeDataset] EEG 2025 Competition Data Notice:\n"
87
+ "-------------------------------------------------------\n"
88
+ "This object loads the HBN dataset that has been preprocessed for the EEG Challenge:\n"
89
+ " - Downsampled from 500Hz to 100Hz\n"
90
+ " - Bandpass filtered (0.5–50 Hz)\n"
91
+ "\n"
92
+ "For full preprocessing details, see:\n"
93
+ " https://github.com/eeg2025/downsample-datasets\n"
94
+ "\n"
95
+ "IMPORTANT: The data accessed via `EEGChallengeDataset` is NOT identical to what you get from `EEGDashDataset` directly.\n"
96
+ "If you are participating in the competition, always use `EEGChallengeDataset` to ensure consistency with the challenge data.\n"
97
+ "\n",
98
+ UserWarning,
99
+ module="eegdash",
100
+ )
101
+
337
102
  super().__init__(
338
103
  dataset=RELEASE_TO_OPENNEURO_DATASET_MAP[release],
339
104
  query=query,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eegdash
3
- Version: 0.3.6.dev183416654
3
+ Version: 0.3.7.dev104
4
4
  Summary: EEG data for machine learning
5
5
  Author-email: Young Truong <dt.young112@gmail.com>, Arnaud Delorme <adelorme@gmail.com>, Aviv Dotan <avivd220@gmail.com>, Oren Shriki <oren70@gmail.com>, Bruno Aristimunha <b.aristimunha@gmail.com>
6
6
  License-Expression: GPL-3.0-only
@@ -1,11 +1,11 @@
1
- eegdash/__init__.py,sha256=CNB9QzZzygIs4P5KTbHSxUjEaGFIXWglPEizOr4jLag,247
2
- eegdash/api.py,sha256=_7Ne1uo9ozYgDewuNOGmu79600SJoAGXHHDgyD-eDVw,37460
1
+ eegdash/__init__.py,sha256=A70xhDRmnPwJULFWRxt9Nx-AbZRTh13WJoBDyzviKHQ,303
2
+ eegdash/api.py,sha256=7QTComMkbOdHumlzdOrNV2kqHy9R9HG2Gefo_eLBy-U,38948
3
+ eegdash/const.py,sha256=syrXxcqFyl4dxAetOuhPyCYZ2xgilsLunJRVzx9TCeA,5806
3
4
  eegdash/data_config.py,sha256=OS6ERO-jHrnEOfMJUehY7ieABdsRw_qWzOKJ4pzSfqw,1323
4
5
  eegdash/data_utils.py,sha256=mi9pscui-BPpRH9ovRtGWiSwHG5QN6K_IvJdYaING2I,27679
5
- eegdash/dataset.py,sha256=WoKVmPoBIiRNn5h5ICUMMg5uUa2cMrc5ymChdfYV_f4,9469
6
+ eegdash/dataset.py,sha256=6Tgj_1j4DNoaPoMnhtancDtPG6bxODnbPlXkDzGjtrQ,4716
6
7
  eegdash/dataset_summary.csv,sha256=9Rw9PawiQ9a_OBRJYKarrzb4UFSGpkGULhYB0MYUieE,14740
7
8
  eegdash/mongodb.py,sha256=GD3WgA253oFgpzOHrYaj4P1mRjNtDMT5Oj4kVvHswjI,2006
8
- eegdash/preprocessing.py,sha256=7S_TTRKPKEk47tTnh2D6WExBt4cctAMxUxGDjJqq5lU,2221
9
9
  eegdash/registry.py,sha256=jBR2tGE4YJL4yhbZcn2CN4jaC-ttyVN0wmsCR1uWzoU,4329
10
10
  eegdash/utils.py,sha256=wU9CBQZLW_LIQIBwhgQm5bU4X-rSsVNPdeF2iE4QGJ4,410
11
11
  eegdash/features/__init__.py,sha256=BXNhjvL4_SSFAY1lcP9nyGpkbJNtoOMH4AHlF6OyABo,4078
@@ -23,8 +23,8 @@ eegdash/features/feature_bank/dimensionality.py,sha256=j_Ds71Y1AbV2uLFQj8EuXQ4kz
23
23
  eegdash/features/feature_bank/signal.py,sha256=3Tb8z9gX7iZipxQJ9DSyy30JfdmW58kgvimSyZX74p8,3404
24
24
  eegdash/features/feature_bank/spectral.py,sha256=bNB7skusePs1gX7NOU6yRlw_Gr4UOCkO_ylkCgybzug,3319
25
25
  eegdash/features/feature_bank/utils.py,sha256=DGh-Q7-XFIittP7iBBxvsJaZrlVvuY5mw-G7q6C-PCI,1237
26
- eegdash-0.3.6.dev183416654.dist-info/licenses/LICENSE,sha256=asisR-xupy_NrQBFXnx6yqXeZcYWLvbAaiETl25iXT0,931
27
- eegdash-0.3.6.dev183416654.dist-info/METADATA,sha256=R99Rg04ca_IDFRTEuOtRiwd-aEvv4EW5BbwLcUOXoW4,10059
28
- eegdash-0.3.6.dev183416654.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
- eegdash-0.3.6.dev183416654.dist-info/top_level.txt,sha256=zavO69HQ6MyZM0aQMR2zUS6TAFc7bnN5GEpDpOpFZzU,8
30
- eegdash-0.3.6.dev183416654.dist-info/RECORD,,
26
+ eegdash-0.3.7.dev104.dist-info/licenses/LICENSE,sha256=asisR-xupy_NrQBFXnx6yqXeZcYWLvbAaiETl25iXT0,931
27
+ eegdash-0.3.7.dev104.dist-info/METADATA,sha256=vFsNOyHy0Bq1XBvV_aDoNLSdtuK4H4hzpvU67tfnRJE,10053
28
+ eegdash-0.3.7.dev104.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
+ eegdash-0.3.7.dev104.dist-info/top_level.txt,sha256=zavO69HQ6MyZM0aQMR2zUS6TAFc7bnN5GEpDpOpFZzU,8
30
+ eegdash-0.3.7.dev104.dist-info/RECORD,,
eegdash/preprocessing.py DELETED
@@ -1,63 +0,0 @@
1
- import logging
2
-
3
- import mne
4
- import numpy as np
5
-
6
- from braindecode.preprocessing import Preprocessor
7
-
8
- logger = logging.getLogger("eegdash")
9
-
10
-
11
- class hbn_ec_ec_reannotation(Preprocessor):
12
- """Preprocessor to reannotate the raw data for eyes open and eyes closed events.
13
-
14
- This processor is designed for HBN datasets.
15
-
16
- """
17
-
18
- def __init__(self):
19
- super().__init__(fn=self.transform, apply_on_array=False)
20
-
21
- def transform(self, raw):
22
- """Reannotate the raw data to create new events for eyes open and eyes closed
23
-
24
- This function modifies the raw MNE object by creating new events based on
25
- the existing annotations for "instructed_toCloseEyes" and "instructed_toOpenEyes".
26
- It generates new events every 2 seconds within specified time ranges after
27
- the original events, and replaces the existing annotations with these new events.
28
-
29
- Parameters
30
- ----------
31
- raw : mne.io.Raw
32
- The raw MNE object containing EEG data and annotations.
33
-
34
- """
35
- events, event_id = mne.events_from_annotations(raw)
36
-
37
- logger.info("Original events found with ids: %s", event_id)
38
-
39
- # Create new events array for 2-second segments
40
- new_events = []
41
- sfreq = raw.info["sfreq"]
42
- for event in events[events[:, 2] == event_id["instructed_toCloseEyes"]]:
43
- # For each original event, create events every 2 seconds from 15s to 29s after
44
- start_times = event[0] + np.arange(15, 29, 2) * sfreq
45
- new_events.extend([[int(t), 0, 1] for t in start_times])
46
-
47
- for event in events[events[:, 2] == event_id["instructed_toOpenEyes"]]:
48
- # For each original event, create events every 2 seconds from 5s to 19s after
49
- start_times = event[0] + np.arange(5, 19, 2) * sfreq
50
- new_events.extend([[int(t), 0, 2] for t in start_times])
51
-
52
- # replace events in raw
53
- new_events = np.array(new_events)
54
-
55
- annot_from_events = mne.annotations_from_events(
56
- events=new_events,
57
- event_desc={1: "eyes_closed", 2: "eyes_open"},
58
- sfreq=raw.info["sfreq"],
59
- )
60
-
61
- raw.set_annotations(annot_from_events)
62
-
63
- return raw