6dcef0d057b21be3cb1cbe699998764883543c84 kate Thu Apr 6 16:46:22 2017 -0700 First cut bigBarChart track type for hubs. Basic function on hgTracks, hgTrackUi, and hgc. Lacks boxplot on details page, custom track support, extra fields diff --git src/hg/hgTracks/barChartTrack.c src/hg/hgTracks/barChartTrack.c index cc046ec..b4099fd 100644 --- src/hg/hgTracks/barChartTrack.c +++ src/hg/hgTracks/barChartTrack.c @@ -1,25 +1,26 @@ /* barGraph tracks - display a colored bargraph across each region in a file */ /* Copyright (C) 2015 The Regents of the University of California * See README in this or parent directory for licensing information. */ #include "common.h" #include "hgTracks.h" #include "bed.h" #include "hvGfx.h" #include "spaceSaver.h" +#include "hubConnect.h" #include "barChartBed.h" #include "barChartCategory.h" #include "barChartUi.h" // If a category contributes more than this percentage, its color is displayed in squish mode // Could be a trackDb setting #define SPECIFICITY_THRESHOLD 10 struct barChartTrack /* Track info */ { boolean noWhiteout; /* Suppress whiteout of graph background (allow highlight, blue lines) */ double maxMedian; /* Maximum median across all categories */ boolean doLogTransform; /* Log10(x+1) */ char *unit; /* Units for category values (e.g. RPKM) */ @@ -237,32 +238,31 @@ tg->itemColor = barChartItemColor; /* Get track UI info */ struct barChartTrack *extras; AllocVar(extras); tg->extraUiData = extras; extras->doLogTransform = cartUsualBooleanClosestToHome(cart, tg->tdb, FALSE, BAR_CHART_LOG_TRANSFORM, BAR_CHART_LOG_TRANSFORM_DEFAULT); extras->maxMedian = barChartUiMaxMedianScore(); extras->noWhiteout = cartUsualBooleanClosestToHome(cart, tg->tdb, FALSE, BAR_CHART_NO_WHITEOUT, BAR_CHART_NO_WHITEOUT_DEFAULT); extras->unit = trackDbSettingClosestToHomeOrDefault(tg->tdb, BAR_CHART_UNIT, ""); /* Get bed (names and all-sample category median scores) in range */ -char *filter = getScoreFilterClause(cart, tg->tdb, NULL); -bedLoadItemWhere(tg, tg->table, filter, (ItemLoader)barChartBedLoad); +loadSimpleBedWithLoader(tg, (bedItemLoader)barChartBedLoad); /* Create itemInfo items with BED and geneModels */ struct barChartItem *itemInfo = NULL, *list = NULL; struct barChartBed *bed = (struct barChartBed *)tg->items; /* Load category colors */ extras->colors = getCategoryColors(tg); filterCategories(tg); while (bed != NULL) { AllocVar(itemInfo); itemInfo->bed = bed; slAddHead(&list, itemInfo); @@ -794,30 +794,32 @@ tg->nonPropPixelWidth = NULL; } } static char *barChartItemName(struct track *tg, void *item) /* Return item name */ { struct barChartItem *chartItem = (struct barChartItem *)item; struct barChartBed *bed = (struct barChartBed *)chartItem->bed; return bed->name; } void barChartMethods(struct track *tg) /* Bar Chart track type: draw fixed width chart of colored bars over a BED item */ { +// TODO: derive this from AS or trackDb ? +tg->bedSize = 8; bedMethods(tg); tg->canPack = TRUE; tg->drawItemAt = barChartDrawAt; tg->preDrawItems = barChartPreDrawItems; tg->loadItems = barChartLoadItems; tg->mapItem = barChartMapItem; tg->itemName = barChartItemName; tg->mapItemName = barChartItemName; tg->itemHeight = barChartItemHeight; tg->itemStart = barChartItemStart; tg->itemEnd = barChartItemEnd; tg->totalHeight = barChartTotalHeight; tg->nonPropDrawItemAt = barChartNonPropDrawAt; tg->nonPropPixelWidth = barChartNonPropPixelWidth; }