FreeSurfer Tutorial: Useful recon-all flags.

This page extends ReconAllDevTable. The following flags can be used in conjunction with individual steps or the entire process:

-autorecon-all

either of these flags will work to run the entire recon-all process.

-all

-clean-tal

trashes any manual edits to the talairach, makes talairach.xfm and talairach.auto.xfm the same and runs using the automatically generated talairach.xfm

-clean-seed

trashes all saved seed point for the cutting planes and uses the automatically set cutting planes.

-clean-cp

trashes control points and runs the normalization without control points.

-clean-bm

trashes any manual edits to the brainmask.mgz volume, makes brainmask.mgz and brainmask.auto.mgz the same and runs using the automatically generated brainmask.mgz

-clean-wm

trashes any manual edits to the wm.mgz volume and runs using the automatically generated wm.mgz.

-clean-aseg

trashes any manual edits to the aseg.mgz and runs using the automatically generated aseg.mgz

-clean-cpwm

combination of -clean-cp and -clean-wm.

-clean-xopts

delete pre-existing expert options file

-clean-cw256

-clean-lta

moves *.lta files to trash

-clean-pfh

trashes preflood height volumes (skullstrip)

-clean-bfse

trashes edits to brain.finalsurfs.manedit.mgz

-clean

use this flag to clear all of your manual edits and run it completely fresh.

-deface

removes the face from the orig volume to anonymize it.

-dontrun

useful for debugging. just prints the commands that will run (does not execute them).

-gcut

use this flag when skull strip leaves a little bit of dura behind. In this case, adjusting the watershed parameters won't be as useful and manual edits will take too long.
INFO: Care must be taken to thoroughly inspect your data when using -gcut. In particular, inpsect the edges of gm and cerebellum for over-aggressive cutting. Add -segmentation brainmask.gcuts.mgz to tkmedit to view the voxels which gcut has removed.

-mprage

changes some of the assumptions about CNR and SNR, and will use a higher threshold to allow the control points to grow more liberally than in general.

-3T

Enables the two 3T specific options that recon-all supports: nu intensity correction params, and the special schwartz atlas

-multistrip

use this flag on a subject when you would like to get skullstrip results using several different watershed preflood heights simultaneously. Output will be nu, orig, and T1 volumes stripped at these heights: 5, 10, 20, 30. You can change which preflood heights are used by setting this variable first: setenv WATERSHED_PREFLOOD_HEIGHTS '20 30 40 50'. Be sure to use -clean-bm with this flag.

-noaseg

use this flag on subjects that either cannot use an aseg (i.e., baby brains or non-human primates) or for those for which you will never want an aseg. It skips the subcortical segmentation and will not try and use it (aseg.mgz) in any of the subsequent steps.

-norandomness

use this flag on a subject when it is necessary to ensure that results are exactly the same from run to run. it seeds the random number generator used by some algorithms with the same number, removing any variability.

-notal-check

use this flag when running a subject after receiving an error about Tailarach Failure Detection and the tailarach transform looks fine after checking it with this command line: tkregister2 --mgz --s <subjid> --fstal

-no-wsgcaatlas

use this flag when you have reason to believe that certain anatomy could be an outlier, and is responsible for causing the skullstripping step to fail or produce poor skullstripping (wsgcaatlas = with skull gaussian classifier array atlas)

-surfsegedit

this flag fixes the gm and a few other areas in the aseg using info from the surfaces. Run after the surfaces are done.

-time

this flag can be added to report the time each step takes

-canorm-usecps

