[FieldTrip] trial-based time-series via lcmv beamforming?
Andreas Wilmer
andreas.wilmer at uni-muenster.de
Fri Feb 11 17:57:36 CET 2011
dear fieldtrip-users,
actually my first active post in the fieldtrip newsgroup. first i'd
like to thank the community and especially the developers of fieldtrip
for their great support&help!
i am interested in a trial-based(!) time-domain data-set in the source
space of MEG data for further connectivity analysis. i decided to use
a beamformer (lcmv) to recover the neuronal activity by using
snythetic data-sets (for testing and verification). the synthetic data-
set consists of 3 correlated sources with up to 300 trials and a
length of 720 datapoints (=1.2s at 600Hz) and many trials of
uncorrelated noisy sources.
i implemented the dipole simulation in the following way:
1) i used customized data with time dependent (time-delayed) phase
correlations as source waveforms and added randomly located
uncorrelated dipoles as disturbances and spontaneous brain processes.
next, i simulated the data in sensor-space and did an lcmv beamforming
-> works fine (a priori known connectivity can be recovered).
2) in the next step i repeated the simulation and added 10% rms as
additive (delta-correlated) measurement noise to the data in the
sensor-space to model thermal noise.
-> in this case the beamformer reconstruction fails totally...
3) i averaged the data in sensor-space to get rid of the thermal noise
and used the cov to recover every single trial, but in this case the
beamformer cannot deal with brain-noise...
-> this didn't work either..
MY QUESTION IS: is this a conceptual problem of beamforming, that one
cannot recover a trial-based time-series or did i commit a crude error
in reasoning/programming?
do you think a bootstrapping for calculating the cov might make sense,
i.e. i could calculate the cov for each trial by averaging over just a
few trials (eg 10 randomly chosen trials) to reduce the uncorrelated
noise in sensor space without loosing all the information to suppress
the brain-noise?
which other inverse methods can recover source activity in time-domain
on trial level?
eg MNE seems only to work on average over trials?
so many questions.. thank you in advance for your help!
with best wishes,
andreas
__________________________________
Dipl.-Phys. Andreas Wilmer
Institut für Allgemeine Psychologie
Westfälische Wilhelms-Universität Münster
AE Prof. Dr. Markus Lappe
Fliednerstraße 21
D 48149 Münster
fon: +49 (251) 83 34175
email: andreas.wilmer at uni-muenster.de
my code on beamforming
two further remarks:
a) i didn't apply a normalization of the virtual channels because i am
interested in phase measures - normalizing the amplitudes won't have
any effect on the results
b) narrow band filtering didn't work with my (broad band) data
%-----------------------------------------------------------------
%estimating filter/cov
cfg = [];
cfg.channel = {'MEG'};
cfg.keeptrials = 'yes';
cfg.bpfrq = [1 150];
cfg.covariance = 'yes'; %trial/stimulus window
cfg.covariancewindow = [0 1.2]; %complete data
dataCov = ft_timelockanalysis(cfg,dataSensor);
%-----------------------------------------------------------------
%beamforming
cfg = [];
cfg.method = 'lcmv';
cfg.lcmv.fixedori = 'yes';
cfg.vol = dataHead;
cfg.grid.pos = gridposition;
cfg.lambda = '5%';
cfg.projectnoise = 'yes';
cfg.keepfilter = 'yes';
cfg.keeptrials = 'yes';
[dataVc] = ft_sourceanalysis(cfg,dataCov);
%---------------------------------------------------------------
%reconstructing source data
trialN = size(dataSensor.trial,2);
[sensN tN] = size(dataSensor.trial{1});
srcN = length(dataVc.inside);
for i=1:srcN,
m = dataVc.inside(i);
if ~isempty(dataVc.avg.filter{m}),
fprintf('beamforming source %d/%d\n',i,srcN);
%beamforming
for j = 1:trialN,
dataVc.trial(j).mom{m} =...
dataVc.avg.filter{m}*dataSensor.trial{j};
end
end
end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20110211/fbddb6fa/attachment-0001.html>
More information about the fieldtrip
mailing list