src/utils/qa/graph.csh 1.4

1.4 2010/01/30 07:08:56 kuhn
added support for datasets where the largest data value is smaller than the width of graph. graph then shrinks to width of largest value
Index: src/utils/qa/graph.csh
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/qa/graph.csh,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -B -U 1000000 -r1.3 -r1.4
--- src/utils/qa/graph.csh	24 Jan 2010 19:42:51 -0000	1.3
+++ src/utils/qa/graph.csh	30 Jan 2010 07:08:56 -0000	1.4
@@ -1,68 +1,72 @@
 #!/bin/tcsh
 source `which qaConfig.csh`
 
 ###############################################
 # 
 #  01-23-2010
 #  Robert Kuhn
 # 
 #  make a graph from a two-column file 
 # 
 ###############################################
 
 set max=1
 set width=50 # width of graph in chars
 set xWidth=3  
 set binsize=1
 
 set debug=true 
 set debug=false
 
 if ( $#argv < 1 || $#argv > 2 ) then
   # no command line args
   echo
   echo "  make a bar graph from a two-column file."
   echo
   echo "    usage: $0 file [width]"
   echo
   echo "  where width is number of characters in longest bar"
   echo "  negative numbers in second field of file show as zero"
   echo "  ignores any columns beyond two"
   echo
   exit
 else
   set file=$argv[1]
 endif
 
 if ( $#argv == 2 ) then
   set width=$argv[2]  # width of graph in chars
 endif
 
 # clean out blank lines
 cat $file | egrep "." > Xfile$$
 set max=`cat $file | grep "." | awk '{print $2}' | sort -nr | head -1`
-set binsize=`echo $max $width | awk '{printf("%3.0f", $1/$2)}'`
+if ( $width > $max ) then
+  set binsize=1
+else
+  set binsize=`echo $max $width | awk '{printf("%3.0f", $1/$2)}'`
+endif
 
 # find  width of first col for pretty output
 foreach item ( `cat Xfile$$ | awk '{print $1}'` )
   set len=`echo $item | awk '{print length($1)}'`
   if ( $len > $xWidth ) then
     set xWidth=$len
   endif
 end
 
 if (  $debug == "true" ) then
   echo max $max
   echo binsize $binsize
   echo $max $binsize | awk '{print "max/binsize:", $1/$2}'
   echo width $width
   echo xWidth $xWidth
   awk '{printf "%5s %3.0f \n", $1, $2/n}' n=$binsize $file 
 endif
 
 echo
 awk '{y=x; i=1; while ( i <= $2/n ) (y="x"y) i++} {printf("%'$xWidth's %-'$width's\n", $1, y)}' n=$binsize $file 
 echo
 
 rm -f Xfile$$
 exit