#!/bin/tcsh -f

set CurDir = $PWD

if ("$1" == '' || "$1" == '-h' || "$1" == '-help' || "$2" == '') then
	goto USAGE
endif

goto PARSE_COMMAND
Ret_PARSE_COMMAND:

goto CHECK_PROGRAMS
Ret_CHECK_PROGRAMS:

goto SET_VARIABLES
Ret_SET_VARIABLES:

goto CHECK_EXISTENCE
Ret_CHECK_EXISTENCE:

goto DOWNSAMPLE
Ret_DOWNSAMPLE:

goto STRIP_EXP_VOL
Ret_STRIP_EXP_VOL:

goto RESAMPLE
Ret_RESAMPLE:

goto REGISTER
Ret_REGISTER:

echo "Done."
goto END


PARSE_COMMAND:
	
   #continue parsing for new options
   set cleanup = 1
   set Narg = $#
   set cnt = 1
   set cropt = '-coarserot'
   set prefix = ''
   set UseWarp = 0
   set clpbelow = ''
   set SA_in = ''
   set EA_in = ''
   set DownSample = 0
   set StripSkull = 0
   while ($cnt <= $Narg)
		set donext = 1;
      if ($donext && "$argv[$cnt]" == "-dxyz") then
         set pLoc = $cnt		
		   if ($pLoc == $Narg) then
				echo "Need value after -dxyz"
            goto END
			else
            @ cnt ++
            set DownSample = "$argv[$cnt]"
            if ($DownSample < 0.3 || $DownSample > 4) then
               echo "Error: Bad value for dxyz ($argv[$cnt])"
               echo ""
               goto END
            endif
            set donext = 0	
         endif	
      endif
      if ($donext && "$argv[$cnt]" == "-EA_clip_below") then
         set pLoc = $cnt		
		   if ($pLoc == $Narg) then
				echo "Need Zmm after -EA_clip_below"
            goto END
			else
            @ cnt ++
            set clpbelow = "$argv[$cnt]"
            set donext = 0	
         endif	
      endif
      if ($donext && "$argv[$cnt]" == "-prefix") then
         set pLoc = $cnt		
		   if ($pLoc == $Narg) then
				echo "Need a string after -prefix"
            goto END
			else
            @ cnt ++
            set prefix = "$argv[$cnt]"
            set donext = 0	
         endif	
      endif
      if ($donext && "$argv[$cnt]" == "-surf_anat") then
         set pLoc = $cnt		
		   if ($pLoc == $Narg) then
				echo "Need a volume after -surf_anat"
            goto END
			else
            @ cnt ++
            set SA_in = "$argv[$cnt]"
            set donext = 0	
         endif	
      endif
      if ($donext && "$argv[$cnt]" == "-exp_anat") then
         set pLoc = $cnt		
		   if ($pLoc == $Narg) then
				echo "Need a volume after -exp_anat"
            goto END
			else
            @ cnt ++
            set EA_in = "$argv[$cnt]"
            set donext = 0	
         endif	
      endif
     
      if ($donext && "$argv[$cnt]" == "-wd") then
         set UseWarp = 1;		
         set donext = 0		
      endif
      
      if ($donext && "$argv[$cnt]" == "-strip_skull") then
         set pLoc = $cnt		
		   if ($pLoc == $Narg) then
				echo "Need a parameter after -strip_skull"
            goto END
			else
            @ cnt ++
            if ("$argv[$cnt]" == "exp_anat") then
               set StripSkull = 1;
            else if ("$argv[$cnt]" == "both") then
               set StripSkull = 3;
            else
               echo "Acceptable options for -strip_skull are 'exp_anat' or 'both'"
               goto END
            endif
        endif		
        set donext = 0		
      endif
      
      if ($donext && "$argv[$cnt]" == "-ncr") then
         set cropt = '';		
         set donext = 0		
      endif
      
      if ($donext && "$argv[$cnt]" == "-keep_tmp") then
         set cleanup = 0;		
         set donext = 0		
      endif
      
      #ADD NO NEW OPTIONS BELOW THIS LINE
      
      if ($donext == 1 && $cnt == 1) then
	      set EA_in = "$argv[$cnt]"
         echo "Note: Guessing that '$EA_in' is the experiment anatomy."
         echo "Better use -exp_anat flag in your command."
	      echo ""
         set donext = 0
      endif      
      
      if ($donext == 1 && $cnt == 2) then
         set SA_in = "$argv[$cnt]"
         echo ""
         echo "Note: Guessing that '$SA_in' is the surface anatomy."
         echo "Better use -surf_anat flag in your command."
	      echo ""
         set donext = 0
      endif         

      if ($donext == 1 && $cnt == 3) then
         #probably the dxyz parameter
         set DownSample = $argv[$cnt]
         if ("$DownSample" =~ *[^0-9]*) then
            echo "Error: Option '$argv[$cnt]' not understood"
            echo ""
            goto END
         endif
         if ($DownSample < 0.3 || $DownSample > 4) then
            echo "Error: Option '$argv[$cnt]' not understood"
            echo ""
            goto END
         endif
         set donext = 0
      endif
      if ($donext == 1) then
         echo "Error: Option or parameter '$argv[$cnt]' not understood"
         goto END
      endif
      
		@ cnt ++
	end
   
   if ("$SA_in" == "" || "$EA_in" == "") then 
      echo "Error: Failed to find surface and/or experiment anatomies on command line."
      goto END
   else
         set ExpAnatPrefix = `@GetAfniPrefix $EA_in`
	      set ExpAnatView = `@GetAfniView $EA_in`
	      set SurfAnatPrefix = `@GetAfniPrefix $SA_in` 
         set SurfAnatView = `@GetAfniView $SA_in` 
	      set SurfAnatPath = $SA_in:h
	      if ($SurfAnatPath == $SA_in:t) then 
		      #no path given
		      set SurfAnatPath = .
	      endif
   endif
   
	goto Ret_PARSE_COMMAND

