[FieldTrip] PAC analysis with ft_crossfrequencyanalysis
Elisa Tatti
elisatatti at msn.com
Thu Apr 14 17:32:49 CEST 2022
Dear Dr. Schoffelen,
Thank you very much for your reply.
I hope to clarify some questions that probably needed more description and context.
I also hope this thread might be useful to someone else in the future and help to support the use of Fieldtrip for EEG connectivity analyses.
I computed the complex fourier spectrum as follows:
f_o_i=1:0.5:55;
cycles=3:10;
t_o_i= [-40:100]/40
cfg=[];
cfg.method='wavelet';
cfg.output='fourier';
cfg.channel='all'
cfg.trials='all'
cfg.keeptrials='yes';
cfg.keeptapers='yes';
cfg.foi=f_o_i;
cfg.toi=t_o_i;
cfg.width=ceil(f_o_i/(size(cycles,2)-1))+2
[freq] = ft_freqanalysis(cfg, data);
The output is a 4-D fourier spectrum with this dimension: 98x180x109x141 (trials x chan x freq x time)
The modulation index is computed as follows:
cfg= []
cfg.freqlow = [4 8]%%scalar or vector, selection of frequencies for the low frequency data
cfg.freqhigh = [30 55] %%scalar or vector, selection of frequencies for the high frequency data
cfg.channel = 'all'
cfg.method = 'mi' %%string, can be
% % 'coh' - coherence
% % 'plv' - phase locking value
% % 'mvl' - mean vector length
% % 'mi' - modulation index
cfg.keeptrials = 'no' %%string, can be 'yes' or 'no'
crossfreq = ft_crossfrequencyanalysis(cfg, freq)
In response to your reply:
Last but not least, is there a physiological or computational explanation for the impossibility of computing PAC on different electrodes?
I don’t understand the question underlying this question: given some data, and a function, one could most of the time produce a result. In that sense it is always possible. Whether or not that result is interpretable, that’s a different question, but it probably does not depend on whether it was computed on electrode O1, or on electrode P6
The code of ft_crossfrequencyanalysis states that computation for different channels is not supported:
Lines 85-86:
% prior to 19 Jan 2017 this function had input options cfg.chanlow and cfg.chanhigh,
% but nevertheless did not support between-channel CFC computations
I was wondering the reason behind this since I have found some toolboxes for PAC that allow computing the MI with a different selection of channels (e.g. occipital chans for phase and frontal chans for amplitude).
Q.2 When computing PAC with Fieldtrip, I get the same value for the entire frequency band of the phase (i.e. same number from 4 to 8 Hz). This is despite the resulting MI matrix being N.channel*N.freqphase*N.freqAmplitude.
Since I would like to explore which theta frequency phase is mostly coupled with the higher frequency power, I would like to know why I get the same values and how to fix this as I could not find any configuration about averaging frequencies (e.g. cfg.averageoverfreq = 'yes'/'no').
This I don’t understand. I cannot comment on this without knowing more about the exact parameters used for the generation of the input data into the ft_crossfrequencyanalysis function.
I asked this question because, despite the output of ft_crossfrequencyanalysis being chanxfreqlowxfreqhigh (180x24x51), the value is the same for all the frequencies of the phase (4-8 Hz). There is no parameter in the function to configure this option and it is indeed limiting any explorative analysis. Is there a way to get a PAC estimate for every frequency of the phase?
Q3. The last question about the statistics was because, with other PAC toolboxes, a statistic against a surrogate comodulogram with no coupling is computed and a pvalue is generated to assess whether the PAC index is reliable or not.
It seems that Fieldtrip does not have a function for this purpose. Also, the standard permutation statistics would require changing the structure of the data to match it with the inputs required by spectral or time statistical analysis functions. Thus, I was wondering how to compute proper statistical testing on PAC data with Fieldtrip.
In conclusion, if I understood your response correctly, Fieldtrip's function for computing PAC with Tort's Modulation index is not appropriate for tasks with event-related modulation of oscillatory activity. Thus, PAC analysis should only be run on time windows where no event-related activity takes place or on resting-state data. Is that correct?
Thank you for taking the time to read my questions and responses.
Best wishes and happy Easter,
Elisa
________________________________
From: fieldtrip <fieldtrip-bounces at science.ru.nl> on behalf of Schoffelen, J.M. (Jan Mathijs) via fieldtrip <fieldtrip at science.ru.nl>
Sent: Wednesday, April 13, 2022 07:59
To: FieldTrip discussion list <fieldtrip at science.ru.nl>
Cc: Schoffelen, J.M. (Jan Mathijs) <janmathijs.schoffelen at donders.ru.nl>
Subject: Re: [FieldTrip] PAC analysis with ft_crossfrequencyanalysis
Hi Elisa,
Your questions are not decorated with any insights about code/data, so it’s a bit guessing as to how to compile an answer to your questions that might help you further. I’ll try anyhow:
1. What is the minimum epoch length required to compute PAC (is 1s enough to compute the phase of 4 Hz)?
The sliding time window (which is not necessarily the same as the epoch length) should be sufficiently long to get a decent estimate of the phase at 4Hz. Thus, a cfg.t_ftimwin for the low frequency oscillation, to be used in ft_freqanalysis to compute the freqlo should be sufficient.
1.
2. Is this computation suitable for tasks with a strong event-related synchronization? I read that ERPs should be subtracted from this analysis to avoid confounding effects but here I have reaching movements.
No, and subtraction of an ERP is not going to be very useful in my opinion. See: https://www.fieldtriptoolbox.org/faq/evoked_vs_induced/
1. When computing PAC with Fieldtrip, I get the same value for the entire frequency band of the phase (i.e. same number from 4 to 8 Hz). This is despite the resulting MI matrix being N.channel*N.freqphase*N.freqAmplitude.
2. Since I would like to explore which theta frequency phase is mostly coupled with the higher frequency power, I would like to know why I get the same values and how to fix this as I could not find any configuration about averaging frequencies (e.g. cfg.averageoverfreq = 'yes'/'no').
This I don’t understand. I cannot comment on this without knowing more about the exact parameters used for the generation of the input data into the ft_crossfrequencyanalysis function.
1. If I manage to compute a meaningful MI, how do I statistically test whether it is significant?
‘Significant’ is always related to a null hypothesis. What’s your null hypothesis?
1. Last but not least, is there a physiological or computational explanation for the impossibility of computing PAC on different electrodes?
I don’t understand the question underlying this question: given some data, and a function, one could most of the time produce a result. In that sense it is always possible. Whether or not that result is interpretable, that’s a different question, but it probably does not depend on whether it was computed on electrode O1, or on electrode P6
Best wishes,
Jan-Mathijs
Thank you very much for taking the time to read my questions. I really hope to get some answers from you.
Best wishes.
Elisa
Elisa Tatti, Ph.D.
Post Doctoral Research Fellow
CUNY, School of Medicine
160 Convent ave
10031
New York City, NY
Tel. +1 3472043952
pronouns: she/her/hers
_______________________________________________
fieldtrip mailing list
https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
https://urldefense.com/v3/__https://doi.org/10.1371/journal.pcbi.1002202__;!!HJOPV4FYYWzcc1jazlU!5LW3HBBoemUPEhg6a_oAvt1CgyxKXM4ht3E-09jq5qNQLSuUAwlDJ4wg-LQfRQyUez2tPhThigXKwdpfytysP0iAbbWWxNcf__bmiQ$
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20220414/e8cb85b6/attachment.htm>
More information about the fieldtrip
mailing list