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

McGowin, Inna mcgoiv0 at wfu.edu
Mon Dec 2 20:15:38 CET 2013


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20131202/76e9adde/attachment-0001.html>


More information about the fieldtrip mailing list