SUMA Tutoral #1: Reconstructing the Cortical Surface


The first step of a surface-based analysis is to reconstruct the cortical surface from a three-dimensional volume. This is discussed in detail in the FreeSurfer Short Course. Here, we will run a script to process each of our subject’s anatomical datasets using FreeSurfer’s recon-all command.

Running recon-all

If you have FreeSurfer and the parallel command installed, you will be able to loop the recon-all command over all of your subjects. First, navigate to the Flanker directory containing all of your subjects, and type the following:

mkdir FS

We will be running all of our FreeSurfer analyses in this directory, and storing the output there as well. To do that, navigate into the FS directory (i.e., type cd FS), and run the following code:


 # Check whether the file "subjList.txt" exists; if it doesn't, create a file containing all of the subject names in our study

if [ ! -f subjList.txt ]; then
   ls .. | grep ^sub- > subjList.txt

# Copy each subject's anatomical file into the current directory, unzip the file, and set the current directory as FreeSurfer's SUBJECTS_DIR. Then process each of the anatomical files with recon-all using the "parallel" command

for sub in `cat subjList.txt`; do
    cp ../${sub}/anat/*.gz .

gunzip *.gz


ls *.nii | parallel --jobs 8 recon-all -s {.} -i {} -all -qcache

# Clean up

rm *.nii

A copy of this file can be downloaded here.

Once you have downloaded the script (or copied and saved the above text into a file called, you can run it by typing:


Monitoring the Progress of Recon-all

The above script will take a few days to finish. As the script runs, it will generate directories with the names sub-01_T1w, sub-02_T1w, and so on, one for each subject in your study. You can check on the status by looking at the file recon-all.log in the scripts sub-directory, which is updated each time FreeSurfer completes a step of the preprocessing. The full path to the file for sub-01, for example, would be sub-01_T1w/scripts/recon-all.log. Open up the file in a text editor, and scroll to the bottom. If everything has finished without errors, you should see something like the following:

recon-all -s sub-01_T1w finished without error at Wed Sep 11 04:22:01 EDT 2019

If recon-all exited with errors, on the other hand, you will see text that says Exited with ERRORS. Else, recon-all is probably still running, and you should check on it later.