Four smaller defects found while running every MOABB dataset through its default paradigm (a 145-dataset sweep, one subject at a time). Grouped because each is small; happy to split if you prefer.
1. BNCI2022_001: interval=[0, 90] applied to instantaneous events → 364 GiB allocation
moabb/datasets/bnci/bnci_2022_001.py:664-671
events={
"trajectory_start": 1,
"waypoint_miss": 16,
"waypoint_hit": 48,
"trajectory_end": 255,
},
interval=[0, 90], # Approximately 90 seconds per trajectory
The 90-second window is right for trajectory_start, but waypoint_hit/waypoint_miss/trajectory_end are point events and there are tens of thousands of them. Epoching all four at 90 s gives:
MemoryError: Unable to allocate 364. GiB for an array with shape (33114, 64, 23041)
33,114 events x 90 s = 828 hours of epochs per subject, from a recording that is nowhere near that long. This is not a machine-size problem — no amount of RAM makes 828 h/subject the intended result. Either the waypoint events need their own (short) interval, or they should not be in the epoching event set.
2. Kaneshiro2015 is tagged paradigm="p300" but has no P300 events
moabb/datasets/kaneshiro2015.py:101 (and :146) sets paradigm="p300", while _EVENTS (:36) is six object categories:
_EVENTS = {"human_body": 1, "human_face": 2, "animal_body": 3,
"animal_face": 4, "fruit_vegetable": 5, "inanimate_object": 6}
The P300 paradigm needs Target/NonTarget, so the dataset fails its own declared paradigm for every subject:
AssertionError: Dataset Kaneshiro2015 is not valid for paradigm
This looks like it should be a 6-class visual-categorisation dataset, not p300.
3. RestingStateToP300Adapter cannot be constructed with defaults
moabb/paradigms/resting_state.py:51 defaults events=None, and used_events() then iterates it:
def used_events(self, dataset):
return {ev: dataset.event_id[ev] for ev in self.events} # TypeError when None
So RestingStateToP300Adapter() raises. Every in-repo usage — examples, tests — passes events=list(dataset.event_id.keys()), which suggests that is the intended default and could simply be the fallback when events is None.
4. MartinezCagigal2023Pary subject 16 has an inconsistent epoch length
15 of 16 subjects process fine (404,550 epochs); subject 16 fails:
ValueError: all the input array dimensions except for the concatenation axis must match
exactly, but along dimension 2, the array at index 0 has size 601 and the array at index N differs
Subject 16's upstream archive is also ~110 MB against ~60 MB for the others, so this may be an upstream inconsistency rather than a MOABB bug — flagging it so it is at least known.
Environment: MOABB main (6eb58f6), each dataset run per-subject under its default paradigm with default parameters.
Four smaller defects found while running every MOABB dataset through its default paradigm (a 145-dataset sweep, one subject at a time). Grouped because each is small; happy to split if you prefer.
1.
BNCI2022_001:interval=[0, 90]applied to instantaneous events → 364 GiB allocationmoabb/datasets/bnci/bnci_2022_001.py:664-671The 90-second window is right for
trajectory_start, butwaypoint_hit/waypoint_miss/trajectory_endare point events and there are tens of thousands of them. Epoching all four at 90 s gives:33,114 events x 90 s = 828 hours of epochs per subject, from a recording that is nowhere near that long. This is not a machine-size problem — no amount of RAM makes 828 h/subject the intended result. Either the waypoint events need their own (short) interval, or they should not be in the epoching event set.
2.
Kaneshiro2015is taggedparadigm="p300"but has no P300 eventsmoabb/datasets/kaneshiro2015.py:101(and:146) setsparadigm="p300", while_EVENTS(:36) is six object categories:The P300 paradigm needs
Target/NonTarget, so the dataset fails its own declared paradigm for every subject:This looks like it should be a 6-class visual-categorisation dataset, not
p300.3.
RestingStateToP300Adaptercannot be constructed with defaultsmoabb/paradigms/resting_state.py:51defaultsevents=None, andused_events()then iterates it:So
RestingStateToP300Adapter()raises. Every in-repo usage — examples, tests — passesevents=list(dataset.event_id.keys()), which suggests that is the intended default and could simply be the fallback whenevents is None.4.
MartinezCagigal2023Parysubject 16 has an inconsistent epoch length15 of 16 subjects process fine (404,550 epochs); subject 16 fails:
Subject 16's upstream archive is also ~110 MB against ~60 MB for the others, so this may be an upstream inconsistency rather than a MOABB bug — flagging it so it is at least known.
Environment: MOABB
main(6eb58f6), each dataset run per-subject under its default paradigm with default parameters.