dbff2df65c339ba878154eda07fd5ce60a2383c3
braney
Fri Dec 5 17:07:07 2014 -0800
add the ability to get coverage (wiggle) plots for bed type tracks #952
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 165bc19..d9d7684 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -4586,30 +4586,47 @@
}
else if (title)
printf("
%s ", title );
else
printf("
");
return boxed;
}
void cfgEndBox(boolean boxed)
// Handle end of box and title for individual track type settings
{
if (boxed)
puts("");
}
+void wigOption(struct cart *cart, char *name, char *title, struct trackDb *tdb)
+/* let the user choose to see the track in wiggle mode */
+{
+char *canDoCoverage = cfgOptionEnvDefault("HGDB_CAN_DO_COVERAGE",
+ CanDoCoverageConfVariable, "off");
+if (differentString(canDoCoverage, "on"))
+ return;
+
+printf("
Display data as a wiggle: ");
+char varName[64];
+safef(varName, sizeof(varName), "%s.doWiggle", name);
+boolean option = cartUsualBoolean(cart, varName, FALSE);
+cgiMakeCheckBox(varName, option);
+printf("
\n");
+wigCfgUi(cart,tdb,name,title,TRUE);
+}
+
void wigCfgUi(struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed)
/* UI for the wiggle track */
{
char *typeLine = NULL; /* to parse the trackDb type line */
char *words[8]; /* to parse the trackDb type line */
int wordCount = 0; /* to parse the trackDb type line */
char option[256];
double minY; /* from trackDb or cart */
double maxY; /* from trackDb or cart */
double tDbMinY; /* data range limits from trackDb type line */
double tDbMaxY; /* data range limits from trackDb type line */
int defaultHeight; /* pixels per item */
char *horizontalGrid = NULL; /* Grid lines, off by default */
char *transformFunc = NULL; /* function to transform data points */
char *alwaysZero = NULL; /* Always include 0 in range */
@@ -4830,30 +4847,31 @@
radioButton(buffer, logicTypeVal, "and");
radioButton(buffer, logicTypeVal, "or");
printf("
\n");
/* List various fields you can filter on. */
printf("
\n", CONTROL_TABLE_WIDTH);
cg = startControlGrid(4, NULL);
for (fil = mud->filterList; fil != NULL; fil = fil->next)
{
safef(buffer,sizeof buffer,"%s.%s",prefix,fil->suffix);
oneMrnaFilterUi(cg, tdb, fil->label, buffer, fil->suffix, cart);
}
endControlGrid(&cg);
baseColorDrawOptDropDown(cart, tdb);
indelShowOptions(cart, tdb);
+wigOption(cart, prefix, title, tdb);
cfgEndBox(boxed);
}
void scoreGrayLevelCfgUi(struct cart *cart, struct trackDb *tdb, char *prefix, int scoreMax)
// If scoreMin has been set, let user select the shade of gray for that score, in case
// the default is too light to see or darker than necessary.
{
boolean parentLevel = isNameAtParentLevel(tdb,prefix);
char *scoreMinStr = trackDbSettingClosestToHome(tdb, GRAY_LEVEL_SCORE_MIN);
if (scoreMinStr != NULL)
{
int scoreMin = atoi(scoreMinStr);
// maxShade=9 taken from hgTracks/simpleTracks.c. Ignore the 10 in shadesOfGray[10+1] --
// maxShade is used to access the array.
@@ -5850,30 +5868,31 @@
filterBy_t *filterBySet = filterBySetGet(tdb,cart,name);
if (filterBySet != NULL)
{
printf("
");
filterBySetCfgUi(cart,tdb,filterBySet,FALSE);
filterBySetFree(&filterBySet);
}
filterBy_t *highlightBySet = highlightBySetGet(tdb,cart,name);
if (highlightBySet != NULL)
{
printf("
");
highlightBySetCfgUi(cart,tdb,highlightBySet,FALSE);
filterBySetFree(&highlightBySet);
}
+wigOption(cart, name, title, tdb);
cfgEndBox(boxed);
}
static boolean isSpeciesOn(struct cart *cart, struct trackDb *tdb, char *species, char *option, int optionSize, boolean defaultState)
/* check the cart to see if species is turned off or on (default is defaultState) */
{
boolean parentLevel = isNameAtParentLevel(tdb,option);
if (*option == '\0')
safef(option, optionSize, "%s.%s", tdb->track, species);
else
{
char *suffix = option + strlen(option);
int suffixSize = optionSize - strlen(option);
safef(suffix,suffixSize,".%s",species);
}
@@ -6374,30 +6393,33 @@
printf("
\n");
if (trackDbSettingClosestToHome(tdb, "noColorTag") == NULL)
{
cgiMakeRadioButton(cartVarName, BAM_COLOR_MODE_TAG, sameString(selected, BAM_COLOR_MODE_TAG));
printf("Use R,G,B colors specified in user-defined tag ");
safef(cartVarName2, sizeof(cartVarName2), "%s." BAM_COLOR_TAG, name);
sel2 = cartOrTdbString(cart, tdb, BAM_COLOR_TAG, BAM_COLOR_TAG_DEFAULT);
safef(onChange, sizeof(onChange), UPDATE_RADIO_FORMAT,
"onkeypress", cartVarName, BAM_COLOR_MODE_TAG);
cgiMakeTextVarWithExtraHtml(cartVarName2, sel2, 30, onChange);
printf("
\n");
}
cgiMakeRadioButton(cartVarName, BAM_COLOR_MODE_OFF, sameString(selected, BAM_COLOR_MODE_OFF));
printf("No additional coloring");
+// let the user choose to see the track in wiggle mode
+wigOption(cart, name, title, tdb);
+
//TODO: include / exclude flags
if (!boxed && fileExists(hHelpFile("hgBamTrackHelp")))
printf("BAM "
"configuration help
");
cfgEndBox(boxed);
}
#endif//def USE_BAM
void lrgCfgUi(struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed)
/* LRG: Locus Reference Genomic sequences mapped to assembly. */
{
boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
printf("",boxed?" width='100%'":"");
|