src/utils/qa/doGenbankTests 1.7

1.7 2009/04/22 03:30:47 rhead
Changed hard-coded tracknames to real ones from trackDb, added checks for mgcFullMrna and orfeomeMrna, changed echoes so that they reflect same command as is run, general cleanup.
Index: src/utils/qa/doGenbankTests
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/qa/doGenbankTests,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -B -U 1000000 -r1.6 -r1.7
--- src/utils/qa/doGenbankTests	20 Apr 2009 18:54:54 -0000	1.6
+++ src/utils/qa/doGenbankTests	22 Apr 2009 03:30:47 -0000	1.7
@@ -1,175 +1,175 @@
 #!/bin/bash -e
 ###############################################################################
 #  doGenbankTests
 #
 #  June 2008 -- Brooke Rhead
 #
 #  Wrapper script for automated checking of GenBank tables.
 #  Note: this script assumes the kent source tree is checked out in ~/kent/src
 # 
 ###############################################################################
 
 tableExists()
 {
-  local db=$1
-  local table=$2
-  local res=`hgsql -Ne "show tables like '$table'" $db`
+  local db=$1 table=$2
+  local res=$(hgsql -Ne "show tables like '$table'" $db)
   if [ -z "$res" ]
   then
     return 1 
   else
     return 0
   fi
 }
 
 databaseExists()
 {
   local db=$1
-  local res=`hgsql -Ne "show databases like '$db'"`
+  local res=$(hgsql -Ne "show databases like '$db'")
   if [ -z "$res" ]
   then
     return 1
   else
     return 0
   fi
 }
 
