64d9809600ba9cf12c331e053533886817523405 kate Thu Jun 29 18:19:09 2017 -0700 Add trackUi (body map and right-click versions) and implement filters in hgTracks. refs #15646 diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c index 986c326..4c90ef3 100644 --- src/hg/lib/gtexUi.c +++ src/hg/lib/gtexUi.c @@ -22,38 +22,43 @@ #define SYSTEM_OTHER "Other" /* Restrict features on right-click (popup) version */ static boolean isPopup = FALSE; /* Path to Body Map-based track configuration */ static char *_hgGtexTrackSettingsName = "../cgi-bin/hgGtexTrackSettings"; boolean gtexIsGeneTrack(char *trackName) /* Identify GTEx gene track so custom trackUi CGI can be launched */ { return startsWith(GTEX_GENE_TRACK_BASENAME, trackName); } -char *gtexGeneTrackUiName() +boolean gtexIsEqtlTrack(char *trackName) +/* Identify GTEx eQTL track so custom trackUi CGI can be launched */ +{ +return startsWith(GTEX_EQTL_TRACK_BASENAME, trackName); +} + +char *gtexTrackUiName() /* Refer to Body Map CGI if suitable */ { // Display body map configuration page if user is on a browser we've tested enum browserType bt = cgiBrowser(); if (bt == btChrome || bt == btFF || bt == btSafari) return(_hgGtexTrackSettingsName); - return hgTrackUiName(); } /* Convenience functions for tissue filter controls */ static char *makeTissueColorPatch(struct gtexTissue *tis) /* Display a box colored by defined tissue color */ { char buf[256]; safef(buf, sizeof(buf), "
",
+ isPopup ? 75 : 100, boxed ?" width='100%'":"");
+
+char cartVar[1024];
+
+/* Gene filter */
+puts(" ");
+gtexEqtlGene(cart, track, tdb);
+puts(" \n");
+
+/* Absolute value of effect size */
+puts("");
+gtexEqtlEffectSize(cart, track, tdb);
+
+/* Probability eQTL is in CAVIAR 95% causal set */
+puts(" ");
+gtexEqtlProbability(cart, track, tdb);
+puts(" ");
+
+/* Tissue filter */
+printf(""); +printf(" Tissues:\n");
+safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_TISSUE_SELECT);
+if (isPopup)
+ {
+ printf("",
+ hTrackUiForTrack(track), track);
+ }
+else
+ {
+ jsMakeCheckboxGroupSetClearButton(cartVar, TRUE);
+ puts(" ");
+ jsMakeCheckboxGroupSetClearButton(cartVar, FALSE);
+ }
+printf(" ");
+char *version = gtexVersion(tdb->table);
+struct gtexTissue *tissues = gtexGetTissues(version);
+struct slName *selectedValues = NULL;
+if (cartListVarExistsAnyLevel(cart, tdb, FALSE, GTEX_TISSUE_SELECT))
+ 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 |