f8b81fa07495f9e71fabbed2f539adee95dd2403
chmalee
Tue Nov 7 15:47:59 2023 -0800
Put some basic code for checking associated chain vis into the chainHprc details tables. Needs to be fixed up more, refs #32562
diff --git src/hg/hgc/bigBedClick.c src/hg/hgc/bigBedClick.c
index dd26321..85f6654 100644
--- src/hg/hgc/bigBedClick.c
+++ src/hg/hgc/bigBedClick.c
@@ -477,30 +477,57 @@
if (printCount == 0)
{
int i;
char label[20];
safef(label, sizeof(label), "nonBedFieldsLabel");
printf("%s ",
trackDbSettingOrDefault(tdb, label, "Non-BED fields:"));
for (i = restBedFields; i < restCount; i++)
printf("%s%s", (i > 0 ? "\t" : ""), restFields[i]);
printf("
\n");
}
}
if (sameString(tdb->type, "bigGenePred"))
bigGenePredLinks(tdb->track, item);
+ if (startsWith("hprcDeletions", tdb->track) || startsWith("hprcInserts", tdb->track) || startsWith("hprcArr", tdb->track))
+ {
+ // the source field, which is the first item after the itemRgb will
+ // have all the other chains
+ // TODO: make this controlled by a trackDb setting
+ char *oChainList[2048];
+ int i, numChains = chopCommas(cloneString(restFields[6]), oChainList);
+ char *oChain = NULL;
+ struct dyString *ds = dyStringNew(0);
+ dyStringPrintf(ds, "var chainVis = {");
+ for (i = 0; i < numChains; i++)
+ {
+ oChain = oChainList[i];
+ char *cartVar = catTwoStrings("chainHprc", oChain);
+ char *chainVis = cartOptionalString(cart, cartVar);
+ if (chainVis == NULL)
+ {
+ cartVar = catTwoStrings(cartVar, "_sel");
+ chainVis = cartOptionalString(cart, cartVar);
+ // TODO: this is not getting the vis right, because _sel is not the
+ // same as a visibility
+ }
+ dyStringPrintf(ds, "\"%s\": \"%s\", ", oChain, chainVis != NULL ? hStringFromTv(hTvFromString(chainVis)) : "Hide");
+ }
+ dyStringPrintf(ds, "};\n");
+ jsInline(dyStringCannibalize(&ds));
+ }
}
if (isCustomTrack(tdb->track))
{
time_t timep = bbiUpdateTime(bbi);
printBbiUpdateTime(&timep);
}
char *motifPwmTable = trackDbSetting(tdb, "motifPwmTable");
if (motifPwmTable)
{
struct dnaSeq *seq = hDnaFromSeq(database, bed->chrom, bed->chromStart, bed->chromEnd, dnaLower);
if (bed->strand[0] == '-')
reverseComplement(seq->dna, seq->size);
struct dnaMotif *motif = loadDnaMotif(bed->name, motifPwmTable);
motifHitSection(seq, motif);
}