src/utils/qa/doGenbankTests 1.14
1.14 2009/06/04 19:14:44 kuhn
removed some slashes that were not doing anything and added some whitespace in usage output
Index: src/utils/qa/doGenbankTests
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/qa/doGenbankTests,v
retrieving revision 1.13
retrieving revision 1.14
diff -b -B -U 1000000 -r1.13 -r1.14
--- src/utils/qa/doGenbankTests 27 May 2009 18:58:00 -0000 1.13
+++ src/utils/qa/doGenbankTests 4 Jun 2009 19:14:44 -0000 1.14
@@ -1,199 +1,199 @@
#!/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
}
# keep track of errors vs. no errors
allOk=yes
# check host, set path to genbank sanity location
if [ "$HOST" != hgwdev -a "$HOST" != hgwbeta ]
then
- echo "This script must be run from hgwdev or hgwbeta." >&2
+ echo -e "\nThis script must be run from hgwdev or hgwbeta.\n" >&2
exit 1
elif [ "$HOST" = hgwdev ]
then
sanityPath="/cluster/data/genbank"
else #host is hgwbeta
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
+ echo -e "\n usage: $(basename $0) db [outFile]
+ where outFile is the name of a file in which to record results\n" >&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
# specify tables that should get each test
# intronEst is a special case; it may exist only in split form
intronEstTables=$(hgsql -Ne "show tables like '%intronEst'" $db)
-trackTables="refGene xenoRefGene mgcFullMrna orfeomeMrna all_mrna intronEst /
+trackTables="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 /
+pslTables="mgcFullMrna orfeomeMrna all_mrna xenoMrna all_est refSeqAli
xenoRefSeqAli xenoEst $intronEstTables"
-featureTables="refGene xenoRefGene mgcGenes mgcFullMrna orfeomeGenes /
+featureTables="refGene xenoRefGene mgcGenes mgcFullMrna orfeomeGenes
orfeomeMrna all_mrna intronEst all_est xenoMrna xenoEst"
# 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 $trackTables
do
tableExists $db $table && getShortLabel $db $table
done
# intronEst is a special case; it may exist only in split form
if ! tableExists $db intronEst # table is split, but not in trackDb
then
getShortLabel $db intronEst
fi
echo
# run genePredChecks and pslChecks
echo -e "--> Running genePredCheck and pslCheck:\n"
for table in $genePredTables
do
tableExists $db $table && {
cmd="nice genePredCheck -db=$db $table"
echo $cmd
$cmd || allOk=no
}
done
echo
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 featureBits
echo -e "--> Running featureBits. Remember to paste this into the pushqueue:\n"
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 "There was an ERROR in at least one test, but $(basename $0) ran successfully."
date
exit 2
fi
exit 0