I’m hoping someone more familiar with SSP in MNE-Python for the removal of the heart artefact could be able to give me some clues as to why performing SSP is altering the shape of my evoked potentials. All images shown are grand average potentials from 36 subjects and 2000 trials each (but the effect is seen in single subject data too). All processing bar the application of SSP is the same.
So here is the image when the data has not been processed to remove the heart artefact:
And here is what happens when I apply SSP with 5 projections:
So you can see a very clear deletion of the positive peak at ~11ms, which is not ideal. Anyone have any ideas why this is happening/how to potentially avoid this effect?
first off: why do you use five projectors? One per channel type ought to be enough – the more projectors you use to remove a specific artifact, to more likely it becomes to also remove physiological brain signal.
How did you create the projector(s), anyway?
Lastly, your version of MNE-Python is rather old, and I’d advise you to update to the latest stable version, 1.0.3.
We are using 5 projectors as it’s spinal not brain data, so the artefact is far bigger than classic EEG, with 5 seeming to work well for removal. Projectors created in using create_proj_ecg as per: Repairing artifacts with SSP — MNE 1.0.3 documentation
And yeah my MNE is rather old, in the process of upgrading but we haven’t tested all scripts with python 3.9 and MNE 1.0.3 yet so it’s a slow process to migrate
Have you tried to tear apart the steps that create_proj_ecg() does for you, specifically, have you run mne.preprocessing.find_ecg_events() and then plotted the events on your raw data e.g. via raw.plot(events=ecg_events) and confirmed that it’s actually just heart beats that were detected?
Editcreate_proj_ecg() returns the ECG events too, you can also use those directly and pass them to raw.plot(), it’s probably the better way.
Based on your answers, I checked the effect of fewer projectors, and while removal of the heart artefact is compromised, the shape of the evoked potential is preserved (this graph is with 1 projector):
But I did also check compute_proj_ecg is working as expected and all seems ok there and the raw plot looks fine - heartbeats being detected where I visually expect them
We actually started with an ICA approach and it’s really poor, suffers from a similar problem to what we see here - to remove the heart artefact takes too many components, but the loss of physiological information is even worse than with SSP
But thanks again for you input it was super helpful!