262c843cbd3e96a92f7f56bab9054c5fcdf7541c
gperez2
  Mon Aug 25 09:19:43 2025 -0700
Making updates to the C code related to the bigDbSnp mouseOver, refs #36249

diff --git src/hg/hgTracks/variation.c src/hg/hgTracks/variation.c
index b6fa8a222c9..b804da0d58e 100644
--- src/hg/hgTracks/variation.c
+++ src/hg/hgTracks/variation.c
@@ -2730,32 +2730,39 @@
 if (cartUsualBooleanClosestToHome(cart, tdb, FALSE, "label.maf", FALSE))
     {
     bdsAppendMaf(bds, freqSourceIx, dy);
     }
 // If the alleles are too long, print the class as a backup.
 if (tooLong)
     dyStringPrintf(dy, " %s", bigDbSnpClassToString(bds->class));
 if (cartUsualBooleanClosestToHome(cart, tdb, FALSE, "label.func", FALSE))
     bdsAppendFunc(bds, dy);
 return dyStringCannibalize(&dy);
 }
 
 static char *bdsMouseOver(struct bigDbSnp *bds)
 /* Simulate mouseover with options... */
 {
-struct dyString *dy = dyStringCreate("%s:", bds->name);
+    struct dyString *dy = dyStringNew(256);
+    // dbSNP ID
+    dyStringPrintf(dy, "<b>dbSNP ID</b>: %s<br>", bds->name);
+    // Reference/alt alleles
+    dyStringAppend(dy, "<b>Ref/Alt allele(s)</b>: ");
     bdsAppendRefAlt(bds, dy);
+    dyStringAppend(dy, "<br>");
+    // Functional effects
+    dyStringAppend(dy, "<b>Functional effects</b>: ");
     bdsAppendFunc(bds, dy);
     return dyStringCannibalize(&dy);
 }
 
 static void paranoidCheckMnvLengths(struct bigDbSnp *bds)
 /* Make sure an mnv variant's alleles are all the same length. */
 {
 if (bds->class != bigDbSnpMnv)
     errAbort("paranoidCheckMnvLengths: expected %s class=bigDbSnpMnv=%d, got %d",
              bds->name, bigDbSnpMnv, bds->class);
 int refLen = strlen(bds->ref);
 if (refLen != bds->chromEnd - bds->chromStart)
     errAbort("paranoidCheckMnvLengths: %s: length of ref '%s' is %d but chromEnd - chromStart is %d",
              bds->name, bds->ref, refLen, bds->chromEnd - bds->chromStart);
 int aIx;