SET_VARIABLES:
	set ExpAnat = $ExpAnatPrefix$ExpAnatView
	set SurfAnat = $SurfAnatPrefix$SurfAnatView
	set Resampled = 0 #flag set when resampling is done
	set SkullStripped = 0
   goto Ret_SET_VARIABLES


DOWNSAMPLE:
	set Skip = 0
	if ($DownSample != 0) then
		echo "Downsampling ..."
		cd $SurfAnatPath
		set tmpPrefix = $SurfAnatPrefix"_"$DownSample"mm"
		if (-f $tmpPrefix$SurfAnatView.BRIK) then
			echo ""
			echo "Warning: $tmpPrefix$SurfAnatView exists in $SurfAnatPath"
			echo "Enter O/S/Q to Overwrite/Skip/Quit:"
			set sel = $<
			if ("$sel" == 'O' || "$sel" == 'o') then
				rm -f $tmpPrefix$SurfAnatView.BRIK $tmpPrefix$SurfAnatView.HEAD
			endif
			if ("$sel" == 'S' || "$sel" == 's') then
				echo "Skipping downsampling, existing data set $DownSample will be used"
				set Skip = 1
			endif
			if ("$sel" == 'Q' || "$sel" == 'q') then
				echo "Quitting ..."
				goto END
			endif
			echo ""
		endif
		if ($Skip == 0) then
			echo "running: adwarp -force -prefix $tmpPrefix -apar $SurfAnat -dpar $SurfAnat -dxyz $DownSample -resam Cu"
			adwarp -force -prefix $tmpPrefix -apar $SurfAnat -dpar $SurfAnat -dxyz $DownSample -resam Cu
			if(!(-f $tmpPrefix$SurfAnatView.BRIK || -f $tmpPrefix$SurfAnatView.BRIK.gz || -f $tmpPrefix$SurfAnatView.BRIK.Z || -f $tmpPrefix$SurfAnatView.BRIK.bz2 )) then
				goto NO_DOWNGOOD_BADBAD
			endif
			
		endif
		set SurfAnatPrefix = $tmpPrefix
		set SurfAnat = $SurfAnatPrefix$SurfAnatView
		cd $CurDir
	endif
	goto Ret_DOWNSAMPLE

