899f9da8129add8c64c86b405c87b3a97738a2ad
lrnassar
  Fri May 1 17:12:18 2026 -0700
Update mpraVarDb description page and trackDb stanza per QA pass. refs #37359

Description page (mpraVarDb.html):
- Primary citation corrected from a fabricated "Wang T, Matreyek KA,
Yang X." entry to Jin et al., 2024 (PMID 39325859, the actual published
Bioinformatics paper for MPRAVarDB).
- References for all 18 source studies added.
- Studies-table counts corrected to match the data: Tewhey 27,138 to 23,430
(the biggest gap, ~14%), Griesemer 72,588 to 72,546, Abell 29,582 to
29,564, Mouri 14,551 to 14,549, McAfee 10,310 to 10,302, Cooper 5,340
to 5,330, Lu 1,038 to 1,036.
- Color counts on Display Conventions corrected to actual post-liftOver
values: 22,451 dark red / 17,773 orange / 198,804 grey = 239,028.
- "Note on study type" paragraph clarifying that ~41% of variants
(Griesemer + Schuster 3'UTR) measure post-transcriptional regulation
rather than transcription.
- "Cell-type specificity" reminder, "Note on Kircher 2019" saturation-
mutagenesis structure, "Interpreting log2FC" subsection with the
linear-fold-change translation, and "Significance thresholds across
studies" Methods paragraph noting that source studies use a mix of
FDR thresholds (0.05/0.10) and that Kircher reports raw regression
p-values rather than FDR.
- Kircher element list reworded to avoid double-counting UC88 as both
a named element and "an ultraconserved enhancer".

trackDb stanza (mpra.ra, mpraVarDb subtrack):
- filterValues.cellLine fixed: PC3 was hiding 26,546 Schuster rows (data
has "PC3 cell"), SF7996 was hiding 3,896 Kircher GBM rows (data has
bundled "HEK293T,SF7996"), and SK-MEL-28 (1,510) and K562+GATA1 (31)
were missing entirely.  Added comma-escape syntax (HEK293T,,SF7996)
per slNameListFromCommaEscaped.  Recovers ~31,983 hidden rows.
- HTML mouseOver with bold field names and line breaks.
- urls rsid="https://www.ncbi.nlm.nih.gov/snp/$$" added so rsIDs are
clickable linkouts to dbSNP.
- dataVersion "MPRAVarDB snapshot 2026-03-10" added.

Makedoc (mpra.txt): QA review note added with the trackDb-only fixes
and the items punted to upstream / next rebuild for Tao Wang.

diff --git src/hg/makeDb/doc/hg38/mpra.txt src/hg/makeDb/doc/hg38/mpra.txt
index ee09f197ef3..ed45ad17294 100644
--- src/hg/makeDb/doc/hg38/mpra.txt
+++ src/hg/makeDb/doc/hg38/mpra.txt
@@ -103,15 +103,61 @@
 # - Klein et al. 2020 (PMID 33046894) is an MPRA-design benchmarking paper
 #   that ran the same 2,440-element library through nine different assays.
 #   The track has three Klein 2020 sub-rows (lentiMPRA, plasmidMPRA, STARR-seq);
 #   confirm with Varda which underlying sub-designs MPRA Base pulled, since
 #   the Klein 2020 authors flag HSS as the worst-correlated of the nine and
 #   recommend pGL4 / ORI / 5'/5' WT.  Description page can be sharpened once
 #   confirmed.
 # - mpraVarDB preserves ~42k (chrom,start,end,name) duplicate rows (same rsID
 #   tested in multiple cells/studies).  Users disambiguate via the
 #   filterValues.cellLine / filterValues.mpraStudy filters in the trackDb.
 # - ~7,400 rows have upstream pvalue=0 and fdr=0 (not NA).  Could be genuine
 #   precision-floor significance or an upstream "not tested" encoding; the
 #   distinction is not recoverable from the CSV.  With pval_to_score returning
 #   0 for p<=0, these no longer dominate score-sorted views but their details
 #   page still reads "pvalue: 0.0".  Upstream clarification needed.
+#
+# QA review 2026-05-01 (RM #37359, Lou):
+#   Found and fixed in trackDb only (no bigBed rebuild this round):
+#   - filterValues.cellLine had four broken entries hiding ~31,983 rows
+#     (13% of track): PC3 vs PC3 cell mismatch (26,546 rows), SF7996 needed
+#     comma-escape syntax for the bundled HEK293T,,SF7996 data value
+#     (3,896 rows), missing SK-MEL-28 (1,510) and K562+GATA1 (31).  All
+#     four corrected; filter now matches all 32 distinct cellLine values
+#     in the data.
+#   - Description page references rebuilt for all 18 source studies plus
+#     the corrected primary citation (Jin et al. 2024, PMID 39325859 in
+#     Bioinformatics; the previous "Wang T, Matreyek KA, Yang X." citation
+#     was fabricated -- not the actual authors of either the preprint
+#     PMID 38617248 or the published paper).
+#   - 7 studies-table row counts corrected to match data (Tewhey, Griesemer,
+#     Abell, Mouri, McAfee, Cooper, Lu).
+#   - HTML mouseOver upgraded to bold/multi-line.
+#   - dataVersion "MPRAVarDB snapshot 2026-03-10" added to stanza.
+#   - urls rsid="https://www.ncbi.nlm.nih.gov/snp/$$" added so rsIDs are
+#     clickable linkouts.
+#   - Methods + Display Conventions paragraphs added: scoring methodology
+#     differs across studies, post-transcriptional vs transcriptional
+#     distinction (Griesemer/Schuster 3'UTR), Kircher saturation
+#     mutagenesis structure, log2FC interpretation.
+#
+#   Punted to Redmine for Max / Tao Wang (potential next-rebuild items):
+#   - 5,092 rows (Mouri, Tewhey) have pvalue > 1 (impossible; max 8.96).
+#     FDR appears valid; pvalue field looks like a t-statistic mislabeled.
+#     mouseOver/details show misleading p-values for ~2% of significant
+#     rows.
+#   - 30,921 rows display literal "nan" / "None" in mouseOver and
+#     details fields where NA-coded values were preserved verbatim.  Two
+#     sentinel conventions coexist ("None" in 53k eQTL rows, "NA" in 2k
+#     Kircher rows).
+#   - Upstream typos in 28,810 rows: "30 UTR" in 26,546 Schuster
+#     descriptions, "Familial hypercholesterol emia" in 2,176 Kircher
+#     diseases, "Alchol use disorder" in 88 Rao diseases.
+#   - 60,860 rows have description="GWAS" (no detail) -- upstream limit.
+#   - 1,069 rows have multi-allelic alt collapsed into one row (e.g.
+#     "T/A,G") with one log2FC/pvalue.
+#   - 2,088 rows preserve hg19-coord-style names (e.g. "1_1403972_CG")
+#     post-liftOver to hg38; coordinates and name no longer match.
+#   - 969 rows are colored red (FDR<0.05) but pvalue=nan -- mouseOver
+#     reads "FDR: 0.001 / p-value: nan" which looks contradictory.
+#   - 250-char truncation in mpravardbToBed.py cuts Griesemer
+#     descriptions mid-sentence; should raise/remove the cap.