5740a341fc29a4d30268ad488d19a88d6e5401e7
chmalee
  Thu Sep 23 11:15:20 2021 -0700
Prepare LRG otto job for switchover to ottomeister, only update when data has changed, refs #24672

diff --git src/hg/utils/otto/lrg/buildLrg.sh src/hg/utils/otto/lrg/buildLrg.sh
index c0d97d4..24addf0 100755
--- src/hg/utils/otto/lrg/buildLrg.sh
+++ src/hg/utils/otto/lrg/buildLrg.sh
@@ -1,86 +1,93 @@
 #!/bin/bash
 set -beEu -o pipefail
 today=`date +%F`
 
 WORKDIR=$1
 mkdir -p ${WORKDIR}/${today}
 cd ${WORKDIR}/${today}
 
 for db in hg38 hg19
 do
     grc=""
     if [ $db == "hg38" ]; then
         grc="GRCh38"
     else
         grc="GRCh37"
     fi
     mkdir -p $db
     cd $db
     echo "building LRG for $db"
     ${WORKDIR}/parseLrgXml.pl $grc ../
     set +e
     genePredCheck lrgTranscriptsUnmapped.gp 2>genePred.failed
     set -e
     # use -gt 1 because one of the lines will be the "checked: X, failed: Y" line
     if [ `grep -v "LRG_7t1\|LRG_1298t1" genePred.failed | wc -l` -gt 2 ]; then
         printf "genePredCheck failed on %s. Check %s for more info\n" "${db}" "${WORKDIR}/${today}/${db}/genePred.failed"
         exit 255
     fi
     cut -f1,12 lrgTranscriptsUnmapped.gp | sort > transcript.gene.name.txt
 
     awk -F$'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s %s %s %s\n", $1,$16,$17,$18,$19,$2, $16,$18,$17,$19}' \
         lrgTranscriptsUnmapped.gp | sort \
         | join -t$'\t' - transcript.gene.name.txt \
         | awk -F$'\t' '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s %s\n", $1,$2,$3,$4,$5,$6,$8,$7,$8}' \
         > lrgTransExtraFields.tsv
 
     printf "Creating lrg.bb for %s\n" $db
     bedToBigBed lrg.bed /hive/data/genomes/$db/chrom.sizes lrg.bb \
         -tab -type=bed12+ -as=$HOME/kent/src/hg/lib/lrg.as -extraIndex=name
 
     ~/bin/x86_64/lrgToPsl lrg.bed /hive/data/genomes/$db/chrom.sizes lrg.psl
     set +e
     pslCheck -fail=lrg.psl.failed lrg.psl
     if [ `wc -l lrg.psl.failed | cut -d' ' -f1` -gt 0 ]; then
         printf "pslCheck failed for %s. Check %s for more info\n" "${db}" "${WORKDIR}/${today}/${db}/lrg.psl.failed"
         exit 255
     fi
     set -e
     awk '{print $10 "\t" $11;}' lrg.psl > lrg.sizes
     genePredToFakePsl -chromSize=lrg.sizes placeholder \
         lrgTranscriptsUnmapped.gp lrgTranscriptsFakePsl.psl lrgTranscripts.cds
     pslMap lrgTranscriptsFakePsl.psl lrg.psl lrgTranscripts${db}.psl
     awk '{printf ">%s\n%s\n", $1,$2}' lrgCdna.tab > lrgCdna.fa
     pslToBigPsl -cds=lrgTranscripts.cds -fa=lrgCdna.fa lrgTranscripts${db}.psl bigPsl.txt
     join -t$'\t' -1 4 \
         -o 1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.10,1.11,1.12,1.13,1.14,1.15\
 ,1.16,1.17,1.18,1.19,1.20,1.21,1.22,1.23,1.24,1.25,2.2,2.3,2.4,2.5,2.6,2.7,2.8\
         <(sort -k4 bigPsl.txt) lrgTransExtraFields.tsv \
         | sort -k1,1 -k2,2n > lrgExtraTranscripts${db}.bigPsl.bed
 
     printf "Creating lrgBigPsl.bb for %s\n" $db
     bedToBigBed -as=${WORKDIR}/bigPsl+6.as -type=bed12+20 -tab -extraIndex=name \
         lrgExtraTranscripts${db}.bigPsl.bed /hive/data/genomes/${db}/chrom.sizes lrgBigPsl.bb
 
     # The lrg table already exists as a one line table pointing to /gbdb/$db/bbi/lrg.bb, which
     # is in turn a symlink into $WORKDIR/release/$db/lrg.bb. Thus validate now before overwriting:
     oldCount=`bigBedInfo ${WORKDIR}/release/$db/lrg.bb | grep itemCount | cut -d' ' -f2`
     oldPslCount=`bigBedInfo ${WORKDIR}/release/$db/lrgBigPsl.bb | grep itemCount | cut -d' ' -f2`
     newCount=`bigBedInfo lrg.bb | grep itemCount | cut -d' ' -f2`
     newPslCount=`bigBedInfo lrgBigPsl.bb | grep itemCount | cut -d' ' -f2`
     echo LRG rowcounts: old $oldCount new: $newCount
     echo $oldCount $newCount | awk '{if (($2-$1)/$1 > 0.1) {printf "validate on LRG BigBed failed: old count: %d, new count: %d\n", $1,$2; exit 1;}}'
     echo LRG PSL rowcounts: old $oldPslCount new: $newPslCount
     echo $oldPslCount $newPslCount | awk '{if (($2-$1)/$1 > 0.1) {printf "validate on DECIPHER CNV failed: old count: %d, new count: %d\n", $1,$2; exit 1;}}'
 
+    # Lastly check and see if we even changed anything for this release:
+    if [ "$oldCount" = "$newCount" ] && [ "$oldPslCount" = "$newPslCount" ]; then
+        echo "No change since last release, skipping update for assembly $db"
+        cd ${WORKDIR}/${today}
+        continue
+    fi
+
     # now archive this new release:
     archiveDir="/usr/local/apache/htdocs-hgdownload/goldenPath/archive/${db}/lrg/${today}"
     mkdir -p ${archiveDir}
     cp lrg.bb ${archiveDir}
     cp lrgBigPsl.bb ${archiveDir}
     
     cp lrg.bb ${WORKDIR}/release/${db}/
     cp lrgBigPsl.bb ${WORKDIR}/release/${db}/
 
     cd ${WORKDIR}/${today}
 done