Assistance with preprocessing for a small number of channels with many ERP trials.

Hello, I have data from an ERP experiment with 8 channels that lasts 59 minutes and includes 2,576 trials. The data is noisy, and while I tried auto-reject and Independent Component Analysis (ICA), I still see significant noise and found ICA challenging with so few channels. What’s the best approach to reduce noise? Is Empirical Mode Decomposition (EMD) effective? Attached is an example on my ICA results

I’m not sure EMD will provide something for you that a bandpass filter can not.

Fundamentally, fixing artifacts relies on either:

  1. Having artifacts and brain signals occur on different sensors or in different frequency bands so you can just remove that part of the signal. This is what band-pass filtering and EMD decomposition do.
  2. Having recordings of non-artifact-contaminated signal-directions so you can reconstruct the artifact-contaminated directions. This is usually the case when you have lots of sensors measuring the brain from all kinds of different angles. This is what ICA does.
  3. Having a recording of only-artifact-contaminated sigal. If you have that, you can subtract it from the rest of the signals to clean it up. This is why it’s common to place EOG electrodes that only record eye artifacts with very little brain signal.

If you only have a few channels, option 2 is out so that leaves options 1 and 3. If you can build virtual channels containing only artifacts with very little brain signals, you can use this example on how to remove them from the signal through regression: Repairing artifacts with regression — MNE 1.9.0 documentation. Whether or not this is feasible in your case depends on what artifacts you are dealing with and where you have sensors available. In the example I linked, there was an EOG channel available.

Thank you so much!

First, I apologize if my questions seem basic, but I am working on a science fair research project.

In my montage, I have the following electrode positions: F3, F4, T8, and T7. Would these be suitable for detecting both horizontal and vertical eye movements using the third method you mentioned?

Also, I had six experimental blocks, each with 233 stimuli. Between blocks, participants took breaks during which they moved and spoke. Should I apply the band-pass filter to each block individually (before concatenating them), or should I first remove the breaks, combine the blocks, and then apply the band-pass filter to the full dataset?

Possibly, but you must keep in mind that those channels will also contain a lot of brain signals that you don’t want to erase. Hence, the approach I would do is create a bipolar reference between F3 and T7 as your first “EOG” channel and between F4 and T8 as your second “EOG” channel. mne.set_bipolar_reference — MNE 1.9.0 documentation. Then, get rid of any stretches of really bad signal (subject was moving or talking or doing something so that the EEG is all over the place). Then, you can run MNE-Python’s eye blink detection algorithm and create “evokeds” based on those eye blink onsets. By averaging the blinks together, the brain signals will average out, leaving a good recording of just eye artifacts. The example I linked before covers this I think.

If the blocks are long enough, it doesn’t matter. The bandpass filter will produce some “ringing” artifacts at the very beginnend and very end of a recording (maybe lasting 1 second) so as long as you don’t have any epochs/trials beginning during that time period you are fine.

Thank you for your assistance! I will try out this preprocessing pipeline. If you are interested in a research collaboration, I plan to publish a paper with my qualified scientist from Al-Azhar University after the international competition. Could you please share your contact email?