STRIP_EXP_VOL:
   #strip skull off of EXP_VOL
   set Skip = 0
   cd $CurDir
   if ($StripSkull >= 1) then
      set ExpAnat_NoSkullPrefix = $ExpAnatPrefix"_ns"
      set ExpAnat_NoSkull = $ExpAnatPrefix"_ns"$ExpAnatView
      echo "Stripping exp vol ..."
      if (`@CheckForAfniDset $ExpAnat_NoSkull` > 0) then
         echo ""
		   echo "Warning: $ExpAnat_NoSkull exists in $CurDir"
		   echo "Enter O/S/Q to Overwrite/Skip/Quit:"
		   set sel = $<
		   if ("$sel" == 'O' || "$sel" == 'o') then
			   rm -f $ExpAnat_NoSkull.BRIK* $ExpAnat_NoSkull.HEAD
		   endif
		   if ("$sel" == 'S' || "$sel" == 's') then
			   echo "Skipping stripping, existing data set $ExpAnat_NoSkull will be used"
			   set Skip = 1
		   endif
		   if ("$sel" == 'Q' || "$sel" == 'q') then
			   echo "Quitting ..."
			   goto END
		   endif
		   echo ""
	   endif
      if ($Skip == 0) then
         3dSkullStrip -input $ExpAnat -prefix $ExpAnat_NoSkull
         if (`@CheckForAfniDset $ExpAnat_NoSkull` < 2) then
            goto NO_SS
         endif
      endif
      set ExpAnatPrefix = $ExpAnat_NoSkullPrefix
	   set ExpAnat = $ExpAnat_NoSkull
	   set SkullStripped = 1
   endif
	if ($StripSkull >= 2) then
      set Skip = 0
      set SurfAnat_NoSkullPrefix = $SurfAnatPrefix"_ns"
      set SurfAnat_NoSkull = $SurfAnatPrefix"_ns"$SurfAnatView
      echo "Stripping surf vol ..."
      if (`@CheckForAfniDset $SurfAnatPath/$SurfAnat_NoSkull` > 0) then
         echo ""
		   echo "Warning: $SurfAnatPath/$SurfAnat_NoSkull exists in $CurDir"
		   echo "Enter O/S/Q to Overwrite/Skip/Quit:"
		   set sel = $<
		   if ("$sel" == 'O' || "$sel" == 'o') then
			   rm -f $SurfAnatPath/$SurfAnat_NoSkull.BRIK* $SurfAnatPath/$SurfAnat_NoSkull.HEAD
		   endif
		   if ("$sel" == 'S' || "$sel" == 's') then
			   echo "Skipping stripping, existing data set $SurfAnatPath/$SurfAnat_NoSkull will be used"
			   set Skip = 1
		   endif
		   if ("$sel" == 'Q' || "$sel" == 'q') then
			   echo "Quitting ..."
			   goto END
		   endif
		   echo ""
	   endif
      if ($Skip == 0) then
         3dSkullStrip -input $SurfAnatPath/$SurfAnat -prefix $SurfAnatPath/$SurfAnat_NoSkull
         if (`@CheckForAfniDset $SurfAnatPath/$SurfAnat_NoSkull` < 2) then
            goto NO_SS
         endif
      endif
      set SurfAnatOri = $SurfAnat
      set SurfAnatPrefix = $SurfAnat_NoSkullPrefix
	   set SurfAnat = $SurfAnat_NoSkull
	   set SkullStripped = 2
   endif
   goto Ret_STRIP_EXP_VOL

