[FieldTrip] interpolation (ft_sourceinterpolate) of triangulated cortical mesh onto MNI space atlas misalignment

Thomas Houweling thomas.houweling at gmail.com
Thu Sep 23 19:09:09 CEST 2021


Dear FieldTrippers,

I have issues with aligning any atlas to my cortical sheet ('unstructured'
triangulated mesh) source model using ft_sourceinterpolate.
I need to do source interpolation in order to assign each of my (2002)
source points to a reduced number of parcels.

I have recorded EEG data from a 128-channel electrode (+ 4 non-recording
ones) EGI system.
I have used openMEEG to generate the headmodel, source model, and the
leadfield (following
https://www.fieldtriptoolbox.org/workshop/oslo2019/forward_modeling/) and
checked that everything was aligned.

The source model has the following fields:

                pos: [2002×3 double]
                tri: [3993×3 double]
               unit: 'mm'
          leadfield: {2002×1 cell}
              label: {132×1 cell}
    leadfielddimord: '{pos}_chan_ori'

I now would like to have an atlas-based assignment of the source points
('voxels') to an atlas.
I have first tried with the AAL 'ROI_MNI_V4.nii'.
atlas is a structure with the following fields:

          dim: [91 109 91]
           hdr: [1×1 struct]
     transform: [4×4 double]
          unit: 'mm'
        tissue: [91×109×91 double]
   tissuelabel: {1×116 cell}
        coordsys: 'mni'

It is a suboptimal choice for me since I am not interested in subcortical
parcels, but it was the most documented one.
When I run ft_sourceinterpolate...:

cfg = [];
cfg.method        = 'nearest';
cfg.parameter     = 'tissue';
parcels = ft_sourceinterpolate(cfg,atlas,sourcemodel);

...obtaining the parcels structure...:
pos: [2002×3 double]
      tri: [3993×3 double]
     unit: 'mm'
   inside: [2002×1 logical]
   tissue: [2002×1 double]
      cfg: [1×1 struct]

...only 47/116 parcels have at least one voxel assigned (which is possible,
since I only have voxels in the cortex), but, more worrying, only 535/2002
voxels are assigned to a parcel (which is not expected).

Further, by plotting the interpolated sources...:

cfg               = [];
cfg.method        = 'surface';
cfg.funparameter  = 'tissue';
cfg.funcolormap   = 'jet';
ft_sourceplot(cfg, parcels);

...a misalignment is clearly visible, such that parcels are mostly observed
in the left temporal lobe and much less elsewhere.
I have been trying to play around with the .pos field of the sourcemodel
(e.g., by switching its dimension, or shifting in one dimension) before
running ft_sourceinterpolate to look for systematic shifts in the
interpolated surface.
This does change the voxel-to-parcel assignment, but, as far as I can tell,
not in a really systematic way.

I have also tried the 'sphere_avg', and 'sphere_weighteddistance'
interpolation methods, but results were even more confusing.
I have also tried with other atlases, including the
'Schaefer2018_100Parcels_7Networks_order_FSLMNI152_1mm.nii' and the
'HCP-MMP1_on_MNI152_ICBM2009a_nlin.nii'.
I obtain very different source interpolations, but neither makes sense.

I fear that there is something very wrong in matching the MNI coordinate
system with the 'grid-free' voxel locations.

Can someone let me know how to do this?

Thank you very much and best regards,

Thom

--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20210923/04842612/attachment.htm>


More information about the fieldtrip mailing list