29ee334981ae71d1c4caefcd64f0db3ec26f7547 markd Thu Mar 22 18:04:50 2018 -0700 add support to using gencode gene id in all gencode track (rm21157) diff --git src/hg/lib/hui.c src/hg/lib/hui.c index e9b1fc9..c992b97 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -6358,51 +6358,82 @@ printf("<TD align='left'%s> (%d to %d)",(filterByRange?"":" colspan=3"),minLimit, maxLimit); if (trackDbSettingClosestToHome(tdb, GRAY_LEVEL_SCORE_MIN) != NULL) { printf("<TR><TD align='right'colspan=5>"); scoreGrayLevelCfgUi(cart, tdb, name, 1000); puts("</TR>"); } } if (opened) { puts("</TABLE>"); cfgEndBox(boxed); } } +static void gencodeLabelControls(char *db, struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed, boolean parentLevel) +/* generate label checkboxes for GENCODE. */ +{ +// See hgTracks/gencodeTracks.c:registerProductionTrackHandlers() +// and hgTracks/gencodeTracks.c:assignConfiguredName() +char *labelsNames[][2] = { + {"gene name", "geneName"}, + {"gene id", "geneId"}, + {"transcript id", "transcriptId"}, + {NULL, NULL} +}; +int i; +for (i = 0; labelsNames[i][0] != NULL; i++) + { + char varName[64], varSuffix[64]; + safef(varSuffix, sizeof(varSuffix), "label.%s", labelsNames[i][1]); + safef(varName, sizeof(varName), "%s.%s", name, varSuffix); + char *value = cartUsualStringClosestToHome(cart, tdb, parentLevel, varSuffix, NULL); + boolean checked = (value != NULL) && !sameString(value, "0"); + printf("%s%s: ", (i > 0) ? " " : "", labelsNames[i][0]); + cgiMakeCheckBoxMore(varName, checked, NULL); + } +} + void genePredCfgUi(char *db, struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed) -/* Put up gencode-specific controls */ +/* Put up genePred-specific controls */ { char varName[64]; boolean parentLevel = isNameAtParentLevel(tdb,name); char *geneLabel = cartUsualStringClosestToHome(cart, tdb,parentLevel, "label", "gene"); boxed = cfgBeginBoxAndTitle(tdb, boxed, title); labelCfgUi(db, cart, tdb); if (sameString(name, "acembly")) { char *acemblyClass = cartUsualStringClosestToHome(cart,tdb,parentLevel,"type", acemblyEnumToString(0)); printf("<p><b>Gene Class: </b>"); acemblyDropDown("acembly.type", acemblyClass); printf(" "); } else if (startsWith("wgEncodeGencode", name) - || sameString("wgEncodeSangerGencode", name) + || sameString("wgEncodeSangerGencode", name)) + { + // new GENCODEs + gencodeLabelControls(db, cart, tdb, name, title, boxed, parentLevel); + } +else if (sameString("wgEncodeSangerGencode", name) || (startsWith("encodeGencode", name) && !sameString("encodeGencodeRaceFrags", name))) { + // GENCODE pilot (see hgTracks/gencodeTracks.c:registerPilotTrackHandlers() + // and hgTracks/simpleTracks.c:genePredAssignConfiguredName() printf("<B>Label:</B> "); safef(varName, sizeof(varName), "%s.label", name); cgiMakeRadioButton(varName, "gene", sameString("gene", geneLabel)); printf("%s ", "gene"); cgiMakeRadioButton(varName, "accession", sameString("accession", geneLabel)); printf("%s ", "accession"); cgiMakeRadioButton(varName, "both", sameString("both", geneLabel)); printf("%s ", "both"); cgiMakeRadioButton(varName, "none", sameString("none", geneLabel)); printf("%s ", "none"); } if (trackDbSettingClosestToHomeOn(tdb, "nmdFilter")) { boolean nmdDefault = FALSE;