968f93baf48b914f5b7d127e68a5228dad673118
hiram
  Tue Apr 5 11:20:08 2022 -0700
adding in liftOver chainNet definitions refs #29207

diff --git src/hg/utils/automation/asmHubChainNetTrackDb.sh src/hg/utils/automation/asmHubChainNetTrackDb.sh
index 93278a0..489e0d6 100755
--- src/hg/utils/automation/asmHubChainNetTrackDb.sh
+++ src/hg/utils/automation/asmHubChainNetTrackDb.sh
@@ -1,231 +1,289 @@
 #!/bin/bash
 
 set -beEu -o pipefail
 
 if [ $# -ne 2 ]; then
   printf "usage: asmHubChainNetTrackDb.pl <asmId> <pathTo/assembly hub build directory> > chainNettrackDb.txt\n" 1>&2
   printf "expecting to find *.ucsc.2bit and bbi/ files at given path\n" 1>&2
   printf "the ncbi|ucsc selects the naming scheme\n" 1>&2
   exit 255
 fi
 
 export asmId=$1
 export buildDir=$2
 export hubLinks="/hive/data/genomes/asmHubs/hubLinks"
 export accessionId=`echo "$asmId" | awk -F"_" '{printf "%s_%s", $1, $2}'`
 
 export scriptDir="$HOME/kent/src/hg/utils/automation"
 
 mkdir -p $buildDir/bbi
 mkdir -p $buildDir/ixIxx
 
+export chainNetPriority=1
+
 for D in ${buildDir}/trackData/lastz.*
 do
   targetDb=$accessionId
   lastzDir=`basename "${D}"`
   otherDb=`echo $lastzDir | sed -e 's/lastz.//;'`
   OtherDb="${otherDb^}"
   asmReport=`ls -d $buildDir/download/*assembly_report.txt 2> /dev/null`
   if [ ! -s "${asmReport}" ]; then
  printf "# ERROR: can not find assembly_report.txt in $buildDir/download\n" 1>&2
     exit 255
   fi
   if [ ! -s ${buildDir}/trackData/$lastzDir/axtChain/chain${OtherDb}.bb ]; then
  printf "# ERROR: can not find chain${OtherDb}.bb in $buildDir/trackData/$lastzDir/axtChain/\n" 1>&2
     exit 255
   fi
   rm -f $buildDir/bbi/${asmId}.chain$OtherDb.bb
   rm -f $buildDir/bbi/${asmId}.chain${OtherDb}Link.bb
   rm -f $buildDir/bbi/${asmId}.chainSyn$OtherDb.bb
   rm -f $buildDir/bbi/${asmId}.chainSyn${OtherDb}Link.bb
   rm -f $buildDir/bbi/${asmId}.chainRBest$OtherDb.bb
   rm -f $buildDir/bbi/${asmId}.chainRBest${OtherDb}Link.bb
+  rm -f $buildDir/bbi/${asmId}.chainLiftOver$OtherDb.bb
+  rm -f $buildDir/bbi/${asmId}.chainLiftOver${OtherDb}Link.bb
   rm -f $buildDir/bbi/${asmId}.$otherDb.net.bb
   rm -f $buildDir/bbi/${asmId}.$otherDb.net.summary.bb
   rm -f $buildDir/bbi/${asmId}.$otherDb.synNet.bb
   rm -f $buildDir/bbi/${asmId}.$otherDb.synNet.summary.bb
   rm -f $buildDir/bbi/${asmId}.$otherDb.rbestNet.bb
   rm -f $buildDir/bbi/${asmId}.$otherDb.rbestNet.summary.bb
+  rm -f $buildDir/bbi/${asmId}.$otherDb.liftOverNet.bb
+  rm -f $buildDir/bbi/${asmId}.$otherDb.liftOverNet.summary.bb
   ln -s ../trackData/$lastzDir/axtChain/chain${OtherDb}.bb $buildDir/bbi/${asmId}.chain$OtherDb.bb
   ln -s ../trackData/$lastzDir/axtChain/chain${OtherDb}Link.bb $buildDir/bbi/${asmId}.chain${OtherDb}Link.bb
   ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.net.bb $buildDir/bbi/${asmId}.$otherDb.net.bb
   ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.net.summary.bb $buildDir/bbi/${asmId}.$otherDb.net.summary.bb
   if [ -s "$buildDir/trackData/$lastzDir/axtChain/chainSyn${OtherDb}.bb" ]; then
     ln -s ../trackData/$lastzDir/axtChain/chainSyn${OtherDb}.bb $buildDir/bbi/${asmId}.chainSyn$OtherDb.bb
     ln -s ../trackData/$lastzDir/axtChain/chainSyn${OtherDb}Link.bb $buildDir/bbi/${asmId}.chainSyn${OtherDb}Link.bb
     ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.synNet.bb $buildDir/bbi/${asmId}.$otherDb.synNet.bb
     ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.synNet.summary.bb $buildDir/bbi/${asmId}.$otherDb.synNet.summary.bb
   fi
   if [ -s "$buildDir/trackData/$lastzDir/axtChain/chainRBest${OtherDb}.bb" ]; then
     ln -s ../trackData/$lastzDir/axtChain/chainRBest${OtherDb}.bb $buildDir/bbi/${asmId}.chainRBest$OtherDb.bb
     ln -s ../trackData/$lastzDir/axtChain/chainRBest${OtherDb}Link.bb $buildDir/bbi/${asmId}.chainRBest${OtherDb}Link.bb
     ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.rbestNet.bb $buildDir/bbi/${asmId}.$otherDb.rbestNet.bb
     ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.rbestNet.summary.bb $buildDir/bbi/${asmId}.$otherDb.rbestNet.summary.bb
   fi
+  if [ -s "$buildDir/trackData/$lastzDir/axtChain/chainLiftOver${OtherDb}.bb" ]; then
+printf "# making chainLiftOver${OtherDb}.bb\n" 1>&2
+    ln -s ../trackData/$lastzDir/axtChain/chainLiftOver${OtherDb}.bb $buildDir/bbi/${asmId}.chainLiftOver$OtherDb.bb
+    ln -s ../trackData/$lastzDir/axtChain/chainLiftOver${OtherDb}Link.bb $buildDir/bbi/${asmId}.chainLiftOver${OtherDb}Link.bb
+    ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.liftOverNet.bb $buildDir/bbi/${asmId}.$otherDb.liftOverNet.bb
+    ln -s ../trackData/$lastzDir/bigMaf/$accessionId.$otherDb.liftOverNet.summary.bb $buildDir/bbi/${asmId}.$otherDb.liftOverNet.summary.bb
+  else
+printf "# there is NO chainLiftOver${OtherDb}.bb\n" 1>&2
+  fi
 
   otherPrefix=`echo $otherDb | cut -c1-2`
   if [ "${otherPrefix}" = "GC" ]; then
     sciName=`grep -i 'organism name:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*organism name: *//i; s/ *(.*//;'`
     organism=`grep -i 'organism name:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*organism name: *.*(//i; s/).*//;'`
     taxId=`grep -i 'taxid:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*taxid: *//i;'`
     o_date=`grep -i 'date:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*date: *//i;'`
     matrix=""
     linGap=""
     minScore=""
   else
     organism=`hgsql -N -e "select organism from dbDb where name=\"$otherDb\"" hgcentraltest`
     sciName=`hgsql -N -e "select scientificName from dbDb where name=\"$otherDb\"" hgcentraltest`
     taxId=`hgsql -N -e "select taxId from dbDb where name=\"$otherDb\"" hgcentraltest`
     o_date=`hgsql -N -e "select description from dbDb where name=\"$otherDb\"" hgcentraltest`
     matrix=`~/kent/src/hg/utils/phyloTrees/findScores.pl $otherDb $targetDb 2>&1 | grep matrix`
   fi
 
   otherPrefix=`echo $otherDb | cut -c1-2`
   if [ "${otherPrefix}" = "GC" ]; then
     sciName=`grep -i 'organism name:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*organism name: *//i; s/ *(.*//;'`
     organism=`grep -i 'organism name:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*organism name: *.*(//i; s/).*//;'`
     taxId=`grep -i 'taxid:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*taxid: *//i;'`
     o_date=`grep -i 'date:' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*date: *//i;'`
     matrix=""
     linGap=""
     minScore=""
   else
     organism=`hgsql -N -e "select organism from dbDb where name=\"$otherDb\"" hgcentraltest`
     sciName=`hgsql -N -e "select scientificName from dbDb where name=\"$otherDb\"" hgcentraltest`
     taxId=`hgsql -N -e "select taxId from dbDb where name=\"$otherDb\"" hgcentraltest`
     o_date=`hgsql -N -e "select description from dbDb where name=\"$otherDb\"" hgcentraltest`
     matrix=`~/kent/src/hg/utils/phyloTrees/findScores.pl $otherDb $targetDb 2>&1 | grep matrix`
     minScore=`~/kent/src/hg/utils/phyloTrees/findScores.pl $otherDb $targetDb 2>&1 | grep MinScore`
    linGap=`~/kent/src/hg/utils/phyloTrees/findScores.pl $otherDb $targetDb 2>&1 | grep LinearGap`
   fi
   printf "##############################################################################
 # $otherDb - $organism - $sciName - taxId: $taxId
 ##############################################################################
 "
   printf "track chainNet$OtherDb
 compositeTrack on
 shortLabel $organism Chain/Net
 longLabel $organism ($o_date), Chain and Net Alignments
 subGroup1 view Views chain=Chain net=Net
 dragAndDrop subTracks
 visibility hide
 group compGeno
 noInherit on
 "
 
   printf "priority 100.1
 color 0,0,0
 altColor 100,50,0
 type bed 3
 sortOrder view=+
 "
   if [ "x${matrix}y" = "xy" ]; then
 printf "otherDb $otherDb
 html html/$asmId.chainNet
 
 "
 else
 printf "$matrix
 $minScore
 $linGap
 matrixHeader A, C, G, T
 otherDb $otherDb
 html html/$asmId.chainNet
 
 "
 fi
 printf "    track chainNet${OtherDb}Viewchain
     shortLabel Chain
     view chain
     visibility pack
     parent chainNet$OtherDb
     spectrum on
 
         track chain$OtherDb
         parent chainNet${OtherDb}Viewchain
         subGroups view=chain
         shortLabel $organism Chain
         longLabel $organism ($o_date) Chained Alignments
         type bigChain $otherDb
         bigDataUrl bbi/$asmId.chain$OtherDb.bb
         linkDataUrl bbi/$asmId.chain${OtherDb}Link.bb
+        priority %d
 
-"
+" $((chainNetPriority++))
 
 if [ -s "$buildDir/bbi/${asmId}.chainSyn$OtherDb.bb" ]; then
 
 printf "        track chainSyn$OtherDb
         parent chainNet${OtherDb}Viewchain
         subGroups view=chain
         shortLabel $organism synChain
         longLabel $organism ($o_date) Syntenic Chained Alignments
         type bigChain $otherDb
         bigDataUrl bbi/$asmId.chainSyn$OtherDb.bb
         linkDataUrl bbi/$asmId.chainSyn${OtherDb}Link.bb
+        priority %d
+
+" $((chainNetPriority++))
 
-"
 fi
 
 if [ -s "$buildDir/bbi/${asmId}.chainRBest$OtherDb.bb" ]; then
 
 printf "        track chainRBest$OtherDb
         parent chainNet${OtherDb}Viewchain
         subGroups view=chain
         shortLabel $organism rbChain
         longLabel $organism ($o_date) Reciprocal Best Chained Alignments
         type bigChain $otherDb
         bigDataUrl bbi/$asmId.chainRBest$OtherDb.bb
         linkDataUrl bbi/$asmId.chainRBest${OtherDb}Link.bb
+        priority %d
+
+" $((chainNetPriority++))
+
+fi
+
+if [ -s "$buildDir/bbi/${asmId}.chainLiftOver$OtherDb.bb" ]; then
+
+printf "        track chainLiftOver$OtherDb
+        parent chainNet${OtherDb}Viewchain
+        subGroups view=chain
+        shortLabel $organism loChain
+        longLabel $organism ($o_date) Lift Over Chained Alignments
+        type bigChain $otherDb
+        bigDataUrl bbi/$asmId.chainLiftOver$OtherDb.bb
+        linkDataUrl bbi/$asmId.chainLiftOver${OtherDb}Link.bb
+        priority %d
+
+" $((chainNetPriority++))
 
-"
 fi
 
 printf "    track mafNet${OtherDb}Viewnet
     shortLabel Net
     view net
     visibility full
     parent chainNet$OtherDb
 
         track net$OtherDb
         parent mafNet${OtherDb}Viewnet
         subGroups view=net
         shortLabel $organism net
         longLabel $organism ($o_date) Net Alignment
         type bigMaf
         bigDataUrl bbi/$asmId.$otherDb.net.bb
         summary bbi/$asmId.$otherDb.net.summary.bb
         speciesOrder $otherDb
+        priority %d
 
-"
+" $((chainNetPriority++))
 
 if [ -s "$buildDir/bbi/${asmId}.$otherDb.synNet.summary.bb" ]; then
 
 printf "        track synNet$OtherDb
         parent mafNet${OtherDb}Viewnet
         subGroups view=net
         shortLabel $organism synNet
         longLabel $organism ($o_date) Syntenic Net Alignment
         type bigMaf
         bigDataUrl bbi/$asmId.$otherDb.synNet.bb
         summary bbi/$asmId.$otherDb.synNet.summary.bb
         speciesOrder $otherDb
+        priority %d
+
+" $((chainNetPriority++))
 
-"
 fi
 
 if [ -s "$buildDir/bbi/${asmId}.$otherDb.rbestNet.summary.bb" ]; then
 
 printf "        track rbestNet$OtherDb
         parent mafNet${OtherDb}Viewnet
         subGroups view=net
         shortLabel $organism rbestNet
         longLabel $organism ($o_date) Reciprocal Best Net Alignment
         type bigMaf
         bigDataUrl bbi/$asmId.$otherDb.rbestNet.bb
         summary bbi/$asmId.$otherDb.rbestNet.summary.bb
         speciesOrder $otherDb
+        priority %d
+
+" $((chainNetPriority++))
+
+fi
+
+if [ -s "$buildDir/bbi/${asmId}.$otherDb.liftOverNet.summary.bb" ]; then
+
+printf "        track liftOverNet$OtherDb
+        parent mafNet${OtherDb}Viewnet
+        subGroups view=net
+        shortLabel $organism liftOverNet
+        longLabel $organism ($o_date) Lift Over Net Alignment
+        type bigMaf
+        bigDataUrl bbi/$asmId.$otherDb.liftOverNet.bb
+        summary bbi/$asmId.$otherDb.liftOverNet.summary.bb
+        speciesOrder $otherDb
+        priority %d
+
+" $((chainNetPriority++))
 
-"
 fi
 
 done