#! /bin/bash
# Last edited on 2009-12-12 00:21:45 by stolfi

# Plots reformatted raw data ("rar" format).
# Assumes that input is "{TIME} {YEAR} {MONTH} {DAY} {SZ} {SU}"

pha="$1"; shift  # Which region of file to plot.
nodub="$1"; shift
datafile="$1"; shift

echo "${0##*/} pha = ${pha} nodub = ${nodub} datafile = ${datafile}" 1>&2

difpref="/tmp/$$-dif"
seppref="/tmp/$$-sep"
epsfile="/tmp/$$.eps"

cat ${datafile} \
  | gawk -v nodub=${nodub} \
      ' BEGIN { ott = -1; osz = 0; osu = 1; } 
        /^ *([\#]|$)/ { next; } 
        // { tt = $1; yr = $2; mo = $3; dy = $4; sz = $5; su = $6; } 
        ((su == 0) && (nodub > 0)) { next; } 
        // { 
          dz = (sz - osz)/(tt - ott + 0.0);
          du = ((osu == 1) && (su == 1));
          tc = (tt + ott)/2.0;
          printf " %8.2f %10.0f %d\n", ott+0.01, dz, du;
          printf " %8.2f %10.0f %d\n", tc, dz, du;
          printf " %8.2f %10.0f %d\n", tt-0.01, dz, du;
          ott = tt; osz = sz; osu = su;
          next;
        } 
        END { print ""; print " 100000 2100 01 01 000 0"; }
      ' \
  > ${difpref}.txt

for ksu in 0 1; do
  cat ${datafile} \
    | gawk -v ksu=${ksu} -v nodub=${nodub} \
        ' BEGIN { } 
          /^ *([\#]|$)/ { next; } 
          // { tt = $1; yr = $2; mo = $3; dy = $4; sz = $5; su = $6; }
          ((su == 0) && (nodub > 0)) { next; } 
          (su == ksu) { print; next; } 
          // { print ""; }
          END { print ""; print " 100000 2100 01 01 000 0"; }
        ' \
    > ${seppref}-${ksu}.txt
done

if [[ ${pha} -eq 0 ]]; then
  xrange="set xrange [2000.8:2010.8]"
  yrange="set yrange [-100:+3600000]"
  evtics="200000"
elif [[ ${pha} -eq 1 ]]; then
  xrange="set xrange [2000.8:2004.8]"
  yrange="set yrange [-10:+530000]"
  evtics="30000"
elif [[ ${pha} -eq 2 ]]; then
  xrange="set xrange [2005.3:2010.7]"
  yrange="set yrange [-100:+3600000]"
  evtics="200000"
else
  echo "invalid pha = [${pha}]" 1>&2
  exit 1
fi

gnuplot <<EOF
set term postscript eps color solid "TimesRoman" 24
set size 1.5,1.0
set output "${epsfile}"
set key reverse left Left samplen 1.0

${xrange}
set grid xtics
set mxtics 12
set xtics 1.0 format "        %4.0f"
set xzeroaxis

${yrange}
set ytics format "%7.0f"
set grid ytics

bbot(i,j)=column(j)+0.7*(${evtics})
blen(i,j)=1.0*(${evtics})
btop(i,j)=bbot(i,j)+blen(i,j)
year(i)=(column(i)/365.25 + 2001)
plot \
  "data/counter-breaks.txt" using (year(1)):(btop(5,6)):(0.0):(-blen(5,6)) \
      notitle with vectors lw 3.0 lt rgb '#cc2277', \
  "data/robot-impulses.txt" using (year(1)):(btop(5,6)):(0.0):(-blen(5,6)) \
      notitle with vectors lw 3.0 lt rgb '#008833', \
  "${difpref}.txt" using (year(1)):(column(2)*1000) title "N'(t) (art/day)" with lines lt rgb '#bb5566', \
  "${seppref}-1.txt" using (year(1)):(column(5)) title "N(t)" with points pt 7 ps 0.50 lt rgb '#0077ee', \
  "${seppref}-0.txt" using (year(1)):(column(5)) notitle with points pt 6 ps 0.50 lt rgb '#5599bb'
quit
EOF

cat ${epsfile}
gv ${epsfile}
rm -f ${epsfile} ${seppref}-*.txt ${difpref}.txt
