f9a89b0e1ce3c937b4fbb879736c1619c35c271f
lrnassar
  Tue Apr 21 12:11:02 2026 -0700
QA fixes for PromoterAI track. refs #37278

Description page: replaced the wrong reference (Gao et al. 2023, the PrimateAI-3D
paper) with the actual PromoterAI citation (Jaganathan et al. Science 2025, PMID
40440429), corrected the score-direction wording (negative = under-expression,
positive = over-expression, not "tolerated vs disruptive"), fixed the Data Access
source link (Illumina BaseSpace, not the GitHub repo), and corrected the mouseover
blurb to match mouseOverFunction noAverage behavior.

Converter and AS: the overlap bigBed now carries the real per-transcript strand
from the source TSV (was hardcoded '+'), with a new strands column in the AS, and
the name field concatenates unique gene symbols so bidirectional-promoter items
read as "HES4,ISG15" etc. BED score is now |PromoterAI|*1000 so scoreFilter is
meaningful. Rewrote the converter to stream (sorted input), which drops peak
memory from ~40 GB to a few MB.

trackDb: added filterLabel/filterLimits on scoreDiff (the filter was unusable
without labels), scoreFilter + scoreLabel, alwaysZero and autoScale off on the
bigWig subtracks, color 200,0,0 / altColor 0,0,200 so signed bigWig bars draw
red (over-expression) above zero and blue (under-expression) below, matching
the overlap track itemRgb. Added maxWindowToDraw and maxItems on the overlap
subtrack.

Makedoc updated to describe the streaming pipeline, the new strands column,
and the rebuild workflow.

diff --git src/hg/makeDb/trackDb/human/promoterAi.ra src/hg/makeDb/trackDb/human/promoterAi.ra
index 849abd509d2..361816b51cb 100644
--- src/hg/makeDb/trackDb/human/promoterAi.ra
+++ src/hg/makeDb/trackDb/human/promoterAi.ra
@@ -1,77 +1,99 @@
 track promoterAi
 shortLabel PromoterAI
 longLabel PromoterAI Promoter Variant Impact Scores (zoom for exact score)
 type bigWig
 parent predictionScoresSuper
 compositeTrack on
 tableBrowser off
 visibility hide
-color 80,150,50
 
         track promoterAiA
         shortLabel Mutation: A
         longLabel PromoterAI: Mutation is A
         type bigWig
         parent promoterAi on
         visibility dense
         bigDataUrl /gbdb/$D/promoterAi/a.bw
         maxHeightPixels 128:20:8
         viewLimits -1:1
         viewLimitsMax -1:1
         maxWindowToDraw 10000000
         maxWindowToQuery 500000
         mouseOverFunction noAverage
+        alwaysZero on
+        autoScale off
+        color 200,0,0
+        altColor 0,0,200
 
         track promoterAiC
         shortLabel Mutation: C
         longLabel PromoterAI: Mutation is C
         type bigWig
         parent promoterAi on
         visibility dense
         bigDataUrl /gbdb/$D/promoterAi/c.bw
         maxHeightPixels 128:20:8
         viewLimits -1:1
         viewLimitsMax -1:1
         maxWindowToDraw 10000000
         maxWindowToQuery 500000
         mouseOverFunction noAverage
+        alwaysZero on
+        autoScale off
+        color 200,0,0
+        altColor 0,0,200
 
         track promoterAiG
         shortLabel Mutation: G
         longLabel PromoterAI: Mutation is G
         type bigWig
         parent promoterAi on
         visibility dense
         bigDataUrl /gbdb/$D/promoterAi/g.bw
         maxHeightPixels 128:20:8
         viewLimits -1:1
         viewLimitsMax -1:1
         maxWindowToDraw 10000000
         maxWindowToQuery 500000
         mouseOverFunction noAverage
+        alwaysZero on
+        autoScale off
+        color 200,0,0
+        altColor 0,0,200
 
         track promoterAiT
         shortLabel Mutation: T
         longLabel PromoterAI: Mutation is T
         type bigWig
         parent promoterAi on
         visibility dense
         bigDataUrl /gbdb/$D/promoterAi/t.bw
         maxHeightPixels 128:20:8
         viewLimits -1:1
         viewLimitsMax -1:1
         maxWindowToDraw 10000000
         maxWindowToQuery 500000
         mouseOverFunction noAverage
+        alwaysZero on
+        autoScale off
+        color 200,0,0
+        altColor 0,0,200
 
         track promoterAiOverlaps
         shortLabel PromoterAI overlaps
         longLabel PromoterAI: Positions with >1 score due to overlapping transcripts
         type bigBed 9 +
         parent promoterAi on
         visibility dense
         bigDataUrl /gbdb/$D/promoterAi/overlaps.bb
         mouseOverField _mouseOver
         itemRgb on
+        maxWindowToDraw 10000000
+        maxItems 50000
         filterByRange.scoreDiff on
         filter.scoreDiff 0.01
+        filterLimits.scoreDiff 0:2
+        filterLabel.scoreDiff Minimum score difference across transcripts
+        scoreFilter 0
+        scoreFilterLimits 0:1000
+        scoreLabel Absolute PromoterAI score * 1000