#! /bin/sh
# (next line not seen by tcl) \
exec tclsh $0 ${1+"$@"}    # goto tcl, wherever it is

### read HEAD, return list of TAXIS_OFFSETS (N.B.: 3dvolreg doesn't propagate!)
proc getafnitaxisoffsets { header } {
  set taxisoffsets ""
  if ![file exists $header] {
    putlog "getafnitaxisoffsets: $header not found"
    return $taxisoffsets
  }
  set id [open $header r]
  set lines [split [read $id] "\n"]
  close $id
  set cnt 0
  set i 0
  set j 0
  foreach line $lines {
    if [string match *TAXIS_OFFSETS* $line] { set i 1; continue }
    if {$i == 1 && [lindex $line 0] == "count"} {
      set i 2
      set cnt [lindex $line 2]
      continue
    }
    if {$i == 2} {
      if {$j >= $cnt} { break }  ;# "count" not found returns empty list
      foreach arg $line {
        lappend taxisoffsets $arg
        incr j
      }
    }
  }
  if {$taxisoffsets == ""} {
    putlog "getafnitaxisoffsets: TAXIS_OFFSETS not found in $header"
  }
  return $taxisoffsets
}

proc getafnimbaccel { header } {
  set mb 0
  set taxisoffsets [getafnitaxisoffsets $header]
  if { [llength $taxisoffsets] == 0 } {
    putlog "getafnimbaccel: TAXIS_OFFSETS not found in $header, assuming mb=1"
    set mb 1
  } else {
    set firstoffset [lindex $taxisoffsets 0]
    foreach arg $taxisoffsets {
      if {"$arg" == "$firstoffset"} { incr mb }
    }
  }
  return $mb
}

### main
if { [llength $argv] < 1 } {
  puts ""
  puts "Use: dumptaxis <stem>+orig.HEAD"
  puts ""
  puts "  Dump AFNI slice time offsets (TAXIS_OFFSETS) as one string"
  puts "  \[N.B.: first make new HEAD from *.IMA files w/ima2brik >= 0.4b\]"
  puts ""
  return
}
set infile [lindex $argv 0]
if ![file exists $infile] {
  puts "dumptaxis: ### $infile not found"
  return
}
if ![string match *.HEAD $infile] {
  puts "dumptaxis: ### for AFNI *.HEAD files only"
  return
}

### go
puts ""
puts "TAXIS_OFFSETS for $infile:"
puts ""
puts [getafnitaxisoffsets $infile]
puts ""
puts "apparent multiband accel:  [getafnimbaccel $infile]"
puts ""