This flag uses control points to change the aseg. This can be particularly useful when you have an overlabeled putamen (the strategy would be to put the control points in white matter surrounding the putamen. It is advised to do these types of edits first before using control points to edit the surfaces (the default use of control points).

-vno_match_check

Confirms that the surface data is out of sync in case an error indicates that there is a size mismatch. Then run from whatever stage that is out of sync.

recon-all flag

Used with step

Description

-no-ca-align

-careg

this flag should be used if the data to be processed comes from the same scanner platform and pulse sequence as the atlas. With the FreeSurfer RB40 atlas this means MPRAGE on a 1.5T Siemens scanner.

-calabel

-subcortseg

-gcareg

runs the subcortical segmentation and associated statistics

-canorm

-careg

-rmneck

-skull-lta

-calabel

-segstats

-cc-crs <c r s>

-fill

manually sets the corpus callosum seed point

-pons-crs <c r s>

-fill

manually sets the pons seed point

-rh-crs <c r s>

-fill

manually sets the right hemisphere seed point

-lh-crs <c r s>

-fill

manually sets the left hemisphere seed point

-jacobian_dist0

Computes how much an individual surface must be distorted in order to perfectly match the atlas (ie, distance contraints are turned off).

The following flags can be used after certain manual intervention to regenerate accurate volumes and surfaces (if a data set has or needs spherical morphing, add the -autorecon3 flag):

recon-all step

Individual Flag

Input

Command Line

Output

recon-all -autorecon1 -subjid <subjid>

-i <invol1>

invol1.dcm or .nii or .mgz

mri_convert invol1.dcm orig/001.mgz

orig/001.mgz

-i <invol2> optional

invol2.dcm or .nii or .mgz

mri_convert invol2.dcm orig/002.mgz

orig/002.mgz

-T2 <invol> or
-FLAIR <invol> optional

invol.dcm or .nii or .mgz

mri_convert --no_scale 1 invol.dcm orig/T2raw.mgz

orig/T2raw.mgz

-motioncor

orig/001.mgz

mri_robust_template --mov 001.mgz 002.mgz --average 1 --template rawavg.mgz --satit --inittp 1 --fixtp --noit --iscale --iscaleout --subsample 200 --lta

rawavg.mgz

orig/002.mgz

rawavg.mgz

mri_convert rawavg.mgz orig.mgz --conform

orig.mgz

orig.mgz

mri_add_xform_to_header -c transforms/talairach.xfm orig.mgz orig.mgz

orig.mgz

-talairach

orig.mgz

mri_nu_correct.mni --n 1 --proto-iters 1000 --distance 50 --no-rescale --i orig.mgz --o orig_nu.mgz

orig_nu.mgz

orig_nu.mgz

talairach_avi --i orig_nu.mgz --xfm transforms/talairach.auto.xfm

transforms/talairach.auto.xfm

transforms/talairach.auto.xfm

cp transforms/talairach.auto.xfm transforms/talairach.xfm

transforms/talairach.xfm

transforms/talairach.xfm

talairach_afd -T 0.005 -xfm transforms/talairach.xfm

awk -f $FREESURFER_HOME/bin/extract_talairach_avi_QA.awk transforms/talairach_avi.log

transforms/talairach_avi.log

-nuintensitycor

orig.mgz

mri_nu_correct.mni --i orig.mgz --o nu.mgz --uchar transforms/talairach.xfm --n 2

nu.mgz

talairach.xfm

-normalization

nu.mgz

mri_normalize -g 1 -mprage nu.mgz T1.mgz

T1.mgz

-skullstrip

nu.mgz

mri_em_register -skull nu.mgz $FREESURFER_HOME/average/RB_all_withskull_2016-05-10.vc700.gca transforms/talairach_with_skull.lta

transforms/talairach_with_skull.lta

T1.mgz

mri_watershed -T1 -brain_atlas $FREESURFER_HOME/average/RB_all_withskull_2016-05-10.vc700.gca transforms/talairach_with_skull.lta T1.mgz brainmask.auto.mgz

brainmask.auto.mgz

brainmask.auto.mgz

cp brainmask.auto.mgz brainmask.mgz

brainmask.mgz

recon-all step

Individual Flag

Input

Command Line

Output

recon-all -autorecon2 -subjid <subjid>

-gcareg

brainmask.mgz

mri_em_register -uns 3 -mask brainmask.mgz nu.mgz $FREESURFER_HOME/average/RB_all_2016-05-10.vc700.gca transforms/talairach.lta

transforms/talairach.lta

nu.mgz

-canorm

brainmask.mgz

mri_ca_normalize -c ctrl_pts.mgz -mask brainmask.mgz nu.mgz $FREESURFER_HOME/average/RB_all_2016-05-10.vc700.gca transforms/talairach.lta norm.mgz

norm.mgz

nu.mgz

transforms/talairach.lta

-careg

brainmask.mgz

mri_ca_register -align-after -nobigventricles -mask brainmask.mgz -T transforms/talairach.lta norm.mgz $FREESURFER_HOME/average/RB_all_2016-05-10.vc700.gca transforms/talairach.m3z

transforms/talairach.m3z

transforms/talairach.lta

norm.mgz

-calabel

norm.mgz

mri_ca_label -relabel_unlikely 9 .3 -prior 0.5 -align norm.mgz transforms/talairach.m3z $FREESURFER_HOME/average/RB_all_2016-05-10.vc700.gca aseg.auto_noCCseg.mgz

aseg.auto_noCCseg.mgz

transforms/talairach.m3z

aseg.auto_noCCseg.mgz

mri_cc -lta <subjid>/mri/transforms/cc_up.lta -aseg aseg.auto_noCCseg.mgz -o aseg.auto.mgz <subjid>

aseg.auto.mgz

aseg.auto.mgz

cp aseg.auto.mgz aseg.presurf.mgz

aseg.presurf.mgz

-normalization2

brainmask.mgz

mri_normalize -mprage -aseg aseg.presurf.mgz -mask brainmask.mgz norm.mgz brain.mgz

brain.mgz

norm.mgz

aseg.presurf.mgz

-maskbfs

brain.mgz

mri_mask -T 5 brain.mgz brainmask.mgz brain.finalsurfs.mgz

brain.finalsurfs.mgz

brainmask.mgz

-segmentation

brain.mgz

mri_segment -mprage brain.mgz wm.seg.mgz

wm.seg.mgz

wm.seg.mgz

mri_edit_wm_with_aseg wm.seg.mgz brain.mgz aseg.presurf.mgz wm.asegedit.mgz

wm.asegedit.mgz

aseg.presurf.mgz

brain.mgz

wm.asegedit.mgz

mri_pretess wm.asegedit.mgz wm norm.mgz wm.mgz

wm.mgz

norm.mgz

-fill

wm.mgz

mri_fill -a ../scripts/ponscc.cut.log -xform transforms/talairach.lta -segmentation aseg.auto_noCCseg.mgz wm.mgz filled.mgz

filled.mgz

aseg.auto_noCCseg.mgz

../scripts/ponscc.cut.log

transforms/talairach.lta

-tessellate

filled.mgz

mri_pretess filled.mgz 255 norm.mgz filled-pretess255.mgz

filled-pretess255.mgz

norm.mgz

filled-pretess255.mgz

mri_tessellate filled-pretess255.mgz 255 lh.orig.nofix

lh.orig.nofix

filled.mgz

mri_pretess filled.mgz 127 norm.mgz filled-pretess127.mgz

filled-pretess127.mgz

norm.mgz

filled-pretess127.mgz

mri_tessellate filled-pretess127.mgz 127 rh.orig.nofix

rh.orig.nofix

?h.orig.nofix

mris_extract_main_component ?h.orig.nofix ?h.orig.nofix

?h.orig.nofix

rm -f filled-pretess255.mgz filled-pretess127.mgz

-smooth1

?h.orig.nofix

mris_smooth -nw ?h.orig.nofix ?h.smoothwm.nofix

?h.smoothwm.nofix

-inflate1

?h.smoothwm.nofix

mris_inflate -no-save-sulc ?h.smoothwm.nofix ?h.inflated.nofix

?h.inflated.nofix

-qsphere

?h.inflated.nofix

mris_sphere -q ?h.inflated.nofix ?h.qsphere.nofix

?h.qsphere.nofix

-fix

?h.orig.nofix

cp ?h.orig.nofix ?h.orig

?h.orig

?h.inflated.nofix

cp ?h.inflated.nofix ?h.inflated

?h.inflated

?h.qsphere.nofix

mris_fix_topology -mgz -sphere qsphere.nofix -ga <subjid> ?h

?h.orig

?h.orig

mris_euler_number ?h.orig

?h.orig

?h.orig

mris_remove_intersection ?h.orig ?h.orig

?h.orig

rm ?h.inflated

-white

aseg.presurf.mgz

mris_make_surfaces -aseg ../mri/aseg.presurf -whiteonly -noaparc -mgz -T1 brain.finalsurfs <subjid> ?h

?h.white

brain.finalsurfs.mgz

wm.mgz

filled.mgz

?h.orig

?h.curv

?h.area

?h.cortex.label

-smooth2

?h.white

mris_smooth -n 3 -nw ?h.white ?h.smoothwm

?h.smoothwm

-inflate2

?h.smoothwm

mris_inflate ?h.smoothwm ?h.inflated

?h.inflated

?h.sulc

-curvHK

?h.white

mris_curvature -w ?h.white

?h.white.H

?h.white.K

?h.inflated

mris_curvature -thresh .999 -n -a 5 -w -distances 10 10 ?h.inflated

?h.inflated.H

?h.inflated.K

-curvstats

?h.smoothwm

mris_curvature_stats -m --writeCurvatureFiles -G -o ../stats/?h.curv.stats -F smoothwm <subjid> ?h curv sulc

stats/?h.curv.stats

?h.curv

?h.sulc

recon-all step

Individual Flag

Input

Command Line

Output

recon-all -autorecon3 -subjid <subjid>

-sphere

?h.inflated

mris_sphere ?h.inflated ?h.sphere

?h.sphere

?h.smoothwm

-surfreg

?h.sphere

mris_register -curv ?h.sphere $FREESURFER_HOME/average/?h.average.curvature.filled.buckner40.tif ?h.sphere.reg

?h.sphere.reg

-jacobian_white

?h.white

mris_jacobian ?h.white ?h.sphere.reg ?h.jacobian_white

?h.jacobian_white

?h.sphere.reg

-avgcurv

?h.sphere.reg

mrisp_paint -a 5 $FREESURFER_HOME/average/?h.average.curvature.filled.buckner40.tif#6 ?h.sphere.reg ?h.avg_curv

?h.avg_curv

-cortparc

aseg.presurf.mgz

mris_ca_label -l ../label/lh.cortex.label -aseg mri/aseg.presurf.mgz <subjid> ?h ?h.sphere.reg $FREESURFER_HOME/average/?h.curvature.buckner40.filled.desikan_killiany.2007-06-20gcs ?h.aparc.annot

label/?h.aparc.annot

?h.cortex.label

?h.sphere.reg

-pial

aseg.presurf.mgz

mris_make_surfaces -orig_white white -orig_pial white -aseg ../mri/aseg.presurf -nowhite -mgz -T1 brain.finalsurfs <subjid> ?h

?h.pial

brain.finalsurfs.mgz

wm.mgz

filled.mgz

?h.orig

?h.curv.pial

?h.area.pial

label/?h.aparc.annot

?h.thickness

-T2pial or
-FLAIRpial optional

orig/T2raw.mgz

bbregister --s <subjid> --mov mri/orig/T2raw.mgz --lta mri/transforms/T2raw.lta --init-fsl --T2

transforms/T2raw.lta

orig/T2raw.mgz

mri_convert -odt short -at mri/transforms/T2raw.lta -rt cubic -ns 1 -rl mri/orig.mgz mri/orig/T2raw.mgz mri/T2.prenorm.mgz

T2.prenorm.mgz

transforms/T2raw.lta

aseg.presurf.mgz

mri_normalize -sigma 0.5 -nonmax_suppress 0 -min_dist 1 -aseg mri/aseg.presurf.mgz -surface surf/rh.white identity.nofile -surface surf/lh.white identity.nofile mri/T2.prenorm.mgz mri/T2.mgz

T2.mgz

?h.white

T2.prenorm.mgz

?h.pial

cp -v surf/?h.pial surf/?h.woT2.pial

?h.woT2.pial

aseg.presurf.mgz

mris_make_surfaces -orig_white white -orig_pial woT2.pial -aseg ../mri/aseg.presurf -nowhite -mgz -T1 brain.finalsurfs -T2 ../mri/T2 -nsigma_above 2 -nsigma_below 5 <subjid> ?h

?h.pial

brain.finalsurfs.mgz

wm.mgz

filled.mgz

?h.curv.pial

?h.white

label/?h.aparc.annot

?h.area.pial

T2.mgz

?h.thickness

?h.woT2.pial

-cortribbon

aseg.presurf.mgz

mris_volmask --label_left_white 2 --label_left_ribbon 3 --label_right_white 41 --label_right_ribbon 42 --save_ribbon <subjid>

?h.ribbon.mgz

?h.white

?h.pial

ribbon.mgz

-parcstats

label/?h.aparc.annot

mris_anatomical_stats -th3 -mgz -cortex ../label/?h.cortex.label -f stats/?h.aparc.stats -b -a label/?h.aparc.annot -c label/aparc.annot.ctab <subjid> ?h

stats/?h.aparc.stats

wm.mgz, ribbon.mgz

label/aparc.annot.ctab

?h.white

?h.pial

?h.thickness

-cortparc2

aseg.presurf.mgz

mris_ca_label -l ../label/lh.cortex.label -aseg aseg.presurf.mgz <subjid> ?h ?h.sphere.reg $FREESURFER_HOME/average/?h.destrieux.simple.2009-07-29.gcs label/?h.aparc.a2009s.annot

label/?h.aparc.a2009s.annot

?h.sphere.reg

label/?h.cortex.label

-parcstats2

label/?h.aparc.a2009s.annot

mris_anatomical_stats -th3 -mgz -cortex ../label/?h.cortex.label -f stats/?h.aparc.a2009s.stats -b -a label/?h.aparc.a2009s.annot -c label/aparc.annot.a2009s.ctab <subjid> ?h

stats/?h.aparc.a2009s.stats

wm.mgz, ribbon.mgz

label/aparc.annot.a2009s.ctab

?h.white

?h.pial

?h.thickness

-cortparc3

aseg.presurf.mgz

mris_ca_label ../label/lh.cortex.label -aseg aseg.presurf.mgz <subjid> ?h ?h.sphere.reg $FREESURFER_HOME/average/?h.DKTatlas.2016-03-20.gcs ../label/?h.aparc.DKTatlas.annot

label/?h.aparc.DKTatlas.annot

?h.sphere.reg

label/?h.cortex.label

-parcstats3

label/?h.aparc.DKTatlas.annot

mris_anatomical_stats -th3 -mgz -cortex ../label/?h.cortex.label -f stats/?h.aparc.DKTatlas.stats -b -a label/?h.aparc.DKTatlas.annot -c label/aparc.annot.DKTatlas.ctab <subjid> ?h

stats/?h.aparc.DKTatlas.stats

wm.mgz, ribbon.mgz

label/aparc.annot.DKTatlas.ctab

?h.white

?h.pial

?h.thickness

-pctsurfcon

rawavg.mgz

pctsurfcon --s <subjid> --?h-only

?h.w-g.pct.mgh

orig.mgz

?h.cortex.label

stats/?h.w-g.pct.stats

?h.white

-hyporelabel

aseg.presurf.mgz

mri_relabel_hypointensities aseg.presurf.mgz ../surf aseg.presurf.hypos.mgz

aseg.presurf.hypos.mgz

?h.white

-aparc2aseg

aseg.presurf.hypos.mgz

mri_aparc2aseg --s <subjid> --ribbon

aparc+aseg.mgz

?h.ribbon.mgz

label/?h.aparc.annot

ribbon.mgz

aseg.presurf.hypos.mgz

mri_aparc2aseg --s <subjid> --ribbon --annot aparc.a2009s

aparc.a2009s+aseg.mgz

?h.ribbon.mgz

label/?h.aparc.a2009s.annot

ribbon.mgz

aseg.presurf.hypos.mgz

mri_aparc2aseg --s <subjid> --ribbon --annot aparc.DKTatlas

aparc.DKTatlas+aseg.mgz

?h.ribbon.mgz

label/?h.aparc.DKTatlas.annot

ribbon.mgz

-apas2aseg

aparc+aseg.mgz

apas2aseg --i aparc+aseg.mgz --o aseg.mgz

aseg.mgz

-segstats

brainmask.mgz, norm.mgz, aseg.mgz, aseg.presurf.mgz, ribbon.mgz

mri_segstats --seg mri/aseg.mgz --sum stats/aseg.stats --pv mri/norm.mgz --empty --brainmask mri/brainmask.mgz --brain-vol-from-seg --excludeid 0 --excl-ctxgmwm --supratent --subcortgray --totalgray --in mri/norm.mgz --in-intensity-name norm --in-intensity-units MR --etiv --surf-wm-vol --surf-ctx-vol --totalgray --euler --ctab $FREESURFER_HOME/ASegStatsLUT.txt --subject <subjid>

stats/aseg.stats

?h.orig.nofix, ?h.white, ?h.pial

-wmparc

aparc+aseg.mgz

mri_aparc2aseg --s <subjid> --labelwm --hypo-as-wm --rip-unknown --ribbon --o mri/wmparc.mgz --ctxseg aparc+aseg.mgz

wmparc.mgz

talairach.xfm, brainmask.mgz, norm.mgz, ribbon.mgz, wmparc.mgz, aseg.presurf.mgz, ?h.white, ?h.pial

mri_segstats --seg mri/wmparc.mgz --sum stats/wmparc.stats --pv mri/norm.mgz --excludeid 0 --brainmask mri/brainmask.mgz --in mri/norm.mgz --in-intensity-name norm --in-intensity-units MR --etiv --subject <subjid> --surf-wm-vol --ctab $FREESURFER_HOME/FreeSurferColorLUT.txt

stats/wmparc.stats

-balabels

?h.sphere.reg

mri_label2label --srcsubject fsaverage --srclabel fsaverage/label/?h.BA*.label --trgsubject <subjid> --trglabel ?h.BA*.label --hemi ?h --regmethod surface

label/?h.BA*_exvivo.label label/?h.perirhinal_exvivo.label label/?h.entorhinal_exvivo.label