d562eec11447d84b898860e0387ceb52e8652e3f Merge parents 9a387b5 74b78fd galt Wed Apr 6 12:14:04 2016 -0700 resolved merge conflict diff --cc src/hg/hgTracks/gtexTracks.c index ba4d152,391a68c..fedd694 --- src/hg/hgTracks/gtexTracks.c +++ src/hg/hgTracks/gtexTracks.c @@@ -883,62 -867,94 +872,94 @@@ } static char *tissueExpressionText(struct gtexTissue *tissue, double expScore, boolean doLogTransform, char *qualifier) /* Construct mouseover text for tissue graph */ { static char buf[128]; safef(buf, sizeof(buf), "%s (%.1f %s%s%sRPKM)", tissue->description, doLogTransform ? log10(expScore+1.0) : expScore, qualifier != NULL ? qualifier : "", qualifier != NULL ? " " : "", doLogTransform ? "log " : ""); return buf; } + static void getItemX(int start, int end, int *x1, int *x2) + /* Return startX, endX based on item coordinates and current window */ + // Residual (largely replaced by drawScaledBox -- still used by gene model bmap box + { + int s = max(start, winStart); + int e = min(end, winEnd); + double scale = scaleForWindow(insideWidth, winStart, winEnd); + assert(x1); + *x1 = round((double)((int)s-winStart)*scale + insideX); + assert(x2); + *x2 = round((double)((int)e-winStart)*scale + insideX); + } + + static int gtexGeneItemStart(struct track *tg, void *item) + /* Return end chromosome coordinate of item, including graph */ + { + struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item; + struct gtexGeneBed *geneBed = geneInfo->geneBed; + return geneBed->chromStart; + } + + static int gtexGeneItemEnd(struct track *tg, void *item) + /* Return end chromosome coordinate of item, including graph */ + { + struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item; + struct gtexGeneBed *geneBed = geneInfo->geneBed; + double scale = scaleForWindow(insideWidth, winStart, winEnd); + int graphWidth = gtexGraphWidth(tg, geneInfo); + return max(geneBed->chromEnd, max(winStart, geneBed->chromStart) + graphWidth/scale); + } + static void gtexGeneMapItem(struct track *tg, struct hvGfx *hvg, void *item, char *itemName, char *mapItemName, int start, int end, int x, int y, int width, int height) /* Create a map box on gene model and label, and one for each tissue (bar in the graph) in * pack or full mode. Just single map for squish/dense modes */ { -if (tg->visibility == tvDense) +if (tg->limitedVis == tvDense) { genericMapItem(tg, hvg, item, itemName, itemName, start, end, x, y, width, height); return; } struct gtexGeneInfo *geneInfo = item; struct gtexGeneBed *geneBed = geneInfo->geneBed; struct gtexGeneExtras *extras = (struct gtexGeneExtras *)tg->extraUiData; + int geneStart = geneBed->chromStart; + int geneEnd = geneBed->chromEnd; -if (tg->visibility == tvSquish) +if (tg->limitedVis == tvSquish) { int tisId = maxTissueForGene(geneBed); char *maxTissue = ""; if (tisId > 1) maxTissue = getTissueDescription(tisId, extras->version); char buf[128]; safef(buf, sizeof buf, "%s %s", geneBed->name, maxTissue); int x1, x2; - getItemX(geneBed->chromStart, geneBed->chromEnd, &x1, &x2); - int width = x2-x1; - mapBoxHc(hvg, geneBed->chromStart, geneBed->chromEnd, x1, y, width, height, - tg->track, mapItemName, buf); + getItemX(geneStart, geneEnd, &x1, &x2); + int width = max(1, x2-x1); + mapBoxHc(hvg, geneStart, geneEnd, x1, y, width, height, + tg->track, mapItemName, buf); return; } int topGraphHeight = gtexGeneGraphHeight(tg, geneInfo, TRUE); topGraphHeight = max(topGraphHeight, tl.fontHeight); // label int yZero = topGraphHeight + y - 1; // yZero is bottom of graph - //int yGene = yZero + gtexGeneMargin() - 1; int x1 = insideX; // add maps to tissue bars in expresion graph struct gtexTissue *tissues = getTissues(extras->version); struct gtexTissue *tissue = NULL; int barWidth = gtexBarWidth(); int padding = gtexGraphPadding(); double maxMedian = ((struct gtexGeneExtras *)tg->extraUiData)->maxMedian; int graphX = gtexGraphX(geneBed); if (graphX < 0) return; // x1 is at left of graph