mne-tools / mne-python

MNE: Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python
https://mne.tools
BSD 3-Clause "New" or "Revised" License
2.68k stars 1.31k forks source link

Wrong logic excluding event codes with just one event in read_raw_egi #11626

Open jackz314 opened 1 year ago

jackz314 commented 1 year ago

Description of the problem

I believe when creating a RawMFF object, the logic for excluding events with just one event is wrong (line 434), it rejects them if event.sum() <= 1, but event.sum() could be more than 1 since it contains the event id (1 to n_events), a more appropriate to do this would be something like np.count_nonzero(event) <= 1

Also, in the documentation for read_raw_egi, which uses RawMFF, it says

The event channels to be ignored when creating the synthetic trigger. Defaults to None. If None, channels that have more than one event and the sync and TREV channels will be ignored.

which I believe is also wrong.

I can submit a PR once this is confirmed.

Related, I think it might be helpful to keep events that only occur once, they could be important tags that indicate start/end of experiments for example, a suitable place might be in the annotations.

Steps to reproduce

Import raw mff files

Link to data

No response

Expected results

All one-shot events excluded

Actual results

Only the first one-shot event (with ID 0) is excluded

Additional information

Draft PR #11627

jackz314 commented 1 year ago

I also find the warning "Did not find any event code with more than one event." a bit confusing, I'm not sure why these one-shot events are preserved if none of the event codes have more than one event, maybe someone more familiar with behavior could help me understand? cc @ramonapariciog @agramfort