Recon with native submillimeter resolution
See also HighFieldRecon
This page describes how to run the FreeSurfer recon-all for data with voxel sizes less than 1mm3 at native resolution. Several FreeSurfer binaries have been fixed to enable this feature. The pipeline is still under development, so please use with caution.
Required FreeSurfer version
dev version built after August 2015 or FreeSurfer 6
Note on the voxel size
The method works well for voxel sizes 0.75 mm3. It should work with voxel between 1mm3 and 0.75mm3. Inputs with 0.5 mm3 voxels or below will have a brainmask failure (we are working on it!), but if you fix the brainmask manually, the rest of recon-all should work well. We haven't tested the stream for inputs with anisotropic voxels.
To run all of the recon-all pipeline at native resolution, you need
1) a “-hires” flag or a "-cm" (both do the same thing)
2) an expert options file
Here is an example command line command:
recon-all -all -s $SUBJECT -hires -i $IMAGE -expert $EXPERT_FILE
Content of the expert options file
For high-resolution data your expert options file should contain the maximum number of iterations for surface inflation that is more than the FreeSurfer’s default (-n 10). Sufficiently inflated surface is necessary for correct surface mapping onto a sphere and subsequent defect labeling, so it’s important. For example, if you notice that after topology correction the surfaces look worse than before topology correction (?h.smoothwm.nofix vs ?h.smoothwm), this may be an indication of too little inflation. You can overlay ?h.defect_labels onto ?h.inflated.nofix surfaces and see if there are regions on the mesh that are labeled as defects for no obvious reason. This would be a sign that more inflation is needed.
At the moment there is no clear rule on what the -n should be, because apart from mesh density it also depends on smoothness of the original surface. We found that for 0.75 mm isotropic voxels 20-50 iterations work well. This number will be larger for even smaller voxels.
The -n argument to mris_inflate is the maximum number of iterations FreeSurfer is allowed to perform during inflation, but it can stop before this maximum is reached. This is because FreeSurfer has some internal criterion of when to stop inflating the surface. The inflation process terminates EITHER when this criterion has been reached OR when the maximum allowed number of iterations is exceeded. So in principle, you can just put a very large number, e.g.
mris_inflate -n 100
(this will probably cause FreeSurfer to reach its internal criterion before 100 iterations is exceeded)
There is a small drawback to this, however. The inflation within recon-all is actually done twice: once before topological defect correction, generating ?h.inflated.nofix (where sufficient inflation is important) and once after, generated ?h.inflated (where the sufficient inflation isn't important since those inflated surfaces are used mainly for displaying overlays). Because the expert options file applies to both the first and the second inflation, you may notice that the final surfaces ?h.inflated look too balloon-like. If you care about the final look, you can re-run mris_inflate with a smaller -n from the command line after recon-all has finished, to get the inflation degree you like.
mris_inflate -n 15 ?h.smoothwm ?h.inflated
This is not a very elegant solution. In the future we hope to implement a stopping criterion, which is independent of image resolution, or determine the number of iterations automatically, but for now the expert options file works fine.
Running on launchpad
If you are running the submillimeter recon-all at the Martinos Center on launchpad, you might need more than one node and 7GB of RAM. For 0.75mm3 voxels I have been using two nodes and 14GM RAM (and an -openmp flag to recon-all, e.g.)
pbsubmit -n 2 -c "recon-all -all -s $SUBJECT -hires -i $IMAGE -expert $EXPERT_FILE -openmp 2"
Data with 0.5mm3 resolution may need -n 8 or more, and can take 3-4 days to finish, so be patient and good luck .