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(" "); -gtexEqtlProbability(cart, track, tdb); -puts("</div>"); +gtexEqtlUiProbability(cart, track, tdb); +puts(" "); + +/* 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(" "); jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);