2ce16411b0f909e7e1dfd27a01af34316c260f2f
hiram
  Mon Jul 5 11:58:27 2021 -0700
catching up the edge cases for pair wise alignment to assembly hub genome no redmine

diff --git src/hg/utils/automation/asmHubChainNetTrackDb.pl src/hg/utils/automation/asmHubChainNetTrackDb.pl
new file mode 100755
index 0000000..9bf8171
--- /dev/null
+++ src/hg/utils/automation/asmHubChainNetTrackDb.pl
@@ -0,0 +1,124 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use File::Basename;
+
+sub usage() {
+  printf STDERR "usage: asmHubChainNetTrackDb.pl <buildDir>\n";
+  printf STDERR "expecting to find directories: buildDir/trackData/lastz.*/\n";
+  printf STDERR "where each /lastz.*/ directory is one completed lastz/chainNet\n";
+  printf STDERR "and basename(buildDir) is the 'target' sequence name\n";
+  exit 255;
+}
+
+my $argc = scalar(@ARGV);
+
+if ($argc != 1) {
+  usage;
+}
+
+my $buildDir = shift;
+my $targetDb = basename($buildDir);
+my @queryList;
+
+open (DL, "ls -d $buildDir/trackData/lastz.*|") or die "can not list $buildDir/trackData/lastz.*";
+while (my $lastzDir = <DL>) {
+  chomp $lastzDir;
+  my $queryDb = basename($lastzDir);
+  $queryDb =~ s/lastz.//;
+  push @queryList, $queryDb;
+}
+close (DL);
+
+# foreach my $queryDb (@queryList) {
+#  printf "%s vs. %s\n", $queryDb, $targetDb;
+#}
+
+##### begin trackDb output ######
+printf "track %sChainNet\n", $targetDb;
+printf "compositeTrack on
+shortLabel Chain/Net
+longLabel Chain and Net alignments to target sequence: %s\n", $targetDb;
+printf "subGroup1 view Views chain=Chains net=Nets\n";
+printf "subGroup2 species Species";
+my $N = 0;
+foreach my $queryDb (@queryList) {
+  printf " s%03d=%s", $N++, $queryDb;
+}
+printf "\n";
+printf "subGroup3 clade Clade c00=human\n";
+printf "dragAndDrop subTracks\n";
+printf "visibility pack
+group compGeno
+noInherit on
+color 0,0,0
+altColor 255,255,0
+type bed 3
+chainLinearGap loose
+chainMinScore 5000
+dimensions dimensionX=clade dimensionY=species
+sortOrder species=+ view=+ clade=+
+configurable on\n";
+printf "html %sChainNet\n", $targetDb;
+
+printf "
+    track %sChainNetViewchain
+    shortLabel  Chains
+    view chain
+    visibility pack
+    subTrack %sChainNet
+    spectrum on
+", $targetDb, $targetDb;
+
+$N = 0;
+foreach my $queryDb (@queryList) {
+  my $QueryDb = ucfirst($queryDb);
+  `rm -f $buildDir/bbi/$targetDb.chain${QueryDb}.bb`;
+  `rm -f $buildDir/bbi/$targetDb.chain${QueryDb}Link.bb`;
+  `ln -s ../trackData/lastz.$queryDb/axtChain/chain${QueryDb}.bb  $buildDir/bbi/$targetDb.chain${QueryDb}.bb`;
+  `ln -s ../trackData/lastz.$queryDb/axtChain/chain${QueryDb}Link.bb  $buildDir/bbi/$targetDb.chain${QueryDb}Link.bb`;
+  printf "
+        track chain%s
+        subTrack %sChainNetViewchain off
+        subGroups view=chain species=s%03d clade=c00
+        shortLabel %s Chain
+        longLabel %s (some date) Chained Alignments
+        type bigChain %s
+        bigDataUrl bbi/%s.chain%s.bb
+        linkDataUrl bbi/%s.chain%sLink.bb
+        otherDb %s
+", $QueryDb, $targetDb, $N++, $queryDb, $queryDb, $queryDb, $targetDb,
+     $QueryDb, $targetDb, $QueryDb, $queryDb;
+}
+
+printf "
+    track %sMafNetViewnet
+    shortLabel Nets
+    view net
+    visibility dense
+    subTrack %sChainNet
+", $targetDb, $targetDb;
+
+$N = 0;
+foreach my $queryDb (@queryList) {
+  my @targetAccession = split('_', $targetDb);
+  my $targetAcc = sprintf("%s_%s", $targetAccession[0], $targetAccession[1]);
+  my $QueryDb = ucfirst($queryDb);
+  `rm -f $buildDir/bbi/$targetDb.${queryDb}.net.bb`;
+  `rm -f $buildDir/bbi/$targetDb.${queryDb}.net.summary.bb`;
+  `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.net.bb  $buildDir/bbi/$targetDb.${queryDb}.net.bb`;
+  `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.net.summary.bb  $buildDir/bbi/$targetDb.${queryDb}.net.summary.bb`;
+    printf "
+        track net%s
+        parent %sMafNetViewnet
+        subGroups view=net species=s%03d clade=c00
+        shortLabel %s mafNet
+        longLabel %s (some date) mafNet Alignment
+        type bigMaf
+        bigDataUrl bbi/%s.%s.net.bb
+        summary bbi/%s.%s.net.summary.bb
+        speciesOrder %s
+        html html/%s.chainNet
+", $QueryDb, $targetDb, $N++, $queryDb, $queryDb, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb;
+}