12cb5e1c3222732f385e0509c646b5cd14c53f5c braney Wed Mar 13 13:29:21 2024 -0700 another place where we try to find a linkDataUrl if the trackDb doesn't specify it diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index 7ce5d10..2a31441 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -3576,30 +3576,42 @@ puts(html); puts("</div>"); } hPrintf("<BR>\n"); } struct chain *chainLoadItemInRange(struct trackDb *tdb, char *item) /* Load up parts of chain that intersect seqName:winStart-winEnd */ { struct chain *chain = NULL; int id = sqlUnsigned(item); if (startsWith("big", tdb->type)) { char *fileName = trackDbSetting(tdb, "bigDataUrl"); char *linkFileName = trackDbSetting(tdb, "linkDataUrl"); + if (linkFileName == NULL) + { + char *bigDataUrl = cloneString(trackDbSetting(tdb, "bigDataUrl")); + char *dot = strrchr(bigDataUrl, '.'); + if (dot == NULL) + errAbort("No linkDataUrl in track %s", tdb->track); + *dot = 0; + char buffer[4096]; + safef(buffer, sizeof buffer, "%s.link.bb", bigDataUrl); + linkFileName = buffer; + } + chain = chainLoadIdRangeHub(database, fileName, linkFileName, seqName, winStart, winEnd, id); } else { chain = chainLoadIdRange(database, tdb->table, seqName, winStart, winEnd, id); } return chain; } void qChainRangePlusStrand(struct chain *chain, int *retQs, int *retQe) /* Return range of bases covered by chain on q side on the plus * strand. */ { if (chain == NULL)