bc527b6264234c33824854e5b596fb6f790983d4 lrnassar Tue Aug 4 14:22:28 2026 -0700 Fix release blockers and data errors found during QA of the mouseDevTimecourse tracks. refs #37001 Add maxWindowToDraw 10000000 to the six bigBarChart subtracks. Without it a whole-chromosome view asked the track to draw 3445 items x 156 bars and took 71 seconds on mm10 and 69 on mm39. The superTrack is on by default, so any mouse user zooming out could hit it. Now 254 ms and 86 ms. Correct a 1-bp off-by-one in the bigBarChart chromStart. The hub builder wrote 1-based GTF gene starts into the 0-based BED chromStart field, so every gene sat one base right of its true start while chromEnd was correct. Measured against GENCODE on mm10 before the fix, 42081/42093 genes (VM21) and 35323/35333 (VM4) were start+1 with none exact. Added fixBarChartStarts.sh, which rebuilds the files and refuses to run on one that has already been corrected. Originals kept as *.bb.preStartFix. Reported upstream to the hub author. Correct the replicate numbers on the bigWig signal composite. The biosample TSV has no replicate column, so generateBigwigTrackDb.py had been deriving one by sorting biosample accessions alphabetically, which mislabeled 124 of the 312 subtracks and flipped the default-on state of 62 of them. Added fetchReplicateNumbers.py to read the real biological_replicate_number from the ENCODE portal. Rewrite the signal shortLabels. They had been hard-truncated at 20 characters, which left 20 subtracks with duplicate labels. The generator now emits a one-letter view code and errors out if two labels match within the 17 characters hgTracks draws in the left label area, rather than silently truncating. Make generateBigwigTrackDb.py reproduce the committed .ra. It now emits the two-digit tissue prefixes that give the author-requested biological order, and the html setting, instead of depending on a one-off patch applied afterwards. Add barChartMerge, barChartMetric, labelFields and defaultLabelFields, and Title Case all shortLabels. Update the nine description pages: replicate wording to match barChartMerge, GitHub source links to the makedoc, build scripts and trackDb in Methods, an mm39 liftOver accounting note, and remove a duplicated sentence from the shared Display include. Add curl -f to downloadBigwigs.sh so an HTTP error body is never saved as a bigWig and then skipped forever by the restart check. diff --git src/hg/makeDb/scripts/mouseDevTimecourse/downloadBigwigs.sh src/hg/makeDb/scripts/mouseDevTimecourse/downloadBigwigs.sh index 25425161f3c..fbd81df9a78 100755 --- src/hg/makeDb/scripts/mouseDevTimecourse/downloadBigwigs.sh +++ src/hg/makeDb/scripts/mouseDevTimecourse/downloadBigwigs.sh @@ -24,26 +24,28 @@ # skip the header line. One URL per output line. URLS=$(awk -F'\t' 'NR>1 {print $7; print $8}' "$TSV") TOTAL=$(echo "$URLS" | wc -l) echo "$TOTAL URLs to fetch" | tee -a "$LOG" i=0 for URL in $URLS; do i=$((i + 1)) NAME=$(basename "$URL") OUT="$DEST/$NAME" if [ -s "$OUT" ]; then echo "[$i/$TOTAL] skip (exists): $NAME" >> "$LOG" continue fi echo "[$i/$TOTAL] fetching: $NAME" >> "$LOG" - curl -sSL -o "$OUT.partial" "$URL" + # -f so an HTTP error body is never saved as a .bigWig. Without it a 404 page + # lands at $OUT and the [ -s "$OUT" ] check above then skips it forever. + curl -fsSL -o "$OUT.partial" "$URL" rc=$? if [ $rc -eq 0 ]; then mv "$OUT.partial" "$OUT" else echo "[$i/$TOTAL] FAILED rc=$rc: $URL" >> "$LOG" rm -f "$OUT.partial" fi done echo "$(date) done" | tee -a "$LOG"