src/hg/hgTrackUi/hgTrackUi.c 1.504
1.504 2009/10/16 00:34:30 angie
Added enhanced coloring options (user-requested) to hgTrackUi and implemented 3 out of 5 in hgTracks.
Index: src/hg/hgTrackUi/hgTrackUi.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTrackUi/hgTrackUi.c,v
retrieving revision 1.503
retrieving revision 1.504
diff -b -B -U 4 -r1.503 -r1.504
--- src/hg/hgTrackUi/hgTrackUi.c 28 Sep 2009 21:51:10 -0000 1.503
+++ src/hg/hgTrackUi/hgTrackUi.c 16 Oct 2009 00:34:30 -0000 1.504
@@ -2143,25 +2143,80 @@
hFreeConn(&conn);
}
#ifdef USE_BAM
+static char *grayLabels[] =
+ { "alignment quality",
+ "NOT IMPL'D: base qualities",
+ "unpaired ends",
+ };
+static char *grayValues[] =
+ { BAM_GRAY_MODE_ALI_QUAL,
+ BAM_GRAY_MODE_BASE_QUAL,
+ BAM_GRAY_MODE_UNPAIRED,
+ };
+
+// When a child input of a radio set is changed, click its radio button:
+#define UPDATE_RADIO_FORMAT "%s=\"\
+ var inputs = document.getElementsByName('%s'); \
+ if (inputs) { \
+ for (var i=0; i < inputs.length; i++) { \
+ if (inputs[i].type == 'radio') { \
+ inputs[i].checked = (inputs[i].value == '%s'); \
+ } \
+ } \
+ }\""
+
void bamUi(struct trackDb *tdb)
/* BAM: short-read-oriented alignment file format. */
{
-char cartVarName[512];
+char cartVarName[1024];
+boolean canPair = (trackDbSetting(tdb, BAM_PAIR_ENDS_BY_NAME) != NULL);
puts("<BR>");
-if (trackDbSetting(tdb, "pairEndsByName") != NULL)
+if (canPair)
{
printf("<B>Attempt to join paired end reads by name:</B>\n");
- safef(cartVarName, sizeof(cartVarName), "%s_pairEndsByName", tdb->tableName);
+ safef(cartVarName, sizeof(cartVarName), "%s_" BAM_PAIR_ENDS_BY_NAME, tdb->tableName);
cartMakeCheckBox(cart, cartVarName, TRUE);
puts("<BR>");
}
printf("<B>Minimum alignment quality:</B>\n");
-safef(cartVarName, sizeof(cartVarName), "%s_minAliQual", tdb->tableName);
-cartMakeIntVar(cart, cartVarName, 0, 4);
+safef(cartVarName, sizeof(cartVarName), "%s_" BAM_MIN_ALI_QUAL, tdb->tableName);
+cartMakeIntVar(cart, cartVarName,
+ atoi(trackDbSettingOrDefault(tdb, BAM_MIN_ALI_QUAL, BAM_MIN_ALI_QUAL_DEFAULT)), 4);
puts("<BR>");
baseColorDrawOptDropDown(cart, tdb);
+printf("<BR>\n");
+printf("<B>Additional coloring modes:</B><BR>\n");
+safef(cartVarName, sizeof(cartVarName), "%s_" BAM_COLOR_MODE, tdb->tableName);
+char *selected = cartUsualString(cart, cartVarName,
+ trackDbSettingOrDefault(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 -)<BR>\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, tdb->tableName);
+int grayMenuSize = canPair ? ArraySize(grayLabels) : ArraySize(grayLabels)-1;
+char *sel2 = cartUsualString(cart, cartVarName2,
+ trackDbSettingOrDefault(tdb, BAM_GRAY_MODE, BAM_GRAY_MODE_DEFAULT));
+char onChange[2048];
+safef(onChange, sizeof(onChange), UPDATE_RADIO_FORMAT,
+ "onChange", cartVarName, BAM_COLOR_MODE_GRAY);
+cgiMakeDropListFull(cartVarName2, grayLabels, grayValues, grayMenuSize, sel2, onChange);
+printf("<BR>\n");
+cgiMakeRadioButton(cartVarName, BAM_COLOR_MODE_TAG, sameString(selected, BAM_COLOR_MODE_TAG));
+printf("NOT IMPL'D: Use R,G,B colors specified in user-defined tag ");
+safef(cartVarName2, sizeof(cartVarName2), "%s_" BAM_COLOR_TAG, tdb->tableName);
+sel2 = cartUsualString(cart, cartVarName2,
+ trackDbSettingOrDefault(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("<BR>\n");
+cgiMakeRadioButton(cartVarName, BAM_COLOR_MODE_OFF, sameString(selected, BAM_COLOR_MODE_OFF));
+printf("No additional coloring<BR>\n");
+
//TODO: include / exclude flags
}
#endif//def USE_BAM