5776ff26d2da71f6cf65909b53a3e9238a522a7e
hiram
  Tue Aug 25 10:30:18 2026 -0700
adding gcOnFly track development refs #35958

diff --git src/hg/utils/automation/doAssemblyHub.pl src/hg/utils/automation/doAssemblyHub.pl
index 009da4ce761..785329f0c58 100755
--- src/hg/utils/automation/doAssemblyHub.pl
+++ src/hg/utils/automation/doAssemblyHub.pl
@@ -139,31 +139,31 @@
 						'workhorse' => $workhorse,
 						'fileServer' => $fileServer,
 						'bigClusterHub' => $bigClusterHub,
 						'smallClusterHub' => $smallClusterHub);
   print STDERR "
 Automates build of assembly hub.  Steps:
     download: sets up sym link working hierarchy from already mirrored
                 files from NCBI in:
                       $sourceDir/GC[AF]/123/456/789/asmId
     sequence: establish AGP and 2bit file from NCBI directory
     assemblyGap: create assembly and gap bigBed files and indexes
                  for assembly track names
     chromAlias:  construct asmId.chromAlias.txt for alias name recognition
     gatewayPage: create html/asmId.description.html contents
     cytoBand: create cytoBand track and navigation ideogram
-    gc5Base: create bigWig file for gc5Base track
+    gc5Base: create bigWig file for gc5Base track (and gcOnFly 2026-08-25)
     repeatModeler: optionally, run RepeatModeler to construct custom library
                    for repeatMasker run.  Use: -runRepeatModeler to perform
                    this procedure, warning: can take a considerable amount
                    of time (12 to 48 hours or more), and consumes an entire
                    ku cluster node
     repeatMasker: run repeat masker cluster run and create bigBed files for
                   the composite track categories of repeats
     simpleRepeat: run trf cluster run and create bigBed file for simple repeats
     allGaps: calculate all actual real gaps due to N's in sequence, can be
                   more than were specified in the AGP file
     idKeys: calculate md5sum for each sequence in the assembly to be used to
             find identical sequences in similar assemblies
     windowMasker: run windowMasker cluster run, create windowMasker bigBed file
                   and compute intersection with repeatMasker results
     addMask: combine the higher masking of (windowMasker or repeatMasker) with
@@ -1173,40 +1173,48 @@
 _EOF_
   );
   $bossScript->execute();
 } # cytoBand
 
 #########################################################################
 # * step: gc5Base [workhorse]
 sub doGc5Base {
   my $runDir = "$buildDir/trackData/gc5Base";
   &HgAutomate::mustMkdir($runDir);
 
   my $whatItDoes = "construct gc5Base bigWig track data";
   my $bossScript = newBash HgRemoteScript("$runDir/doGc5Base.bash",
                     $workhorse, $runDir, $whatItDoes);
 
+  # adding gcOnFly 2026-08-25
   $bossScript->add(<<_EOF_
 export asmId=$defaultName
 
-if [ ../../\$asmId.2bit -nt \$asmId.gc5Base.bw ]; then
+if [ ../../\$asmId.2bit -nt \$asmId.gcOnFly.bw ]; then
   hgGcPercent -wigOut -doGaps -file=stdout -win=5 -verbose=0 test \\
     ../../\$asmId.2bit \\
-      | gzip -c > \$asmId.wigVarStep.gz
+      | gzip -c > \$asmId.wigVarStep.gz &
+  hgGcPercent -wigOut -doGaps -file=stdout -win=50000 -verbose=0 test \\
+    ../../\$asmId.2bit \\
+      | gzip -c > \$asmId.onFly.wigVarStep.gz
+  wait
   wigToBigWig \$asmId.wigVarStep.gz ../../\$asmId.chrom.sizes \$asmId.gc5Base.bw
+  wigToBigWig \$asmId.onFly.wigVarStep.gz ../../\$asmId.chrom.sizes \$asmId.gcOnFly.bw
   rm -f \$asmId.wigVarStep.gz
+  rm -f \$asmId.onFly.wigVarStep.gz
   touch -r ../../\$asmId.2bit \$asmId.gc5Base.bw
+  touch -r ../../\$asmId.2bit \$asmId.gcOnFly.bw
 else
   printf "# gc5Base step previously completed\\n" 1>&2
   exit 0
 fi
 _EOF_
   );
   $bossScript->execute();
 } # gc5Base
 
 #########################################################################
 # * step: repeatModeler [workhorse, bigClusterHub]
 sub doRepeatModeler {
   if (! $runRepeatModeler) {
        &HgAutomate::verbose(1, "# RepeatModeler not being run, add argument: -runRepeatModeler to run this step before RepeatMasker\n");
 	return;