1888f6dd81f220f2ccd0e49c9b8a9a817ae0618c kate Thu Nov 10 15:59:18 2016 -0800 Cleanup C code. refs #17369 diff --git src/hg/lib/gtexUi.c src/hg/lib/gtexUi.c index fba09a2..8833fa3 100644 --- src/hg/lib/gtexUi.c +++ src/hg/lib/gtexUi.c @@ -272,88 +272,132 @@ slReverse(&allTissues); makeGroupCheckboxes(name, NULL, allTissues); puts(""); char buf[512]; safef(buf, sizeof(buf), "%s%s", cgiMultListShadowPrefix(), name); cgiMakeHiddenVar(buf, "0"); } void gtexPortalLink(char *geneId) /* print URL to GTEX portal gene expression page using Ensembl Gene Id*/ { printf("" "View at GTEx portal\n", geneId); } -void gtexGeneUi(struct cart *cart, struct trackDb *tdb, char *track, char *title, boolean boxed) -/* GTEx (Genotype Tissue Expression) per gene data */ -{ -if (cartVarExists(cart, "ajax")) - isPopup = TRUE; - -boxed = cfgBeginBoxAndTitle(tdb, boxed, title); -printf("\n\n
", - isPopup ? 75 : 100, boxed ?" width='100%'":""); +/* Convenience functions shared by hgTrackUi and hgGtexTrackSettings. hgTrackUi is for now still + * available from right-click */ +void gtexGeneUiGeneLabel(struct cart *cart, char *track, struct trackDb *tdb) +/* Radio buttons to select format of gene label */ +{ char cartVar[1024]; -char buf[512]; - -/* Gene labels */ -printf("
"); char *geneLabel = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), GTEX_LABEL, GTEX_LABEL_DEFAULT); printf("Label: "); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_LABEL); cgiMakeRadioButton(cartVar, GTEX_LABEL_SYMBOL , sameString(GTEX_LABEL_SYMBOL, geneLabel)); printf("%s ", "gene symbol"); cgiMakeRadioButton(cartVar, GTEX_LABEL_ACCESSION, sameString(GTEX_LABEL_ACCESSION, geneLabel)); printf("%s ", "accession"); cgiMakeRadioButton(cartVar, GTEX_LABEL_BOTH, sameString(GTEX_LABEL_BOTH, geneLabel)); printf("%s ", "both"); -printf("
\n"); +} -/* Filter on coding genes */ -printf("
"); -printf("Limit to protein coding genes:\n"); +void gtexGeneUiCodingFilter(struct cart *cart, char *track, struct trackDb *tdb) +/* Checkbox to restrict display to protein coding genes */ +{ +char cartVar[1024]; +puts("Limit to protein coding genes:\n"); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_CODING_GENE_FILTER); boolean isCodingOnly = cartCgiUsualBoolean(cart, cartVar, GTEX_CODING_GENE_FILTER_DEFAULT); cgiMakeCheckBox(cartVar, isCodingOnly); +} -/* Show exons in gene model */ -printf("  Show GTEx gene model\n"); +void gtexGeneUiGeneModel(struct cart *cart, char *track, struct trackDb *tdb) +/* Checkbox to enable display of GTEx gene model */ +{ +char cartVar[1024]; +puts("  Show GTEx gene model\n"); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_SHOW_EXONS); boolean showExons = cartCgiUsualBoolean(cart, cartVar, GTEX_SHOW_EXONS_DEFAULT); cgiMakeCheckBox(cartVar, showExons); -printf("
"); +} -/* Data transform. When selected, the next control (view limits max) is disabled */ -printf("
Log10 transform:\n"); +void gtexGeneUiLogTransform(struct cart *cart, char *track, struct trackDb *tdb) +/* Checkbox to select log-transformed RPKM values */ +{ +char cartVar[1024]; +char buf[512]; +puts("Log10 transform:\n"); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_LOG_TRANSFORM); boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, GTEX_LOG_TRANSFORM_DEFAULT); safef(buf, sizeof buf, "onchange='gtexTransformChanged(\"%s\")'", track); cgiMakeCheckBoxJS(cartVar, isLogTransform, buf); +} -/* Viewing limits max. This control is disabled if log transform is selected */ -// construct class so JS can toggle +void gtexGeneUiViewLimits(struct cart *cart, char *track, struct trackDb *tdb) +/* Set viewing limits if log transform not checked */ +{ +char cartVar[1024]; +char buf[512]; +boolean isLogTransform = cartCgiUsualBoolean(cart, cartVar, GTEX_LOG_TRANSFORM_DEFAULT); safef(buf, sizeof buf, "%sViewLimitsMaxLabel %s", track, isLogTransform ? "disabled" : ""); -printf("  View limits maximum:\n", buf); +printf("View limits maximum:\n", buf); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_MAX_LIMIT); int viewMax = cartCgiUsualInt(cart, cartVar, GTEX_MAX_LIMIT_DEFAULT); cgiMakeIntVarWithExtra(cartVar, viewMax, 4, isLogTransform ? "disabled" : ""); char *version = gtexVersion(tdb->table); printf(" RPKM (range 0-%d)\n", buf, round(gtexMaxMedianScore(version))); -printf("
"); +} + +void gtexGeneUi(struct cart *cart, struct trackDb *tdb, char *track, char *title, boolean boxed) +/* GTEx (Genotype Tissue Expression) per gene data */ +{ +if (cartVarExists(cart, "ajax")) + isPopup = TRUE; + +boxed = cfgBeginBoxAndTitle(tdb, boxed, title); +printf("\n\n
", + isPopup ? 75 : 100, boxed ?" width='100%'":""); + +char cartVar[1024]; + +/* Gene labels */ +puts("
"); +gtexGeneUiGeneLabel(cart, track, tdb); +puts("
\n"); + +/* Filter on coding genes */ +puts("
"); +gtexGeneUiCodingFilter(cart, track, tdb); + +/* Show exons in gene model */ +puts("  "); +gtexGeneUiGeneModel(cart, track, tdb); +puts("
"); + +/* Data transform. When selected, the next control (view limits max) is disabled */ + +puts("
"); +gtexGeneUiLogTransform(cart, track, tdb); + +/* Viewing limits max. This control is disabled if log transform is selected */ +// construct class so JS can toggle +puts("  "); +gtexGeneUiViewLimits(cart, track, tdb); +puts("
"); #ifdef COMPARISON /* Sample selection */ printf("
Samples: "); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_SAMPLES); char *selected = cartCgiUsualString(cart, cartVar, GTEX_SAMPLES_DEFAULT); boolean isAllSamples = sameString(selected, GTEX_SAMPLES_ALL); safef(buf, sizeof buf, "onchange='gtexSamplesChanged(\"%s\")'", track); char *command = buf; cgiMakeOnClickRadioButton(cartVar, GTEX_SAMPLES_ALL, isAllSamples, command); printf("All\n"); cgiMakeOnClickRadioButton(cartVar, GTEX_SAMPLES_COMPARE_SEX, !isAllSamples, command); printf("Compare by gender\n"); printf("
"); @@ -389,30 +433,31 @@ /* Tissue filter */ printf("
"); printf("
Tissues:\n"); safef(cartVar, sizeof(cartVar), "%s.%s", track, GTEX_TISSUE_SELECT); if (isPopup) { printf("", 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
\n"); cfgEndBox(boxed); }