T1-MRI Segmentation with SPM12 / CAT12

Authors: Francois Tadel

CAT.gif CAT is a SPM12 toolbox that is fully interfaced with Brainstorm. It can replace efficiently FreeSurfer for generating the cortical surface from any T1 MRI. It runs on any OS in about 1 hour, instead of the typical 24hr FreeSurfer recon-all processing. The surfaces are registered to the templates with the FreeSurfer spheres, and include many anatomical and functional atlases.

You can either run the CAT segmentation from Brainstorm, or run it separately and import its outputs as you would do with FreeSurfer. The software is not packaged with Brainstorm and does not work with the compiled version of Brainstorm, you must install SPM12 and CAT separately.

Install SPM12

Install CAT12

Citing CAT12

If you use CAT from Brainstorm for MRI segmentation, please cite the following article in your publications:

Gaser C, Dahnke R, Kurth F, Luders E
CAT - A Computational Anatomy Toolbox for the Analysis of Structural MRI Data
NeuroImage, in review

Running CAT from Brainstorm

Importing the results in Brainstorm

If you run the segmentation process from Brainstorm, the import will be done automatically. Otherwise, if you need to import an existing CAT segmentation, here is the following procedure.

Cortical parcellations

FreeSurfer's FSAverage subject includes parcellations of the cortical surface in anatomical or functional regions. The description of this feature is available here:
http://freesurfer.net/fswiki/CorticalParcellation

Using CAT12 from Brainstorm, you have access to 15 atlases on all the individual brains:

These atlases are imported in Brainstorm as scouts (cortical regions of interest), and saved directly in the surface files. To check where they are saved: right-click on the low-resolution cortex file > File > View file contents. You can see that 17 structures "Atlas" are available, the first one that has Name='User scouts', and the second one Name='Destrieux'.

viewMat.gif

To access them from the interface: Double-click on the cortex and go to the Scout tab, and click on the drop-down list to select another Atlas (ie group of scouts):

scoutTab.gif atlasDestrieux.gif atlasDK.gif

atlasHCP.gif atlasSchaefer7.gif atlasSchaefer17.gif

Cortical thickness

The cortical thickness can be saved as a cortical map in the database (a "results" file). This result is generated when using the file format "CAT12 folder + Thickness maps" in the Import anatomy folder selection.

thicknessFile.gif thicknessMap.gif

SPM batch

The CAT segmentation is executed with the following SPM12 batch:

matlabbatch{1}.spm.tools.cat.estwrite.data = {[NiiFile ',1']};
matlabbatch{1}.spm.tools.cat.estwrite.data_wmh = {''};
matlabbatch{1}.spm.tools.cat.estwrite.useprior = '';
matlabbatch{1}.spm.tools.cat.estwrite.nproc = 0;                % Blocking call to CAT12
matlabbatch{1}.spm.tools.cat.estwrite.opts.tpm = {TpmNii};      % User-defined TPM atlas
matlabbatch{1}.spm.tools.cat.estwrite.output.bias.warped = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.GM.native   = 1;   % GM tissue maps
matlabbatch{1}.spm.tools.cat.estwrite.output.GM.warped   = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.GM.mod      = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.GM.dartel   = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.WM.native   = 1; % WM tissue maps
matlabbatch{1}.spm.tools.cat.estwrite.output.WM.warped   = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.WM.mod      = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.WM.dartel   = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.TPMC.native = 1; % Tissue classes 4-6
matlabbatch{1}.spm.tools.cat.estwrite.output.TPMC.warped = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.TPMC.mod    = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.TPMC.dartel = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.CSF.native  = 1; % CSF tissue maps
matlabbatch{1}.spm.tools.cat.estwrite.output.CSF.warped  = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.CSF.mod     = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.CSF.dartel  = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.label.native = 1; % CSF=1,GM=2,WM=3,WMH=4
matlabbatch{1}.spm.tools.cat.estwrite.output.label.warped = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.label.dartel = 0;
matlabbatch{1}.spm.tools.cat.estwrite.output.surface = 1;   % 1: lh+rh, sph registration

% Volume atlases
if isVolumeAtlases
    matlabbatch{1}.spm.tools.cat.estwrite.output.warps = [1 1];
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROI = 1;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.neuromorphometrics = 1;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.lpba40             = 1;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.cobra              = 1;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.hammers            = 1;
    matlabbatch{1}.spm.tools.cat.estwrite.output.atlas.native = 1;
else
    matlabbatch{1}.spm.tools.cat.estwrite.output.warps = [0 0];
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROI = 0;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.noROI = struct([]);
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.neuromorphometrics = 0;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.lpba40             = 0;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.cobra              = 0;
    matlabbatch{1}.spm.tools.cat.estwrite.output.ROImenu.atlases.hammers            = 0;
end

% Run SPM batch
spm_jobman('initcfg');
spm_jobman('run',matlabbatch);

Additional documentation

Tutorials/SegCAT12 (last edited 2020-12-21 09:20:00 by FrancoisTadel)