87165caa138700c2f604737f7448685797bf1954
angie
Wed Dec 18 14:20:37 2019 -0800
Apply same base and indel coloring defaults to BAM tracks in hgTrackUi as in hgTracks. refs #24674
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 90ab414..2d20738 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -1327,30 +1327,52 @@
}
}
static void indelShowOptionsWithName(struct cart *cart, struct trackDb *tdb, char *name)
/* Make HTML inputs for indel display options if any are applicable. */
{
indelShowOptionsWithNameExt(cart, tdb, name, "query", TRUE, TRUE);
}
void indelShowOptions(struct cart *cart, struct trackDb *tdb)
/* Make HTML inputs for indel display options if any are applicable. */
{
indelShowOptionsWithName(cart, tdb, tdb->track);
}
+#define BAM_DEFAULT_SHOW_DIFF_BASES_MAX_ZOOM "100"
+
+void bamAddBaseAndIndelSettings(struct trackDb *tdb)
+/* Unless already set in tdb, add settings to enable base-level differences and indel display. */
+{
+struct hash *settings = tdb->settingsHash;
+if (!hashLookup(settings, BASE_COLOR_USE_SEQUENCE))
+ hashAdd(settings, BASE_COLOR_USE_SEQUENCE, cloneString("lfExtra"));
+if (!hashLookup(settings, BASE_COLOR_DEFAULT))
+ hashAdd(settings, BASE_COLOR_DEFAULT, cloneString(BASE_COLOR_DRAW_DIFF_BASES));
+if (!hashLookup(settings, SHOW_DIFF_BASES_ALL_SCALES))
+ hashAdd(settings, SHOW_DIFF_BASES_ALL_SCALES, cloneString("."));
+if (!hashLookup(settings, INDEL_DOUBLE_INSERT))
+ hashAdd(settings, INDEL_DOUBLE_INSERT, cloneString("on"));
+if (!hashLookup(settings, INDEL_QUERY_INSERT))
+ hashAdd(settings, INDEL_QUERY_INSERT, cloneString("on"));
+if (!hashLookup(settings, INDEL_POLY_A))
+ hashAdd(settings, INDEL_POLY_A, cloneString("on"));
+if (!hashLookup(settings, "showDiffBasesMaxZoom"))
+ hashAdd(settings, "showDiffBasesMaxZoom", cloneString(BAM_DEFAULT_SHOW_DIFF_BASES_MAX_ZOOM));
+}
+
/****** base position (ruler) controls *******/
static char *zoomOptions[] =
{
ZOOM_1PT5X,
ZOOM_3X,
ZOOM_10X,
ZOOM_100X,
ZOOM_BASE
};
void zoomRadioButtons(char *var, char *curVal)
/* Make a list of radio buttons for all zoom options */
{
int i;
@@ -7462,30 +7484,34 @@
for (var i=0; i < inputs.length; i++) { \
if (inputs[i].type == 'radio') { \
inputs[i].checked = (inputs[i].value == '%s'); \
} \
} \
}"
void bamCfgUi(struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed)
/* BAM: short-read-oriented alignment file format. */
{
boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
char cartVarName[1024];
printf("
| ",boxed?" width='100%'":"");
+bamAddBaseAndIndelSettings(tdb);
+// Deal with tdb being from a subtrack when a view is being configured, ugh:
+if (differentString(tdb->track, name) && tdb->parent != NULL && sameString(tdb->parent->type, "bam"))
+ bamAddBaseAndIndelSettings(tdb->parent);
#ifdef NOTNOW // temporarily (?) remove this check box because code doesn't allow for setting wiggle options
char *showWig = cartOrTdbString(cart, tdb, BAMWIG_MODE, "0");
safef(cartVarName, sizeof(cartVarName), "%s.%s", name, BAMWIG_MODE);
cgiMakeCheckBox(cartVarName, SETTING_IS_ON(showWig));
printf(" | Only show coverage of reads | ");
printf("
\n");
#endif
printf("| \n");
char *showNames = cartOrTdbString(cart, tdb, BAM_SHOW_NAMES, "0");
safef(cartVarName, sizeof(cartVarName), "%s.%s", name, BAM_SHOW_NAMES);
cgiMakeCheckBox(cartVarName, SETTING_IS_ON(showNames));
printf(" | Display read names | ");
if (boxed && fileExists(hHelpFile("hgBamTrackHelp")))
printf(" | ");
safef(cartVarName, sizeof(cartVarName), "%s." BAM_PAIR_ENDS_BY_NAME, name);
cgiMakeCheckBox(cartVarName, SETTING_IS_ON(doPairing));
printf(" | Attempt to join paired end reads by name |
\n");
}
printf("| Minimum alignment quality:\n");
safef(cartVarName, sizeof(cartVarName), "%s." BAM_MIN_ALI_QUAL, name);
cgiMakeIntVar(cartVarName,
atoi(cartOrTdbString(cart, tdb, BAM_MIN_ALI_QUAL, BAM_MIN_ALI_QUAL_DEFAULT)), 4);
printf(" |
");
-if (isCustomTrack(name))
- {
- // Auto-magic baseColor defaults for BAM, same as in hgTracks.c newCustomTrack
- hashAdd(tdb->settingsHash, BASE_COLOR_USE_SEQUENCE, cloneString("lfExtra"));
- hashAdd(tdb->settingsHash, BASE_COLOR_DEFAULT, cloneString("diffBases"));
- hashAdd(tdb->settingsHash, SHOW_DIFF_BASES_ALL_SCALES, cloneString("."));
- hashAdd(tdb->settingsHash, "showDiffBasesMaxZoom", cloneString("100"));
- }
baseColorDropLists(cart, tdb, name);
puts("
");
indelShowOptionsWithName(cart, tdb, name);
printf("
\n");
printf("Additional coloring modes:
\n");
safef(cartVarName, sizeof(cartVarName), "%s." BAM_COLOR_MODE, name);
char *selected = cartOrTdbString(cart, tdb, BAM_COLOR_MODE, BAM_COLOR_MODE_DEFAULT);
cgiMakeRadioButton(cartVarName, BAM_COLOR_MODE_STRAND, sameString(selected, BAM_COLOR_MODE_STRAND));
printf("Color by strand (blue for +, red for -)
\n");
cgiMakeRadioButton(cartVarName, BAM_COLOR_MODE_GRAY, sameString(selected, BAM_COLOR_MODE_GRAY));
printf("Use gray for\n");
char cartVarName2[1024];
safef(cartVarName2, sizeof(cartVarName2), "%s." BAM_GRAY_MODE, name);
int grayMenuSize = canPair ? ArraySize(grayLabels) : ArraySize(grayLabels)-1;
char *sel2 = cartOrTdbString(cart, tdb, BAM_GRAY_MODE, BAM_GRAY_MODE_DEFAULT);