RESAMPLE:
	#resample Experiment volume to look like SurfAnat
	set Skip = 0
	cd $CurDir
	set ExpAnat_ResampPrefix = $ExpAnatPrefix"_resamp_"$clpbelow
	set ExpAnat_Resamp = $ExpAnat_ResampPrefix$SurfAnatView
	echo ""
	echo "resampling $ExpAnat to match $SurfAnatPath/$SurfAnat"
	if (`@CheckForAfniDset  $ExpAnat_Resamp.BRIK` > 0) then
		echo ""
		echo "Warning: $ExpAnat_Resamp exists in $CurDir"
		echo "Enter O/S/Q to Overwrite/Skip/Quit:"
		set sel = $<
		if ("$sel" == 'O' || "$sel" == 'o') then
			rm -f $ExpAnat_Resamp.BRIK* $ExpAnat_Resamp.HEAD
		endif
		if ("$sel" == 'S' || "$sel" == 's') then
			echo "Skipping resampling, existing data set $ExpAnat_Resamp will be used"
			set Skip = 1
		endif
		if ("$sel" == 'Q' || "$sel" == 'q') then
			echo "Quitting ..."
			goto END
		endif
		echo ""
	endif
	if ($Skip == 0) then
      set tmpref = '___tmp__rs'"$ExpAnat_ResampPrefix"
		if ($clpbelow != '') then
         rm -rf ${tmpref}*.???? >& /dev/null
         @clip_volume -below $clpbelow -input $ExpAnat -prefix $tmpref
         set nxt = "$tmpref""$ExpAnatView"
         if (!(-f $nxt.BRIK || -f $nxt.BRIK.gz || -f $nxt.BRIK.Z || -f $nxt.BRIK.bz2)) then 
			   goto NO_RESAMP
		   endif
      else   
         set nxt = "$ExpAnat"
      endif
      echo "3dresample -master $SurfAnatPath/$SurfAnat -prefix $ExpAnat_ResampPrefix -rmode Cu -inset $nxt"
		echo ""
		3dresample -master $SurfAnatPath/$SurfAnat -prefix $ExpAnat_ResampPrefix -rmode Cu -inset $nxt
		if (!(-f $ExpAnat_Resamp.BRIK || -f $ExpAnat_Resamp.BRIK.gz || -f $ExpAnat_Resamp.BRIK.Z || -f $ExpAnat_Resamp.BRIK.bz2)) then 
			goto NO_RESAMP
		endif
      rm -rf ${tmpref}*.???? >& /dev/null
	endif
	set ExpAnatPrefix = $ExpAnat_ResampPrefix
	set ExpAnat = $ExpAnat_Resamp
	set Resampled = 1
	goto Ret_RESAMPLE
	
