Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow opening epoched EEGLAB .set files without any events #6610

Open
alamkanak opened this issue Jul 29, 2019 · 14 comments
Open

Allow opening epoched EEGLAB .set files without any events #6610

alamkanak opened this issue Jul 29, 2019 · 14 comments
Assignees

Comments

@alamkanak
Copy link

It is obvious that when you have an epoched .set file exported from eeglab with no events in it, mne fails to load it with read_epochs_eeglab or read_raw_eeglab. When trying to open with read_epochs_eeglab, it throws the error:

IndexError: list index out of range

I also tried to open it by setting events parameter to empty array and None but it still failed. And when trying to open with read_raw_eeglab, it throws the error:

TypeError: The number of trials is 43. It must be 1 for raw files. Please use mne.io.read_epochs_eeglab if the .set file contains epochs.

I really need to open the epoched set file with no events in it.

@agramfort
Copy link
Member

agramfort commented Jul 29, 2019 via email

@alamkanak
Copy link
Author

@agramfort
Copy link
Member

agramfort commented Jul 29, 2019 via email

@mmagnuski
Copy link
Member

@agramfort Eeglab reader should work in this case too, I think (it would work in eeglab from what I remember). The easiest is if you rename both files so that eeg.data matches the name of the fdt file.

@alamkanak Which mne-python version are you using? There have been problems with no events some time ago but they were fixed. Can you reproduce the problem with mne-python master branch? Could you also paste the full error traceback when trying to open the file with read_epochs_eeglab?

@mmagnuski
Copy link
Member

Ok, I looked at the files. The reading fails on master due to the fact that this is an epochs file without events. Also the EEG.epoch field is empty. This is very uncommon, @alamkanak how did you obtain those files?

@mmagnuski mmagnuski changed the title Allow opening EEGLAB .set files without any events Allow opening epoched EEGLAB .set files without any events Jul 29, 2019
@alamkanak
Copy link
Author

@mmagnuski Thank you for looking into it. To obtain that file, I epoched the EEG from -1000ms to -100ms in eeglab. So the eeg signals end 100ms before the events. This is because I am only interested in that part of the signals. I had to crop that in eeglab due to a standard pipeline and I must not do that later with mne.

@mmagnuski
Copy link
Member

@alamkanak Thanks, which eeglab version were you using then? I am just wondering if eeglab always drops information about epoching events if they are outside of epoch's range (even in EEG.epoch). Maybe you know @jona-sassenhagen?
The problem with such epochs behavior is that because you no longer have any information about the events that were used in epoching you wouldn't be able to compare conditions etc. In fact, mne assumes that you always have event information if you have epoched eeglab data. However if this is standard eeglab behavior (not saving any event information for epoching events outside of epoch range) - then we should probably add support for this.
For now it would be easiest for you @alamkanak if you epoch -1000 to 0 ms for example. Then the event info will be retained and you would be able to read the epochs into mne.

@larsoner
Copy link
Member

I'd be fine with emitting a warning that events information has been lost and still reading the file, @mmagnuski can you make a PR?

@mmagnuski
Copy link
Member

Sure, I can do it this week - would we populate event_id and events and other necessary fields (not sure what other) with some default values then?

@larsoner
Copy link
Member

larsoner commented Aug 20, 2019

Yes I would just make events = np.column_stack((np.arange(len(epochs)), 0, np.ones(len(epochs), int))) and event_id=dict(unknown=1)

@mmagnuski mmagnuski self-assigned this Aug 23, 2019
@agramfort
Copy link
Member

@mmagnuski do you still plan to look into this?

@mmagnuski
Copy link
Member

Yes, sorry, I completely forgot. But I won't be able to do it this year. I can get to it on Friday, though.

@agramfort
Copy link
Member

agramfort commented Dec 30, 2019 via email

@guoyongjian111
Copy link

so i have a rest eeg data(.set), epochs=119,but events = 0 ,what should i do can read this data?please

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants