[FieldTrip] Connectivity analysis after applying Welch's method
"Jörn M. Horschig"
jm.horschig at donders.ru.nl
Thu Jul 31 15:17:05 CEST 2014
Hi Dragos,
have yoi checked ft_topoplotCC?
Best,
Jörn
On 7/31/2014 12:06 AM, Dragos Stanciu wrote:
> Hello Jörn,
>
> Thank you so much for responding. The suggested changes were spot on
> and ft_connectivityanalysis executed successfully.
> In the end, I went with the approach of redefining the 10s epoch in 2s
> minitrials and performing ft_freqanalysis on these minitrials with
> /cfg.output='fourier'/ and /keeptrial='yes'. /I then did
> ft_connectivityanalysis on the frequency structures resulted from
> processing the segmented data. This would give me connectivity
> matrices for each 10s epoch, which I then average to get one
> connectivity matrix for the subject (technically, I have a
> connectivity matrix for each frequency bin, but I can again average
> across the frequency spectrum).
>
> I have a question on the debiased weighted phase lag index measure.
> The values in the matrix vary between -1 and 1 (depending if the
> relative phase lags or leads). When I construct the adjacency
> matrices, is it just a matter of taking the absolute value of these
> values?
>
> I would also like some advice on plotting connectivity matrices. I was
> able to plot one matrix with ft_plot_matrix, but it would be really
> nice if I could plot a connectivity graph where the thickness of the
> edges correspond to the strength of the connectivity measure. I tried
> ft_topoplotER with 4D148.lay as the layout file and 'gui' as
> refchannel, but I didn't get anything interesting. As my data is MEG,
> it doesn't make sense to me to choose a reference channel...
> Ideally, I would like to combine the layout (4D148.lay) with the
> connectivity matrix for plotting the graph. Do you have any ideas for
> this? Also, do you have any other suggestions on what other plotting
> functions can be used with these connectivity matrices? I've looked
> through the tutorial, but the functions don't seem very relevant to my
> type of data.
>
> Thank you for your help.
>
> Regards,
> Dragos Stanciu
>
> Message: 9
> Date: Wed, 30 Jul 2014 10:28:50 +0200
> From: "J?rn M. Horschig" <jm.horschig at donders.ru.nl
> <mailto:jm.horschig at donders.ru.nl>>
> To: FieldTrip discussion list <fieldtrip at science.ru.nl
> <mailto:fieldtrip at science.ru.nl>>
> Subject: Re: [FieldTrip] Connectivity analysis after applying Welch's
> method
>
> Hi Dragos,
>
> while quickly browisng through your mail, it appears to me that you
> simply need to set single_epoch_freq.dimord = 'rpt_chan_freq'.
> FieldTrip
> is using the dimord field to infer the order of the dimensions
> (*dim*ension *ord*er). The actual dimensions of powspctrm and
> crsspctrm
> are now inconsistent with the dimord specifications.
>
> Best,
> J?rn
>
>
> On 7/30/2014 1:18 AM, Dragos Stanciu wrote:
> > Dear FieldTrippers,
> >
> > I'm Dragos Stanciu and I'm working on my MSc in Neuroinformatics
> > dissertation at the University of Edinburgh. My project involves
> > analysis of resting-state functional connectivity using graph theory
> > in Alzheimer's disease based on MEG data.
> >
> > Each of my subjects has a number of 10s epochs (trials) associated
> > with him/her. I was able to compute the coherence and weighted phase
> > lag index measures (with /ft_freqanalysis /and
> > /ft_connectivityanalysis) /by treating my 10s epochs as trials, but
> > now I would like to reduce the amount of noise in the estimation of
> > the frequency spectrum by employing Welch's method.
> >
> > For this, I split each 10s epoch in 2s segments (minitrials)
> with 50%
> > overlap:
> >
> > [sep_epoch_data] = ft_redefinetrial(cfg_cut,
> single_epoch_data)/. /
> >
> >
> > I then apply /ft_preprocessing /on the minitrials:
> >
> > [processed_single_epoch] = ft_preprocessing(cfg,
> sep_epoch_data);
> >
> > I then do frequency analysis on the preprocessed segmented data:
> >
> > [single_epoch_freq] = ft_freqanalysis(cfg_freq,
> > processed_single_epoch);
> >
> > where
> >
> > display(cfg_freq)
> > method: 'mtmfft'
> > taper: 'hanning'
> > foilim: [0.5000 4]
> > output: 'powandcsd'
> > channel: {148x1 cell} % 148 channels labelled from
> A1 to
> > A148
> > keeptrial: 'no' % don't keep the minitrials, as we want
> > to average them
> > keeptapers: 'no'
> >
> > Please note that I average the minitrials (/keeptrial = 'no'/) as I
> > want to get an average of the frequencies.
> >
> > The resulting /single_epoch_freq/ structure looks like:
> >
> > display(single_epoch_freq)
> > label: {148x1 cell}
> > dimord: 'chan_freq'
> > freq: [0.5001 1.0002 1.5004 2.0005 2.5006 3.0007 3.5008
> > 4.0009]
> > powspctrm: [148x8 double]
> > labelcmb: {10878x2 cell} % channel combinations
> (148*147/2)
> > crsspctrm: [10878x8 double]
> > cfg: [1x1 struct]
> >
> >
> > The last step is to append the averaged frequency structures of each
> > 10s epoch together and perform connectivity analysis on the main 10s
> > epochs. I do the concatenation like so:
> > freq_avgs_powspctrm = [freq_avgs_powspctrm;
> > permute(single_epoch_freq.powspctrm, [3,1,2])];
> >
> > freq_avgs_crsspctrm = [freq_avgs_crsspctrm;
> > permute(single_epoch_freq.crsspctrm, [3,1,2])];
> >
> > The idea behind /permute(..., [3, 1, 2])/ is that I want the first
> > dimension to represent trials, the second dimension channel
> > combinations and the third dimension frequencies, as this is needed
> > for the input of /ft_connectivity_wpli /(Repetitions x
> > Channelcombination (x Frequency)).
> >
> > I then call stat_conn = ft_connectivityanalysis(cfg_conn,
> freq_avgs);
> > where:
> >
> > display(cfg_conn)
> > method: 'wpli_debiased'
> > channel: {148x1 cell}
> >
> > and
> >
> > display(freq_avgs)
> > powspctrm: [4x148x8 double] % as I have 4 ten
> second epochs
> > crsspctrm: [4x10878x8 double] % as I have 4 ten
> second epochs
> > label: {148x1 cell}
> > dimord: 'chan_freq'
> > freq: [0.5001 1.0002 1.5004 2.0005 2.5006 3.0007 3.5008
> > 4.0009]
> > labelcmb: {10878x2 cell}
> > cfg: [1x1 struct]
> >
> >
> > The error that I get when running /ft_connectivityanalysis/ is:
> >
> > Error using cat
> > CAT arguments dimensions are not consistent.
> > Error in ft_checkdata>fixcsd (line 1170)
> > data.crsspctrm = cat(catdim, data.powspctrm,
> data.crsspctrm);
> >
> >
> > When debugging, /catdim/ is equal to 1. The error occurs because the
> > 2nd dimension of data.powspctrm and data.crsspctrm are not equal
> > (former is 148, latter is 10878). Do you have any suggestions on
> > getting around this problem? Should I construct /freq_avgs /(data
> > input to ft_connectivityanalysis) differently? I'm also open to
> > different approaches to working out Welch's method in FieldTrip.
> >
> > Please download this archive that contains my test script and 4
> > example 10s epochs of a subject:
> > https://www.dropbox.com/s/js7pztai02f5p27/Welch_fieldtrip.zip
> The code
> > should make things clearer (or the opposite).
> > Observations: I thought about using /ft_freqanalysis_mtmwelch/, but
> > apparently it's deprecated.
> >
> > Thank you all in advance for your feedback.
> >
> > Kind regards,
> > Dragos Stanciu
> >
>
>
> --
> J?rn M. Horschig
> PhD Student
> Donders Institute for Brain, Cognition and Behaviour
> Centre for Cognitive Neuroimaging
>
>
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
--
Jörn M. Horschig
PhD Student
Donders Institute for Brain, Cognition and Behaviour
Centre for Cognitive Neuroimaging
Radboud University Nijmegen
Neuronal Oscillations Group
FieldTrip Development Team
P.O. Box 9101
NL-6500 HB Nijmegen
The Netherlands
Contact:
E-Mail: jm.horschig at donders.ru.nl
Tel: +31-(0)24-36-68493
Web: http://www.ru.nl/donders
Visiting address:
Trigon, room 2.30
Kapittelweg 29
NL-6525 EN Nijmegen
The Netherlands
More information about the fieldtrip
mailing list