Summary
For Zhou2020, the S-subjects (1–12, 41 EEG channels) are loaded with placeholder channel names EEG1…EEG41 and no montage, whereas the A-subjects (13–20, 26 EEG channels) get real 10–20 names and standard_1005. Any channel-name- or position-based analysis (selecting C3/Cz/C4, sensorimotor ROIs, montage/topographies, Laplacian, etc.) therefore silently fails for 12 of the 20 subjects.
Where
moabb/datasets/zhou2020.py, _get_single_subject_data:
if subject <= 12:
n_eeg = _S_N_EEG # 41
ch_names = [f"EEG{i + 1}" for i in range(n_eeg)] # <-- generic placeholders
else:
n_eeg = _A_N_EEG # 26
ch_names = list(_26CH_NAMES) # real 10-20 names
and in _npz_to_raw the montage is only set when names are non-generic:
if ch_names[0] != "EEG1":
raw.set_montage(make_standard_montage("standard_1005"), on_missing="warn")
So the S-cohort has neither names nor positions.
Impact
12/20 subjects are unusable for any spatial/sensorimotor analysis. Downstream tooling that locates C3/Cz/C4 (or a sensorimotor strip) skips these subjects entirely.
What I checked (the names are genuinely not in the distributed data)
- Raw NPZ (Zenodo record 18988317): the
signal array is positional (46 cols = 41 EEG + 4 EOG + 1 trigger); there is no channel-name array.
- NEMAR BIDS mirror (nm000237):
sub-01/..._channels.tsv lists EEG1…EEG41 generically and there is no electrodes.tsv. (sub-13, an A-subject, correctly has 26 named channels.)
- Paper (Zhou et al., 2021, Front. Hum. Neurosci. 15:701091): documents only the 26 prior-selected electrodes (== the A-cohort
_26CH_NAMES), grouped into SMA/PMC/M1/S1 in Fig 1B. The full 41-channel layout for S-subjects is not given.
- IEEE DataPort / Zenodo description: only "41 EEG + 4 EOG".
Empirical note
I tested the natural guess that the 41 = the 26 selected + 15 extra (i.e. EEG1–26 == _26CH_NAMES, so C3=EEG14, Cz=EEG16, C4=EEG18). A μ-band (8–12 Hz) ERD lateralisation analysis (left- vs right-hand MI) refutes it: EEG14/16/18 are middle-ranked, not the motor channels, whereas an A-subject positive control (real names) shows the expected contralateral C3/C4 pattern. The lateralising channels in the S-cohort sit later in the sequence (≈EEG26–30), consistent with a standard front-to-back acquisition order (e.g. the 64-ch Neuroscan Quik-Cap default), but this cannot be confirmed from the distributed data alone.
Ask
Could the maintainers / data authors provide the ordered 41-channel montage used for the S-subjects (or confirm they follow the Neuroscan 64-ch Quik-Cap default order)? With that, zhou2020.py can set real names + standard_1005 for S-subjects and the whole dataset becomes spatially usable. I'm happy to open the PR once the layout is confirmed.
Summary
For
Zhou2020, the S-subjects (1–12, 41 EEG channels) are loaded with placeholder channel namesEEG1…EEG41and no montage, whereas the A-subjects (13–20, 26 EEG channels) get real 10–20 names andstandard_1005. Any channel-name- or position-based analysis (selecting C3/Cz/C4, sensorimotor ROIs, montage/topographies, Laplacian, etc.) therefore silently fails for 12 of the 20 subjects.Where
moabb/datasets/zhou2020.py,_get_single_subject_data:and in
_npz_to_rawthe montage is only set when names are non-generic:So the S-cohort has neither names nor positions.
Impact
12/20 subjects are unusable for any spatial/sensorimotor analysis. Downstream tooling that locates C3/Cz/C4 (or a sensorimotor strip) skips these subjects entirely.
What I checked (the names are genuinely not in the distributed data)
signalarray is positional (46 cols = 41 EEG + 4 EOG + 1 trigger); there is no channel-name array.sub-01/..._channels.tsvlistsEEG1…EEG41generically and there is noelectrodes.tsv. (sub-13, an A-subject, correctly has 26 named channels.)_26CH_NAMES), grouped into SMA/PMC/M1/S1 in Fig 1B. The full 41-channel layout for S-subjects is not given.Empirical note
I tested the natural guess that the 41 = the 26 selected + 15 extra (i.e.
EEG1–26 == _26CH_NAMES, soC3=EEG14, Cz=EEG16, C4=EEG18). A μ-band (8–12 Hz) ERD lateralisation analysis (left- vs right-hand MI) refutes it: EEG14/16/18 are middle-ranked, not the motor channels, whereas an A-subject positive control (real names) shows the expected contralateral C3/C4 pattern. The lateralising channels in the S-cohort sit later in the sequence (≈EEG26–30), consistent with a standard front-to-back acquisition order (e.g. the 64-ch Neuroscan Quik-Cap default), but this cannot be confirmed from the distributed data alone.Ask
Could the maintainers / data authors provide the ordered 41-channel montage used for the S-subjects (or confirm they follow the Neuroscan 64-ch Quik-Cap default order)? With that,
zhou2020.pycan set real names +standard_1005for S-subjects and the whole dataset becomes spatially usable. I'm happy to open the PR once the layout is confirmed.