src/utils/qa/doGenbankTests 1.8
1.8 2009/05/14 01:03:15 rhead
Added special logic for getting the shortLabels for est and mrna tracks (which are special cases in trackDb). Changed some whitespace stuff.
Index: src/utils/qa/doGenbankTests
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/qa/doGenbankTests,v
retrieving revision 1.7
retrieving revision 1.8
diff -b -B -U 1000000 -r1.7 -r1.8
--- src/utils/qa/doGenbankTests 22 Apr 2009 03:30:47 -0000 1.7
+++ src/utils/qa/doGenbankTests 14 May 2009 01:03:15 -0000 1.8
@@ -1,175 +1,185 @@
#!/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()
-{
+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()
-{
+databaseExists() {
local db=$1
local res=$(hgsql -Ne "show databases like '$db'")
if [ -z "$res" ]
then
return 1
else
return 0
fi
}
-getShortLabel()
-{
+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
# 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
do
- tableExists $db && getShortLabel $db $table
+ 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
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
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
}
}
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:\n"
+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 "\nHere is the last line of that file:\n"
+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
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 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