#! /bin/csh -f

#
# qmedit - quick tkmedit
#
# Original Author: Doug Greve
# CVS Revision Info:
#    $Author: nicks $
#    $Date: 2007/01/09 22:41:18 $
#    $Revision: 1.6 $
#
# Copyright (C) 2002-2007,
# The General Hospital Corporation (Boston, MA). 
# All rights reserved.
#
# Distribution, usage and copying of this software is covered under the
# terms found in the License Agreement file named 'COPYING' found in the
# FreeSurfer source code root directory, and duplicated here:
# https://surfer.nmr.mgh.harvard.edu/fswiki/FreeSurferOpenSourceLicense
#
# General inquiries: freesurfer@nmr.mgh.harvard.edu
# Bug reports: analysis-bugs@nmr.mgh.harvard.edu
#


set VERSION = '$Id: qmedit,v 1.6 2007/01/09 22:41:18 nicks Exp $';
set cmdargs = ($argv);

set anatvol    = orig;
set auxvol     = brain;
set surf       = ();

set segvol     = ();
set segcolor   = $FREESURFER_HOME/tkmeditColorsCMA;
set segopacity = .3;

set overlayvol = ();
set tcvol      = ();
set regfile    = ();
set fthresh = 2
set fmid = 5;
set fslope = 0.33
set MGZ = .mgz;

set tkmeditargs = ();

if($#argv == 0) then
  goto usage_exit;
  exit 1;
endif

set n = `echo $argv | grep version | wc -l` 
if($n != 0) then
  echo $VERSION
  exit 0;
endif

goto parse_args;
parse_args_return:

goto check_params;
check_params_return:

if($#regfile) then
  set regfilebase = `basename $regfile`;
  set regfiledir  = `dirname $regfile`;
  pushd $regfiledir > /dev/null
  set regfiledir = `pwd`;
  popd > /dev/null
  set regfile = $regfiledir/$regfilebase
  set subject = `cat $regfile | head -1`;
  echo "Subject is $subject"
  if(! -e $SUBJECTS_DIR/$subject) then
    echo "ERROR: cannot find $subject in $SUBJECTS_DIR"
    exit 1;
  endif
endif

set anatvol = $anatvol$MGZ
if(! -e $SUBJECTS_DIR/$subject/mri/$anatvol) then
  echo "ERROR: cannot find $anatvol$MGZ in $subject/mri"
  exit 1;
endif

set auxvol  = $auxvol$MGZ

if($#segvol) then
  set segpath = $SUBJECTS_DIR/$subject/mri/$segvol$MGZ
else
  set segpath = ();
endif

which tkmedit

set cmd = (tkmedit $subject $anatvol $surf)
if($#auxvol) set cmd = ($cmd -aux $auxvol)
if($#segvol) set cmd = ($cmd -segmentation $segpath $segcolor)
set cmd = ($cmd -fthresh $fthresh -fmid $fmid -fslope $fslope)
if($#tcvol) set cmd = ($cmd -timecourse $tcvol -timecourse-reg $regfile)

if($#overlayvol) then
  set overlaybase = `basename $overlayvol`;
  set overlaydir  = `dirname $overlayvol`;
  pushd $overlaydir > /dev/null
  set overlaydir = `pwd`;
  set overlayvol = $overlaydir/$overlaybase
  set cmd = ($cmd -overlay $overlayvol -overlay-reg $regfile)
  popd > /dev/null
endif

echo ""
echo ""
echo "setenv SUBJECTS_DIR $SUBJECTS_DIR"
pwd
echo ""
echo $cmd
echo ""
echo ""

$cmd

exit 0;
###############################################

############--------------##################
parse_args:
set cmdline = "$argv";
while( $#argv != 0 )

  set flag = $argv[1]; shift;
  
  switch($flag)

    case "-o":
      if ( $#argv == 0) goto arg1err;
      set overlayvol = $argv[1]; shift;
      breaksw

    case "-t":
      if ( $#argv == 0) goto arg1err;
      set tcvol = $argv[1]; shift;
      breaksw

    case "-r":
      if ( $#argv == 0) goto arg1err;
      set regfile = $argv[1]; shift;
      breaksw

    case "-fslope":
    case "-fs":
      if ( $#argv == 0) goto arg1err;
      set fslope = $argv[1]; shift;
      breaksw

    case "-fthresh":
    case "-ft":
      if ( $#argv == 0) goto arg1err;
      set fthresh = $argv[1]; shift;
      breaksw

    case "-fmid":
    case "-fm":   
      if ( $#argv == 0) goto arg1err;
      set fmid = $argv[1]; shift;
      breaksw

    case "-fmask":
      set fthresh = 0.5
      set fmid = 1;
      set fslope = 1;
      breaksw

    case "-anat":   
      if ( $#argv == 0) goto arg1err;
      set anatvol = $argv[1]; shift;
      breaksw

    case "-aux":   
      if ( $#argv == 0) goto arg1err;
      set auxvol = $argv[1]; shift;
      breaksw

    case "-noaux":   
      set auxvol = ();
      breaksw

    case "-seg":   
      if ( $#argv == 0) goto arg1err;
      set segvol = $argv[1]; shift;
      breaksw

    case "-s":   
      if ( $#argv == 0) goto arg1err;
      set subject = $argv[1]; shift;
      breaksw

    case "-surf":   
      if ( $#argv == 0) goto arg1err;
      set surf = $argv[1]; shift;
      breaksw

    case "-tkmargs":   
      if ( $#argv == 0) goto arg1err;
      set tkmargs = $argv[1]; shift;
      breaksw

    case "-mgz":
      set MGZ = .mgz
      breaksw

    case "-cor":
      set MGZ = ();
      breaksw

    case "--version":
    case "-version":
      echo $VERSION
      exit 0;
      breaksw

    case "-debug":
      set verbose = 1;
      set echo = 1;
      breaksw

    default:
      echo ERROR: Flag $flag unrecognized. 
      echo $cmdline
      exit 1
      breaksw
  endsw

end

goto parse_args_return;
############--------------##################

############--------------##################
check_params:

  if($#overlayvol != 0) then
    if($#regfile == 0) then
      echo "ERROR: no registration file specified"
      exit 1
    endif
    if(! -e $regfile) then
      echo "ERROR: cannot find $regfile"
      exit 1
    endif
  endif

goto check_params_return;
############--------------##################

############--------------##################
arg1err:
  echo "ERROR: flag $flag requires one argument"
  exit 1
############--------------##################

############--------------##################
usage_exit:
  echo "USAGE: qmedit"
  echo "Options:";
  echo "   -o overlayvol"
  echo "   -r regfile"
  echo "   -fthresh fthresh : default is 2"
  echo "   -fmid    fmid    : default is 5"
  echo "   -fslope  fslope  : default is .33"
  echo "      For info on setting the thresholds see"
  echo "      http://surfer.nmr.mgh.harvard.edu/faqomatic/cache/56.html"
  echo "   -fmask  : fthresh=0.5, fmid=1, fslope=1"
  echo "   -anat    anatvol : default is orig"
  echo "   -aux     auxvol : default is brain"
  echo "   -seg     segvol : eg, aparc+aseg"
  echo "   -noaux : do not use an aux volume"
  echo "   -mgz : assume anats are mgz"
  echo "   -surf surfname : eg, lh.white"
  #echo "   -tkargs  tkmeditargs"
  echo "   -version       : print version and exit"
exit 1;


