[FieldTrip] Fwd: head motion regression with ft_regressconfound on a continuous MEG data

Arjen Stolk a.stolk8 at gmail.com
Mon Dec 9 15:48:35 CET 2013


Hi Inna,

Testing ft_regressconfound with some fake data, everything seems to be fine
here:

timelock = [];
timelock.label = {'1' '2'};
timelock.time  = 1:5;
timelock.dimord = 'rpt_chan_time';
timelock.trial = randn(20,2,5);
timelock.avg = randn(2,5);

cfg = [];
cfg.confound = randn(20,3);
cfg.reject = [1:3];
timelock_out = ft_regressconfound(cfg, timelock);

Does this example code work for you? I could not detect any mistake in your
lines of code. What does your 'timelock' structure look like? Are there any
real values in the data? (don't think this is causing it, but please update
to newest Ft version just to be sure)

Yours,
Arjen


2013/12/2 McGowin, Inna <mcgoiv0 at wfu.edu>

> Thank you Arjen,
> Actually, I am testing the FieldTrip motion regression on MEG data
> specifically collected with a current phantom and known motion. I can treat
> the data as ERP data and average over 1 sec trials if needed.
> Following your advise on reduction of the regressors number (on 120 trials
> of 1 sec long) I was able to avoid the "out of memory" issue. Though I run
> into the different set of problems now that I need help to understand:
> ______________________________________________
> ??? Error using ==> mxSerialize
> Error during serialization of (null)
>
> Error in ==> ft_postamble_provenance at 91
>     cfg.callinfo.outputhash{iargout} = CalcMD5(mxSerialize(tmparg));
>
> Error in ==> ft_postamble at 55
>   evalin('caller', ['ft_postamble_' cmd]);
>
> Error in ==> ft_timelockanalysis at 370
> ft_postamble provenance timelock
>
> Error in ==> ft_regressconfound at 313
>     dataout = ft_timelockanalysis(tempcfg, dataout);% reaveraging
> _________________________________________________________
>
> Here is the code I run to regress the head motion:
> %%
> addpath C:\Userdata\MATLAB\FieldTrip\fieldtrip-20131023
> ft_defaults
> cfg.dataset = 'InnaTest_Current-Phantom_20131004_09.ds';
> cfg.trialdef.triallength=1;
> cfg.trialdef.ntrials=120;
> cfg.continuous = 'yes';
> cfg = ft_definetrial(cfg);
> cfg.channel                 = {'MEG'};
> cfg.demean                  = 'yes';
> data = ft_preprocessing(cfg);
>
> %%
> cfg = [];
> cfg.keeptrials              = 'yes';
> timelock = ft_timelockanalysis(cfg, data);
>
> %%
> cfg = [];
> cfg.dataset = 'InnaTest_Current-Phantom_20131004_09.ds';
> cfg.trialdef.triallength=1;
> cfg.trialdef.ntrials=120;
> cfg.continuous = 'yes';
> cfg = ft_definetrial(cfg);
>
> %%
> cfg.channel                 = {'HLC0011','HLC0012','HLC0013', ...
>                               'HLC0021','HLC0022','HLC0023', ...
>                               'HLC0031','HLC0032','HLC0033'};
> headpos = ft_preprocessing(cfg);
>
> ntrials = length(headpos.sampleinfo)
> for t = 1:ntrials
> coil1(:,t) = [mean(headpos.trial{1,t}(1,:));
> mean(headpos.trial{1,t}(2,:)); mean(headpos.trial{1,t}(3,:))];
> coil2(:,t) = [mean(headpos.trial{1,t}(4,:));
> mean(headpos.trial{1,t}(5,:)); mean(headpos.trial{1,t}(6,:))];
> coil3(:,t) = [mean(headpos.trial{1,t}(7,:));
> mean(headpos.trial{1,t}(8,:)); mean(headpos.trial{1,t}(9,:))];
> end
>
> cc = circumcenter(coil1, coil2, coil3);
> cc_dem = [cc - repmat(mean(cc,2),1,size(cc,2))]';
>
> %%
> confound = [cc_dem ...
> ones(size(cc_dem,1),1)];
>
> %%
> cfg                         = [];
> cfg.confound                = confound;
> cfg.reject                  = [1:6];
> regr = ft_regressconfound(cfg, timelock);
> %%
>
> _________________________________________________________________
> Sorry for the lengthy letter and thanks for the help!
>
> Inna
>
>
>
>
>
> On Thu, Nov 28, 2013 at 12:23 PM, Stolk, A. (Arjen) <
> a.stolk at fcdonders.ru.nl> wrote:
>
>> Hi Inna,
>>
>> Are you using the same design matrix as on the wiki page? That one covers
>> the primary head translations and rotations, but also their
>> derivatives. You could try using the primary measures only (3
>> translastions, and 3 rotations of the circumcenter, totaling 6 + 1 constant
>> regressors). It is also mentionworthy that there should be a balance
>> between the number of regressors and the number of observations
>> (i.e. trials). I believe on the respective wiki page on head movement
>> regression it states that the ratio is recommended to be not larger
>> than 1:10 (regressors:trials), accompanied with a reference. Accordingly,
>> I'd suggest to use those 7 regressors, and your data (120s resting state)
>> split in segments of 1 or 2 seconds, totaling 60 or 120 trials. These
>> specifications might hopefully also allow working around your memory issue.
>>
>> Second, it may be worth mentioning what you would like to do with the
>> data post-movement-regression. Namely, the movement compensation will
>> remove contributions from head movement to the signal. But this requires
>> that signal to behave consistently over trials, which does not seem the
>> case with the signal in your resting study? That is, with an ERP study, the
>> signal fluctuations appear consistent over trials, with amplitudes being
>> modulated by head movement (i.e. sensor-source distance, see our neuroimage
>> paper - 2013) in a predictable fashion. So if you're planning on doing
>> frequency analysis, or maybe connectivity analysis, after head movement
>> compensation, I'd recommend reversing that order. The rule of thumb is to
>> use ft_regressconfound just prior to ft_xxxstatistics, removing otherwise
>> unexplained variance (over trials) due to head movement, benefitting your
>> statistical assessments.
>>
>> Hope these suggestions may help you with further analyses. I'm
>> not familiar with anyone implementing this method to resting state
>> analyses, but maybe someone else has some first-hand experience here.
>> Furthermore, too late for your current dataset, but for a next one I'd
>> recommend using the online head position monitoring/respositioning tool
>> that we have developed for CTF systems (a neuromag version is approaching
>> the final stage). This tool is routinely used in our lab to monitor
>> and reduce head movment throughout recording (after which
>> ft_regressconfound is being used to deal with the trial-by-trial crumbles).
>>
>> Yours,
>> Arjen
>>
>> _______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20131209/b0212d3c/attachment.html>


More information about the fieldtrip mailing list