54406b80d5d435970989acff7b22dd6146c6b411 braney Sat Jan 22 15:24:59 2022 -0800 adding chrom alias support to big files diff --git src/hg/hgTracks/wigMafTrack.c src/hg/hgTracks/wigMafTrack.c index 6a40187..9684dd7 100644 --- src/hg/hgTracks/wigMafTrack.c +++ src/hg/hgTracks/wigMafTrack.c @@ -11,30 +11,31 @@ #include "jksql.h" #include "hdb.h" #include "hgTracks.h" #include "maf.h" #include "scoredRef.h" #include "hCommon.h" #include "hgMaf.h" #include "mafTrack.h" #include "customTrack.h" #include "mafSummary.h" #include "mafFrames.h" #include "phyloTree.h" #include "soTerm.h" #include "bigBed.h" #include "hubConnect.h" +#include "chromAlias.h" #define GAP_ITEM_LABEL "Gaps" #define MAX_SP_SIZE 2000 struct wigMafItem /* A maf track item -- * a line of bases (base level) or pairwise density gradient (zoomed out). */ { struct wigMafItem *next; char *name; /* Common name */ char *db; /* Database */ int group; /* number of species group/clade */ int ix; /* Position in list. */ int height; /* Pixel height of item. */ @@ -972,31 +973,31 @@ int width, MgFont *font, Color color, Color altColor, enum trackVisibility vis) /* Draw density plot or graph for overall maf scores rather than computing * by sections, for speed. Don't actually load the mafs -- just * the scored refs from the table. */ { struct lm *lm = lmInit(0); char *fileName = trackDbSetting(track->tdb, "summary"); if (fileName == NULL) { warn("cannot find summary information in trackDb for track '%s'", track->track); return; } -struct bbiFile *bbi = bigBedFileOpen(fileName); +struct bbiFile *bbi = bigBedFileOpenAlias(fileName, chromAliasGetHash(database)); struct bigBedInterval *bb, *bbList = bigBedIntervalQuery(bbi, chromName, seqStart, seqEnd, 0, lm); char *bedRow[7]; char startBuf[16], endBuf[16]; double scale = scaleForPixels(width); for (bb = bbList; bb != NULL; bb = bb->next) { bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow)); struct mafSummary *ms; ms = mafSummaryLoad(bedRow); drawScore(ms->score, ms->chromStart, ms->chromEnd, seqStart, scale, hvg, xOff, yOff, height, color, vis); } } @@ -1218,31 +1219,31 @@ return FALSE; if (cartVarExistsAnyLevel(cart, track->tdb,FALSE,MAF_CHAIN_VAR)) useIrowChains = cartUsualBooleanClosestToHome(cart, track->tdb, FALSE, MAF_CHAIN_VAR,TRUE); else { char *irowString = trackDbSetting(track->tdb, "irows"); if (irowString && sameString(irowString, "off")) useIrowChains = FALSE; } if (track->isBigBed) { struct lm *lm = lmInit(0); char *fileName = trackDbSetting(track->tdb, "summary"); - struct bbiFile *bbi = bigBedFileOpen(fileName); + struct bbiFile *bbi = bigBedFileOpenAlias(fileName, chromAliasGetHash(database)); struct bigBedInterval *bb, *bbList = bigBedIntervalQuery(bbi, chromName, seqStart, seqEnd, 0, lm); char *bedRow[7]; char startBuf[16], endBuf[16]; for (bb = bbList; bb != NULL; bb = bb->next) { bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow)); ms = mafSummaryLoad(bedRow); if ((hel = hashLookup(componentHash, ms->src)) == NULL) hashAdd(componentHash, ms->src, ms); else slAddHead(&(hel->val), ms); } bbiFileClose(&bbi); } @@ -1944,31 +1945,31 @@ { if (newTableType) mf = mafFramesLoad(row + rowOffset); else mf = mafFramesLoadOld(row + rowOffset); slAddHead(&mfList, mf); } sqlFreeResult(&sr); hFreeConn(&conn); return mfList; } static struct mafFrames *getFramesFromBb( char *framesTable, char *chromName, int seqStart, int seqEnd, char *component) { struct lm *lm = lmInit(0); -struct bbiFile *bbi = bigBedFileOpen(framesTable); +struct bbiFile *bbi = bigBedFileOpenAlias(framesTable, chromAliasGetHash(database)); struct bigBedInterval *bb, *bbList = bigBedIntervalQuery(bbi, chromName, seqStart, seqEnd, 0, lm); char *bedRow[11]; char startBuf[16], endBuf[16]; struct mafFrames *mfList = NULL, *mf; for (bb = bbList; bb != NULL; bb = bb->next) { bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow)); if (sameString(bedRow[3], component)) { mf = mafFramesLoad( bedRow ); slAddHead(&mfList, mf); } }