b622d147b7dbac52dbf3ba26928cd18e02d42bd8 braney Sat Feb 26 12:34:37 2022 -0800 add support for using a bigBed as the chromAlias file diff --git src/hg/lib/chainNetDbLoad.c src/hg/lib/chainNetDbLoad.c index 4a0147f..5b2fe16 100644 --- src/hg/lib/chainNetDbLoad.c +++ src/hg/lib/chainNetDbLoad.c @@ -215,31 +215,31 @@ b->qStart = link.qStart; b->qEnd = link.qStart + (link.tEnd - link.tStart); slAddHead(&list, b); } slSort(&list, cBlockCmpTarget); chain->blockList = list; } struct chain *chainLoadIdRangeHub(char *db, char *fileName, char *linkFileName, char *chrom, int start, int end, int id) /* Load parts of chain of given ID from bigChain file. Note the chain header * including score, tStart, tEnd, will still reflect the whole chain, * not just the part in range. However only the blocks of the chain * overlapping the range will be loaded. */ { struct lm *lm = lmInit(0); -struct bbiFile *bbi = bigBedFileOpenAlias(fileName, chromAliasChromToAliasHash(db)); +struct bbiFile *bbi = bigBedFileOpenAlias(fileName, chromAliasFindAliases); struct bigBedInterval *bb, *bbList = bigBedIntervalQuery(bbi, chrom, start, end, 0, lm); char *bedRow[12]; char startBuf[16], endBuf[16]; bbiFileClose(&bbi); boolean loadAll = FALSE; struct chain *chain; AllocVar(chain); for (bb = bbList; bb != NULL; bb = bb->next) { bigBedIntervalToRow(bb, chrom, startBuf, endBuf, bedRow, ArraySize(bedRow)); unsigned chainId = sqlUnsigned(bedRow[3]); if (chainId == id) @@ -250,31 +250,31 @@ errAbort("chain %d is not in %s", id, fileName); chain->tName = cloneString(chrom); chain->tSize = sqlUnsigned(bedRow[6]); chain->tStart = sqlUnsigned(bedRow[1]); chain->tEnd = sqlUnsigned(bedRow[2]); chain->qName = cloneString(bedRow[7]); chain->qSize = sqlUnsigned(bedRow[8]); chain->qStrand = *bedRow[5]; chain->qStart = sqlUnsigned(bedRow[9]); chain->qEnd = sqlUnsigned(bedRow[10]); chain->score = sqlUnsigned(bedRow[11]); chain->id = id; // Now load the links. -bbi = bigBedFileOpenAlias(linkFileName, chromAliasChromToAliasHash(db)); +bbi = bigBedFileOpenAlias(linkFileName, chromAliasFindAliases); if (loadAll) { start = chain->tStart; end = chain->tEnd; } bbList = bigBedIntervalQuery(bbi, chrom, start, end, 0, lm); bbiFileClose(&bbi); for (bb = bbList; bb != NULL; bb = bb->next) { bigBedIntervalToRow(bb, chrom, startBuf, endBuf, bedRow, ArraySize(bedRow)); unsigned chainId = sqlUnsigned(bedRow[3]); if (chainId == id) { struct cBlock *cBlock;