a7dd4fa7826142ecfe082ad496d5019effa0c8e6 braney Wed Mar 13 13:27:35 2024 -0700 if bigChain trackDb doesn't specify linkDataUrl then try adding .link.bb to the bigDataUrl diff --git src/hg/hgTracks/chainTrack.c src/hg/hgTracks/chainTrack.c index 7dae716..8aa43a0 100644 --- src/hg/hgTracks/chainTrack.c +++ src/hg/hgTracks/chainTrack.c @@ -147,36 +147,44 @@ int start, end, extra; struct simpleFeature *lastSf = NULL; int maxOverLeft = 0, maxOverRight = 0; int overLeft, overRight; void *closure; struct sqlClosure sqlClosure; struct bbClosure bbClosure; linkRetrieveFunc queryFunc; if (tg->isBigBed) { closure = &bbClosure; queryFunc = doBbQuery; char *fileName = trackDbSetting(tg->tdb, "linkDataUrl"); if (fileName == NULL) { - warn("Cannot find linkDataUrl in custom track \"%s\"\n", tg->shortLabel); - return; + char buffer[4096]; + + char *bigDataUrl = cloneString(trackDbSetting(tg->tdb, "bigDataUrl")); + char *dot = strrchr(bigDataUrl, '.'); + if (dot == NULL) + errAbort("No linkDataUrl in track %s", tg->track); + + *dot = 0; + safef(buffer, sizeof buffer, "%s.link.bb", bigDataUrl); + fileName = buffer; } struct bbiFile *bbi = bigBedFileOpenAlias(fileName, chromAliasFindAliases); if (bbi == NULL) - return; + errAbort("cannot open linkDataUrl %s", fileName); bbClosure.bbi = bbi; } else { closure = &sqlClosure; queryFunc = doQuery; sqlClosure.conn = hAllocConn(database); } lm = lmInit(1024*4); hash = newHash(0); /* Make up a hash of all linked features keyed by * id, which is held in the extras field. To * avoid burning memory on full chromosome views