5e5b469d59038d7717d302fd257dca1310b9d44a kate Tue Nov 24 08:52:47 2015 -0800 Add tissue filter to GTEX gene track. refs #15645 diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c index 110867c..2f89c4d 100644 --- src/hg/lib/gtexUi.c +++ src/hg/lib/gtexUi.c @@ -1,70 +1,214 @@ /* GTEx (Genotype Tissue Expression) track controls */ /* Copyright (C) 2015 The Regents of the University of California * See README in this or parent directory for licensing information. */ #include "cheapcgi.h" #include "cart.h" #include "hui.h" #include "trackDb.h" +#include "jsHelper.h" +#include "gtexTissue.h" #include "gtexUi.h" + +static char *makeTissueLabel(struct gtexTissue *tis) +{ +char buf[256]; +safef(buf, sizeof(buf), "
",boxed?" width='100%'":"");
-char cartVarName[1024];
+char cartVar[1024];
char *selected = NULL;
/* Sample selection */
printf("Samples: ");
-safef(cartVarName, sizeof(cartVarName), "%s.%s", name, GTEX_SAMPLES);
-selected = cartCgiUsualString(cart, cartVarName, GTEX_SAMPLES_DEFAULT);
+safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_SAMPLES);
+selected = cartCgiUsualString(cart, cartVar, GTEX_SAMPLES_DEFAULT);
boolean isAllSamples = sameString(selected, GTEX_SAMPLES_ALL);
-cgiMakeRadioButton(cartVarName, GTEX_SAMPLES_ALL, isAllSamples);
+cgiMakeRadioButton(cartVar, GTEX_SAMPLES_ALL, isAllSamples);
printf("All\n");
-cgiMakeRadioButton(cartVarName, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples);
+cgiMakeRadioButton(cartVar, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples);
printf("Compare by gender\n");
printf("");
/* Comparison type */
printf(" Comparison display:\n"); -safef(cartVarName, sizeof(cartVarName), "%s.%s", name, GTEX_COMPARISON_DISPLAY); -selected = cartCgiUsualString(cart, cartVarName, GTEX_COMPARISON_DEFAULT); +safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_COMPARISON_DISPLAY); +selected = cartCgiUsualString(cart, cartVar, GTEX_COMPARISON_DEFAULT); boolean isMirror = sameString(selected, GTEX_COMPARISON_MIRROR); -cgiMakeRadioButton(cartVarName, GTEX_COMPARISON_MIRROR, isMirror); -printf("Two graphs\n"); -cgiMakeRadioButton(cartVarName, GTEX_COMPARISON_DIFF, !isMirror); +cgiMakeRadioButton(cartVar, GTEX_COMPARISON_DIFF, !isMirror); printf("Difference graph\n"); +cgiMakeRadioButton(cartVar, GTEX_COMPARISON_MIRROR, isMirror); +printf("Two graphs\n"); printf(" "); /* Data transform */ -printf("Log10 transform:\n"); -safef(cartVarName, sizeof(cartVarName), "%s.%s", name, GTEX_LOG_TRANSFORM); -boolean isLogTransform = cartCgiUsualBoolean(cart, cartVarName, GTEX_LOG_TRANSFORM_DEFAULT); -cgiMakeCheckBox(cartVarName, isLogTransform); +printf(" Log10 transform:\n");
+safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_LOG_TRANSFORM);
+boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, GTEX_LOG_TRANSFORM_DEFAULT);
+cgiMakeCheckBox(cartVar, isLogTransform);
/* Viewing limits max */
printf(" View limits maximum:\n");
-safef(cartVarName, sizeof(cartVarName), "%s.%s", name, GTEX_MAX_LIMIT);
+safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_MAX_LIMIT);
// TODO: set max and initial limits from gtexInfo table
-int viewMax = cartCgiUsualInt(cart, cartVarName, GTEX_MAX_LIMIT_DEFAULT);
-cgiMakeIntVar(cartVarName, viewMax, 4);
+int viewMax = cartCgiUsualInt(cart, cartVar, GTEX_MAX_LIMIT_DEFAULT);
+cgiMakeIntVar(cartVar, viewMax, 4);
printf(" RPKM (range 10-180000) Tissue colors:\n"); -safef(cartVarName, sizeof(cartVarName), "%s.%s", name, GTEX_COLORS); -selected = cartCgiUsualString(cart, cartVarName, GTEX_COLORS_DEFAULT); +safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_COLORS); +selected = cartCgiUsualString(cart, cartVar, GTEX_COLORS_DEFAULT); boolean isGtexColors = sameString(selected, GTEX_COLORS_GTEX); -cgiMakeRadioButton(cartVarName, GTEX_COLORS_GTEX, isGtexColors); +cgiMakeRadioButton(cartVar, GTEX_COLORS_GTEX, isGtexColors); printf("GTEx\n"); -cgiMakeRadioButton(cartVarName, GTEX_COLORS_RAINBOW, !isGtexColors); +cgiMakeRadioButton(cartVar, GTEX_COLORS_RAINBOW, !isGtexColors); printf("Rainbow\n"); printf(" "); +/* Tissue filter */ +printf("Tissue selection:\n"); +safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_TISSUE_SELECT); +jsMakeCheckboxGroupSetClearButton(cartVar, TRUE); +puts(" "); +jsMakeCheckboxGroupSetClearButton(cartVar, FALSE); +struct gtexTissue *tis = NULL, *tissues = gtexGetTissues(); +int i; +int count = slCount(tissues); +struct slName *selectedValues = NULL; +if (cartListVarExistsAnyLevel(cart, tdb, FALSE, GTEX_TISSUE_SELECT)) + selectedValues = cartOptionalSlNameListClosestToHome(cart, tdb, FALSE, GTEX_TISSUE_SELECT); +if (sameString(cgiUsualString("tis", "group"), "group")) + makeGroupedTissueCheckboxes(cartVar, tissues, selectedValues); +else + makeAllTissueCheckboxes(cartVar, tissues, selectedValues); + cfgEndBox(boxed); } |