[FieldTrip] Activity "outside the brain" using ft_sourceinterpolate

Schoffelen, J.M. (Jan Mathijs) janmathijs.schoffelen at donders.ru.nl
Mon May 23 09:46:32 CEST 2022

Hi Philipp,

What is the reason that you want to interpolate the ‘2D’ data back into the volume? If you have the individual participants’ cortical representation, where (I assume) the brainstorm imported leadfield_final also contains a ’tri’ field, you can easily use ft_sourceplot with cfg.method = ’surface’ on the output of ft_sourceanalysis directly

Best wishes,

> On 10 May 2022, at 12:56, Philipp via fieldtrip <fieldtrip at science.ru.nl> wrote:
> 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.
> Best,
> Philipp
> * ( 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
> Baldingerstraße
> 35033 Marburg
> _______________________________________________
> fieldtrip mailing list
> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> https://urldefense.com/v3/__https://doi.org/10.1371/journal.pcbi.1002202__;!!HJOPV4FYYWzcc1jazlU!6iPgvs5NNPK95Whaaeykjm1EQX36KOLq7QNdAbeGB-c3qeNdwZD-Kn3WjZ6JJ8UMU4Tpjfosfom9DUs9opKdKA559Z6MVUWS124haA$

More information about the fieldtrip mailing list