reject epochs igoring EOG

Dear MNE community:

i am new in the field and i just started to learn how to analyze ERP data. I have a question about epoch rejection:

I did ICA on the continuous data and it corrected eye blinks successfully. And i did epoching and baseline correction. I used autoreject package to clean my epochs. It rejected 36.2% of my critical data, but almost all of the rejected epochs were rejected based on EOG/T. Actually other channels were pretty good. Considering my regions of interest is mainly on central and posterior regions. I feel it is wasteful to reject these many epochs. Is there anyway to ignore the EOG here to save these epochs? Or should i mark them as bad channels, but i feel weird because they are not ā€˜badā€™ channelsā€¦ If I marked EOG as bad channels, would it influence my following analysis, like averaging?

My systems are:

  • MNE version: 1.0.3
  • operating system: Windows 10

My lines of code:

tmin = tmin_epoch # start point of epoch
tmax = tmax_epoch # end point of epoch
baseline = (tmin, tmin+0.1)

target_events = mne.pick_events(events, include=[12,22,32])
event_id = {
ā€˜related/targetā€™: 12,
ā€˜unrelated/targetā€™: 22,
ā€˜nonword/targetā€™: 32}

epochs = mne.Epochs(raw_ica,
events=target_events,
event_id=event_id,
tmin=tmin,
tmax=tmax,
baseline=baseline,
preload=True)

Then i did autoreject, here is the screenshot of results:

I also tried to set reject_criteria values, the results were similar to the above.

Could you please give me some suggestions how to save more epochs?

Thank you very much!!

Yunr

You should set the channel type of the EOG channel to eog

It appears right now itā€™s treated like an ordinary EEG channel?

Hiii. I tried exclude EOGs and created a new epoch group:

epochs_noEyeCh = epochs.copy().pick_types(meg=False,
eeg=True,
eog=True,
emg=True,
stim=True,
exclude=[ā€˜EOG/Lā€™,ā€˜EOG/Rā€™,ā€˜EOG/Tā€™,ā€˜EOG/Bā€™])

Is this OK, or it may influence the following analysis?

Thank you very much for your reply!

I did this at the beginning. This screenshot shows the info of data on which i did epoching.
image

So it looks like your EOG channels do have the correct type. Can you share the code you used to do the rejection? There is probably a ch_type or picks argument that you can set to 'eeg'. For instance, if you used autoreject.get_rejection_threshold, a threshold for the EOG channel will be computed by default. If you want to reject only based on EEG channels, you have to provide the argument ch_type="eeg".

Also, yes you could just drop the EOG channels for the rest of the analysis. Taking your code:

epochs_noEyeCh = epochs.copy().pick_types(
    meg=False,
    eeg=True,
    eog=True,
    emg=True,
    stim=True,
    exclude=[ā€˜EOG/Lā€™,ā€˜EOG/Rā€™,ā€˜EOG/Tā€™,ā€˜EOG/Bā€™]
)

That would work, but there is simpler. If you set eog to False, you are done!

.pick_types(eeg=True, eog=False, emg=True, stim=True)

Or even: .pick_types(eeg=True, emg=True, stim=True) as all arguments of pick_types are set to False by default.

Yes! I tried it, and it saved many epochs!
Thank you very much!!! :heart: