#! /bin/tcsh -f

set tcsh61706 = (`tcsh --version | grep "6\.17\.06"`)
if ("$tcsh61706" != "") then
  echo ""
  echo "WARNING: tcsh v6.17.06 has an exit code bug! Please update tcsh!"
  echo ""
  # workaround to force expected behavior:
  set anyerror
endif

# TODO: eventually change to freesurfer directories
set PYTHON_SCRIPT_DIR=$FREESURFER_HOME_FSPYTHON/python/packages/recon-any
set MODEL_DIR=$FREESURFER_HOME_FSPYTHON/models/recon-any
# set PYTHON_SCRIPT_DIR=$FREESURFER_HOME/python/scripts
# set MODEL=$FREESURFER_HOME/models/synthsurf_v10_230420.h5

# If no arguments given
# If requesting help
if ("$1" == "-h" || "$1" == "--help") then
  echo " "
  echo "Recon-all-like stream for clinical scans of arbitrary orientation/resolution/contrast"
  echo "(including low-field/portable MRI scans and 3D reconstructions of dissection photographs)"
  echo " "
  echo "It essentially runs a combination of:"
  echo "* SynthSeg: to obtain a volumetric segmentation and linear registration to Talairach space"
  echo "* SynthSR: to have a higher resolution 1mm MPRAGE for visualization"
  echo "* SynthDist: to fit surfaces by predicting the distance maps and reconstructing topologically accurate cortical surfaces"
  echo " "
  echo "Usage:"
  echo "  recon-any.sh -i INPUT_SCAN -subjid SUBJECT_ID -threads THREADS -side SIDE [-sdir SUBJECT_DIR] [-ct]"
  echo " "
  echo "Required arguments:"
  echo "  -i INPUT_SCAN       Path to the input scan."
  echo "  -subjid SUBJECT_ID  Subject ID."
  echo "  -threads THREADS    Number of threads to use."
  echo "  -side SIDE          Side of the brain to process. Must be one of:"
  echo "                        left-c, left-ccb, right-c, right-ccb, both."
  echo " "
  echo "                        The options are:"
  echo "                      * left-c (for left cerebrum, useful for ex vivo scans of single hemispheres)"
  echo "                      * left-ccb (left cerebrum/cerebellum/brainstem; usefull when cerebellum and brainstem have not been dissected)"
  echo "                      * right-c (for right cerebrum)"
  echo "                      * right-ccb (right cerebrum/cerebellum/brainstem)"
  echo "                      * both (for in vivo scans, or ex vivo scans with full brains)"
  echo "Optional arguments:"
  echo "  -sdir SUBJECT_DIR   Directory for subjects (default: uses SUBJECTS_DIR environment variable)."
  echo "  -ct                 Enable processing for CT scans in Hounsfield scale. Clips intensities to [0, 80]."
  echo "  -h, --help          Show this help message and exit."
  echo " "
  echo "This stream runs faster than the original recon-all due to more efficient volumetric segmentation."
  echo " "
  echo "Citations:"
  echo "K Gopinath, DN Greve, S Das, S Arnold, C Magdamo, JE Iglesias:"
  echo "Cortical analysis of heterogeneous clinical brain MRI scans for large-scale neuroimaging studies"
  echo "Proceedings of MICCAI 2023 (accepted)."
  echo " "
  echo "B Billot, DN Greve, O Puonti, A Thielscher, K Van Leemput, B Fischl, AV Dalca, JE Iglesias:"
  echo "SynthSeg: Segmentation of brain MRI scans of any contrast and resolution without retraining"
  echo "Medical Image Analysis, 83, 102789 (2023)"
  echo " "
  echo "B Billot, C Magdamo, SE Arnold, S Das, JE Iglesias:"
  echo "Robust machine learning segmentation for large-scale analysis of heterogeneous clinical brain MRI datasets"
  echo "PNAS, 120(9), e2216399120 (2023)"
  echo " "
  echo "SynthSR: a public AI tool to turn heterogeneous clinical brain scans into high-resolution T1-weighted images for 3D morphometry"
  echo "JE Iglesias, B Billot, Y Balbastre, C Magdamo, S Arnold, S Das, B Edlow, D Alexander, P Golland, B Fischl"
  echo "Science Advances, 9(5), eadd3607 (2023)"
  echo " "
  exit 0
endif

# Parse command-line arguments
set INPUT_SCAN = ""
set SUBJECT_ID = ""
set THREADS = ""
set SIDE = ""
set SUBJECT_DIR = ""
set CT_PROCESSING = 0

