e12ac8fea086d17ed824392a2bb3e425090ecb2d jcasper Fri Sep 27 16:17:32 2019 -0700 Adding table browser selectors for normalization and resolution in .hic tracks, refs #18842 diff --git src/hg/lib/hicUi.c src/hg/lib/hicUi.c index f76a422..648d728 100644 --- src/hg/lib/hicUi.c +++ src/hg/lib/hicUi.c @@ -25,41 +25,46 @@ char *selected = cartNonemptyString(cart, cartVar); char *menu[] = {"NONE", "VC", "VC_SQRT", "KR"}; int i, sanityCheck = 0; for (i=0; i<4; i++) { if (sameOk(selected, menu[i])) sanityCheck = 1; } if (!sanityCheck) { selected = menu[0]; } return selected; } -void hicUiNormalizationMenu(struct cart *cart, struct trackDb *tdb, struct hicMeta *meta) -/* Draw a menu to select the normalization method to use. */ +void hicUiNormalizationDropDown(struct cart *cart, struct trackDb *tdb, struct hicMeta *meta) { char cartVar[1024]; -printf("Score normalization: "); char* selected = hicUiFetchNormalization(cart, tdb, meta); char *menu[] = {"NONE", "VC", "VC_SQRT", "KR"}; safef(cartVar, sizeof(cartVar), "%s.%s", tdb->track, HIC_NORMALIZATION); cgiMakeDropList(cartVar, menu, 4, selected); } +void hicUiNormalizationMenu(struct cart *cart, struct trackDb *tdb, struct hicMeta *meta) +/* Draw a menu to select the normalization method to use. */ +{ +printf("Score normalization: "); +hicUiNormalizationDropDown(cart, tdb, meta); +} + char *hicUiFetchResolution(struct cart *cart, struct trackDb *tdb, struct hicMeta *meta) /* Return the current resolution selection, or the default if none * has been selected. */ { char cartVar[1024]; safef(cartVar, sizeof(cartVar), "%s.%s", tdb->track, HIC_RESOLUTION); char *selected = cartNonemptyString(cart, cartVar); int sanityCheck = sameOk(selected, "Auto"); int i; for (i=0; inRes; i++) { if (sameOk(selected, meta->resolutions[i])) sanityCheck = 1; } if (!sanityCheck) @@ -82,55 +87,60 @@ for (i=meta->nRes-1; i>= 0; i--) { if (atoi(meta->resolutions[i]) < idealRes) { autoRes = meta->resolutions[i]; break; } } result = atoi(autoRes); } else result = atoi(resolutionString); return result; } -void hicUiResolutionMenu(struct cart *cart, struct trackDb *tdb, struct hicMeta *meta) -/* Draw a menu to select which binSize to use for fetching data */ +void hicUiResolutionDropDown(struct cart *cart, struct trackDb *tdb, struct hicMeta *meta) { char cartVar[1024]; char autoscale[10] = "Auto"; -printf("Resolution: "); safef(cartVar, sizeof(cartVar), "%s.%s", tdb->track, HIC_RESOLUTION); char **menu = NULL; AllocArray(menu, meta->nRes+1); char **values = NULL; AllocArray(values, meta->nRes+1); menu[0] = autoscale; values[0] = autoscale; int i; for (i=1; inRes+1; i++) { char buffer[1024]; long long value = atoll(meta->resolutions[i-1]); sprintWithMetricBaseUnit(buffer, sizeof(buffer), value); menu[i] = cloneString(buffer); values[i] = cloneString(meta->resolutions[i-1]); } char *selected = hicUiFetchResolution(cart, tdb, meta); cgiMakeDropListWithVals(cartVar, menu, values, meta->nRes+1, selected); -free(menu); +freeMem(menu); +} + +void hicUiResolutionMenu(struct cart *cart, struct trackDb *tdb, struct hicMeta *meta) +/* Draw a menu to select which binSize to use for fetching data */ +{ +printf("Resolution: "); +hicUiResolutionDropDown(cart, tdb, meta); } char *hicUiFetchDrawMode(struct cart *cart, struct trackDb *tdb) /* Return the current draw mode selection, or the default if none * has been selected. */ { char *selected = cartOptionalStringClosestToHome(cart, tdb, FALSE, HIC_DRAW_MODE); if ( !sameOk(selected, HIC_DRAW_MODE_SQUARE) && !sameOk(selected, HIC_DRAW_MODE_ARC) && !sameOk(selected, HIC_DRAW_MODE_TRIANGLE) ) { selected = HIC_DRAW_MODE_DEFAULT; } return selected; @@ -246,31 +256,31 @@ printf("%sMaximum: ", isComposite ? "Score " : ""); cgiMakeDoubleVar(cartVar, currentMax, 6); printf("  Auto-scale: "); safef(cartVar, sizeof(cartVar), "%s.%s", tdb->track, HIC_DRAW_AUTOSCALE); boolean autoscaleChecked = hicUiFetchAutoScale(cart, tdb); cgiMakeCheckBox(cartVar, autoscaleChecked); hicUiAddAutoScaleJS(cart, tdb->track); } void hicUiFileDetails(struct hicMeta *trackMeta) { -int i;//, first = 1; +int i; printf("


\nMetadata from file header:
\n"); printf("
\n"); printf("", trackMeta->fileAssembly); char scriptline[2048]; for (i=0; inAttributes-1; i+=2) { printf("
", i, htmlEncode(trackMeta->attributes[i]), "../images/ab_right.gif"); printf("
\n", i); printf("
%s
", htmlEncode(trackMeta->attributes[i+1])); printf("
\n"); safef(scriptline, sizeof(scriptline), "$('label.trackUiHicAttrToggle%d').click(function() {$(this).children('img').toggleClass('open'); $('div.hicAttr%d').toggle();});", i, i); jsInline(scriptline); } printf("
\n"); @@ -306,26 +316,24 @@ hicUiColorMenu(cart, tdb); puts("

\n"); hicUiFileDetails(trackMeta); cfgEndBox(boxed); } void hicCfgUiComposite(struct cart *cart, struct trackDb *tdb, char *track, char *title, boolean boxed) /* Draw the (empty) list of track configuration options for a composite of Hi-C tracks */ { boxed = cfgBeginBoxAndTitle(tdb, boxed, title); puts("

"); printf("Items are drawn in shades of the chosen color depending on score - scores above the " "chosen maximum are drawn at full intensity.

\n"); -//hicUiNormalizationMenu(cart, track, trackMeta); -//puts("  "); hicUiMaxOptionsMenu(cart, tdb, TRUE); puts("

"); hicUiDrawMenu(cart, tdb); puts("  "); hicUiColorMenu(cart, tdb); puts("

\n"); puts("Subtracks below have additional file-specific configuration options for resolution and normalization.\n

"); cfgEndBox(boxed); }