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; i
nAttributes-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);
}