d3f9b9ecf2a6d30bd8f97566f72e5650982c308d kent Mon Dec 13 15:22:03 2021 -0800 Adding hgTracks display of merged bar charts. diff --git src/hg/hgc/barChartClick.c src/hg/hgc/barChartClick.c index 70a0426..cc58811 100644 --- src/hg/hgc/barChartClick.c +++ src/hg/hgc/barChartClick.c @@ -282,31 +282,31 @@ } } return sampleVals; } static struct barChartItemData *getSampleVals(struct trackDb *tdb, struct barChartBed *chartItem, char **retMatrixUrl, char **retSampleUrl) /* Get data values for this item (locus) from all samples */ { struct barChartItemData *vals = NULL; char *dataFile = trackDbSetting(tdb, "barChartMatrixUrl"); // for backwards compatibility during qa review if (dataFile == NULL) dataFile = trackDbSetting(tdb, "barChartDataUrl"); // for backwards compatibility during qa review -struct barChartCategory *categories = barChartUiGetCategories(database, tdb); +struct barChartCategory *categories = barChartUiGetCategories(database, tdb, NULL); struct hash *categoryHash = barChartCategoriesToHash(categories); if (dataFile != NULL) { char *sampleFile = trackDbSetting(tdb, "barChartSampleUrl"); if (sampleFile == NULL) return NULL; if (retMatrixUrl != NULL) *retMatrixUrl = dataFile; if (retSampleUrl != NULL) *retSampleUrl = sampleFile; vals = getSampleValsFromFile(tdb, categoryHash, chartItem, dataFile, sampleFile); } else vals = getSampleValsFromTable(tdb, categoryHash, chartItem); return vals; @@ -329,31 +329,31 @@ { fprintf(f, "%s\t%s\t%0.3f\n", val->sample, val->category, val->value); } fclose(f); return cloneString(dfTn.forCgi); } char *makeColorFile(struct trackDb *tdb) /* Make a file with category + color */ { struct tempName colorTn; trashDirFile(&colorTn, "hgc", "barChartColors", ".txt"); FILE *f = fopen(colorTn.forCgi, "w"); if (f == NULL) errAbort("can't create temp file %s", colorTn.forCgi); -struct barChartCategory *categs = barChartUiGetCategories(database, tdb); +struct barChartCategory *categs = barChartUiGetCategories(database, tdb, NULL); struct barChartCategory *categ; fprintf(f, "%s\t%s\n", "category", "color"); for (categ = categs; categ != NULL; categ = categ->next) { //fprintf(f, "%s\t#%06X\n", categ->label, categ->color); fprintf(f, "%s\t%d\n", categ->label, categ->color); } fclose(f); return cloneString(colorTn.forCgi); } static void printBoxplot(char *df, char *item, char *name2, char *units, char *colorFile) /* Plot data frame to image file and include in HTML */ { struct tempName pngTn; @@ -403,31 +403,31 @@ void deunderbarColumn(struct fieldedTable *ft, int fieldIx) /* Ununderbar all of a column inside table because space/underbar gets * so confusing */ { struct fieldedRow *row; for (row = ft->rowList; row != NULL; row = row->next) replaceChar(row->row[fieldIx], '_', ' '); } static void svgBarChart(struct barChartBed *chart, struct trackDb *tdb, double maxVal, char *metric) /* Plot bar chart without quartiles or anything fancy just using SVG */ { puts("
");
/* Load up input labels, color, and data */
-struct barChartCategory *categs = barChartUiGetCategories(database, tdb);
+struct barChartCategory *categs = barChartUiGetCategories(database, tdb, NULL);
int categCount = slCount(categs);
if (categCount != chart->expCount)
{
warn("Problem in %s barchart track. There are %d categories in trackDb and %d in data",
tdb->track, categCount, chart->expCount);
return;
}
char *statsFile = trackDbSetting(tdb, "barChartStatsUrl");
struct hash *statsHash = NULL;
int countStatIx = 0;
double statsSize = 0.0;
if (statsFile != NULL)
{
char *required[] = { "count", "total"};
@@ -565,31 +565,31 @@
if (differentString(chartItem->name2, ""))
{
if (trackDbSettingClosestToHomeOrDefault(tdb, "url2", NULL) != NULL)
printOtherCustomUrl(tdb, chartItem->name2, "url2", TRUE);
else
printf("(%s: %s)
\n", name2Label, chartItem->name2);
}
else
printf("
\n");
int categId;
float highLevel = barChartMaxValue(chartItem, &categId);
char *units = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_UNIT, "units");
char *metric = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_METRIC, "");
printf("Maximum %s value: %0.2f %s in %s
\n",
- metric, highLevel, units, barChartUiGetCategoryLabelById(categId, database, tdb));
+ metric, highLevel, units, barChartUiGetCategoryLabelById(categId, database, tdb, NULL));
printf("Gene position: "
"%s %s:%d-%d\n",
database, hgTracksPathAndSettings(), database,
chartItem->chrom, chartItem->chromStart+1, chartItem->chromEnd,
chartItem->chrom, chartItem->chromStart+1, chartItem->chromEnd);
printf(" Strand: %s\n", chartItem->strand);
// print any remaining extra fields
if (numColumns > 0)
{
extraFieldsPrint(tdb, NULL, extraFields, extraFieldCount);
}
char *matrixUrl = NULL, *sampleUrl = NULL;
struct barChartItemData *vals = getSampleVals(tdb, chartItem, &matrixUrl, &sampleUrl);