+getShortLabel()
+{
+  local db=$1 table=$2
+  hgsql -NBe "select shortLabel from trackDb where tableName='$table'" $db
+}
+
 allOk=yes
 
 # check host, set path to genbank table list
 if [ "$HOST" != hgwdev -a "$HOST" != hgwbeta ]
 then
   echo "This script must be run from hgwdev or hgwbeta." >&2
   exit 1
 elif [ "$HOST" = hgwdev ]
 then
   genbankPath="/cluster/data/genbank/etc/genbank.tbls"
   sanityPath="/cluster/data/genbank"
 else #host is hgwbeta
   genbankPath="/genbank/etc/genbank.tbls"
   sanityPath="/genbank"
 fi
 
 # get arguments / give usage statement
 if [ $# -lt 1 -o $# -gt 2 ]
 then
   echo "usage:  $(basename $0) db [outFile]
 where outFile is the name of a file in which to record results" >&2
   exit 1
 else
   db="$1"
   if ! databaseExists $db
   then
     echo "ERROR: $db does not seem to be a valid database name" >&2
     exit 1
   fi
   if [ $# -eq 2 ]
   then
     exec > "$2" 2>&1  # neat bash trick to redirect stdout (also redirecting error)
   fi
 fi
 
-# print some useful info
+# print information about the script at the top of the output
 echo "$(basename $0) output on $db"
 date
 echo
 
 # get a list of all genbank tracks present in this assembly
-echo "The following GenBank tracks are present in this assembly:"
-
-# now look for the actual tracks
-tableExists $db refGene && echo -e "\tRefSeq Genes"
-tableExists $db xenoRefGene && echo -e "\tOther RefSeq"
-tableExists $db mgcGenes  && echo -e "\tMGC Genes"
-tableExists $db orfeomeGenes  && echo -e "\tORFeome Clones"
-tableExists $db all_mrna && echo -e "\t\$Org mRNAs"
-tableExists $db %intronEst && echo -e "\tSpliced ESTs"
-tableExists $db all_est && echo -e "\t\$Org ESTs"
-tableExists $db xenoMrna && echo -e "\tOther mRNAs"
-tableExists $db xenoEst && echo -e "\tOther ESTs"
+echo -e "The following GenBank tracks are present in this assembly:\n"
+for table in refGene xenoRefGene mgcFullMrna orfeomeMrna \
+             all_mrna intronEst all_est xenoMrna xenoEst
+do
+  tableExists $db && getShortLabel $db $table
+done
 echo
 
+# run genePredChecks and pslChecks
 echo -e "--> Running genePredCheck and pslCheck:\n"
-
-# run genePredChecks
 for table in refGene xenoRefGene mgcGenes orfeomeGenes
 do
   tableExists $db $table && {
-    echo genePredCheck $table
-    nice genePredCheck -db=$db $table || allOk=no
+    cmd="nice genePredCheck -db=$db $table"
+    echo $cmd
+    $cmd || allOk=no
   }
 done
 echo
-
-# run pslChecks
-for table in all_mrna xenoMrna all_est refSeqAli xenoRefSeqAli xenoEst
+for table in mgcFullMrna orfeomeMrna all_mrna xenoMrna all_est refSeqAli \
+             xenoRefSeqAli xenoEst
 do
   tableExists $db $table && {
-    echo pslCheck $table
-    nice pslCheck -db=$db $table || allOk=no
+    cmd="nice pslCheck -db=$db $table"
+    echo $cmd
+    $cmd || allOk=no
   }
 done
 echo
 
 # run joinerCheck
 joinerLoc=~/kent/src/hg/makeDb/schema/all.joiner
-
-echo -e "--> Checking appropriate keys in $(basename $joinerLoc):\n"
-
+echo -e "--> Checking appropriate keys in all.joiner:\n"
 doJoinerCheck() {
   local table=$1 ident=$2
   tableExists $db $table && {
-    echo joinerCheck -keys -database=$db -identifier=$ident $(basename $joinerLoc)
-    nice joinerCheck -keys -database=$db -identifier=$ident $joinerLoc || allOk=no
+    cmd="nice joinerCheck -keys -database=$db -identifier=$ident $joinerLoc"
+    echo $cmd
+    $cmd || allOk=no
     echo
   }
 }
-
 doJoinerCheck gbCdnaInfo gbCdnas
 doJoinerCheck refGene refSeqId
 doJoinerCheck xenoRefGene xenoRefSeqId
 doJoinerCheck mgcGenes mgcAccession
 doJoinerCheck orfeomeGenes orfeomeAccession
 doJoinerCheck all_mrna nativeMrnaAccession
 doJoinerCheck all_est nativeEstAccession # takes care of intronEst, too
 doJoinerCheck xenoMrna xenoMrnaAccession
 doJoinerCheck xenoEst xenoEstAccession
 echo
 
 # run gbSanity
-timestamp=$(date +%m.%d.%Y-%R%p)
-echo -e "--> Running gbSanity, and putting output in:"
-echo -e "${HOST}:${sanityPath}/misc/${db}.sanity.$timestamp"
-(cd ${sanityPath} && bin/x86_64/gbSanity $db >& misc/${db}.sanity.$timestamp) || allOk=no
-echo -e "Here is the last line of ${db}.sanity.$timestamp:\n"
-tail -1 $sanityPath/misc/${db}.sanity.$timestamp
+filename=${db}.sanity.$(date +%m.%d.%Y-%R%p)
+echo -e "--> Running gbSanity, and putting output in:\n"
+echo -e "${HOST}:$sanityPath/misc/$filename"
+# need to run in a subshell, since gbSanity wants to be run from this dir
+(cd $sanityPath && bin/x86_64/gbSanity $db >& misc/$filename) || allOk=no
+echo -e "\nHere is the last line of that file:\n"
+tail -1 $sanityPath/misc/$filename
 echo -e "\nIf there are any errors here, consult Mark Diekhans.\n"
 
 # run featureBits
 echo -e "--> Running featureBits.  Remember to paste this into the pushqueue:\n"
-for table in refGene xenoRefGene mgcGenes mgcFullMrna orfeomeGenes \
+for table in refGene xenoRefGene mgcGenes mgcFullMrna orfeomeGenes orfeomeMrna \
              all_mrna intronEst all_est xenoMrna xenoEst
 do
   tableExists $db $table && {
-    echo featureBits -countGaps $db $table
-    nice featureBits -countGaps $db $table || allOk=no
-    echo featureBits -countGaps $db $table gap
-    nice featureBits -countGaps $db $table gap || allOk=no
+    cmd="nice featureBits -countGaps $db $table"
+    echo $cmd
+    $cmd || allOk=no
+    cmd="nice featureBits -countGaps $db $table gap"
+    echo $cmd
+    $cmd || allOk=no
     echo
   }
 done
 echo
 
 # run countPerChrom??
 
 # give overall report of errors
 if [ $allOk = yes ]
 then
   echo No errors were encountered during $(basename $0).  Yay!
   date
 else
   echo At least one ERROR occurred during $(basename $0).
   date
   exit 2
 fi
 exit 0