Autoreject on intracranial EEG channels

I would like to use AutoReject on ‘ecog’ channels, for which I do not have location data (they are manually labeled by region; there are no coordinates).

However, it seems that AutoReject requires channel locations in order to function – I get the same error as the discussion here.

Is there any workaround, or is there another method to automatically reject bad channels?

autoreject exploits the interpolation procedures in MNE. There is no interpolation procedure in MNE
for ECoG at this point and I don’t know if there is a common practice to do this. Do you know ?

Alex

@alexrockhill and @adam2392, would you know of a way for iEEG channel interpolation?

In the development version of autoreject, it does not complain about the channel coordinates if augment=False and the user is interested only in the channel-level thresholds. They could then use those thresholds to reject epochs/channels using their own criteria. This is of course with the caveat that the thresholds determined in this way are expected to be sub-optimal.

Mainak

2 Likes

You could easily write a function to interpolate both sEEG and ECoG using nearest neighbors. I’m not sure that’s a good idea given the locality of the signal and crossing sulcal boundaries for one but it wouldn’t be that hard to do. Edges of grids and depth probes are going to be even more suspect when intrrpolated (or really extrapolated).

Let’s aim for what is accepted practice in the field. Is there a reference for this in the literature?

2 Likes

Thank Mainak. I ended up using compute_thresholds(augment = False) to successfully obtain channel-wise rejection thresholds.

Now my problem is applying it to my Epoch data. The epochs.drop_bad() has a reject parameter that accepts a dictionary with one rejection threshold value per channel type. There is no option to set the rejection threshold by channel.

Any ideas?

You’ll need some custom code here. For e.g. copy the code here

to get the bad_sensor_counts and from there, use a certain criteria to select the bad epochs, for e.g., say > 50% of the sensors are bad for that epoch and then use epochs.drop()

Hope that helps!
Mainak