[FieldTrip] more on artfifact rejection
Michael Wibral
michael.wibral at web.de
Mon Jan 24 18:27:08 CET 2011
Hi Jan-Mathijs,
this is basically what we do at the moment, i.e. fooling artifcat_zvalue by removing the one field it complains about amnd using rejetartefact only at the very last.
See the attched code - I really do not want to post this code on the tutorial website as I am not fully sure what I am doing :-).
Michael
%% CODE
ft_defaults;
Datapath='/data/MEGArchive/data/meg/CTF_Data/NewMooney.proc/DATASETS/';
Design={
'DMG13_NewMooney_20110120_0', [2 3], 'mytrialfun_New_MooneyMEEG_StandardButtons2',[4 5 6 7 8];
}
for ss=1:size(Design,1) % over subjects
for cc=1:length(Design{ss,4}) % over conditions
for ff=1:length(Design{ss,2}) % over .ds datasets/runs
FullFileName=strcat(Datapath,Design{ss,1},num2str(Design{ss,2}(ff)), '.ds')
FullHeaderFile=FullFileName; %strcat(FullFileName,'/',)
% core data reading
cfg=[];
cfg.dataset=FullFileName;
cfg.headerformat = 'ctf_ds'; % for you to check whether still necessary
ctf.dataformat = 'ctf_ds';
cfg.cond=Design{ss,4}(cc)
cfg.continuous='yes';
cfg.channel={'MEG','EEG','-MLP12', '-MRC14', '-MLT41', '-MRC25', '-MRP56', '-MRT21', '-MLO21', '-MRO44', '-MRT47'}; % add bad channels ?
cfg.trialfun=Design{ss,3};
cfg=ft_definetrial(cfg);
cfg.trl(end,:)=[];
trl=cfg.trl; % keep track of the trials
padding=0.75 % 750 ms
%%%%%%%%% artifact rejection section
%%% jump
% cutoff and padding
cfg.artfctdef.zvalue.channel = 'MEG';
cfg.artfctdef.zvalue.cutoff = 35;
cfg.artfctdef.zvalue.trlpadding = 0.5*padding;
cfg.artfctdef.zvalue.artpadding = 0.5*padding;
cfg.artfctdef.zvalue.fltpadding = 0;
% algorithmic parameters
cfg.artfctdef.zvalue.medianfilter = 'yes';
cfg.artfctdef.zvalue.medianfiltord = 9; % in samples
cfg.artfctdef.zvalue.absdiff = 'yes';
% feedback
cfg.artfctdef.zvalue.feedback = 'no';
cfg.artfctdef.reject = 'jump';
[cfg, artifact_jump] = ft_artifact_zvalue(cfg); %, Data);
% cfg.artfctdef.jump.artifact = artifact_jump;
% cfg = ft_rejectartifact(cfg);
%%% muscle
cfg.artfctdef.zvalue=rmfield(cfg.artfctdef.zvalue, 'artifact'); % remove field from structure otherwise this won't run ??
% cutoff and padding
cfg.artfctdef.zvalue.channel = 'MEG';
cfg.artfctdef.zvalue.cutoff = 15;
cfg.artfctdef.zvalue.trlpadding = 0.1;
cfg.artfctdef.zvalue.fltpadding = 0.1;
cfg.artfctdef.zvalue.artpadding = 0.1;
% algorithmic parameters
cfg.artfctdef.zvalue.bpfilter = 'yes';
cfg.artfctdef.zvalue.bpfreq = [110 140];
cfg.artfctdef.zvalue.bpfiltord = 6;
cfg.artfctdef.zvalue.bpfilttype = 'but';
cfg.artfctdef.zvalue.hilbert = 'yes';
cfg.artfctdef.zvalue.boxcar = 0.2;
% feedback
cfg.artfctdef.zvalue.feedback = 'no';
cfg.artfctdef.reject = 'muscle';
[cfg, artifact_muscle] = ft_artifact_zvalue(cfg);
cfg.artfctdef.muscle.artifact = artifact_muscle;
cfg = ft_rejectartifact(cfg);
%%% EOG
cfg.artfctdef.zvalue=rmfield(cfg.artfctdef.zvalue, 'artifact');
% cutoff and padding
cfg.artfctdef.zvalue.channel = 'MRT41';
cfg.artfctdef.zvalue.cutoff = 10;
cfg.artfctdef.zvalue.trlpadding = 0.5;
cfg.artfctdef.zvalue.artpadding = 0.1;
cfg.artfctdef.zvalue.fltpadding = 0.1;
% algorithmic parameters
cfg.artfctdef.zvalue.bpfilter = 'yes';
cfg.artfctdef.zvalue.bpfilttype = 'but';
cfg.artfctdef.zvalue.bpfreq = [1 15];
cfg.artfctdef.zvalue.bpfiltord = 3;
cfg.artfctdef.zvalue.hilbert = 'yes';
% feedback
cfg.artfctdef.zvalue.feedback = 'no';
cfg.artfctdef.reject = 'EOG';
[cfg, artifact_EOG] = ft_artifact_zvalue(cfg); % Data);
cfg.trl=trl;
cfg.artfctdef.reject = 'complete'; % this rejects complete trials, use 'partial' if you want to do partial artifact rejection
% collect all the info about the artifacts that were found
cfg.artfctdef.eog.artifact =artifact_EOG;
cfg.artfctdef.jump.artifact = artifact_jump;
cfg.artfctdef.muscle.artifact = artifact_muscle;
cfg = ft_rejectartifact(cfg);
Data_no_artifacts=ft_preprocessing(cfg);
% some additional filtering for DC removal and detrending
cfg=[];
cfg.detrend='yes'
cfg.hpfilt='yes'
cfg.hpfreq=1;
TrialData{ff}=ft_preprocessing(cfg,Data_no_artifacts);
clear Data_no_artifacts;
end
...
...
end
end
-----Ursprüngliche Nachricht-----
Von: "jan-mathijs schoffelen" <jan.schoffelen at donders.ru.nl>
Gesendet: Jan 24, 2011 4:41:09 PM
An: "Email discussion list for the FieldTrip project" <fieldtrip at donders.ru.nl>
Betreff: Re: [FieldTrip] more on artfifact rejection
>Hmmm, apparently this approach needs to be ironed out a bit (also from
>our side). For now, I'd say that it should work if you keep per type
>of artifact the artifact field in the output configuration, and just
>concatenate these prior to calling ft_rejectartifact. I will moreover
>CC this e-mail to the people involved in creating the first version of
>the renewed tutorial, and will bring up the issue in this week's
>FieldTrip developers meeting.
>
>Best,
>
>JM
>
>On Jan 24, 2011, at 1:51 PM, Michael Wibral wrote:
>
>> Hi Jan mathijs,
>>
>> I tried to get option1 running, stumbled over the following little
>> obstacle however:
>>
>> I tried to keep one cfg throughout the steps ft_definetrial;
>> ft_artifact_zvalue, ft_rejectartifcat (with option complete and some
>> tracking of where artfecats were found), ft_preprocessing (cutting
>> out the clean trials from the cont. data). IMHO this used to be the
>> way most people did this kind of procesing a while ago.
>>
>> However, I can't get ft_artifact_zvalue to run with different
>> settings one after another for jump/musvle/EOG. FT claims after the
>> first run of ft_artifact_zvalue that the z-value thing has been
>> performed and refuse to detect other artifacts with new settings.
>>
>>> From here I only see two alternative: specifying a really lengthy
>>> cfg every time a new (also struggling with the cfg.dataset versus
>>> cfg.datafile issue) and do the bookkeeping of cfg.trl and related
>>> things myself or manually removing the cfg.artdef.zvalue.artifct
>>> field to get the z-value based detection to run again. This seems a
>>> bit odd to me.
>>
>> Any suggestions?
>>
>> Michael
>>
>>
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: "jan-mathijs schoffelen" <jan.schoffelen at donders.ru.nl>
>> Gesendet: Jan 24, 2011 12:12:57 PM
>> An: "Email discussion list for the FieldTrip project" <fieldtrip at donders.ru.nl
>> >
>> Betreff: Re: [FieldTrip] more on artfifact rejection
>>
>>> Dear Michael,
>>>
>>> I agree. The tutorial should be 'de'-confused by sketching option 1,
>>> and another one should be describing option 2, or the original should
>>> be clearly making the distinction.
>>>
>>> Best,
>>>
>>> JM
>>>
>>>
>>> On Jan 24, 2011, at 11:48 AM, Michael Wibral wrote:
>>>
>>>> Hi Jan-Mathijs,
>>>>
>>>> I am a bit unsure how to proceed:
>>>>
>>>> (1) sketch the artifact correction way like this
>>>> ft-definetrial -> artifact.XXX.YYY -> ft_rejectartifact ->
>>>> ft_preprocessing
>>>> OR
>>>> (2) ft-definetrial -> ft_preprocessing (with cfg.padding) ->
>>>> artifact.XXX.YYY -> ft_rejectartifact(cfg, data) ->
>>>> ft_preprocessing.
>>>>
>>>> I think I should go for option (1) as this seems to be the standard
>>>> use on continuous data. Sometime in the futrure one should then add
>>>> a tutorial for those that have data in trials to start with.
>>>>
>>>> Michael
>>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: "jan-mathijs schoffelen" <jan.schoffelen at donders.ru.nl>
>>>> Gesendet: Jan 21, 2011 9:55:48 AM
>>>> An: "Email discussion list for the FieldTrip project" <fieldtrip at donders.ru.nl
>>>>>
>>>> Betreff: Re: [FieldTrip] more on artfifact rejection
>>>>
>>>>> Dear Michael,
>>>>>
>>>>> Yes, I agree with you here as well. In principle the
>>>>> ft_artifact_zvalue supports data as a second input argument, but in
>>>>> such case the different types of padding in the cfg do not make
>>>>> sense.
>>>>> I would indeed remove the second input arguments in the example
>>>>> code
>>>>> snippets. Could I ask you to take care of that?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> JM
>>>>>
>>>>>
>>>>> On Jan 20, 2011, at 10:51 AM, Michael Wibral wrote:
>>>>>
>>>>>> Deal Fieldtrip users,
>>>>>>
>>>>>> there is something else I do not understand in the tutorial: if
>>>>>> you
>>>>>> read in the data in trials (as it is done) how can you do padding
>>>>>> later as it is suggested. I tried to run the example code on teh
>>>>>> website reading in the data such that it contains trials. If I
>>>>>> then
>>>>>> try to search for muscle artifacts I get the 'subscript indices
>>>>>> must
>>>>>> be positive or logical ... values', indicating that the code tries
>>>>>> to access data that aren't there. If I set the padding to zero
>>>>>> (instead of 0.1) it works. So I am wondering wether somehow one
>>>>>> should actually run these things on continuous data (contrary to
>>>>>> what is indicated in the tutorial)?
>>>>>>
>>>>>> Michael
>>>>>> <Michael Wibral.vcf><Michael
>>>>>> Wibral.vcf>_______________________________________________
>>>>>> fieldtrip mailing list
>>>>>> fieldtrip at donders.ru.nl
>>>>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>>>
>>>>> Dr. J.M. (Jan-Mathijs) Schoffelen
>>>>> Donders Institute for Brain, Cognition and Behaviour,
>>>>> Centre for Cognitive Neuroimaging,
>>>>> Radboud University Nijmegen, The Netherlands
>>>>> J.Schoffelen at donders.ru.nl
>>>>> Telephone: 0031-24-3614793
>>>>>
>>>>> _______________________________________________
>>>>> fieldtrip mailing list
>>>>> fieldtrip at donders.ru.nl
>>>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>> <Michael Wibral.vcf>_______________________________________________
>>>> fieldtrip mailing list
>>>> fieldtrip at donders.ru.nl
>>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>
>>> Dr. J.M. (Jan-Mathijs) Schoffelen
>>> Donders Institute for Brain, Cognition and Behaviour,
>>> Centre for Cognitive Neuroimaging,
>>> Radboud University Nijmegen, The Netherlands
>>> J.Schoffelen at donders.ru.nl
>>> Telephone: 0031-24-3614793
>>>
>>>
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>> <Michael Wibral.vcf>_______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
>Dr. J.M. (Jan-Mathijs) Schoffelen
>Donders Institute for Brain, Cognition and Behaviour,
>Centre for Cognitive Neuroimaging,
>Radboud University Nijmegen, The Netherlands
>J.Schoffelen at donders.ru.nl
>Telephone: 0031-24-3614793
>
>
>_______________________________________________
>fieldtrip mailing list
>fieldtrip at donders.ru.nl
>http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Michael Wibral.vcf
Type: text/x-vcard
Size: 637 bytes
Desc: not available
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20110124/8dcfd9e8/attachment-0002.vcf>
More information about the fieldtrip
mailing list