[FieldTrip] deep sources when warping from template (MNI) to individual space
Kadis, Darren
Darren.Kadis at cchmc.org
Wed Jan 23 20:47:23 CET 2019
Dear FieldTrippers:
Wanted to follow-up on a discussion regarding poor normalization, and specifically, an inward bias, when warping template (MNI space) source positions to individual subject space. This is a useful approach to normalization, facilitating group-level analyses and anatomical referencing, though meaningful inference is predicated on having accurate normalization/warps. At least one relevant discussion thread, here: https://mailman.science.ru.nl/pipermail/fieldtrip/2015-April/009111.html, though I don't see resolution.
In my lab, we're consistently observing an 'inward bias' when warping template source positions to individual space (see attached). Superficial sources seem to shift excessively deep, particularly at the dorsum. Has anyone adjusted the normalization parameters or implemented alternate warping procedures to generate accurate transformations? I will note that default normalization of individual MRI to template works well in both SPM8 and SPM12 (confirmed with checkreg).
I believe ft_preparesourcemodel calls upon ft_volumenormalize and spm routines to generate the deformation field. We've tried adjusted the warping regularization parameters in ft_volumenormalise both up and down by an order of magnitude, but did not see any real improvement. Suggestions?
Below, I'm sharing a short script used to visualize the relative performance of normalization with SPM8, SPM12 linear-only, and SPM12 nonlinear approaches, as implemented in FieldTrip. I used 346 source positions, located approximately 3.6mm deep to the template brain surface (roughly corresponding to mid-sulcal depth across the cerebral mantle; attached).
%% start
clear all; close all;
restoredefaultpath; addpath('PATH TO CURRENT FIELDTRIP DISTRO');
ft_defaults;
vs_pos = []; % nĂ—3, coords of interest, MNI space; see attached text, if interested in replicating
template_mri = ft_read_mri('PATH TO SPM12\spm12\canonical\avg152T1.nii');
template_mri.coordsys = 'spm'; % ft_volumesegment needs coordsys of the template volume
cfg = [];
cfg.output = {'brain', 'skull', 'scalp'};
cfg.spmversion = 'spm12';
cfg.spmmethod = 'new';
template_seg = ft_volumesegment(cfg, template_mri);
cfg = [];
cfg.method = 'singleshell';
template_headmodel = ft_prepare_headmodel(cfg, template_seg);
cfg = [];
cfg.grid.pos = vs_pos;
cfg.spmversion = 'spm12';
cfg.spmmethod = 'new';
cfg.headmodel = template_headmodel;
template_grid = ft_prepare_sourcemodel(cfg);
% evaluate dipole positions relative to modeled brain
figure; ft_plot_vol(template_headmodel, 'facecolor', 'cortex', 'edgecolor', 'none'); alpha 0.5; camlight; hold on; ft_plot_mesh(template_grid.pos);
% generate the individual headmodel; warp source positions from template to subject space
T1 = 'PATH TO SUBJECT T1'; % high-quality 3D-T1, 1mm isotropic, here
individual_mri = ft_read_mri(T1, 'dataformat', 'nifti_spm');
individual_mri.coordsys = 'spm';
cfg = [];
cfg.output = {'brain', 'skull', 'scalp'};
cfg.spmversion = 'spm12';
cfg.spmmethod = 'new';
individual_segmented_mri = ft_volumesegment(cfg, individual_mri);
cfg = [];
cfg.method = 'singleshell';
individual_headmodel = ft_prepare_headmodel(cfg, individual_segmented_mri);
individual_headmodel = ft_convert_units(individual_headmodel, 'cm');
cfg = [];
cfg.grid.warpmni = 'yes';
cfg.grid.template = template_grid;
cfg.grid.nonlinear = 'yes';
cfg.spmversion = 'spm8';
cfg.mri = individual_mri;
individual_grid_spm8 = ft_prepare_sourcemodel(cfg);
cfg = [];
cfg.grid.warpmni = 'yes';
cfg.grid.template = template_grid;
cfg.grid.nonlinear = 'no';
cfg.spmversion = 'spm12';
cfg.spmmethod = 'new';
cfg.mri = individual_mri;
individual_grid_spm12_linear = ft_prepare_sourcemodel(cfg);
cfg = [];
cfg.grid.warpmni = 'yes';
cfg.grid.template = template_grid;
cfg.grid.nonlinear = 'yes';
cfg.spmversion = 'spm12';
cfg.spmmethod = 'old';
cfg.mri = individual_mri;
individual_grid_spm12_nonlinear = ft_prepare_sourcemodel(cfg);
figure;
subplot(2, 2, 1); ft_plot_vol(template_headmodel, 'facecolor', 'cortex', 'edgecolor', 'none'); alpha 0.25; camlight; hold on; ft_plot_mesh(template_grid.pos, 'vertexcolor', 'red'); title('template');
subplot(2, 2, 2); ft_plot_vol(individual_headmodel, 'facecolor', 'cortex', 'edgecolor', 'none'); alpha 0.25; camlight; hold on; ft_plot_mesh(individual_grid_spm8.pos); title('individual spm8 nonlinear');
subplot(2, 2, 3); ft_plot_vol(individual_headmodel, 'facecolor', 'cortex', 'edgecolor', 'none'); alpha 0.25; camlight; hold on; ft_plot_mesh(individual_grid_spm12_linear.pos); title('individual spm12 linear only');
subplot(2, 2, 4); ft_plot_vol(individual_headmodel, 'facecolor', 'cortex', 'edgecolor', 'none'); alpha 0.25; camlight; hold on; ft_plot_mesh(individual_grid_spm12_nonlinear.pos); title('individual spm12 nonlinear');
%% end
In advance, thanks for your help.
Darren S. Kadis, PhD
Assistant Professor
Co-Director, MEG Core
Division of Neurology
Pediatric Neuroimaging Research Consortium
Cincinnati Children's Hospital Medical Center
MLC 15008, 3333 Burnet Avenue
Cincinnati, OH 45229-3026
Neurology and Neuroscience Graduate Program
College of Medicine, Department of Pediatrics
University of Cincinnati
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20190123/a02b6f08/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: compare_normalization.jpg
Type: image/jpeg
Size: 597389 bytes
Desc: compare_normalization.jpg
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20190123/a02b6f08/attachment-0001.jpg>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cortical_sources.txt
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20190123/a02b6f08/attachment-0001.txt>
More information about the fieldtrip
mailing list