90aa101ee4f9e47a77b2eac496eca213a787d513 jcasper Mon Jul 22 01:53:32 2019 -0700 Adding table browser support for hic tracks, refs #22316 diff --git src/hg/lib/hicUi.c src/hg/lib/hicUi.c index a615188..69c67e1 100644 --- src/hg/lib/hicUi.c +++ src/hg/lib/hicUi.c @@ -54,30 +54,57 @@ char cartVar[1024]; safef(cartVar, sizeof(cartVar), "%s.%s", track, HIC_RESOLUTION); char *selected = cartNonemptyString(cart, cartVar); int sanityCheck = sameOk(selected, "Auto"); int i; for (i=0; i<meta->nRes; i++) { if (sameOk(selected, meta->resolutions[i])) sanityCheck = 1; } if (!sanityCheck) selected = "Auto"; return selected; } +int hicUiFetchResolutionAsInt(struct cart *cart, char *track, struct hicMeta *meta, int windowSize) +/* Return the current resolution selection as an integer. If there is no selection, or if "Auto" + * has been selected, return the largest available value that still partitions the window into at + * least 5000 bins. */ +{ +char *resolutionString = hicUiFetchResolution(cart, track, meta); +int result; +if (sameString(resolutionString, "Auto")) + { + int idealRes = windowSize/5000; + char *autoRes = meta->resolutions[meta->nRes-1]; + int i; + 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, char *track, struct hicMeta *meta) /* Draw a menu to select which binSize to use for fetching data */ { char cartVar[1024]; char autoscale[10] = "Auto"; printf("<b>Resolution:</b> "); safef(cartVar, sizeof(cartVar), "%s.%s", 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; i<meta->nRes+1; i++)