[FieldTrip] Discrepancy between FieldTrip and SPM artefact rejection functions (thresholding)
Schoffelen, J.M. (Jan Mathijs)
janmathijs.schoffelen at donders.ru.nl
Fri Aug 6 10:27:02 CEST 2021
Hi Cihan,
I never use SPM myself, so I cannot comment on what is going on under the hood there.
Just one or two pointers and questions for now:
- what’s the overall number of trials? To get a feel about the discrepancy, it would be relevant to know this.
- just to be sure: after specifying the cfg for preprocessing, you actually call ft_preprocessing, right? The code you pasted in your e-mail does not mention that.
- there’s a typo in the cfg for ft_artifact_threshold: ‘continious' should read ‘continuous', although that would probably not explain your observations.
- one potential difference in the processing steps between SPM and FT could be the order of the filtering and baseline subtraction.
- the set of channels used in both SPM and FT are the same?
Anyway, no definitive answer here, but if you want to get to the bottom of this, I’d first compare the ‘preprocessed’ data, without the whole thresholding machinery applied. Just inspect the time courses for offset differences etc. This would then give pointers as to why the numbers are so different.
Best wishes,
Jan-Mathijs
On 6 Aug 2021, at 00:26, Cihan Dogan via fieldtrip <fieldtrip at science.ru.nl<mailto:fieldtrip at science.ru.nl>> wrote:
Dear Fieldtrip Experts,
Recently I have been in the process of moving my pre-processing pipeline from SPM to Fieldtrip. Originally, I started my analysis in SPM, then moved over to Fieldtrip, however, I was using functions provided by FieldTrip to convert the SPM data straight to FieldTrip removing the need for me to reprocess my data.
I decided to move this pre-processing over to FieldTrip rather than relying on two analysis programs. I am facing an issue whereby a large difference exists for the number of trials rejected using FieldTrips ‘ft_artifact_threshold’ versus SPM which I do not understand given my parameters for pre-processing are the same, and thresholding is a relatively simple process.
I could understand slight differences, but not this large. To double check I also reprocessed my files in SPM since it had been a while (no change).I linked below an example of how many trials get rejected for six participants (I have a dataset of 40). As seen, the discrepancy is quite large in some cases, for example participant 23.
I hope I am making a silly mistake somewhere and missing a setting, hopefully an expert can spot it!
Thanks in advance,
Cihan
FieldTrip Configuration Summary:
Preprocessing:
cfg = []
cfg.demean = ‘yes’;
cfg.baselinewindow = [-0.2, 0];
cfg.lpfilter = ‘yes’;
cfg.hpfilter = ‘yes’;
cfg.lpfreq = 30;
cfg.hpfreq = 0.1
cfg.lpfiltord = 5;
cfg.hpfiltord = 5;
Artefact Rejection:
Thresholding -100 to 100 uV
cfg = [];
cfg.continious = ‘no’;
cfg.artfctdef.threshold.min = -100;
cfg.artfctdef.threshold.max = 100;
cfg.artfctdef.threshold.channel = get_eeg_channels(data);
cfg.artfctdef.threshold.bpfilter = ‘no’;
[cfg, artifact] = ft_artifact_threshold(cfg, data);
cfg = [];
cfg.artfctdef.reject = 'complete';
cfg.artfctdef.zvalue.artifact = artifact; % this doesn’t make a difference given we only have 1 set of artifacts
postprocessed = ft_rejectartifact(cfg, data);
SPM Configuration Summary:
Filtering 0.1 30 Hz
matlabbatch{1}.spm.meeg.preproc.filter.type = 'butterworth';
matlabbatch{1}.spm.meeg.preproc.filter.band = 'bandpass';
matlabbatch{1}.spm.meeg.preproc.filter.freq = [0.1 30];
matlabbatch{1}.spm.meeg.preproc.filter.dir = 'twopass';
matlabbatch{1}.spm.meeg.preproc.filter.order = 5;
baseline -200 to 0 ms
matlabbatch{1}.spm.meeg.preproc.bc.timewin = [-200 0];
Thresholding -100 to 100 uV
matlabbatch{1}.spm.meeg.preproc.artefact.mode = 'reject';
matlabbatch{1}.spm.meeg.preproc.artefact.badchanthresh = 0.5;
matlabbatch{1}.spm.meeg.preproc.artefact.append = true;
matlabbatch{1}.spm.meeg.preproc.artefact.methods.channels{1}.type = 'EEG';
matlabbatch{1}.spm.meeg.preproc.artefact.methods.fun.threshchan.threshold = 100;
matlabbatch{1}.spm.meeg.preproc.artefact.methods.fun.threshchan.excwin = 1000;
6 Participant Example
Participant
SPM Reject
FieldTrip Reject
23
221
141
24
257
295
25
260
227
26
80
55
27
284
271
28
178
164
39
159
128
_______________________________________________
fieldtrip mailing list
https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
https://urldefense.com/v3/__https://doi.org/10.1371/journal.pcbi.1002202__;!!HJOPV4FYYWzcc1jazlU!vLTGG-Iql13sRmyQWAgFmTmxPKaUG9bo3LN8yj1yKhaKO18YQKRI0lDKyoX-yez0GP2aD5WfTxqxQdY$
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20210806/6ca7cb45/attachment.htm>
More information about the fieldtrip
mailing list