[FieldTrip] Why are time-frequency results so much different from Beamformer source localization?

Patrick Wiegel patrick.wiegel at sport.uni-freiburg.de
Thu Nov 19 13:20:21 CET 2020


Dear fieldtrip community,

first of all, thank you for your valuable responses @Tzvetan and Stephen. They were both very helpful and got me to dig deeper into the analysis.

You were absolutely right in describing my approach for my Morlet wavelet TF analysis. The data were baseline corrected (in db). When contrasting the 2 conditions of interest, I receive the attached figure (dif_morlet). After your responses, I took the same approach for the mtmfft data with cfg.tapsmofrq = 8 (center frequency at 28 Hz) to reproduce the effect that I found between 20-35 Hz in the morlet wavelet analyses. I calculated frequency analysis (mtmfft) for both conditions (data_1, data_0) and their baseline periods (data_1_bas, data_0_bas) separately and then „baseline corrected“ the data from both conditions (also in db, see dif_mtmfft). The differences between conditions are now very similar between both approaches (morlet vs mtmfft).

In the next step. I followed your advice and performed source analyses of frequency_data for all 4 conditions separately (pow_1, pow_0, pow_1_baseline, pow_0_baseline) as well as from all_data from ft_appenddata. For the source_analyses from all 4 conditions, I am using the common filter from all_data as well as the source model (ft_prepare_leadfieldds) from all_data. After performing the ft_source_analysis function for all 4 conditions, I am trying to replicate what I have done with the power data ( in db). For this reason, I am using ft_math with source_1_dif = 10*log10 (source_1/source_1_baseline) and the same for source_0. After this, I am subtracting source_0_dif from source_1_dif as done during the frequency analysis yielding my final source data.

After interpolating the source differences, I am using ft_volumenormalise. The result from this approach is attached in dif_sources.

I am a bit puzzled since I would not expect these source data based on my power mtmfft data. I made sure that the coordinate systems and units are the same across models (volume_conduction_model, electrodes, MRI) but I am wondering whether I am doing something wrong in performing the source_analysis or whether the source results are reasonable.

