Lausanne Parcellation: Difference between revisions
No edit summary |
No edit summary |
||
Line 40: | Line 40: | ||
The parcellation step will run for quite a while. When it has finished, the resulting label files can be found in ''${SUBJECTS_DIR}/${SUBJECT_ID}/label/''. | The parcellation step will run for quite a while. When it has finished, the resulting label files can be found in ''${SUBJECTS_DIR}/${SUBJECT_ID}/label/''. | ||
=== Generate a Color Lookup Table (CLUT) === | === Generate a Color Lookup Table (CLUT) and Merge Annotations === | ||
Unfortunately, the process doesn’t just create a single .annot file containing the ~500 labels for each hemisphere. That would be too convenient. Instead, we have to do some fussing around to merge everything all together. Freesurfer has a tool called mris_label2annot that we can use to combine it all. | Unfortunately, the process doesn’t just create a single .annot file containing the ~500 labels for each hemisphere. That would be too convenient. Instead, we have to do some fussing around to merge everything all together. Freesurfer has a tool called mris_label2annot that we can use to combine it all. | ||
Line 53: | Line 53: | ||
The MATLAB function SurfLabelCLUT.m I just described is used indirectly by a shell script I have written called clut.sh, which is also found in the ubfs folder. This shell script can be used if it exists in your Linux $PATH. You should already have a ~/bin directory where your shell scripts are kept, so this file can be copied there if it doesn't already exist: | The MATLAB function SurfLabelCLUT.m I just described is used indirectly by a shell script I have written called clut.sh, which is also found in the ubfs folder. This shell script can be used if it exists in your Linux $PATH. You should already have a ~/bin directory where your shell scripts are kept, so this file can be copied there if it doesn't already exist: | ||
cp ~/ubfs/cpmcnorg/Scripts/Shell/clut.sh ~/bin | cp ~/ubfs/cpmcnorg/Scripts/Shell/clut.sh ~/bin | ||
==== | ==== Run the Scripts ==== | ||
These two scripts handle the dirty work in the Linux terminal by calling the clut.sh script, passing a subject id as a parameter: | These two scripts handle the dirty work in the Linux terminal by calling the clut.sh script, passing a subject id as a parameter: | ||
clut.sh 501_001 | clut.sh 501_001 | ||
This script will call on MATLAB to generate a CLUT, and then merge all the anatomical subdivisions generated in the previous step into two .annot files called lh.lausanne.annot and rh.lausanne.annot, respectively. These .annot files will be placed in the ${SUBJECTS_DIR}/${SUBJECT_ID}/label/ folder. | This script will call on MATLAB to generate a CLUT, and then merge all the anatomical subdivisions generated in the previous step into two .annot files called lh.lausanne.annot and rh.lausanne.annot, respectively. These .annot files will be placed in the ${SUBJECTS_DIR}/${SUBJECT_ID}/label/ folder. |
Revision as of 11:21, 29 April 2016
The Lausanne Parcellation is a workflow that subdivides the 30+ general brain regions into many smaller partitions of approximately equal size. This gives us a finer-grained partitioning of the cortex. Because they are smaller, these partitions are more likely to behave relatively more homogeneously during a particular task. Becaues they are of comparable size, it is more justifiable to weight them equally in your analyses.
The Lausanne 2008 parcellation scheme refers to the 2008 PLoS Biology Paper Mapping the Structural Core of Human Cerebral Cortex
Lausanne Parcellation Workflow
Recon-all
A precondition for subparcellating the cortex in surface space is that you will first require a parcellated cortical surface mesh on which to operate. You will need to take a T1 (i.e., anatomical; MPRAGE) volume to the end of the recon-all pipeline, by running the autorecon1, autorecon2 and autorecon3 steps, as outlined elsewhere.
Subparcellate Using ConnectomeMapper in Python
The Lausanne 2008 subparcellation is most easily carried out using the ConnectomeMapper Python library. This should already be installed on your workstation. I believe these libraries use calls to FreeSurfer to carry out the parcellation, but I am not totally sure that this is the case, nor what actually goes on under the hood. Nonetheless, the connectome mapper toolkit (cmtk) Python interface provides an easy way to get this done using the Python scripting language.
First, in your Linux terminal, navigate to your $SUBJECTS_DIR
cd $SUBJECTS_DIR
Hopefully this is indeed the directory that contains the folder for the subject whose surface mesh you wish to sub-parcellate. If not, you will need to navigate to the correct directory, and reset your SUBJECTS_DIR environment variable as required.
Next, launch ipython in your terminal window:
ipython
You will now find yourself in a python interactive command shell that looks something like this:
Python 2.7.6 (default, Jun 22 2015, 17:58:13) Type "copyright", "credits" or "license" for more information. IPython 1.2.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]:
Suppose you wish to sub-parcellate the subject with ID 605_001. You would type the following commands in the interactive Python shell:
import os import nipype.interfaces.cmtk as cmtk parcellate = cmtk.Parcellate() parcellate.inputs.subject_id="605_001" parcellate.inputs.subjects_dir=os.environ['SUBJECTS_DIR']; parcellate.run();
That's it. If you had a different participant in mind, you would simply provide a different folder name for the parcellate.inputs.subject_id
value.
The parcellation step will run for quite a while. When it has finished, the resulting label files can be found in ${SUBJECTS_DIR}/${SUBJECT_ID}/label/.
Generate a Color Lookup Table (CLUT) and Merge Annotations
Unfortunately, the process doesn’t just create a single .annot file containing the ~500 labels for each hemisphere. That would be too convenient. Instead, we have to do some fussing around to merge everything all together. Freesurfer has a tool called mris_label2annot that we can use to combine it all.
Unfortunately, label colors are used as an important organizing tool. This means we’re also going to have to assign colors to each of our 500 regions in each hemisphere with a CLUT.
Gather Required Scripts
SurfLabelCLUT.m
A MATLAB function (SurfLabelCLUT.m) needs to be in your MATLAB path. If it is not, you can copy it from the ubfs folder to a directory appearing in your MATLAB path (such as your ~/Documents/MATLAB/ directory):
cp ~/ubfs/cpmcnorg/Scripts/Matlab/SurfLabelCLUT.m ~/Documents/MATLAB/
If this file can be found in your MATLAB path, then it will be available for MATLAB to use.This function generates a color table containing similar colors for the subdividsions within each broad anatomical region. For example, all the subdivisions of the Middle Temporal Gyrus (MTG) might be various shades of green, but those can be differentiated from the subdivisions of the adjacent Superior Temporal Gyrus, which might be assigned various shades of purple.
clut.sh
The MATLAB function SurfLabelCLUT.m I just described is used indirectly by a shell script I have written called clut.sh, which is also found in the ubfs folder. This shell script can be used if it exists in your Linux $PATH. You should already have a ~/bin directory where your shell scripts are kept, so this file can be copied there if it doesn't already exist:
cp ~/ubfs/cpmcnorg/Scripts/Shell/clut.sh ~/bin
Run the Scripts
These two scripts handle the dirty work in the Linux terminal by calling the clut.sh script, passing a subject id as a parameter:
clut.sh 501_001
This script will call on MATLAB to generate a CLUT, and then merge all the anatomical subdivisions generated in the previous step into two .annot files called lh.lausanne.annot and rh.lausanne.annot, respectively. These .annot files will be placed in the ${SUBJECTS_DIR}/${SUBJECT_ID}/label/ folder.