375022845a4226d17c2717cc844f4e3ef5eb5b5e
hiram
  Tue May 26 20:13:31 2026 -0700
resetting the bigDataUrl to hgdownload addresses refs #31811

diff --git src/hg/makeDb/doc/vgp577way/vgp577way.pl src/hg/makeDb/doc/vgp577way/vgp577way.pl
index 6961e84ed0a..bd9e94d85ac 100755
--- src/hg/makeDb/doc/vgp577way/vgp577way.pl
+++ src/hg/makeDb/doc/vgp577way/vgp577way.pl
@@ -1,238 +1,239 @@
 #!/usr/bin/env perl
 
 use strict;
 use warnings;
 
 my $argc = scalar(@ARGV);
 if ($argc != 3) {
   printf STDERR "usage: vgp577way.pl <referenceAccession> <577.acc.sciName.comName.clade.tsv> <order.list>\n";
   printf STDERR "  referenceAccession - accession of the reference species (speciesCodonDefault)\n";
   printf STDERR "  the .tsv file has four columns: accession, sciName, comName, clade\n";
   printf STDERR "  the order.list has two columns: featureBitsMeasure, accession\n";
   printf STDERR "output to stdout is a trackDb.txt composite track definition\n";
   exit 255;
 }
 
 my $refAcc = shift;
 my $tsvFile = shift;
 my $orderFile = shift;
 
 # mapping from order.list names to TSV accessions for special cases
 my %aliasToTsv = (
   "hs1"  => "GCA_009914755.4",
   "hg38" => "GCA_000001405.15",
   "mm39" => "GCA_000001635.9",
 );
 
 # read the TSV: accession -> (sciName, comName, clade)
 my %sciName;    # key is accession (TSV column 1), value is scientific name
 my %comName;    # key is accession, value is common name
 my %clade;      # key is accession, value is clade string
 
 open (my $fh, "<", $tsvFile) or die "can not read $tsvFile";
 while (my $line = <$fh>) {
   chomp $line;
   my ($acc, $sci, $com, $cl) = split('\t', $line);
   $sciName{$acc} = $sci;
   $comName{$acc} = $com;
   $clade{$acc} = $cl;
 }
 close ($fh);
 
 # read order.list: ordered list of accessions (these are the MAF names)
 my @orderAcc;   # accessions in coverage order (highest first)
 
 open ($fh, "<", $orderFile) or die "can not read $orderFile";
 while (my $line = <$fh>) {
   chomp $line;
   next if ($line =~ m/^\s*$/);
   my ($count, $acc) = split('\s+', $line);
   push (@orderAcc, $acc);
 }
 close ($fh);
 
 # helper: given a MAF name (from order.list), return the TSV accession for lookup
 sub tsvKey {
   my ($mafName) = @_;
   return $aliasToTsv{$mafName} if (defined($aliasToTsv{$mafName}));
   return $mafName;
 }
 
 # verify reference accession is in the TSV
 my $refTsvKey = tsvKey($refAcc);
 if (!defined($clade{$refTsvKey})) {
   printf STDERR "ERROR: reference accession '%s' not found in %s\n", $refAcc, $tsvFile;
   exit 255;
 }
 
 # verify all order.list entries are in the TSV
 foreach my $acc (@orderAcc) {
   my $key = tsvKey($acc);
   if (!defined($clade{$key})) {
     printf STDERR "ERROR: accession '%s' (tsv key '%s') from %s not found in %s\n",
       $acc, $key, $orderFile, $tsvFile;
     exit 255;
   }
 }
 
 # collect unique clades in order of first appearance in order.list
 my @cladeOrder;
 my %cladeSeen;
 foreach my $acc (@orderAcc) {
   my $cl = $clade{tsvKey($acc)};
   if (!defined($cladeSeen{$cl})) {
     push (@cladeOrder, $cl);
     $cladeSeen{$cl} = 1;
   }
 }
 # also include the reference clade if not already present
 my $refClade = $clade{$refTsvKey};
 if (!defined($cladeSeen{$refClade})) {
   push (@cladeOrder, $refClade);
   $cladeSeen{$refClade} = 1;
 }
 
 # convert clade string to a trackDb-safe identifier
 # e.g. "mammals-euarchontoglires" -> "Mammals_Euarchontoglires"
 # e.g. "fishes-ray-finned" -> "Fishes_Ray_Finned"
 sub cladeToId {
   my ($cl) = @_;
   my @parts = split(/[-]/, $cl);
   foreach my $p (@parts) {
     $p = ucfirst($p);
     # handle sub-parts joined by underscore (from split on -)
     # e.g. "ray-finned" -> "Ray_Finned"
   }
   return join("_", @parts);
 }
 
 # build sGroup lines: for each clade, list accessions in order.list order
 # these use the MAF names (accessions from order.list)
 my %sGroupMembers;  # key is clade string, value is arrayref of MAF names
 foreach my $acc (@orderAcc) {
   my $cl = $clade{tsvKey($acc)};
   push (@{$sGroupMembers{$cl}}, $acc);
 }
 
 # the total species count
 my $totalSpecies = scalar(@orderAcc) + 1;  # +1 for reference
 
 # output the composite track
 printf "track cons577way\n";
 printf "compositeTrack on\n";
 printf "shortLabel VGP %d-way\n", $totalSpecies;
 printf "longLabel VGP %d species Cactus multiple alignment\n", $totalSpecies;
 if ( -s "../../contrib/vgp577way/${refAcc}.vgp577wayPhyloP.bw" ) {
   printf "subGroup1 view Views align=Multiz_Alignments phyloP=Basewise_Conservation_(phyloP)\n";
 } else {
   printf "subGroup1 view Views align=Multiz_Alignments\n";
 }
 printf "dragAndDrop subTracks\n";
 printf "visibility hide\n";
 printf "type bed 4\n";
 printf "group compGeno\n";
 printf "html contrib/vgp577way/vgp577way\n";
 printf "\n";
 
 # the alignment view
 printf "    track cons577wayViewalign\n";
 printf "    shortLabel Cactus %d-way\n", $totalSpecies;
 printf "    view align\n";
 printf "    visibility pack\n";
 printf "    viewUi on\n";
 printf "    subTrack cons577way\n";
 printf "\n";
 
 # the bigMaf track
 printf "        track vgp577way\n";
 printf "        subTrack cons577wayViewalign\n";
 printf "        shortLabel VGP %d-way\n", $totalSpecies;
 printf "        longLabel VGP Cactus alignment on %d species\n", $totalSpecies;
 printf "        subGroups view=align\n";
 printf "        noInherit on\n";
 printf "        type bigMaf\n";
 printf "        viewUi on\n";
 printf "        itemFirstCharCase noChange\n";
 printf "        group compGeno\n";
