244bcc8165458cea7030fbe22f7a8974ba1f78ce kate Wed Jan 13 16:51:51 2016 -0800 First cut sortable table to select tissues. refs #15645 diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c index 588f91c..c770950 100644 --- src/hg/lib/gtexUi.c +++ src/hg/lib/gtexUi.c @@ -1,218 +1,333 @@ /* 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" +#define SYSTEM_BRAIN "Brain" +#define SYSTEM_REPRODUCTIVE "Reproductive" +#define SYSTEM_GASTRO "Digestive" + +#define SYSTEM_ENDOCRINE "Endocrine" +#define SYSTEM_CARDIO "Cardiovascular" +#define SYSTEM_OTHER "Other" + + +static char *makeTissueColorPatch(struct gtexTissue *tis) +{ +char buf[256]; +safef(buf, sizeof(buf), "
\n", + "gtexGene.sortOrder", "tissue=+ samples=+ organ=+ system=+"); +puts(" | "); + +printf(" | Tissue | ", onClick); + +printf("Samples | ", onClick); + +printf("Organ | ", onClick); + +printf("System | ", onClick); +puts("\n
---|---|---|---|---|---|
", + name, tis->name, isChecked ? "CHECKED" : ""); + // color patch + printf("\n%s", makeTissueColorPatch(tis)); + // tissue name + printf("\n | %s | ", tis->description); + // sample count + int samples = hashIntValDefault(tscHash, tis->name, 0); + printf("\n%d | ", samples, samples); + // organ + printf("\n%s | ", tis->organ); + // system + printf("\n%s | ", getSystem(tis)); + puts("\n
",boxed?" width='100%'":"");
char cartVar[1024];
char *selected = NULL;
/* Sample selection */
printf("Samples: ");
safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_SAMPLES);
selected = cartCgiUsualString(cart, cartVar, GTEX_SAMPLES_DEFAULT);
boolean isAllSamples = sameString(selected, GTEX_SAMPLES_ALL);
cgiMakeRadioButton(cartVar, GTEX_SAMPLES_ALL, isAllSamples);
printf("All\n");
cgiMakeRadioButton(cartVar, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples);
printf("Compare by gender\n");
printf("");
/* Comparison type */
printf(" Comparison display:\n"); 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(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(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(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_MAX_LIMIT);
// TODO: set max and initial limits from gtexInfo table
int viewMax = cartCgiUsualInt(cart, cartVar, GTEX_MAX_LIMIT_DEFAULT);
cgiMakeIntVar(cartVar, viewMax, 4);
printf(" RPKM (range 10-180000) Tissue colors:\n"); safef(cartVar, sizeof(cartVar), "%s.%s", name, GTEX_COLORS); selected = cartCgiUsualString(cart, cartVar, GTEX_COLORS_DEFAULT); boolean isGtexColors = sameString(selected, GTEX_COLORS_GTEX); cgiMakeRadioButton(cartVar, GTEX_COLORS_GTEX, isGtexColors); printf("GTEx\n"); 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 *tissues = gtexGetTissues(); 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")) +char *selectType = cgiUsualString("tis", "table"); +if (sameString(selectType, "group")) makeGroupedTissueCheckboxes(cartVar, tissues, selectedValues); +else if (sameString(selectType, "table")) + makeTableTissueCheckboxes(cartVar, tissues, selectedValues, isPopup); else makeAllTissueCheckboxes(cartVar, tissues, selectedValues); cfgEndBox(boxed); } |