FreeSurfer Tutorial: Process Flow

This table shows the recon-all steps for the current dev version of FreeSurfer (available here). It does not document the stable, publicly released, version of Freesurfer.

Updated May 2015 NJS

See also the OtherUsefulFlags for other recon-all options.

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

-normalization

orig_nu.mgz

mri_normalize -g 1 orig_nu.mgz T1.mgz

T1.mgz

-skullstrip

orig_nu.mgz

mri_em_register -skull orig_nu.mgz $FREESURFER_HOME/average/RB_all_withskull_2014-08-21.gca transforms/talairach_with_skull.lta

transforms/talairach_with_skull.lta

T1.mgz

mri_watershed -T1 -brain_atlas $FREESURFER_HOME/average/RB_all_withskull_2014-08-21.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>

-nuintensitycor

orig.mgz

mri_nu_correct.mni --i orig.mgz --mask brainmask.mgz --o nu.mgz --n 1 --proto-iters 1000 --uchar transforms/talairach.xfm

nu.mgz

brainmask.mgz

talairach.xfm

-gcareg

brainmask.mgz

mri_em_register -uns 3 -mask brainmask.mgz nu.mgz $FREESURFER_HOME/average/RB_all_2014-08-21.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_2014-08-21.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_2014-08-21.gca transforms/talairach.m3z

transforms/talairach.m3z

transforms/talairach.lta

norm.mgz

-careginv

transforms/talairach.m3z

mri_ca_register -invert-and-save transforms/talairach.m3z

transforms/talairach.m3z.inv.x.mgz

transforms/talairach.m3z.inv.y.mgz

transforms/talairach.m3z.inv.z.mgz

-rmneck

nu.mgz

mri_remove_neck -radius 25 nu.mgz transforms/talairach.m3z $FREESURFER_HOME/average/RB_all_2014-08-21.gca nu_noneck.mgz

nu_noneck.mgz

transforms/talairach.m3z

-skull-lta

transforms/talairach.lta

mri_em_register -skull -t transforms/talairach.lta nu_noneck.mgz $FREESURFER_HOME/average/RB_all_withskull_2014-08-21.gca transforms/talairach_with_skull_2.lta

transforms/talairach_with_skull_2.lta

nu_noneck.mgz

-calabel

norm.mgz

mri_ca_label -relabel_unlikely 9 .3 -prior 0.5 -align -nobigventricles norm.mgz transforms/talairach.m3z $FREESURFER_HOME/average/RB_all_2014-08-21.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 -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 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 -fix_mtl -aseg ../mri/aseg.presurf -white NOWRITE -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

-surfvolume

?h.area

mris_calc -o ?h.area.mid ?h.area add ?h.area.pial

?h.area.mid

?h.area.pial

?h.area.mid

mris_calc -o ?h.area.mid ?h.area.mid div 2

?h.area.mid

?h.area.mid

mris_calc -o ?h.volume ?h.area.mid mul ?h.thickness

?h.volume

?h.thickness

-cortribbon

aseg.presurf.mgz

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

?h.ribbon.mgz

?h.white

?h.pial

ribbon.mgz

-parcstats

label/?h.aparc.annot

mris_anatomical_stats -mgz -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 -mgz -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.DKTatlas40.gcs ../label/?h.aparc.DKTatlas40.annot

label/?h.aparc.DKTatlas40.annot

?h.sphere.reg

label/?h.cortex.label

-parcstats3

label/?h.aparc.DKTatlas40.annot

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

stats/?h.aparc.DKTatlas40.stats

wm.mgz, ribbon.mgz

label/aparc.annot.DKTatlas40.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 --a2009s

aparc.a2009s+aseg.mgz

?h.ribbon.mgz

label/?h.aparc.a2009s.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