-printf "        bigDataUrl contrib/vgp577way/%s.vgp577way.bb\n", $refAcc;
-printf "        summary contrib/vgp577way/%s.vgp577waySummary.bb\n", $refAcc;
+printf "        bigDataUrl https://hgdownload.soe.ucsc.edu/hubs/VGP/vgp577way/bbi/%s/%s.vgp577way.bb\n", $refAcc, $refAcc;
+printf "        summary https://hgdownload.soe.ucsc.edu/hubs/VGP/vgp577way/bbi/%s/%s.vgp577waySummary.bb\n", $refAcc, $refAcc;
 printf "        irows on\n";
 printf "        color 0, 10, 100\n";
 printf "        altColor 0,90,10\n";
 
 # speciesCodonDefault
 printf "        speciesCodonDefault %s\n", $refAcc;
 
 # speciesGroups - list of clade identifiers
 printf "        speciesGroups";
 foreach my $cl (@cladeOrder) {
   printf " %s", cladeToId($cl);
 }
 printf "\n";
 
 # sGroup_ lines - accessions in order.list order within each clade
 foreach my $cl (@cladeOrder) {
   printf "        sGroup_%s", cladeToId($cl);
   foreach my $acc (@{$sGroupMembers{$cl}}) {
     printf " %s", $acc;
   }
   printf "\n";
 }
 
 # speciesLabels - map accession to common name
 printf "        speciesLabels";
 foreach my $acc (@orderAcc) {
   my $key = tsvKey($acc);
   printf " %s=\"%s\"", $acc, $comName{$key};
 }
 printf "\n";
 
 # speciesDefaultOff - all species from order.list
 printf "        speciesDefaultOff";
 foreach my $acc (@orderAcc) {
   printf " %s", $acc;
 }
 printf "\n";
 
-if ( -s "../../contrib/vgp577way/${refAcc}.vgp577wayPhyloP.bw" ) {
+my $bwFile = "/hive/data/genomes/asmHubs/VGP/vgp577way/bbi/${refAcc}/${refAcc}.vgp577wayPhyloP.bw";
+if ( -s "${bwFile}" ) {
 
-my $bwInfo = `bigWigInfo ../../contrib/vgp577way/${refAcc}.vgp577wayPhyloP.bw | egrep "min:|max:" | awk '{printf "%.2f\\n", \$NF}'| xargs echo | tr ' ' ':'`;
+my $bwInfo = `bigWigInfo ${bwFile} | egrep "min:|max:" | awk '{printf "%.2f\\n", \$NF}'| xargs echo | tr ' ' ':'`;
 chomp $bwInfo;
 my ($bwMin, $bwMax) = split(':', $bwInfo);
 my $viewLimitMin = $bwMin / 2.0;
 my $viewLimitMax = $bwMax / 2.0;
 my $bigWigInfo = $bwInfo;
 $bigWigInfo =~ s/:/ /;
 
 printf "
     # PhyloP conservation
     track cons577wayViewphyloP
     shortLabel Basewise Conservation (phyloP)
     view phyloP
     visibility full
     subTrack cons577way
     viewLimits %.1f:%.1f
 ", $viewLimitMin, $viewLimitMax;
 
 printf "
         track phyloP577wayREV
         subTrack cons577wayViewphyloP
         subGroups view=phyloP
         shortLabel 577 phyloP
         longLabel VGP %d species Basewise Conservation by PhyloP phyloFit
         configurable on
         noInherit on
         type bigWig %s
-        bigDataUrl contrib/vgp577way/%s.vgp577wayPhyloP.bw
+        bigDataUrl https://hgdownload.soe.ucsc.edu/hubs/VGP/vgp577way/bbi/%s/%s.vgp577wayPhyloP.bw
         maxHeightPixels 100:50:11
         viewLimits %.1f:%.1f
         autoScale off
         spanList 1
         windowingFunction mean
         color 60,60,140
         altColor 140,60,60
         priority 1
         logo on
-", $totalSpecies, $bigWigInfo, $refAcc, $viewLimitMin, $viewLimitMax;
+", $totalSpecies, $bigWigInfo, $refAcc, $refAcc, $viewLimitMin, $viewLimitMax;
 
 }