[FieldTrip] Activity "outside the brain" using ft_sourceinterpolate

Loehrer at staff.uni-marburg.de Loehrer at staff.uni-marburg.de
Tue May 10 12:56:19 CEST 2022

Dear FieldTrip community,

During my analysis of EEG data, I am encountering an issue using  
ft_sourceinterpolate. In short, the paradigm performed during  
EEG-acquisition included a tapping- and a resting-state.
So far, I preprocessed the functional data using custom-made scripts  
and FieldTrip routines, which resulted in a data structure as obtained  
by ft_preprocessing. The individual MRIs were segmented using  
FreeSurfer and loaded into Brainstorm to create a BEM head model using  
OpenMEEG. Afterwards, the individual MRI, leadfield, and sourcemodel  
(based on the subjects cortical sheet) were converted to  
Fieldtrip-format using out_fieldtrip_mri and out_fieldtrip_headmodel,  
respectively. After conversion, I checked that sensors, headmodel,  
sourcemodel, and leadfield align nicely. *
The issue arises, when I call ft_sourceinterpolate with my functional  
data (cross-spectral density matrix calculated with ft_freqanalysis,  
method = mtmfft, taper = dpss; coherence computed with  
ft_sourceanalysis, method = dics, head and leadfield taken from  
Brainstorm, both in the CTF-coordinate system, thus representing a 2D  
triangulated surface mesh) and the individual MRI in CTF space  
converted to Fieldtrip-format (a 3D regular grid with 256*256*256 data  
points). Basically, what happens is that ft_sourceinterpolate calls  
ft_checkdata in line 165 to check the MRI, which itself calls  
fixinside in line 634. This script assumes that “all positions are  
inside the region of interest”, thus it creates a variable called  
“inside” with 256*256*256 ones in the anatomical data. Therefore, when  
plotting the output of ft_sourceinterpolate, I end up with “spurious”  
activity outside the brain, as there is no definition of the voxels  
within the brain in the individual MRI.

I believe that one workaround would be to create a variable “inside”  
with the voxels inside the brain as defined by the headmodel. However,  
I do not know how to convert the 2D mesh inside the  
headmodel.bnd(3).pos to a 3D volumetric information based on the  
respective MRI. Do you have any suggestions how to achieve this, or  
any other suggestions on how to avoid the “spurious” activity outside  
the brain?

I am using FieldTrip version 20211020 on Windows 10.
The code used is:

inside = false(size(leadfield_final.pos,1),1);
inside(indm1,:) =  leadfield_final.inside(indm1,:); %(where indm1 is  
the index of dipoles located in M1)

cfg                 = [];
cfg.frequency       = freq_csd.freq;
cfg.method          = 'dics';
cfg.refchan         = 'AccX';
cfg.headmodel       = headmodel_final;
cfg.sourcemodel     = leadfield_final;
cfg.sourcemodel.inside = inside;
cfg.dics.lambda       = '5%';
cfg.dics.keepfilter   = 'yes';
cfg.dics.fixedori     = 'yes';
cfg.dics.realfilter   = 'yes';
source_coh_ext_m1      = ft_sourceanalysis(cfg, freq_ext);

% Condition: Extern
cfg              = [];
cfg.parameter    = 'coh';
cfg.interpmethod = 'nearest';
cfg.coordsys     = 'ctf';
source_coh_ext_interp_m1   = ft_sourceinterpolate(cfg,  
source_coh_ext_m1, ftmri);

% plot the results
maxval = max(source_coh_ext_interp_m1.coh);

cfg               = [];
cfg.method        = 'ortho';
cfg.funparameter  = 'coh';
cfg.maskparameter = 'coh';
cfg.funcolorlim   = [0.0 maxval];
cfg.opacitylim    = [0.0 maxval];
cfg.opacitymap    = 'rampup';
ft_sourceplot(cfg, source_coh_ext_interp_m1);

Any help is very much appreciated.



* ( additional info that might be useful: I calculated the  
transformation matrices for conversion from CTF- to MNI-space using  
the maff8-algorithm, converted the individual sourcemodels to  
MNI-space applying these transformation matrices, and mapped the  
HCP-atlas onto the sourcemodel using ft_sourceinterpolate. Employing  
this approach, I identified the dipoles/grid points located within  
several regions of interest. These dipoles will then be used as an  
input for ft_sourceanalysis, as I want to employ a DICS-beamformer to  
find the dipole that shows maximum coherence with movement.  
Subsequently, I want to use a LICS-beamformer to create a virtual  
channel time series of that dipole and continue processing the data.)

Dr. med. Philipp Löhrer

Assistenzarzt der Klinik für Neurologie
Universitätsklinikum Giessen und Marburg, Standort Marburg
35033 Marburg

More information about the fieldtrip mailing list