c28867b853a769949049ae459cee687bcad25aca kate Fri Jul 24 13:07:01 2015 -0700 Add support for comparison graphs (2 graphs, one top and one below inverted, based on splitting samples by sex or age). First cut of display only. refs #15645 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index f61c200..1d02452 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -6700,41 +6700,73 @@ /* LRG Transcripts: Locus Reference Genomic transcript sequences mapped to assembly. */ { boxed = cfgBeginBoxAndTitle(tdb, boxed, title); printf("<TABLE%s><TR><TD>",boxed?" width='100%'":""); baseColorDrawOptDropDown(cart, tdb); indelShowOptionsWithNameExt(cart, tdb, name, "LRG transcript sequence", FALSE, FALSE); cfgEndBox(boxed); } void gtexGeneUi(struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed) /* GTEx (Genotype Tissue Expression) per gene data */ { boxed = cfgBeginBoxAndTitle(tdb, boxed, title); printf("<TABLE%s><TR><TD>",boxed?" width='100%'":""); +char cartVarName[1024]; + // Color scheme printf("<B>Tissue color scheme:</B>\n"); -char cartVarName[1024]; safef(cartVarName, sizeof(cartVarName), "%s." GTEX_COLORS, name); char *selected = cartCgiUsualString(cart, cartVarName, GTEX_COLORS_DEFAULT); boolean isGtexColors = sameString(selected, GTEX_COLORS_GTEX); cgiMakeRadioButton(cartVarName, GTEX_COLORS_GTEX, isGtexColors); printf("GTEx\n"); cgiMakeRadioButton(cartVarName, GTEX_COLORS_RAINBOW, !isGtexColors); printf("rainbow\n"); +// Graph type +printf("<p><b>Expression graph:</b><br>\n"); +safef(cartVarName, sizeof(cartVarName), "%s." GTEX_GRAPH, name); +char *graphType = cartCgiUsualString(cart, cartVarName, GTEX_GRAPH_DEFAULT); + +boolean isRaw = differentString(graphType, GTEX_GRAPH_NORMAL); +printf(" \n"); +cgiMakeRadioButton(cartVarName, GTEX_GRAPH_RAW, isRaw); +printf("raw<br>\n"); + +boolean isSex = sameString(graphType, GTEX_GRAPH_SEX); +printf(" \n"); +printf(" \n"); +cgiMakeRadioButton(cartVarName, GTEX_GRAPH_SEX, isSex); +printf("compare by sex<br>\n"); + +boolean isAge = sameString(graphType, GTEX_GRAPH_AGE); +printf(" \n"); +printf(" \n"); +cgiMakeRadioButton(cartVarName, GTEX_GRAPH_SEX, isAge); +printf("compare by age\n"); + +char cartVarAge[1024]; +safef(cartVarAge, sizeof(cartVarAge), "%s." GTEX_GRAPH_AGE_YEARS, name); +cgiMakeIntVarInRange(cartVarAge, GTEX_GRAPH_AGE_DEFAULT, "age range is 20-70 years", 2, "20", "70"); +printf("years<br>\n"); + +printf(" \n"); +cgiMakeRadioButton(cartVarName, GTEX_GRAPH_NORMAL, !isRaw); +printf("normalized\n"); + cfgEndBox(boxed); } struct trackDb *rFindView(struct trackDb *forest, char *view) // Return the trackDb on the list that matches the view tag. Prefers ancestors before decendents { struct trackDb *tdb; for (tdb = forest; tdb != NULL; tdb = tdb->next) { char *viewSetting = trackDbSetting(tdb, "view"); if (sameOk(viewSetting, view) || sameOk(tagEncode(viewSetting), view)) return tdb; } for (tdb = forest; tdb != NULL; tdb = tdb->next) {