REGISTER:
	cd $CurDir
	if ($prefix == '') then
      set VolRegPrefix = $SurfAnatPrefix"_Alnd_Exp"
	else
      set VolRegPrefix = $prefix
   endif
   echo ""
	if (-f $VolRegPrefix$SurfAnatView.BRIK) then
		echo ""
		echo "Warning: $VolRegPrefix$SurfAnatView exists in $CurDir"
		echo "Enter O/Q to Overwrite/Quit:"
		set sel = $<
		if ("$sel" == 'O' || "$sel" == 'o') then
			rm -f $VolRegPrefix$SurfAnatView.BRIK $VolRegPrefix$SurfAnatView.HEAD
		endif
		if ("$sel" == 'Q' || "$sel" == 'q') then
			echo "Quitting ..."
			goto END
		endif
		echo ""
	endif
	
   echo "Registering $SurfAnatPath/$SurfAnat to $ExpAnat"
	if ($UseWarp == 0) then
	   echo "3dvolreg -wtrim -clipit -twopass -twodup -zpad 8 -rotcom -verbose -base $ExpAnat -prefix $VolRegPrefix $SurfAnatPath/$SurfAnat"
	   echo ""
	   3dvolreg -wtrim -clipit -twopass -twodup -zpad 8 -rotcom -verbose -base $ExpAnat -prefix $VolRegPrefix $SurfAnatPath/$SurfAnat
	   if (!(-f $SurfAnatPath/$VolRegPrefix$SurfAnatView.BRIK || -f $SurfAnatPath/$VolRegPrefix$SurfAnatView.BRIK.gz || -f $SurfAnatPath/$VolRegPrefix$SurfAnatView.BRIK.Z || -f $SurfAnatPath/$VolRegPrefix$SurfAnatView.BRIK.bz2)) then
		   goto NO_VOLREG
	   endif
      set fview = $SurfAnatView
	   mv $SurfAnatPath/$VolRegPrefix* ./
   else      
      set tmpref = '___tmp__zp'"$ExpAnatPrefix$SurfAnatPrefix"
      rm -rf ${tmpref}*.???? >& /dev/null
      set pd = 8
      
      echo "3dZeropad -I $pd -S $pd -A $pd -P $pd -L $pd -R $pd -mm -prefix ./${tmpref}_pad $SurfAnatPath/$SurfAnat"
      echo ""
      
      3dZeropad -I $pd -S $pd -A $pd -P $pd -L $pd -R $pd -mm -prefix ./${tmpref}_pad $SurfAnatPath/$SurfAnat
      3dZeropad -I $pd -S $pd -A $pd -P $pd -L $pd -R $pd -mm -prefix ./${tmpref}_refpad $ExpAnat

      3dWarpDrive $cropt -twopass -verb -affine_general -cubic -final quintic \
                  -base ./${tmpref}_refpad$SurfAnatView -prefix ./${tmpref}_pad_wd ./${tmpref}_pad$SurfAnatView
	   if ($StripSkull > 2) then
         #Have to apply same transform to original SurfAnat
         3dZeropad -I $pd -S $pd -A $pd -P $pd -L $pd -R $pd -mm -prefix ./${tmpref}_padori $SurfAnatPath/$SurfAnatOri
         3dWarp -matparent ./${tmpref}_pad_wd$SurfAnatView -quintic -prefix ./${tmpref}_pad_wdori ./${tmpref}_padori$SurfAnatView
         set wdnext = ${tmpref}_pad_wdori  
      else
         set wdnext = ${tmpref}_pad_wd   
      endif
      
      3dZeropad -I -$pd -S -$pd -A -$pd -P -$pd -L -$pd -R -$pd -mm -prefix ./$VolRegPrefix ${wdnext}$SurfAnatView
	   #copy the WARPDRIVE_MATVEC_ fields to the zero unpadded dude
      3drefit -atrcopy ${wdnext}$SurfAnatView WARPDRIVE_INPUT_IDCODE $VolRegPrefix$SurfAnatView
      3drefit -atrcopy ${wdnext}$SurfAnatView WARPDRIVE_INPUT_NAME $VolRegPrefix$SurfAnatView
      3drefit -atrcopy ${wdnext}$SurfAnatView WARPDRIVE_BASE_IDCODE $VolRegPrefix$SurfAnatView
      3drefit -atrcopy ${wdnext}$SurfAnatView WARPDRIVE_MATVEC_FOR_000000 $VolRegPrefix$SurfAnatView
      3drefit -atrcopy ${wdnext}$SurfAnatView WARPDRIVE_MATVEC_INV_000000 $VolRegPrefix$SurfAnatView
      #differing views?
      if ("$SurfAnatView" != "$ExpAnatView") then
         3drefit -view $ExpAnatView $VolRegPrefix$SurfAnatView
         set fview = $ExpAnatView
      else
         set fview = $SurfAnatView
      endif
      if (!(-f ./$VolRegPrefix$fview.BRIK || -f ./$VolRegPrefix$fview.BRIK.gz || -f ./$VolRegPrefix$fview.BRIK.Z || -f ./$VolRegPrefix$fview.BRIK.bz2)) then
		   goto NO_WARPDRIVE
	   endif
      if ($cleanup == 1) then
         rm -rf ${tmpref}*.???? ${tmpref}*.????.* >& /dev/null
      endif
   endif
	
	
	#remove _resamp_
	if ($Resampled == 1 && $cleanup == 1) then
		echo "removing temporary bricks ..."
		rm -f $ExpAnat_Resamp".HEAD"
		rm -f $ExpAnat_Resamp".BRIK"
	endif
   
   #add a history note
   3dNotes -h "`basename $0` $argv[*]" $VolRegPrefix$fview
   
	goto Ret_REGISTER

