24c443b10b97e5b1e81df9ee5cb393131e7b873a
hiram
  Wed May 5 11:40:43 2021 -0700
better handling of assembly hub chain net tracks refs #26988

diff --git src/hg/utils/automation/asmHubChainNetTrackDb.sh src/hg/utils/automation/asmHubChainNetTrackDb.sh
index 9d553e2..580818c 100755
--- src/hg/utils/automation/asmHubChainNetTrackDb.sh
+++ src/hg/utils/automation/asmHubChainNetTrackDb.sh
@@ -24,43 +24,77 @@
   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}.$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
   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
+
+  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;'`
+    ymd=`grep -i 'date' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*date: *//i;'`
+  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 "
" | sed -e 's/.*organism name: *//i; s/ *(.*//;'`
-    organism=`grep -i 'organism name:' ${asmReport} | head -1 | tr -d "
" | sed -e 's/.*organism name: *.*(//i; s/).*//;'`
-    taxId=`grep -i 'taxid' ${asmReport} | head -1 | tr -d "
" | sed -e 's/.*taxid: *//i;'`
-    ymd=`grep -i 'date' ${asmReport} | head -1 | tr -d "
" | sed -e 's/.*date: *//i;'`
+    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;'`
+    ymd=`grep -i 'date' ${asmReport} | head -1 | tr -d "\r" | sed -e 's/.*date: *//i;'`
   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
@@ -72,107 +106,113 @@
 group compGeno
 noInherit on
 "
 
   printf "priority 100.1
 color 0,0,0
 altColor 100,50,0
 type bed 3
 sortOrder view=+
 "
 printf "$matrix
 $minScore
 $linGap
 matrixHeader A, C, G, T
 otherDb $otherDb
-html chainNet
+html html/$asmId.chainNet
 
 "
 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
-        html html/$asmId.chainNet
 
 "
 
+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
+
+"
+fi
+
+if [ -s "$buildDir/bbi/${asmId}.chainRBest$OtherDb.bb" ]; then
+
+printf "        track chainRBest$OtherDb
+        parent chainNet${OtherDb}Viewchain
+        subGroups view=chain
+        shortLabel $organism syChain
+        longLabel $organism ($o_date) Reciprocal Best Chained Alignments
+        type bigChain $otherDb
+        bigDataUrl bbi/$asmId.chainRBest$OtherDb.bb
+        linkDataUrl bbi/$asmId.chainRBest${OtherDb}Link.bb
+
+"
+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 mafNet
-        longLabel $organism ($o_date) mafNet Alignment
+        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
-        html chainNet
 
 "
 
-done
+if [ -s "$buildDir/bbi/${asmId}.$otherDb.synNet.summary.bb" ]; then
 
-exit 255
+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
 
-# may or may not have a searchTrix for assembly, assume none
-export searchTrix=""
-# check to see if there is a searchTrix assembly index
-if [ -s ${buildDir}/trackData/assemblyGap/${asmId}.assembly.ix ]; then
-  rm -f $buildDir/ixIxx/${asmId}.assembly.ix*
-  ln -s ../trackData/assemblyGap/${asmId}.assembly.ix $buildDir/ixIxx
-  ln -s ../trackData/assemblyGap/${asmId}.assembly.ixx $buildDir/ixIxx
-  searchTrix="
-searchTrix ixIxx/${asmId}.assembly.ix"
+"
 fi
 
-if [ -s ${buildDir}/trackData/assemblyGap/${asmId}.assembly.bb ]; then
-rm -f $buildDir/bbi/${asmId}.assembly.bb
-ln -s ../trackData/assemblyGap/${asmId}.assembly.bb $buildDir/bbi/${asmId}.assembly.bb
-printf "track assembly
-longLabel Assembly
-shortLabel Assembly
-visibility pack
-colorByStrand 150,100,30 230,170,40
-color 150,100,30
-altColor 230,170,40
-bigDataUrl bbi/%s.assembly.bb
-type bigBed 6
-html html/%s.assembly
-searchIndex name%s
-url https://www.ncbi.nlm.nih.gov/nuccore/\$\$
-urlLabel NCBI Nucleotide database
-group map\n\n" "${asmId}" "${asmId}" "${searchTrix}"
-$scriptDir/asmHubAssembly.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/$asmId.agp.gz https://hgdownload.soe.ucsc.edu/hubs/VGP/genomes/$asmId > $buildDir/html/$asmId.assembly.html
-fi
+if [ -s "$buildDir/bbi/${asmId}.$otherDb.rbestNet.summary.bb" ]; then
 
-if [ -s ${buildDir}/trackData/assemblyGap/${asmId}.gap.bb ]; then
-rm -f $buildDir/bbi/${asmId}.gap.bb
-ln -s ../trackData/assemblyGap/${asmId}.gap.bb $buildDir/bbi/${asmId}.gap.bb
-printf "track gap
-longLabel AGP gap
-shortLabel Gap (AGP defined)
-visibility dense
-color 0,0,0
-bigDataUrl bbi/%s.gap.bb
-type bigBed 4
-group map
-html html/%s.gap\n\n" "${asmId}" "${asmId}"
-$scriptDir/asmHubGap.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/$asmId.agp.gz https://hgdownload.soe.ucsc.edu/hubs/VGP/genomes/$asmId > $buildDir/html/$asmId.gap.html
-fi
+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
 
+"
+fi
 
+done