#! /bin/bash 
###############################################################################
#   Script Name:        GraphIt                                               #
#                                                                             #
#   Script Description: Creates plots in different formats with the right     #
#                       scaling and format. It uses the 'graph' utility of    #
#			GNU's plotutils and uses /tmp for temporary files.    #
#                                                                             #
#   Script Usage:       GraphIt                                               #
#                         $1    <Data File name>                              #
#                         $2    <Plot type>                                   #
#                         $3    <X label>                                     #
#                         $4    <Y label>                                     #
#                         $5    <Main title>                                  #
#                         $6    <GPS time of data>                            #
#                         $7    <Extra options>                               #
#                         $8    <End options>                                 #
#                                                                             #
#   Revision History:                                                         #
#     Rel   Date       Programmer      Comments                               #
#     0.1   7 May 02   Sz. Marka       First release                          #
#     0.2  15 July02   Sz. Marka       Semilog and symbol support added       #
#                                                                             #
#                                                                             #
#   Documentation References:				     		      #
#     Man Pages: N/A					                      #
#     References: N/A					                      #
#                                                                             #
#                                                         	              #
#   Author Information:					                      #
#   Name             Telephone       Fax             e-mail                   #
#   Szabolcs Marka   (626)395 2005   N/A             smarka@ligo.caltech.edu  #
#                                                                             #
#                                                                             #
#        THE LASER INTERFEROMETER GRAVITATIONAL WAVE OBSERVATORY (LIGO).      #
#                      (C) The LIGO Project, 2002                             #
#                                                                             #
#  Caltech				MIT		  	              #
#  LIGO Project MS 51-33		LIGO Project NW-17 161		      #
#  Pasadena CA 91125			Cambridge MA 01239 		      #
#                                                       	              #
#  LIGO Hanford Observatory		LIGO Livingston Observatory	      #
#  P.O. Box 1970 S9-02			19100 LIGO Lane Rd.		      #
#  Richland WA 99352			Livingston, LA 70754	              #
#                                                                             #
###############################################################################
#
#  Get graph executable
GRAPH=`which graph 2>/dev/null`
if [ -z "$GRAPH" ]; then
    echo "The  plotutils program 'graph' is not in the executable path..."
    echo "You must install 'plotutils' before you can use GraphIt"
    exit 1
fi
#
PS2PDF=`which ps2pdf 2>/dev/null`
if [ -z "$PS2PDF" -a "$2" = "pdf" ]; then
    echo "The ghostscript program 'ps2pdf' is not in the executable path..."
    echo "You must install 'ghostscript' before you can use GraphIt for pdfs"
    exit 1
fi
#
D=`echo $1 | sed -e 's,/[^/]*$,,'`
N=`echo $1 | sed -e 's,^.*/,,' -e 's,\..*$,,'`

rm -f $D/$N.$2 $D/$N.tmp $D/$N.dct

cat $1 \
 | sed -e s,Infinity,NaN,g -e s,inf,NaN,g -e s,nan,NaN,g -e s,-NaN,NaN,g \
 | gawk 'BEGIN{f=0}{if($1=="End_of_buffer"){f=10}; 
                    if(f<5){if(NF==2) {if($2!="NaN") { print $1,$2}}}}' \
 > $D/$N.dct 
MIN=`cat $D/$N.dct | gawk 'BEGIN{a=999999;}{if($1<a) a=$1} END{print a}'`
MAX=`cat $D/$N.dct | gawk 'BEGIN{a=-999999;}{if($1>a) a=$1} END{print a}'`
TITLE="$5   \sb[ \co LIGO 2014 ]\eb"
TIME='$3'
UTC=`when -u $6`
TIME="$3   \sbFrom: $UTC ($6)\eb"
# echo $MIN - $MAX
TYPE=$2
if [ "$2" = "pdf" ]; then
  TYPE=ps
fi
# echo $2 = $TYPE
$GRAPH	-T $TYPE -g 3 -C $7 -f 0.035 -x $MIN $MAX -h 0.75 -u 0.15 -r 0.2 \
	-w 0.7 -X "$TIME" -Y "$4" --title-font-size 0.035 -L "$TITLE" \
	$D/$N.dct --blankout 0.0 --reposition $8 $D/$N.dct \
   >>	$D/$N.tmp
mv $D/$N.tmp $D/$N.$TYPE
if [ "$2" = "pdf" ]; then
  $PS2PDF $D/$N.$TYPE $D/$N.$2
  rm -f $D/$N.$TYPE
fi
rm -f $1
rm -f $D/$N.dct