CHECK_EXISTENCE:
	if (`@CheckForAfniDset $ExpAnat` < 2) goto NO_EXPANAT
   
   #if (!(-f $ExpAnat.HEAD || -f $ExpAnat)) goto NO_EXPANAT
	#if (!(-f $ExpAnat.BRIK || -f $ExpAnat.BRIK.gz || -f $ExpAnat.BRIK.Z || -f $ExpAnat.BRIK.bz2)) then
	#	goto NO_EXPANAT
	#endif

	if (`@CheckForAfniDset $SurfAnatPath/$SurfAnat` < 2) goto NO_SURFANAT
	
   #test -f $SurfAnatPath/$SurfAnat.HEAD || goto NO_SURFANAT
	#if (!(-f $SurfAnatPath/$SurfAnat.BRIK || -f $SurfAnatPath/$SurfAnat.BRIK.gz || -f $SurfAnatPath/$SurfAnat.BRIK.Z || -f $SurfAnatPath/$SurfAnat.BRIK.bz2)) then
	#	goto NO_SURFANAT
	#endif
   
   #check for large center difference
   set dist_cent = `@Center_Distance -dset $ExpAnat.HEAD $SurfAnatPath/$SurfAnat.HEAD`
   if (`ccalc -form int -eval "step($dist_cent - 80)"`) then
      echo ""
      echo "*********** Warning *************"
      echo "Dataset centers are $dist_cent mm"
      echo "apart. If registration fails, try"
      echo "recentering all the input data using"
      echo "@Align_Centers -base $SurfAnatPath/$SurfAnat.HEAD -dset $ExpAnat.HEAD -child CHILDREN"
      echo "and rerun `basename $0` using the shifted dset"
      echo "See @Align_Centers for more help."
      echo "*********************************"
      echo ""
      echo "Hit Enter to proceed or ctrl+c to quit."
      echo ""
      set junk = $<
   else
      echo "Center distance of $dist_cent mm"   
   endif 

	goto Ret_CHECK_EXISTENCE

CHECK_PROGRAMS:
	 set failed_pgms = 0
    foreach test_command ( 3dvolreg adwarp @GetAfniView @GetAfniPrefix )
		(which $test_command) >& /dev/null

		if ( $status ) then
	   	 echo "program not found in path: $test_command"
	   	 @ failed_pgms ++
		endif
    end

    if ( $failed_pgms ) then
		echo "$failed_pgms program(s) not found"
		goto END
    endif

	goto Ret_CHECK_PROGRAMS
	
NO_SURFANAT:
	echo ""
	echo "Error: No Surface Anatomy $SurfAnat (.HEAD or .BRIK) volume in $SurfAnatPath"
	echo ""
	goto END

NO_EXPANAT:
	echo ""
	echo "Error: No Experiment Anatomy $ExpAnat (.HEAD or .BRIK) in current directory"
	echo ""
	goto END

NO_DOWNGOOD_BADBAD:
	echo ""
	echo "Error: adwarp failed."
	echo ""
	goto END

NO_SS:
   echo ""
   echo "Error: SkullStripping failed."
   echo ""
   goto END
   
NO_VOLREG:
	echo ""
	echo "Error: 3dvolreg failed."
	echo ""
	goto END
NO_WARPDRIVE:
	echo ""
	echo "Error: 3dwarpdrive failed."
	echo ""
	goto END
NO_RESAMP:
	echo ""
	echo "Error: 3dresample failed."
	echo ""
	goto END
	
