src/utils/qa/doGenbankTests 1.9

1.9 2009/05/15 02:24:02 rhead
Moved gbSanity test to the end, collected table names into variables for each test, clarified error message.
Index: src/utils/qa/doGenbankTests
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/qa/doGenbankTests,v
retrieving revision 1.8
retrieving revision 1.9
diff -b -B -U 1000000 -r1.8 -r1.9
--- src/utils/qa/doGenbankTests	14 May 2009 01:03:15 -0000	1.8
+++ src/utils/qa/doGenbankTests	15 May 2009 02:24:02 -0000	1.9
@@ -1,185 +1,191 @@
 #!/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 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'")
   if [ -z "$res" ]
   then
     return 1
   else
     return 0
   fi
 }
 
 selectShortLabel() {
   local db=$1 table=$2
   hgsql -NBe "select shortLabel from trackDb where tableName='$table'" $db
 }
 
 getShortLabel() {
   local db=$1 table=$2
   local res=$(selectShortLabel $db $table)
   if [ -z "$res" -a "$table" = "all_mrna" ] 
   then
     res=$(selectShortLabel $db mrna)
   elif [ -z "$res" -a "$table" = "all_est" ] 
   then
     res=$(selectShortLabel $db est)
   fi
   echo $res
 }
 
 allOk=yes
+# specify tables that should get each test
+allTables="refGene xenoRefGene mgcFullMrna orfeomeMrna all_mrna intronEst /
+           all_est xenoMrna xenoEst"
+genePredTables="refGene xenoRefGene mgcGenes orfeomeGenes"
+pslTables="mgcFullMrna orfeomeMrna all_mrna xenoMrna all_est refSeqAli /
+           xenoRefSeqAli xenoEst"
+featureTables="refGene xenoRefGene mgcGenes mgcFullMrna orfeomeGenes /
+               orfeomeMrna all_mrna intronEst all_est xenoMrna xenoEst"
 
 # 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 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 -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
+for table in $allTables
 do
   tableExists $db $table && getShortLabel $db $table
 done
 echo
 
 # run genePredChecks and pslChecks
 echo -e "--> Running genePredCheck and pslCheck:\n"
-for table in refGene xenoRefGene mgcGenes orfeomeGenes
+for table in $genePredTables
 do
   tableExists $db $table && {
     cmd="nice genePredCheck -db=$db $table"
     echo $cmd
     $cmd || allOk=no
   }
 done
 echo
-for table in mgcFullMrna orfeomeMrna all_mrna xenoMrna all_est refSeqAli \
-             xenoRefSeqAli xenoEst
+for table in $pslTables
 do
   tableExists $db $table && {
     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 all.joiner:\n"
 doJoinerCheck() {
   local table=$1 ident=$2
   tableExists $db $table && {
     cmd="nice joinerCheck -keys -database=$db -identifier=$ident $joinerLoc"
     echo $cmd
     $cmd || allOk=no
     echo
   }
+  return 0
 }
 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
-filename=${db}.sanity.$(date +%m.%d.%Y-%R%p)
-echo -e "--> Running gbSanity, and putting output in:"
-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 "Here 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 orfeomeMrna \
-             all_mrna intronEst all_est xenoMrna xenoEst
+for table in $featureTables
 do
   tableExists $db $table && {
     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 gbSanity
+filename=${db}.sanity.$(date +%m.%d.%Y-%R%p)
+echo -e "--> Running gbSanity, and putting output in:"
+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 "The last line of the gbSanity output gives a summary of errors. 
+Here is the last line of the file. If there are errors, consult Mark Diekhans:\n"
+tail -1 $sanityPath/misc/$filename
+
 # 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).
+  echo "There was an ERROR in at least one test, but $(basename $0) ran successfully."
   date
   exit 2
 fi
 exit 0