#! /bin/csh -f

set alignpref = align
set bins = ( 3dvolreg 3dcalc )

### args
if ($#argv < 3) then
  echo ""
  echo "use: alignavg inbrik1 [inbrik2 ...] targbrik avgbrikpref"
  echo ""
  echo "  requires AFNI binaries on path: $bins"
  echo "  individually aligned briks saved with prefix: ${alignpref}-"
  echo "  next-to-last arg is targbrik (will be included in average)"
  echo "  AFNI align cmd used: 3dvolreg -twodup -twopass ..."
  echo ""
  echo "  Examples:"
  echo ""
  echo "    alignavg scan11+orig.BRIK scan12+orig.BRIK scanboth"
  echo ""
  echo "      infiles:  scan11+orig.BRIK, scan12+orig.BRIK"
  echo "      outfiles: align-scan11+orig.BRIK, scanboth+orig.BRIK"
  echo ""
  echo "    N.B.: OK if targbrik also in inbrik list (ignored if appears twice)"
  echo ""
  echo "      alignavg mp_anat3d_??+orig.BRIK mp_anat3d_12+orig.BRIK avg"
  echo ""
  exit
endif
set i = $#argv
set avgbrik = $argv[$i]
set avgbrikstem = `basename $avgbrik "+orig.BRIK"`
echo $avgbrikstem
@ i--
set targbrik = $argv[$i]
@ i--
set rawbriklist = ($argv[1-$i])    # incl targbrik

### check for binaries
which $bins
if ($status) then
  echo "alignavg: ### AFNI binaries not on path: $bins   ...quitting"
  exit
endif

### align using AFNI 3dvolreg
set alignbriklist = ""     # not incl targbrik
foreach movebrik ($rawbriklist)
  if ("$movebrik" == "$targbrik") continue
  set args = "-twodup -twopass -verbose"
  set movepref = $alignpref-`basename $movebrik "+orig.BRIK"`
  set cmd = "3dvolreg $args -prefix $movepref -base $targbrik $movebrik"
  set alignbriklist = "$alignbriklist ${movepref}+orig.BRIK"
  echo ""; echo $cmd; $cmd
end

### average using AFNI 3dcalc
set avgbriklist = ($targbrik $alignbriklist)
set taglist = (a b c d e f g h i j k l m n o p q r s t u v w x y z)
set cmd = "3dcalc -verbose"
set afniexpr = ""
set i = 1
foreach brik ($avgbriklist)
  if ($i == 1) then
    set afniexpr = $taglist[$i]
  else
    set afniexpr = "$afniexpr+$taglist[$i]"
  endif
  set cmd = "$cmd -$taglist[$i] $brik"
  @ i++
  if ($i > 26) then
    echo "alignavg: ### $i: too many in briks to avg w/3dcalc"
    exit
  endif
end
@ i--
set cmd = ($cmd -expr "($afniexpr)/$i.0" -prefix $avgbrikstem)
echo ""; echo $cmd; $cmd