USAGE:
	echo ""
	echo "Usage: `basename $0` <-exp_anat Experiment_Anatomy> <-surf_anat Surface_Anatomy> "
   echo "                     [dxyz] [-wd] [-prefix PREFIX] [-EA_clip_below CLP]"
	echo "creates a version of Surface Anatomy that is registered to Experiment Anatomy."
	echo ""
	echo "Mandatory parameters:"
   echo "<-exp_anat Experiment_Anatomy>: Name of high resolution anatomical data set in register "
   echo "        with experimental data."
	echo "<-surf_anat Surface_Anatomy> Path and Name of high resolution antomical data set used to "
   echo "        create the surface."
   echo ""
   echo "  NOTE: In the old usage, there were no -exp_anat and -surf_anat flags and the two "
   echo "  volumes had to appear first on the command line and in the proper order."
	echo ""
   echo "Optional parameters:"
   echo "   [-dxyz DXYZ]: This optional parameter indicates that the anatomical "
   echo "        volumes must be downsampled to dxyz mm voxel resolution before "
	echo "        registration. That is only necessary if 3dvolreg runs out of memory."
	echo "        You MUST have 3dvolreg that comes with afni distributions newer than "
   echo "        version 2.45l. It contains an option for reducing memory usage and "
	echo "        thus allow the registration of large data sets."
	echo "   [-wd]: Use 3dWarpDrive's general affine transform (12 param) instead of "
   echo "        3dvolreg's 6 parameters."
   echo "        If the anatomical coverage differs markedly between 'Experiment "
   echo "        Anatomy' and 'Surface Anatomy', you might need to use -EA_clip_below "
   echo "        option or you could end up with a very distorted brain."
   #echo "        With more degrees of freedom, there is more room for the alignment not"
   #echo "        to converge very well, especially when spatial coverage of the two dsets"
   #echo "        is not the same. So use this option when you have to, not as the default."
   echo "        The default now is to use -coarserot option with 3dWarpDrive, this"
   echo "        should make the program more robust. If you want to try running without it"
   echo "        the add -ncr with -wd"
   echo "        I would be interested in examining cases where -wd option failed to "
   echo "        produce a good alignment."
   echo "   [-strip_skull WHICH]: Use 3dSkullStrip to remove non-brain tissue and "
   echo "                         potentially improve the alignment. WHICH can be"
   echo "                         one of 'exp_anat' or 'both'. In the first case,"
   echo "                         the skull is removed from Experiment_Anatomy"
   echo "                         dataset. With 'both' the skull is removed from"
   echo "                         Experiment_Anatomy and Surface_Anatomy."
   echo "   [-EA_clip_below CLP]: Set slices below CLPmm in 'Experiment Anatomy' to zero."
   echo "        Use this if the coverage of 'Experiment Anatomy' dataset"
   echo "        extends far below the data in 'Surface Anatomy' dataset."
   echo "        To get the value of CLP, use AFNI to locate the slice"
   echo "        below which you want to clip and set CLP to the z coordinate"
   echo "        from AFNI's top left corner. Coordinate must be in RAI, DICOM."                      
   echo "   [-prefix PREFIX]: Use PREFIX for the output volume. Default is the prefix "
   echo "        of the 'Surface Anatomy' suffixed by _AlndExp."
   echo "   [-keep_tmp]: Keep temporary files for debugging. Note that you should"
   echo "                delete temporary files before rerunning the script."
   echo ""         
	echo ""
	echo "NOTE: You must run the script from the directory where Experiment Anatomy resides."
	echo ""
	echo "Example 1: For datasets with no relative distortion and comparable coverage."
   echo "           Using 6 param. rigid body transform."
	echo "@SUMA_AlignToExperiment -exp_anat DemoSubj_spgrsa+orig. \"
   echo "                        -surf_anat ../FreeSurfer/SUMA/DemoSubj_SurfVol+orig."
	echo ""
   echo "Example 2: For datasets with some distortion and different coverage."
   echo "           Using 12 param. transform and clipping of areas below cerebellum:"
   echo "@SUMA_AlignToExperiment -exp_anat ABanat+orig. -surf_anat DemoSubj_SurfVol+orig. \"
   echo "                       -wd -prefix DemoSubj_SurfVol_WD_AlndExp \"
   echo "                       -EA_clip_below -30"
   echo ""
   echo "More help may be found at http://afni.nimh.nih.gov/ssc/ziad/SUMA/SUMA_doc.htm"
	echo ""
	echo "Ziad Saad (ziad@nih.gov)"
	echo "SSCC/NIMH/ National Institutes of Health, Bethesda Maryland"
	echo ""
	goto END

END:
	cd $CurDir


syntax highlighted by Code2HTML, v. 0.9.1