Again, I uploaded the script and the data such that my analysis pipeline could be reproduced by everyone who is interested (https://github.com/PatrickWiegel/EEG-Beamformer-Source-localisation). Below, I am attaching the code for the source_analyses steps. Any comments on my results or approach are welcome.

All the Best from Germany,
Patrick



.








cfg              = [];
cfg.method       = 'dics';
cfg.headmodel    = vol;
cfg.elec         = elec_aligned;
cfg.dics.projectnoise = 'yes';
cfg.dics.lambda       = '5%';
cfg.dics.keepfilter   = 'yes';
cfg.dics.realfilter   = 'yes';
cfg.sourcemodel  = sourcemodel_beta;
source_beta_1 = ft_sourceanalysis(cfg, data_beta_1);
source_beta_0 = ft_sourceanalysis(cfg, data_beta_0);
source_beta_1_bas = ft_sourceanalysis(cfg, data_beta_1_bas);
source_beta_0_bas = ft_sourceanalysis(cfg, data_beta_0_bas);





%%
cfg            = [];
cfg.parameter = 'pow';
cfg.operation = '10*log10(x1/x2)';
sourceDiff1_beta = ft_math(cfg, source_beta_1,source_beta_1_bas);
sourceDiff0_beta = ft_math(cfg, source_beta_0,source_beta_0_bas);



sourceDiff_beta_dif = sourceDiff1_beta;
sourceDiff_beta_dif.pow = sourceDiff1_beta.pow - sourceDiff0_beta.pow;



%%
cfg            = [];
cfg.downsample = 2;
cfg.parameter  = 'pow';
sourceDiffInt_beta_dif  = ft_sourceinterpolate(cfg, sourceDiff_beta_dif , mri_realigned);



%%
maxval_beta = max(sourceDiffInt_beta_dif.pow);
%%
cfg = [];
cfg.nonlinear     = 'no';



sourceDiffIntNorm_beta_dif = ft_volumenormalise(cfg, sourceDiffInt_beta_dif);



%%
cfg = [];
cfg.method        = 'ortho';
cfg.interactive   = 'yes';
cfg.funparameter  = 'pow';
cfg.maskparameter = cfg.funparameter;
cfg.funcolorlim   = [0.0 maxval_beta];
cfg.opacitylim    = [0.0 maxval_beta];
cfg.opacitymap    = 'rampup';
ft_sourceplot(cfg, sourceDiffIntNorm_beta_dif);
%%


Patrick Wiegel
Department of Sport and Sport Science

University of Freiburg
Sandfangweg 4
79117 Freiburg i. Br .

phone: +49 (0)761/ 203-4550
email: patrick.wiegel at sport.uni-freiburg.de<mailto:patrick.wiegel at sport.uni-freiburg.de>
web: www.sport.uni-freiburg.de

Am 13.11.2020 um 12:48 schrieb Stephen Whitmarsh <stephen.whitmarsh at gmail.com<mailto:stephen.whitmarsh at gmail.com>>:

Hi Patrick, (and Tzvetan - who responded in the meantime),

I agree that you should start with a good correspondence between your initial results (wavelets), and the power difference you are trying to localize (with mtmfft).

Wavelets and fft methods can result in very similar - practically identical - results, but that depends on a number of parameters, especially concerning frequency-smoothing; Wavelets are typically defined in terms of nr. of cycles, while fft methods are defined in terms of time-windows. Wavelets defined in nr. of cycles will have a decreasing time-windows with increasing frequency, while with mtmfft time windows will remain the same. Because of this, frequency smoothing will increase with frequency with wavelets, and stay the same with a constant time window. Of course, you can make the fft time window frequency-dependent, as is described in the frequency-analyses tutorial, to make them more comparable. Secondly, the fft method allows you to specify frequency smoothing when you use Sleppian multitapers (cfg.taper = 'dpss'). To be clear, you should be able to recognize these differences in frequency smoothing/resolution when looking at the different TFR plots. Currently they look too different, probably because of something else (baseline?) than a wavelet-fft difference.

I would advise making a 'full' TFR with mtmfft similar as your wavelet results so that you can properly compare them. This allows you to also set the best parameters for smoothing/timeperiods. In fact, you can use the multitaper approach to more accurately extract the power in a certain frequency band. Only then compare the topo's, and only then do the beamformer, so you will pick up any unexpected results.

Because of different contrasts/baseline correction, I cannot compare the topo's / beamformer results.

Bon courage,
Stephen









Op vr 13 nov. 2020 om 11:30 schreef Patrick Wiegel <patrick.wiegel at sport.uni-freiburg.de<mailto:patrick.wiegel at sport.uni-freiburg.de>>:
Dear Field-trip community,

I am working on EEG data from a motor learning task. in the first part of my analysis, I performed a time-frequency analysis (Morlet wavelet method) and cluster-based permutation test. I compared two different conditions (correct & incorrect movements) within subjects and found a significant difference in the beta band (20-35 Hz) when subjects were provided with feedback. I attached the topographical plot from one subject that illustrates the difference between the conditions at the selected time point and frequency (dif_morlet). As you can see, beta power was higher in one condition in lateral frontal electrodes.

Now, I would like to better spatially locate the effect for this single subject. For this purpose, I followed the Beamformer tutorial on the website. In the first step, I selected the raw data of interest (at the time where the effect was seen) and performed frequency analyses for the 20-35 Hz range (mtmfft, contrast between conditions shown in dif_mtmfft). There is an apparent difference between dif_morlet and dif_mtmfft and I am wondering why this is the case? One apparent reason is that the time-frequency data were baseline corrected and the frequency data from mtmfft not.

Using the power and CSD data from mtmfft, I performed the source analysis with a standard MRI and head model. The source was located in the left hemisphere (source plot), which is in stark contrast to the time-frequency data (dif_morlet). I am aware that the source analysis is based on a lot of assumptions (conductivity etc.) that influence the calculations but it is very difficult to make sense of such discrepancy.
Maybe it is necessary to also baseline correct the mtmfft data before inputting them to the source analysis? Or doing the contrasting source localization betwee a single condition and the corresponding baseline data before contrasting the 2 conditions?

I am providing all necessary files and scripts (TF_analysis & BEAMFORMER) if anyone is interested to reproduce the results that I am showing and reporting for this single subject (https://github.com/PatrickWiegel/EEG-Beamformer-Source-localisation).

I would appreciate any help and discussion on that.

All the best,
Patrick





Patrick Wiegel
Department of Sport and Sport Science

University of Freiburg
Sandfangweg 4
79117 Freiburg i. Br .

phone: +49 (0)761/ 203-4550
email: patrick.wiegel at sport.uni-freiburg.de<mailto:patrick.wiegel at sport.uni-freiburg.de>
web: www.sport.uni-freiburg.de<http://www.sport.uni-freiburg.de/>

_______________________________________________
fieldtrip mailing list
https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
https://doi.org/10.1371/journal.pcbi.1002202
_______________________________________________
fieldtrip mailing list
https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
https://doi.org/10.1371/journal.pcbi.1002202

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20201119/31450154/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dif_morlet.eps
Type: application/postscript
Size: 85673 bytes
Desc: dif_morlet.eps
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20201119/31450154/attachment-0003.eps>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dif_mtmfft.eps
Type: application/postscript
Size: 69764 bytes
Desc: dif_mtmfft.eps
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20201119/31450154/attachment-0004.eps>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: source_dif.eps
Type: application/postscript
Size: 267264 bytes
Desc: source_dif.eps
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20201119/31450154/attachment-0005.eps>


More information about the fieldtrip mailing list