Preprocessing EEG: Filters, Artifact Removal Methods and their parameters

  • MNE version: 1.2.3
  • operating system: Windows 11

I am currently working on an EEG dataset with 5 EEG channels, 2 EOG channels, and 1 ECG channel collected from over 100 participants. I have some questions about preprocessing these signals:

  1. For removing artifacts, one of the methods I tried was by using ICA and manually labeling the bad components. But this is very time-consuming.
    Since there are very few EEG channels, is there a function in mne-python to compute ICA by MAICA (Moving-average ICA)?

  2. In an effort to automate artifact removal, I tried using MNE’s find_bads_ecg and find_bads_eog. But it does not work well with the default threshold. I could find a suitable threshold after a lot of trial and error. Is there a way to formulate/automate how the threshold should be set for the best results?

  3. Are there any other methods to automate the artifact removal process using the EOG and ECG signals?

  4. What parameters should be considered while choosing the value for the notch filter and the bandpass filter, and how to determine/calculate them?

Thanks in advance!

Re 1. No, MNE does not include that kind of ICA. You have very few channels for ICA anyway, and unless MAICA takes care of that (I have never heard of MAICA so I cannot tell), you should use other algorithms that are not based on ICA.

Re 2. and 3., you might want to try autoreject.

Re 4., are you sure you need a notch filter? Usually, filtering out line noise is only useful for visualizing the continuous data, but unless your analysis requires the frequency band of the line noise (either 50 or 60Hz), you don’t need to filter it out. If you need that frequency band, you could try things like mne.filter.notch_filter() with method="spectrum_fit", ZapLine, or CleanLine (which are available e.g. here).

3 Likes

Thanks, @cbrnr for the answer! I will try these solutions.

Instead of ICA, I think your setup is more appropriate for a regression approach: Reduce EOG artifacts through regression β€” MNE 1.5.1 documentation

It’s also more automated as there are no thresholds to be set