7e87cadb469b4e0eb4fb7f973154357cfe7fc345
lrnassar
  Mon Sep 21 15:56:18 2026 -0700
QA fixes for the mei (Mobile Insertions) track collection. refs #37524

Fix two data bugs found during QA and rebuild the affected bigBeds.
meiEul1dbToBed.py looked up samples and individuals by name, but euL1db
joins on 1-based row numbers, so neither join ever matched and the
individual count, tissues, clinical conditions and populations were empty
on all 8,991 insertions while the contributing-samples table printed row
numbers. Both loaders now key on the row number, the table prints the
sample name, and the adjacent population filter is case-insensitive so it
actually drops "unknown". meiHgsvc3CsvToBed.py took alt[1:] on every
record, which dropped the first base of the element on the 96 GRCh38 and
111 T2T-CHM13 records where PALMER2 is the only caller and ALT carries no
anchor base; it now prefers INFO SEQ, which always matches SVLEN.

Correct seven statements on the description pages against their sources:
the HGSVC3 single-caller split was attributed to PALMER rather than
L1ME-AID, its orthogonal concordance was 90.8% rather than 92.5%, euL1db
was credited with aligning the L1HS consensus when the paper says it was
processed from our RepeatMasker track, DeepMEI's network was described as
a classifier rather than a genotyper and given the wrong training set,
euL1db listed two detection methods absent from the data, and HMEID
contradicted itself on the MELT ASSESS cutoff.

Also: the SweGen bigDataUrl now points at _swegen.bb so the restricted
callset is kept off the download server; the container page no longer
claims the whole collection is long-read, lists the two euL1db subtracks,
scopes its display conventions to the subtracks they describe, and cites
all six papers; dead and wrong track links are repointed and pinned to a
db; $db replaces hardcoded hg38 in paths on pages that serve three
assemblies; the euL1db labels no longer carry hg38 counts and a lift note
that made no sense on hg19; all six subtracks gain a dataVersion; the
euL1db filter ranges match the data; and five autoSql field descriptions
match what the files contain.

Document the gbdb symlinks and the QA changes in doc/hg38/mei.txt, correct
the HMEID bedToBigBed type there, and add an hg19.txt pointer since hg19
carries the two euL1db subtracks.

diff --git src/hg/makeDb/scripts/mei/meiHgsvc3.as src/hg/makeDb/scripts/mei/meiHgsvc3.as
index b732e266a3f..f2e5bea31bb 100644
--- src/hg/makeDb/scripts/mei/meiHgsvc3.as
+++ src/hg/makeDb/scripts/mei/meiHgsvc3.as
@@ -1,29 +1,29 @@
 table meiHgsvc3
 "Novel Mobile Element Insertions in 65 HGSVC3 long-read assembled samples (vs GRCh38)"
 (
 string  chrom;             "Reference chromosome or scaffold"
 uint    chromStart;        "0-based start position (anchor base)"
 uint    chromEnd;           "Half-open end position (anchor base + 1)"
-string  name;              "Item label (INS, insertion length, carrier sample count)"
+string  name;              "Item label (element class, insertion length, carrier sample count)"
 uint    score;             "Score (alt-allele frequency * 1000)"
 char[1] strand;            "Strand (always .)"
 uint    thickStart;        "Start of thick drawing region"
 uint    thickEnd;          "End of thick drawing region"
 uint    itemRgb;           "RGB color, by mobile-element class"
 string  teClass;           "TE class|Family of mobile element (Alu, L1, SVA, HERVK, snRNA)"
 string  teType;            "Repeat designation|Repeat designation as reported in source (e.g. SINE/Alu)"
 int     svLen;             "Insertion length (bp)"
 int     altAlleleCount;    "Carrier haplotypes|Haplotypes carrying the insertion"
 int     alleleNumber;      "Genotyped haplotypes|Total haplotypes successfully genotyped"
 float   altAlleleFreq;     "Allele frequency|Fraction of genotyped haplotypes carrying the insertion"
 int     carrierCount;      "Carrier samples|Samples with at least one insertion allele"
 int     sampleCount;       "Genotyped samples|Samples with at least one called haplotype"
 string  sourceSample;      "Discovery sample|Sample-haplotype in which the insertion was originally called"
 int     callerCount;       "Caller count|Number of MEI callers supporting this insertion (1 or 2)"
 string  l1meAid;           "L1ME-AID validated|Whether the insertion was validated by L1ME-AID (Yes/No)"
 string  palmer;            "PALMER validated|Whether the insertion was validated by PALMER (Yes/No)"
 float   refSegDup;         "Segmental dup. overlap|Fraction of insertion site overlapping reference segmental duplications (REF_SD)"
 string  refTrf;            "Tandem repeat|Insertion site overlaps a reference tandem repeat (REF_TRF)"
 lstring carrierSamples;    "Carrier sample list|Comma-separated list of samples with at least one insertion allele"
 lstring insertSeq;         "Inserted sequence|DNA sequence of the inserted mobile element (ALT allele minus the anchor base)"
 )