while ($#argv > 0)
  switch ($1)
    case "-i":
      set INPUT_SCAN = $2
      shift
      breaksw
    case "-subjid":
      set SUBJECT_ID = $2
      shift
      breaksw
    case "-threads":
      set THREADS = $2
      shift
      breaksw
    case "-side":
      set SIDE = $2
      shift
      breaksw
    case "-sdir":
      set SUBJECT_DIR = $2
      shift
      breaksw
    case "-ct":
      set CT_PROCESSING = 1
      breaksw
    default:
      echo "Unknown option: $1"
      echo "Use -h or --help for usage information."
      exit 1
  endsw
  shift
end


# test for model files, print download/install instructions if not found
if( ! -d "$MODEL_DIR" ) then
  echo "Could not locate the model dir: $MODEL_DIR"
  echo "If this is your first time running this utility, you will need to"
  echo "download and install the model files, instructions below."
  echo ""
  echo "Instructions for downloading and installing model files:"
  echo ""
  echo "1. Download the tar ball containing the model files"
  echo "  Linux: wget https://ftp.nmr.mgh.harvard.edu/pub/dist/lcnpublic/dist/recon-any_models/recon-any.tar.gz"
  echo "  MacOS: curl https://ftp.nmr.mgh.harvard.edu/pub/dist/lcnpublic/dist/recon-any_models/recon-any.tar.gz --output recon-any.tar.gz"
  echo "2. Unpack the archive"
  echo "  tar -xzf recon-any.tar.gz"
  echo "3. Install the unpacked tar ball under FREESURFER_HOME/models"
  echo "  cp -r recon-any $FREESURFER_HOME_FSPYTHON/models"
  echo ""
  exit 1
endif


# Set environment variables
setenv INPUT_SCAN $INPUT_SCAN
setenv SNAME $SUBJECT_ID
setenv THREADS $THREADS
setenv SIDE $SIDE
setenv SUBJECTS_DIR $SUBJECT_DIR



# Validate required arguments
if ("$INPUT_SCAN" == "" || "$SUBJECT_ID" == "" || "$THREADS" == "" || "$SIDE" == "") then
  echo "Missing required arguments!"
  echo "Use -h or --help for usage information."
  exit 1
endif

# Validate SIDE
if ( $SIDE != "left-c" && $SIDE != "left-ccb" && $SIDE != "right-c" && $SIDE != "right-ccb" && $SIDE != "both" ) then
  echo "SIDE must be left-c, left-ccb, right-c, right-ccb, or both"
  exit 1
endif
set DO_LEFT = 0
if ( $SIDE == "left-c" || $SIDE == "left-ccb" || $SIDE == "both" ) then
  set DO_LEFT = 1
endif
set DO_RIGHT = 0
if ( $SIDE == "right-c" || $SIDE == "right-ccb" || $SIDE == "both" ) then
  set DO_RIGHT = 1
endif

# Use -sdir or SUBJECTS_DIR environment variable
if ("$SUBJECT_DIR" == "") then
  # If -sdir is not provided, check the SUBJECTS_DIR environment variable
  if (! $?SUBJECTS_DIR) then
    echo " "
    echo "SUBJECTS_DIR variable does not exist."
    echo "Please define it using the -sdir flag or set it as an environment variable."
    echo " "
    exit 1
  endif
  
  # Ensure SUBJECTS_DIR is not empty
  if ("$SUBJECTS_DIR" == "") then
    echo " "
    echo "SUBJECTS_DIR variable is empty."
    echo "Please provide a valid value using the -sdir flag or set it as an environment variable."
    echo " "
    exit 1
  endif

  # Resolve SUBJECTS_DIR to its absolute path
  set SUBJECT_DIR = `getfullpath $SUBJECTS_DIR`
else
  # Resolve the provided -sdir argument to its absolute path
  set SUBJECT_DIR = `getfullpath $SUBJECT_DIR`
endif

# Validate that SUBJECT_DIR exists and is a directory
if (! -d $SUBJECT_DIR) then
  echo " "
  echo "Subjects directory:"
  echo "   $SUBJECT_DIR"
  echo "does not exist."
  echo " "
  exit 1
endif

# Export SUBJECT_DIR for later use
setenv SUBJECTS_DIR $SUBJECT_DIR



# Make sure that the script is not running already for this subject
set IsRunningFile = ${SUBJECTS_DIR}/${SNAME}/scripts/IsRunning.file
if(-e $IsRunningFile) then
  echo ""
  echo "It appears that run_recon-any is already running for this subject,"
  echo "based on the presence of IsRunning.file"
  echo "It could also be run_recon-any was running at one point but died"
  echo "in an unexpected way. If it is the case that there is a process running,"
  echo "you can kill it and start over or just let it run. If the process has"
  echo "died, you should type:"
  echo ""
  echo "rm $IsRunningFile"
  echo ""
  echo "and re-run."
  echo "----------------------------------------------------------"
  cat  $IsRunningFile
  echo "----------------------------------------------------------"
  exit 1;
endif

# If everything is in place, let's do it! First, we create the directories we need
mkdir -p $SUBJECTS_DIR/$SNAME
mkdir -p $SUBJECTS_DIR/$SNAME/label
mkdir -p $SUBJECTS_DIR/$SNAME/mri
mkdir -p $SUBJECTS_DIR/$SNAME/mri/transforms
mkdir -p $SUBJECTS_DIR/$SNAME/scripts
mkdir -p $SUBJECTS_DIR/$SNAME/stats
mkdir -p $SUBJECTS_DIR/$SNAME/surf
mkdir -p $SUBJECTS_DIR/$SNAME/tmp
mkdir -p $SUBJECTS_DIR/$SNAME/touch
mkdir -p $SUBJECTS_DIR/$SNAME/trash

# Next, we create the IsRunning file
echo "------------------------------" > $IsRunningFile
echo "SUBJECT SNAME" >> $IsRunningFile
echo "DATE `date`"     >> $IsRunningFile
echo "USER $user"      >> $IsRunningFile
echo "HOST `hostname`" >> $IsRunningFile
echo "PROCESSID $$ "   >> $IsRunningFile
echo "PROCESSOR `uname -m`" >> $IsRunningFile
echo "OS `uname -s`"       >> $IsRunningFile
uname -a         >> $IsRunningFile
if($?PBS_JOBID) then
  echo "pbsjob $PBS_JOBID"  >> $IsRunningFile
endif

set LogFile = (${SUBJECTS_DIR}/${SNAME}/scripts/recon-any.log)
rm -f $LogFile

echo "------------------------------" > $LogFile
echo "USER $user"      >> $LogFile
echo "HOST `hostname`" >> $LogFile
echo "PROCESSID $$ "   >> $LogFile
echo "PROCESSOR `uname -m`" >> $LogFile
echo "OS `uname -s`"       >> $LogFile
echo "NUMBER OF THREADS $THREADS " >> $LogFile
uname -a         >> $LogFile
if($?PBS_JOBID) then
  echo "pbsjob $PBS_JOBID"  >> $LogFile
endif
echo "------------------------------" >> $LogFile
echo " " >> $LogFile
cat $FREESURFER_HOME/build-stamp.txt  >> $LogFile
echo " " >> $LogFile
echo "setenv SUBJECTS_DIR $SUBJECTS_DIR"  >> $LogFile
echo "cd `pwd`"   >> $LogFile
echo $0 $argv  >> $LogFile
echo ""  >> $LogFile


echo "#--------------------------------------------" \
   |& tee -a $LogFile
 echo "#@# recon-any `date`" \
   |& tee -a $LogFile
echo " " |& tee -a $LogFile


# Process CT scans if the flag is set
set CT_FLAG = "false"
if ($CT_PROCESSING) then
  # echo "Processing input as CT scan. Clipping intensities to [0, 80]."
  set CT_FLAG = "true"
  # Add any additional CT processing logic here
endif

############
# commands #
############

# Initial mri_convert
set cmd="mri_convert $INPUT_SCAN $SUBJECTS_DIR/$SNAME/mri/native.mgz -odt float"
$cmd |& tee -a $LogFile
if ($status) then
  echo "Error in mri_convert" |& tee -a $LogFile
  exit 1
endif
echo " " |& tee -a $LogFile

# Python code to do inference
cd $SUBJECTS_DIR/$SNAME/mri
set cmd="fspython $PYTHON_SCRIPT_DIR/inference.py --input_image ./native.mgz --output_dir ./ --model_path $MODEL_DIR --case_type $SIDE --cpu --threads $THREADS"
# Add --ct if CT_FLAG is true
if ($CT_FLAG == "true") then
  set cmd="$cmd --ct"
endif

# Execute the command
$cmd |& tee -a $LogFile
if ($status) then
  echo "Error in inference.py" |& tee -a $LogFile
  exit 1
endif
echo " " |& tee -a $LogFile

# LTA convert
set cmd="lta_convert --src norm.mgz --trg $FREESURFER_HOME/average/mni305.cor.mgz --inxfm transforms/talairach.xfm --outlta transforms/talairach.xfm.lta --subject fsaverage --ltavox2vox"
$cmd |& tee -a $LogFile
if ($status) then
  echo "Error in LTA convert" |& tee -a $LogFile
  exit 1
endif
echo " " |& tee -a $LogFile

# Corpus callosum:
# TODO: doesn't work very well, I'm not exactly sure why...
# We only do it if we have 2 hemispheres
# if ( $SIDE == "both" ) then
#   set cmd="mri_cc -norm ./norm.mgz -aseg ./aseg.auto_noCCseg.mgz -o aseg.presurf.mgz -lta ./transforms/cc_up.lta $SNAME"
#   $cmd |& tee -a $LogFile
#   if ($status) then
#     echo "Error in mri_cc (corpus callosum)" |& tee -a $LogFile
#     exit 1
#   endif
#   echo " " |& tee -a $LogFile
# else
#   echo "Skipping estimation of corpus callosum"
#   cp ./aseg.auto_noCCseg.mgz aseg.presurf.mgz
# endif
echo "Skipping estimation of corpus callosum"
cp ./aseg/mgz ./aseg.auto_noCCseg.mgz
cp ./aseg.auto_noCCseg.mgz aseg.presurf.mgz

# mri_pretess
set cmd="mri_pretess wm.seg.mgz wm norm.mgz wm.mgz"
$cmd |& tee -a $LogFile
if ($status) then
  echo "Error in mri_pretess" |& tee -a $LogFile
  exit 1
endif
echo " " |& tee -a $LogFile

if ( $DO_LEFT ) then
  set cmd="mri_pretess ./filled.mgz 255 ./norm.mgz ./filled-pretess255.mgz"
  $cmd |& tee -a $LogFile
  if ($status) then
    echo "Error in mri_pretess" |& tee -a $LogFile
    exit 1
  endif
  echo " " |& tee -a $LogFile

  set cmd="mri_tessellate ./filled-pretess255.mgz 255 ../surf/lh.orig.nofix"
  $cmd |& tee -a $LogFile
  if ($status) then
    echo "Error in mri_tessellate" |& tee -a $LogFile
    exit 1
  endif
  echo " " |& tee -a $LogFile
  rm -f ../mri/filled-pretess255.mgz

  set cmd="mris_extract_main_component ../surf/lh.orig.nofix ../surf/lh.orig.nofix"
  $cmd |& tee -a $LogFile
  if ($status) then
    echo "Error in mris_extract_main_component" |& tee -a $LogFile
    exit 1
  endif
  echo " " |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mri_pretess ./filled.mgz 127 ./norm.mgz ./filled-pretess127.mgz"
  $cmd |& tee -a $LogFile
  if ($status) then
    echo "Error in mri_pretess" |& tee -a $LogFile
    exit 1
  endif
  echo " " |& tee -a $LogFile

  set cmd="mri_tessellate ./filled-pretess127.mgz 127 ../surf/rh.orig.nofix"
  $cmd |& tee -a $LogFile
  if ($status) then
    echo "Error in mri_tessellate" |& tee -a $LogFile
    exit 1
  endif
  echo " " |& tee -a $LogFile
  rm -f ../mri/filled-pretess127.mgz

  set cmd="mris_extract_main_component ../surf/rh.orig.nofix ../surf/rh.orig.nofix"
  $cmd |& tee -a $LogFile
  if ($status) then
    echo "Error in mris_extract_main_component" |& tee -a $LogFile
    exit 1
  endif
  echo " " |& tee -a $LogFile
endif

cd ../surf

# Eugenio: I don't think commands can really go wrong from here on... so I stop the checking

# Smooth, infate, sphere. topology
if ( $DO_LEFT ) then
  set cmd="mris_smooth -nw -seed 1234 ./lh.orig.nofix ./lh.smoothwm.nofix"
  $cmd |& tee -a $LogFile
  set cmd="mris_inflate -no-save-sulc ./lh.smoothwm.nofix ./lh.inflated.nofix"
  $cmd |& tee -a $LogFile
  set cmd="mris_sphere -q -p 6 -a 128 -seed 1234 ./lh.inflated.nofix ./lh.qsphere.nofix"
  $cmd |& tee -a $LogFile
  set cmd="mris_fix_topology -mgz -sphere qsphere.nofix -inflated inflated.nofix -orig orig.nofix -out orig.premesh -ga -seed 1234 $SNAME lh -threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_euler_number ./lh.orig.premesh"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mris_smooth -nw -seed 1234 ./rh.orig.nofix ./rh.smoothwm.nofix"
  $cmd |& tee -a $LogFile
  set cmd="mris_inflate -no-save-sulc ./rh.smoothwm.nofix ./rh.inflated.nofix"
  $cmd |& tee -a $LogFile
  set cmd="mris_sphere -q -p 6 -a 128 -seed 1234 ./rh.inflated.nofix ./rh.qsphere.nofix"
  $cmd |& tee -a $LogFile
  set cmd="mris_fix_topology -mgz -sphere qsphere.nofix -inflated inflated.nofix -orig orig.nofix -out orig.premesh -ga -seed 1234 $SNAME rh -threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_euler_number ./rh.orig.premesh"
  $cmd |& tee -a $LogFile
endif

# Remesh and remove intersections
if ( $DO_LEFT ) then
  set cmd="mris_remesh --remesh --iters 3 --input ./lh.orig.premesh --output ./lh.orig"
  $cmd |& tee -a $LogFile
  set cmd="mris_remove_intersection ./lh.orig ./lh.orig"
  $cmd |& tee -a $LogFile
  rm -f ./lh.inflated
endif

if ( $DO_RIGHT ) then
  set cmd="mris_remesh --remesh --iters 3 --input ./rh.orig.premesh --output ./rh.orig"
  $cmd |& tee -a $LogFile
  set cmd="mris_remove_intersection ./rh.orig ./rh.orig"
  $cmd |& tee -a $LogFile
  rm -f ./rh.inflated
endif

cd ../mri

# Place surfaces
if ( $DO_LEFT ) then
  set cmd="mris_autodet_gwstats --o ../surf/autodet.gw.stats.lh.dat --i brain.mgz --wm wm.mgz --surf ../surf/lh.orig.premesh"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --adgws-in ../surf/autodet.gw.stats.lh.dat --wm wm.mgz --threads $THREADS --invol brain.mgz --lh --i ../surf/lh.orig --o ../surf/lh.white.preaparc --white --seg aseg.presurf.mgz --nsmooth 5"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --label-cortex ../surf/lh.white.preaparc aseg.presurf.mgz 0 ../label/lh.cortex.label"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --label-cortex ../surf/lh.white.preaparc aseg.presurf.mgz 1 ../label/lh.cortex+hipamyg.label"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mris_autodet_gwstats --o ../surf/autodet.gw.stats.rh.dat --i brain.mgz --wm wm.mgz --surf ../surf/rh.orig.premesh"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --adgws-in ../surf/autodet.gw.stats.rh.dat --wm wm.mgz --threads $THREADS --invol brain.mgz --rh --i ../surf/rh.orig --o ../surf/rh.white.preaparc --white --seg aseg.presurf.mgz --nsmooth 5"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --label-cortex ../surf/rh.white.preaparc aseg.presurf.mgz 0 ../label/rh.cortex.label"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --label-cortex ../surf/rh.white.preaparc aseg.presurf.mgz 1 ../label/rh.cortex+hipamyg.label"
  $cmd |& tee -a $LogFile
endif

cd ../surf

# Second round of smoothing / inflating / mapping
if ( $DO_LEFT ) then
  set cmd="mris_smooth -n 3 -nw -seed 1234 ./lh.white.preaparc ./lh.smoothwm"
  $cmd |& tee -a $LogFile
  set cmd="mris_inflate ./lh.smoothwm ./lh.inflated"
  $cmd |& tee -a $LogFile
  set cmd="mris_curvature -w -seed 1234 lh.white.preaparc"
  $cmd |& tee -a $LogFile
  set cmd="mris_curvature -seed 1234 -thresh .999 -n -a 5 -w -distances 10 10 lh.inflated"
  $cmd |& tee -a $LogFile
  set cmd="mris_sphere -seed 1234 ../surf/lh.inflated ../surf/lh.sphere"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mris_smooth -n 3 -nw -seed 1234 ./rh.white.preaparc ./rh.smoothwm"
  $cmd |& tee -a $LogFile
  set cmd="mris_inflate ./rh.smoothwm ./rh.inflated"
  $cmd |& tee -a $LogFile
  set cmd="mris_curvature -w -seed 1234 rh.white.preaparc"
  $cmd |& tee -a $LogFile
  set cmd="mris_curvature -seed 1234 -thresh .999 -n -a 5 -w -distances 10 10 rh.inflated"
  $cmd |& tee -a $LogFile
  set cmd="mris_sphere -seed 1234 ../surf/rh.inflated ../surf/rh.sphere"
  $cmd |& tee -a $LogFile
endif

# Cortical registration
if ( $DO_LEFT ) then
  set cmd="mris_register -curv ./lh.sphere $FREESURFER_HOME/average/lh.folding.atlas.acfb40.noaparc.i12.2016-08-02.tif ./lh.sphere.reg -threads $THREADS"
  $cmd |& tee -a $LogFile
  ln -sf lh.sphere.reg lh.fsaverage.sphere.reg
endif

if ( $DO_RIGHT ) then
  set cmd="mris_register -curv ./rh.sphere $FREESURFER_HOME/average/rh.folding.atlas.acfb40.noaparc.i12.2016-08-02.tif ./rh.sphere.reg -threads $THREADS"
  $cmd |& tee -a $LogFile
  ln -sf rh.sphere.reg rh.fsaverage.sphere.reg
endif

# Cortical segmentation
if ( $DO_LEFT ) then
  set cmd="mris_jacobian ./lh.white.preaparc ./lh.sphere.reg ./lh.jacobian_white"
  $cmd |& tee -a $LogFile
  set cmd="mrisp_paint -a 5 $FREESURFER_HOME/average/lh.folding.atlas.acfb40.noaparc.i12.2016-08-02.tif#6 ./lh.sphere.reg ./lh.avg_curv"
  $cmd |& tee -a $LogFile
  set cmd="mris_ca_label -l ../label/lh.cortex.label -aseg ../mri/aseg.presurf.mgz -seed 1234 $SNAME lh ./lh.sphere.reg $FREESURFER_HOME/average/lh.DKaparc.atlas.acfb40.noaparc.i12.2016-08-02.gcs ../label/lh.aparc.annot -threads $THREADS"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mris_jacobian ./rh.white.preaparc ./rh.sphere.reg ./rh.jacobian_white"
  $cmd |& tee -a $LogFile
  set cmd="mrisp_paint -a 5 $FREESURFER_HOME/average/rh.folding.atlas.acfb40.noaparc.i12.2016-08-02.tif#6 ./rh.sphere.reg ./rh.avg_curv"
  $cmd |& tee -a $LogFile
  set cmd="mris_ca_label -l ../label/rh.cortex.label -aseg ../mri/aseg.presurf.mgz -seed 1234 $SNAME rh ./rh.sphere.reg $FREESURFER_HOME/average/rh.DKaparc.atlas.acfb40.noaparc.i12.2016-08-02.gcs ../label/rh.aparc.annot -threads $THREADS"
  $cmd |& tee -a $LogFile
endif

cd ../mri

# Reposition surfaces (including pial) and compute curvature stats as well as ribbon mask
if ( $DO_LEFT ) then
  set cmd="mris_place_surface --adgws-in ../surf/autodet.gw.stats.lh.dat --seg aseg.presurf.mgz --threads $THREADS --wm wm.mgz --invol brain.mgz --lh --i ../surf/lh.white.preaparc --o ../surf/lh.white --white --nsmooth 0 --rip-label ../label/lh.cortex.label --rip-bg --rip-surf ../surf/lh.white.preaparc --aparc ../label/lh.aparc.annot"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --adgws-in ../surf/autodet.gw.stats.lh.dat --seg aseg.presurf.mgz --threads $THREADS --wm wm.mgz --invol brain.mgz --lh --i ../surf/lh.white --o ../surf/lh.pial --pial --nsmooth 0 --rip-label ../label/lh.cortex+hipamyg.label --pin-medial-wall ../label/lh.cortex.label --aparc ../label/lh.aparc.annot --repulse-surf ../surf/lh.white --white-surf ../surf/lh.white"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --curv-map ../surf/lh.white 2 10 ../surf/lh.curv --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --area-map ../surf/lh.white ../surf/lh.area --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --curv-map ../surf/lh.pial 2 10 ../surf/lh.curv.pial --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --area-map ../surf/lh.pial ../surf/lh.area.pial --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --thickness ../surf/lh.white ../surf/lh.pial 20 5 ../surf/lh.thickness --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_curvature_stats -m --writeCurvatureFiles -G -o ../stats/lh.curv.stats -F smoothwm $SNAME lh curv sulc"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mris_place_surface --adgws-in ../surf/autodet.gw.stats.rh.dat --seg aseg.presurf.mgz --threads $THREADS --wm wm.mgz --invol brain.mgz --rh --i ../surf/rh.white.preaparc --o ../surf/rh.white --white --nsmooth 0 --rip-label ../label/rh.cortex.label --rip-bg --rip-surf ../surf/rh.white.preaparc --aparc ../label/rh.aparc.annot"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --adgws-in ../surf/autodet.gw.stats.rh.dat --seg aseg.presurf.mgz --threads $THREADS --wm wm.mgz --invol brain.mgz --rh --i ../surf/rh.white --o ../surf/rh.pial --pial --nsmooth 0 --rip-label ../label/rh.cortex+hipamyg.label --pin-medial-wall ../label/rh.cortex.label --aparc ../label/rh.aparc.annot --repulse-surf ../surf/rh.white --white-surf ../surf/rh.white"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --curv-map ../surf/rh.white 2 10 ../surf/rh.curv --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --area-map ../surf/rh.white ../surf/rh.area --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --curv-map ../surf/rh.pial 2 10 ../surf/rh.curv.pial --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --area-map ../surf/rh.pial ../surf/rh.area.pial --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_place_surface --thickness ../surf/rh.white ../surf/rh.pial 20 5 ../surf/rh.thickness --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_curvature_stats -m --writeCurvatureFiles -G -o ../stats/rh.curv.stats -F smoothwm $SNAME rh curv sulc"
  $cmd |& tee -a $LogFile
endif

if ( $DO_LEFT && $DO_RIGHT) then
  set cmd="mris_volmask --aseg_name aseg.presurf --label_left_white 2 --label_left_ribbon 3 --label_right_white 41 --label_right_ribbon 42 --save_ribbon $SNAME --threads $THREADS"
else
  if ( $DO_LEFT ) then
    set cmd="mris_volmask  --lh-only --aseg_name aseg.presurf --label_left_white 2   --label_left_ribbon 3   --save_ribbon $SNAME --threads $THREADS"
  else
    set cmd="mris_volmask  --rh-only --aseg_name aseg.presurf --label_right_white 41 --label_right_ribbon 42 --save_ribbon $SNAME --threads $THREADS"
  endif
endif
$cmd |& tee -a $LogFile


# Refine aseg with ribbon
if ( $DO_LEFT && $DO_RIGHT) then
  fspython -c "import nibabel as nib; img=nib.load('aseg.presurf.mgz'); X=img.get_fdata(); X[X==24]=0; img2=nib.Nifti1Image(X, img.affine); nib.save(img2, 'aseg.presurf.no_csf.mgz');"
  set cmd="mri_surf2volseg --o aseg.mgz --i aseg.presurf.no_csf.mgz --fix-presurf-with-ribbon ./ribbon.mgz --threads 1 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial"
  $cmd |& tee -a $LogFile
  rm aseg.presurf.no_csf.mgz
else
  if ( $DO_LEFT ) then
    set cmd="mri_surf2volseg --o aseg.mgz --i aseg.presurf.mgz --fix-presurf-with-ribbon ./ribbon.mgz --threads 1 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial --lh"
  else
    set cmd="mri_surf2volseg --o aseg.mgz --i aseg.presurf.mgz --fix-presurf-with-ribbon ./ribbon.mgz --threads 1 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial --rh"
  endif
  $cmd |& tee -a $LogFile
endif


# More cortical parcellations
if ( $DO_LEFT ) then
  set cmd="mris_ca_label -l ../label/lh.cortex.label -aseg ./aseg.presurf.mgz -seed 1234 $SNAME lh ../surf/lh.sphere.reg $FREESURFER_HOME/average/lh.CDaparc.atlas.acfb40.noaparc.i12.2016-08-02.gcs ../label/lh.aparc.a2009s.annot --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_ca_label -l ../label/lh.cortex.label -aseg ./aseg.presurf.mgz -seed 1234 $SNAME lh ../surf/lh.sphere.reg $FREESURFER_HOME/average/lh.DKTaparc.atlas.acfb40.noaparc.i12.2016-08-02.gcs ../label/lh.aparc.DKTatlas.annot --threads $THREADS"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mris_ca_label -l ../label/rh.cortex.label -aseg ./aseg.presurf.mgz -seed 1234 $SNAME rh ../surf/rh.sphere.reg $FREESURFER_HOME/average/rh.CDaparc.atlas.acfb40.noaparc.i12.2016-08-02.gcs ../label/rh.aparc.a2009s.annot --threads $THREADS"
  $cmd |& tee -a $LogFile
  set cmd="mris_ca_label -l ../label/rh.cortex.label -aseg ./aseg.presurf.mgz -seed 1234 $SNAME rh ../surf/rh.sphere.reg $FREESURFER_HOME/average/rh.DKTaparc.atlas.acfb40.noaparc.i12.2016-08-02.gcs ../label/rh.aparc.DKTatlas.annot --threads $THREADS"
  $cmd |& tee -a $LogFile
endif


# mri_surf2volseg
if ( $DO_LEFT && $DO_RIGHT) then
  set cmd="mri_surf2volseg --o aparc+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.annot 1000 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial --rh-annot ../label/rh.aparc.annot 2000 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial"
  $cmd |& tee -a $LogFile
  set cmd="mri_surf2volseg --o aparc.a2009s+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.a2009s.annot 11100 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial --rh-annot ../label/rh.aparc.a2009s.annot 12100 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial"
  $cmd |& tee -a $LogFile
  set cmd="mri_surf2volseg --o aparc.DKTatlas+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.DKTatlas.annot 1000 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial --rh-annot ../label/rh.aparc.DKTatlas.annot 2000 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial"
  $cmd |& tee -a $LogFile
  set cmd="mri_surf2volseg --o wmparc.mgz --label-wm --i aparc+aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.annot 3000 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial --rh-annot ../label/rh.aparc.annot 4000 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial"
  $cmd |& tee -a $LogFile
else
  if ( $DO_LEFT ) then
    set cmd="mri_surf2volseg --o aparc+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.annot 1000 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial  --lh"
    $cmd |& tee -a $LogFile
    set cmd="mri_surf2volseg --o aparc.a2009s+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.a2009s.annot 11100 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial  --lh"
    $cmd |& tee -a $LogFile
    set cmd="mri_surf2volseg --o aparc.DKTatlas+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.DKTatlas.annot 1000 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial  --lh"
    $cmd |& tee -a $LogFile
    set cmd="mri_surf2volseg --o wmparc.mgz --label-wm --i aparc+aseg.mgz --threads $THREADS --lh-annot ../label/lh.aparc.annot 3000 --lh-cortex-mask ../label/lh.cortex.label --lh-white ../surf/lh.white --lh-pial ../surf/lh.pial --lh"
    $cmd |& tee -a $LogFile
  else
    set cmd="mri_surf2volseg --o aparc+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --rh-annot ../label/rh.aparc.annot 2000 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial --rh"
    $cmd |& tee -a $LogFile
    set cmd="mri_surf2volseg --o aparc.a2009s+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS  --rh-annot ../label/rh.aparc.a2009s.annot 12100 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial --rh"
    $cmd |& tee -a $LogFile
    set cmd="mri_surf2volseg --o aparc.DKTatlas+aseg.mgz --label-cortex --i aseg.mgz --threads $THREADS --rh-annot ../label/rh.aparc.DKTatlas.annot 2000 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial  --rh"
    $cmd |& tee -a $LogFile
    set cmd="mri_surf2volseg --o wmparc.mgz --label-wm --i aparc+aseg.mgz --threads $THREADS --rh-annot ../label/rh.aparc.annot 4000 --rh-cortex-mask ../label/rh.cortex.label --rh-white ../surf/rh.white --rh-pial ../surf/rh.pial --rh"
    $cmd |& tee -a $LogFile
  endif
endif



# anatomical stats
if ( $DO_LEFT ) then
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/lh.cortex.label -f ../stats/lh.aparc.stats -b -a ../label/lh.aparc.annot -c ../label/aparc.annot.ctab $SNAME lh white"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/lh.cortex.label -f ../stats/lh.aparc.pial.stats -b -a ../label/lh.aparc.annot -c ../label/aparc.annot.ctab $SNAME lh pial"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/lh.cortex.label -f ../stats/lh.aparc.a2009s.stats -b -a ../label/lh.aparc.a2009s.annot -c ../label/aparc.annot.a2009s.ctab $SNAME lh white"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/lh.cortex.label -f ../stats/lh.aparc.DKTatlas.stats -b -a ../label/lh.aparc.DKTatlas.annot -c ../label/aparc.annot.DKTatlas.ctab $SNAME lh white"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/rh.cortex.label -f ../stats/rh.aparc.stats -b -a ../label/rh.aparc.annot -c ../label/aparc.annot.ctab $SNAME rh white"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/rh.cortex.label -f ../stats/rh.aparc.pial.stats -b -a ../label/rh.aparc.annot -c ../label/aparc.annot.ctab $SNAME rh pial"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/rh.cortex.label -f ../stats/rh.aparc.a2009s.stats -b -a ../label/rh.aparc.a2009s.annot -c ../label/aparc.annot.a2009s.ctab $SNAME rh white"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -noglobal -cortex ../label/rh.cortex.label -f ../stats/rh.aparc.DKTatlas.stats -b -a ../label/rh.aparc.DKTatlas.annot -c ../label/aparc.annot.DKTatlas.ctab $SNAME rh white"
  $cmd |& tee -a $LogFile
endif

ln -s $FREESURFER_HOME/subjects/fsaverage $SUBJECTS_DIR/
cd ../label

# labels
if ( $DO_LEFT ) then
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA1_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA1_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA2_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA2_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA3a_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA3a_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA3b_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA3b_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA4a_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA4a_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA4p_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA4p_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA6_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA6_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA44_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA44_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA45_exvivo.label --trgsubject $SNAME --trglabel ./lh.BA45_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.V1_exvivo.label --trgsubject $SNAME --trglabel ./lh.V1_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.V2_exvivo.label --trgsubject $SNAME --trglabel ./lh.V2_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.MT_exvivo.label --trgsubject $SNAME --trglabel ./lh.MT_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.entorhinal_exvivo.label --trgsubject $SNAME --trglabel ./lh.entorhinal_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.perirhinal_exvivo.label --trgsubject $SNAME --trglabel ./lh.perirhinal_exvivo.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.FG1.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.FG1.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.FG2.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.FG2.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.FG3.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.FG3.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.FG4.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.FG4.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.hOc1.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.hOc1.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.hOc2.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.hOc2.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.hOc3v.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.hOc3v.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.hOc4v.mpm.vpnl.label --trgsubject $SNAME --trglabel ./lh.hOc4v.mpm.vpnl.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mris_label2annot --s $SNAME --ctab $FREESURFER_HOME/average/colortable_vpnl.txt --hemi lh --a mpm.vpnl --maxstatwinner --noverbose --l lh.FG1.mpm.vpnl.label --l lh.FG2.mpm.vpnl.label --l lh.FG3.mpm.vpnl.label --l lh.FG4.mpm.vpnl.label --l lh.hOc1.mpm.vpnl.label --l lh.hOc2.mpm.vpnl.label --l lh.hOc3v.mpm.vpnl.label --l lh.hOc4v.mpm.vpnl.label"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA1_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA1_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA2_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA2_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA3a_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA3a_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA3b_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA3b_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA4a_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA4a_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA4p_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA4p_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA6_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA6_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA44_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA44_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.BA45_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.BA45_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.V1_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.V1_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.V2_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.V2_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.MT_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.MT_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.entorhinal_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.entorhinal_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/lh.perirhinal_exvivo.thresh.label --trgsubject $SNAME --trglabel ./lh.perirhinal_exvivo.thresh.label --hemi lh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mris_label2annot --s $SNAME --hemi lh --ctab $FREESURFER_HOME/average/colortable_BA.txt --l lh.BA1_exvivo.label --l lh.BA2_exvivo.label --l lh.BA3a_exvivo.label --l lh.BA3b_exvivo.label --l lh.BA4a_exvivo.label --l lh.BA4p_exvivo.label --l lh.BA6_exvivo.label --l lh.BA44_exvivo.label --l lh.BA45_exvivo.label --l lh.V1_exvivo.label --l lh.V2_exvivo.label --l lh.MT_exvivo.label --l lh.perirhinal_exvivo.label --l lh.entorhinal_exvivo.label --a BA_exvivo --maxstatwinner --noverbose"
  $cmd |& tee -a $LogFile
  set cmd="mris_label2annot --s $SNAME --hemi lh --ctab $FREESURFER_HOME/average/colortable_BA_thresh.txt --l lh.BA1_exvivo.thresh.label --l lh.BA2_exvivo.thresh.label --l lh.BA3a_exvivo.thresh.label --l lh.BA3b_exvivo.thresh.label --l lh.BA4a_exvivo.thresh.label --l lh.BA4p_exvivo.thresh.label --l lh.BA6_exvivo.thresh.label --l lh.BA44_exvivo.thresh.label --l lh.BA45_exvivo.thresh.label --l lh.V1_exvivo.thresh.label --l lh.V2_exvivo.thresh.label --l lh.MT_exvivo.thresh.label --l lh.perirhinal_exvivo.thresh.label --l lh.entorhinal_exvivo.thresh.label --a BA_exvivo.thresh --maxstatwinner --noverbose"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -f ../stats/lh.BA_exvivo.stats -b -a ./lh.BA_exvivo.annot -c ./BA_exvivo.ctab $SNAME lh white"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -f ../stats/lh.BA_exvivo.thresh.stats -b -a ./lh.BA_exvivo.thresh.annot -c ./BA_exvivo.thresh.ctab $SNAME lh white"
  $cmd |& tee -a $LogFile
endif

if ( $DO_RIGHT ) then
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA1_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA1_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA2_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA2_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA3a_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA3a_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA3b_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA3b_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA4a_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA4a_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA4p_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA4p_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA6_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA6_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA44_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA44_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA45_exvivo.label --trgsubject $SNAME --trglabel ./rh.BA45_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.V1_exvivo.label --trgsubject $SNAME --trglabel ./rh.V1_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.V2_exvivo.label --trgsubject $SNAME --trglabel ./rh.V2_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.MT_exvivo.label --trgsubject $SNAME --trglabel ./rh.MT_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.entorhinal_exvivo.label --trgsubject $SNAME --trglabel ./rh.entorhinal_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.perirhinal_exvivo.label --trgsubject $SNAME --trglabel ./rh.perirhinal_exvivo.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.FG1.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.FG1.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.FG2.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.FG2.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.FG3.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.FG3.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.FG4.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.FG4.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.hOc1.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.hOc1.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.hOc2.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.hOc2.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.hOc3v.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.hOc3v.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.hOc4v.mpm.vpnl.label --trgsubject $SNAME --trglabel ./rh.hOc4v.mpm.vpnl.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mris_label2annot --s $SNAME --ctab $FREESURFER_HOME/average/colortable_vpnl.txt --hemi rh --a mpm.vpnl --maxstatwinner --noverbose --l rh.FG1.mpm.vpnl.label --l rh.FG2.mpm.vpnl.label --l rh.FG3.mpm.vpnl.label --l rh.FG4.mpm.vpnl.label --l rh.hOc1.mpm.vpnl.label --l rh.hOc2.mpm.vpnl.label --l rh.hOc3v.mpm.vpnl.label --l rh.hOc4v.mpm.vpnl.label"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA1_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA1_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA2_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA2_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA3a_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA3a_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA3b_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA3b_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA4a_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA4a_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA4p_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA4p_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA6_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA6_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA44_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA44_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.BA45_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.BA45_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.V1_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.V1_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.V2_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.V2_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.MT_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.MT_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.entorhinal_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.entorhinal_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mri_label2label --srcsubject fsaverage --srclabel $SUBJECTS_DIR/fsaverage/label/rh.perirhinal_exvivo.thresh.label --trgsubject $SNAME --trglabel ./rh.perirhinal_exvivo.thresh.label --hemi rh --regmethod surface"
  $cmd |& tee -a $LogFile
  set cmd="mris_label2annot --s $SNAME --hemi rh --ctab $FREESURFER_HOME/average/colortable_BA.txt --l rh.BA1_exvivo.label --l rh.BA2_exvivo.label --l rh.BA3a_exvivo.label --l rh.BA3b_exvivo.label --l rh.BA4a_exvivo.label --l rh.BA4p_exvivo.label --l rh.BA6_exvivo.label --l rh.BA44_exvivo.label --l rh.BA45_exvivo.label --l rh.V1_exvivo.label --l rh.V2_exvivo.label --l rh.MT_exvivo.label --l rh.perirhinal_exvivo.label --l rh.entorhinal_exvivo.label --a BA_exvivo --maxstatwinner --noverbose"
  $cmd |& tee -a $LogFile
  set cmd="mris_label2annot --s $SNAME --hemi rh --ctab $FREESURFER_HOME/average/colortable_BA_thresh.txt --l rh.BA1_exvivo.thresh.label --l rh.BA2_exvivo.thresh.label --l rh.BA3a_exvivo.thresh.label --l rh.BA3b_exvivo.thresh.label --l rh.BA4a_exvivo.thresh.label --l rh.BA4p_exvivo.thresh.label --l rh.BA6_exvivo.thresh.label --l rh.BA44_exvivo.thresh.label --l rh.BA45_exvivo.thresh.label --l rh.V1_exvivo.thresh.label --l rh.V2_exvivo.thresh.label --l rh.MT_exvivo.thresh.label --l rh.perirhinal_exvivo.thresh.label --l rh.entorhinal_exvivo.thresh.label --a BA_exvivo.thresh --maxstatwinner --noverbose"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -f ../stats/rh.BA_exvivo.stats -b -a ./rh.BA_exvivo.annot -c ./BA_exvivo.ctab $SNAME rh white"
  $cmd |& tee -a $LogFile
  set cmd="mris_anatomical_stats -th3 -mgz -f ../stats/rh.BA_exvivo.thresh.stats -b -a ./rh.BA_exvivo.thresh.annot -c ./BA_exvivo.thresh.ctab $SNAME rh white"
  $cmd |& tee -a $LogFile
endif

# All done!
echo "All done!" >> $LogFile
rm -f $IsRunningFile

echo " "
echo "All done!"
echo " "
echo "If you have used results from this software for a publication, please cite:"
echo " "
echo "K Gopinath, DN Greeve, S Das, S Arnold, C Magdamo, JE Iglesias:"
echo "Cortical analysis of heterogeneous clinical brain MRI scans for large-scale neuroimaging studies"
echo "Proceedings of MICCAI 2023 (accepted)."
echo " "
echo "B Billot, DN Greve, O Puonti, A Thielscher, K Van Leemput, B Fischl, AV Dalca, JE Iglesias:"
echo "SynthSeg: Segmentation of brain MRI scans of any contrast and resolution without retraining"
echo "Medical Image Analysis, 83, 102789 (2023)"
echo " "
echo "B Billot, C Magdamo, SE Arnold, S Das, JE Iglesias:"
echo "Robust machine learning segmentation for large-scale analysis of heterogeneous clinical brain MRI datasets"
echo "PNAS, 120(9), e2216399120 (2023)"
echo " "
echo "SynthSR: a public AI tool to turn heterogeneous clinical brain scans into high-resolution T1-weighted images for 3D morphometry"
echo "JE Iglesias, B Billot, Y Balbastre, C Magdamo, S Arnold, S Das, B Edlow, D Alexander, P Golland, B Fischl"
echo "Science Advances, 9(5), eadd3607 (2023)"
echo " "

exit 0
