e5269f4f19e072d14e01eb2b4e53dccd32e04aef braney Tue May 24 16:20:28 2022 -0700 fixes problem where interact clicks don't grok chromAlias refs #29453 diff --git src/hg/hgc/interactClick.c src/hg/hgc/interactClick.c index 67bbe4d..5701bb2 100644 --- src/hg/hgc/interactClick.c +++ src/hg/hgc/interactClick.c @@ -1,30 +1,32 @@ /* Details page for interact type tracks */ /* Copyright (C) 2018 The Regents of the University of California * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "common.h" #include "obscure.h" #include "hdb.h" #include "jksql.h" #include "hgc.h" #include "customTrack.h" #include "trashDir.h" #include "hex.h" #include "jsHelper.h" #include <openssl/sha.h> +#include "bigBed.h" +#include "chromAlias.h" #include "interact.h" #include "interactUi.h" struct interactPlusRow { /* Keep field values in string format, for url processing */ struct interactPlusRow *next; struct interact *interact; char **row; }; static struct interactPlusRow *getInteractsFromTable(struct trackDb *tdb, char *chrom, int start, int end, char *name, char *foot) /* Retrieve interact items at this position from track table */ @@ -64,31 +66,31 @@ int i; for (i = 0; i < fieldCount; i++) fieldVals[i] = cloneString(row[i]); ipr->row = fieldVals; slAddHead(&iprs, ipr); } sqlFreeResult(&sr); hFreeConn(&conn); return iprs; } static struct interactPlusRow *getInteractsFromFile(char *file, char *chrom, int start, int end, char *name, char *foot) /* Retrieve interact items at this position from big file */ { -struct bbiFile *bbi = bigBedFileOpen(file); +struct bbiFile *bbi = bigBedFileOpenAlias(file, chromAliasFindAliases); struct lm *lm = lmInit(0); struct bigBedInterval *bb, *bbList = bigBedIntervalQuery(bbi, chrom, start, end, 0, lm); struct interactPlusRow *iprs = NULL; for (bb = bbList; bb != NULL; bb = bb->next) { char startBuf[16], endBuf[16]; int maxFields = 32; char *row[maxFields]; // big enough ? int fieldCount = bigBedIntervalToRow(bb, chrom, startBuf, endBuf, row, maxFields); struct interact *inter = interactLoadAndValidate(row); if (inter == NULL) continue; // got one, save object and row representation