7b7d273fd3aeee222d5ee8540298ac6dee662605
kate
  Wed Sep 13 11:45:23 2017 -0700
Add UI setting to toggle display of tissue color patches (for single-tissue eQTL's.  It can be distracting in large regions. refs #15646

diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c
index 5cdf483..5e7e6fb 100644
--- src/hg/lib/gtexUi.c
+++ src/hg/lib/gtexUi.c
@@ -479,96 +479,112 @@
     selectedValues = cartOptionalSlNameListClosestToHome(cart, tdb, FALSE, GTEX_TISSUE_SELECT);
 char *selectType = cgiUsualString("tis", "table");
 if (sameString(selectType, "group"))
     makeGroupedTissueCheckboxes(cartVar, tissues, selectedValues);
 else if (sameString(selectType, "table"))
     makeTableTissueCheckboxes(cartVar, tissues, selectedValues, cart, track, version);
 else
     makeAllTissueCheckboxes(cartVar, tissues, selectedValues);
 
 puts("\n</table>\n");
 cfgEndBox(boxed);
 }
 
 /* GTEx eQTL track configuration */
 
-void gtexEqtlGene(struct cart *cart, char *track, struct trackDb *tdb)
+void gtexEqtlUiGene(struct cart *cart, char *track, struct trackDb *tdb)
 /* Limit to selected gene */
 // TODO: autocomplete
 {
 char cartVar[1024];
 puts("<b>Limit to eQTLs for gene: </b>\n");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_EQTL_GENE);
 char *gene = cartCgiUsualString(cart, cartVar, "");
 cgiMakeTextVar(cartVar, gene, 20);
 }
 
 #define GTEX_EQTL_EFFECT_MAX       15362.9
 // Maximum V6p effect size for CAVIAR 95% eQTLs
 // TODO: add to gtexInfo table
 
-void gtexEqtlEffectSize(struct cart *cart, char *track, struct trackDb *tdb)
+void gtexEqtlUiEffectSize(struct cart *cart, char *track, struct trackDb *tdb)
 /* Limit to items with absolute value of effect size >= threshold.  Use largest
  * effect size in tissue list */
 {
 char cartVar[1024];
 puts("<b>Effect size minimum: </b>+-\n");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_EQTL_EFFECT);
 double effectMin = cartCgiUsualDouble(cart, cartVar, 0.0);
 cgiMakeDoubleVar(cartVar, effectMin, 7);
 printf(" FPKM (range 0-%0.1f)\n", GTEX_EQTL_EFFECT_MAX);
 }
 
-void gtexEqtlProbability(struct cart *cart, char *track, struct trackDb *tdb)
+void gtexEqtlUiProbability(struct cart *cart, char *track, struct trackDb *tdb)
 /* Limit to items with specified probability.  Use largest probability in tissue list,
  * which is score/1000, so use that */
 {
 char cartVar[1024];
 puts("<b>Probability minimum:</b>\n");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_EQTL_PROBABILITY);
 double probMin = cartCgiUsualDouble(cart, cartVar, GTEX_EQTL_PROBABILITY_DEFAULT);
 cgiMakeDoubleVar(cartVar, probMin, 3);
 printf(" (range 0-1.0)\n");
 }
 
+void gtexEqtlUiTissueColor(struct cart *cart, char *track, struct trackDb *tdb)
+/* Control visibility color patch to indicate tissue (can be distracting in large regions) */
+{
+char cartVar[1024];
+safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_EQTL_TISSUE_COLOR);
+boolean showTissueColor = cartCgiUsualBoolean(cart, cartVar, GTEX_EQTL_TISSUE_COLOR_DEFAULT);
+cgiMakeCheckBox(cartVar, showTissueColor);
+puts("<b>Display tissue color (if single tissue eQTL)</b>\n");
+}
+
 void gtexEqtlClusterUi(struct cart *cart, struct trackDb *tdb, char *track, char *title, 
                         boolean boxed)
 /* GTEx (Genotype Tissue Expression) eQTL clusters. Use this on right-click,
  * (when hgGtexTrackSettings can't be) */
 {
 if (cartVarExists(cart, "ajax"))
     isPopup = TRUE;
 
 boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
 printf("\n<table id=gtexEqtlClusterControls style='font-size:%d%%' %s>\n<tr><td>", 
         isPopup ? 75 : 100, boxed ?" width='100%'":"");
 
 char cartVar[1024];
 
 /* Gene filter  */
 puts("<div>");
-gtexEqtlGene(cart, track, tdb);
+gtexEqtlUiGene(cart, track, tdb);
 puts("</div>\n");
 
 /* Absolute value of effect size */
 puts("<div>");
-gtexEqtlEffectSize(cart, track, tdb);
+gtexEqtlUiEffectSize(cart, track, tdb);
+puts("</div>\n");
 
 /* Probability eQTL is in CAVIAR 95% causal set */
+puts("<div>");
 puts("&nbsp;&nbsp;");
-gtexEqtlProbability(cart, track, tdb);
-puts("</div>");
+gtexEqtlUiProbability(cart, track, tdb);
+puts("&nbsp;&nbsp;&nbsp;&nbsp;");
+
+/* Display or hide tissue color patch for single-tissue eQTL's */
+gtexEqtlUiTissueColor(cart, track, tdb);
+puts("</div>\n");
 
 /* Tissue filter */
 printf("<br>");
 printf("<div><b>Tissues:</b>\n");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_TISSUE_SELECT);
 if (isPopup)
     {
     printf("<a href='%s?g=%s'><button type='button'>Change</button><a>", 
                 hTrackUiForTrack(track), track);
     }
 else
     {
     jsMakeCheckboxGroupSetClearButton(cartVar, TRUE);
     puts("&nbsp;");
     jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);