%s | ", labels[i]); char cartVar[512]; safef(cartVar, sizeof(cartVar), "%s.%s%s", track, attribute, (varsAreOld ? snp125OldColorVarToNew(vars[i], attribute) : vars[i])); char *defaultCol = defaults[i]; if (varsAreOld) defaultCol = cartUsualString(cart, vars[i], defaultCol); char *selected = cartUsualString(cart, cartVar, defaultCol); cgiMakeDropListWithVals(cartVar, snp125ColorLabel, snp125ColorLabel, snp125ColorArraySize, selected); printf(" | "); } printf(" |
Items are be colored by allele frequency on a red-blue spectrum, " "with red representing rare alleles and blue representing common alleles. " "Items with no allele frequency data are colored black.
"); break; default: errAbort("Unrecognized value of enum snp125ColorSource (%d)", colorSourceCart); } jsEndCollapsibleSection(); } void snp125Ui(struct trackDb *tdb) /* UI for dbSNP version 125 and later. */ { char *orthoTable = snp125OrthoTable(tdb, NULL); int version = snpVersion(tdb->track); char cartVar[512]; jsInit(); if (version < 130) snp125ValidArraySize--; // no by-1000genomes if (isNotEmpty(orthoTable) && hTableExists(database, orthoTable)) { printf("LD values | \n- "); radioButton(var, val, "red"); printf(" | \n"); radioButton(var, val, "green"); printf(" | \n"); radioButton(var, val, "blue"); printf(" | \n||||
Outlines | \n- "); radioButton(var, val, "red"); printf(" | \n"); radioButton(var, val, "green"); printf(" | \n"); radioButton(var, val, "blue"); printf(" | \n"); radioButton(var, val, "yellow"); printf(" | \n"); radioButton(var, val, "black"); printf(" | \n"); radioButton(var, val, "white"); printf(" | \n"); radioButton(var, val, "none"); printf(" | \n
Add filters:
\n" );
puts("Gene Context: " );
cgiMakeDropList(GENO_REGION, menu, menuSize,
cartCgiUsualString(cart, GENO_REGION, menu[0]));
slFreeList(&sList);
freez(&menu);
menuSize = 3;
menu = needMem((size_t)(menuSize * sizeof(char *)));
i = 0;
menu[i++] = POLY_SOURCE_DEFAULT;
menu[i++] = "yes";
menu[i++] = "no";
puts("
\nInsertion found in reference sequence: ");
cgiMakeDropList(POLY_SOURCE, menu, menuSize,
cartCgiUsualString(cart, POLY_SOURCE, menu[0]));
freez(&menu);
for (i = 0; i < 3; ++i)
{
safef(query, sizeof(query),
"SELECT polySubfamily FROM %s GROUP BY polySubfamily ORDER BY polySubfamily DESC", tableList[i]);
sr = sqlGetResult(conn, query);
while ((row = sqlNextRow(sr)) != NULL)
{
slNameStore(&sList, row[0]);
}
sqlFreeResult(&sr);
}
slNameSortCase(&sList);
menuSize = slCount(sList) + 1;
menu = needMem((size_t)(menuSize * sizeof(char *)));
i = 0;
menu[i++] = POLY_SUBFAMILY_DEFAULT;
for (item = sList; item != NULL; item = item->next)
menu[i++] = item->name;
puts("
\nInsertion identified in sub-family: ");
cgiMakeDropList(POLY_SUBFAMILY, menu, menuSize,
cartCgiUsualString(cart, POLY_SUBFAMILY, menu[0]));
slFreeList(&sList);
freez(&menu);
safef(query, sizeof(query),
"SELECT ethnicGroup FROM polyGenotype GROUP BY ethnicGroup ORDER BY ethnicGroup DESC");
sr = sqlGetResult(conn, query);
while ((row = sqlNextRow(sr)) != NULL)
{
slNameStore(&sList, row[0]);
}
sqlFreeResult(&sr);
menuSize = slCount(sList) + 1;
menu = needMem((size_t)(menuSize * sizeof(char *)));
i = 0;
menu[i++] = ETHNIC_GROUP_DEFAULT;
for (item = sList; item != NULL; item = item->next)
menu[i++] = item->name;
puts("
\nEthnic group: ");
cgiMakeDropList(ETHNIC_GROUP, menu, menuSize,
cartCgiUsualString(cart, ETHNIC_GROUP, menu[0]));
slFreeList(&sList);
freez(&menu);
puts(" ");
radioButton(ETHNIC_GROUP_EXCINC,
cartUsualString(cart, ETHNIC_GROUP_EXCINC, ETHNIC_NOT_DEFAULT),
"include");
radioButton(ETHNIC_GROUP_EXCINC,
cartUsualString(cart, ETHNIC_GROUP_EXCINC, ETHNIC_NOT_DEFAULT),
"exclude");
puts("this ethnic group
\n");
#ifdef HAS_NO_MEANING
menuSize = 10;
menu = needMem((size_t)(menuSize * sizeof(char *)));
i = 0;
menu[i++] = "0.0"; menu[i++] = "0.1"; menu[i++] = "0.2"; menu[i++] = "0.3";
menu[i++] = "0.4"; menu[i++] = "0.5"; menu[i++] = "0.6"; menu[i++] = "0.7";
menu[i++] = "0.8"; menu[i++] = "0.9";
/* safety check on bad user input, they may have set them illegally
* in which case reset them to defaults 0.0 <= f <= 1.0
*/
double freqLow = sqlFloat(cartCgiUsualString(cart, ALLELE_FREQ_LOW, menu[0]));
double freqHi = sqlFloat(cartCgiUsualString(cart, ALLELE_FREQ_HI, menu[9]));
puts("
\nRestrict polymorphism frequency to: ");
if (freqLow < freqHi)
cgiMakeDropList(ALLELE_FREQ_LOW, menu, menuSize,
cartCgiUsualString(cart, ALLELE_FREQ_LOW, menu[0]));
else
cgiMakeDropList(ALLELE_FREQ_LOW, menu, menuSize, menu[0]);
i = 0;
menu[i++] = "0.1"; menu[i++] = "0.2"; menu[i++] = "0.3"; menu[i++] = "0.4";
menu[i++] = "0.5"; menu[i++] = "0.6"; menu[i++] = "0.7"; menu[i++] = "0.8";
menu[i++] = "0.9"; menu[i++] = "1.0";
puts(" <= f <= ");
if (freqLow < freqHi)
cgiMakeDropList(ALLELE_FREQ_HI, menu, menuSize,
cartCgiUsualString(cart, ALLELE_FREQ_HI, menu[9]));
else
cgiMakeDropList(ALLELE_FREQ_HI, menu, menuSize, menu[9]);
freez(&menu);
#endif /* HAS_NO_MEANING */
menuSize = 3;
menu = needMem((size_t)(menuSize * sizeof(char *)));
i = 0;
menu[i++] = DISEASE_DEFAULT;
menu[i++] = "yes";
menu[i++] = "no";
puts("
\nAssociated disease state known: ");
cgiMakeDropList(dbRIP_DISEASE, menu, menuSize,
cartCgiUsualString(cart, dbRIP_DISEASE, menu[0]));
freez(&menu);
puts("\n
Temporary Intronerator link: %s:%d-%d for testing purposes only \n
", chromosome+3, start, end, chromosome+3, start, end ); */ } void fishClonesUi(struct trackDb *tdb) /* Put up UI fishClones. */ { char *fishClonesFilter = cartUsualString(cart, "fishClones.filter", "red"); char *fishClonesMap = cartUsualString(cart, "fishClones.type", fcoeEnumToString(0)); filterButtons("fishClones.filter", fishClonesFilter, TRUE); printf(" "); fcoeDropDown("fishClones.type", fishClonesMap); } void recombRateUi(struct trackDb *tdb) /* Put up UI recombRate. */ { char *recombRateMap = cartUsualString(cart, "recombRate.type", rroeEnumToString(0)); printf("Map Distances: "); rroeDropDown("recombRate.type", recombRateMap); } void recombRateRatUi(struct trackDb *tdb) /* Put up UI recombRateRat. */ { char *recombRateRatMap = cartUsualString(cart, "recombRateRat.type", rrroeEnumToString(0)); printf("Map Distances: "); rrroeDropDown("recombRateRat.type", recombRateRatMap); } void recombRateMouseUi(struct trackDb *tdb) /* Put up UI recombRateMouse. */ { char *recombRateMouseMap = cartUsualString(cart, "recombRateMouse.type", rrmoeEnumToString(0)); printf("Map Distances: "); rrmoeDropDown("recombRateMouse.type", recombRateMouseMap); } void cghNci60Ui(struct trackDb *tdb) /* Put up UI cghNci60. */ { char *cghNci60Map = cartUsualString(cart, "cghNci60.type", cghoeEnumToString(0)); char *col = cartUsualString(cart, "cghNci60.color", "gr"); printf(" Cell Lines: "); cghoeDropDown("cghNci60.type", cghNci60Map); printf(" "); printf(" Color Scheme: "); cgiMakeRadioButton("cghNci60.color", "gr", sameString(col, "gr")); printf(" green/red "); cgiMakeRadioButton("cghNci60.color", "rg", sameString(col, "rg")); printf(" red/green "); cgiMakeRadioButton("cghNci60.color", "rb", sameString(col, "rb")); printf(" red/blue "); } void affyUi(struct trackDb *tdb) /* put up UI for the affy track from stanford track */ { char *affyMap; char *col; char varName[128]; safef(varName, sizeof(varName), "%s.%s", tdb->track, "type"); affyMap = cartUsualString(cart, varName, affyEnumToString(affyTissue)); col = cartUsualString(cart, "exprssn.color", "rg"); printf("Experiment Display: ");
affyDropDown(varName, affyMap);
printf(" Color Scheme: ");
cgiMakeRadioButton("exprssn.color", "rg", sameString(col, "rg"));
printf(" red/green ");
cgiMakeRadioButton("exprssn.color", "rb", sameString(col, "rb"));
printf(" red/blue ");
}
void expRatioCombineDropDown(struct trackDb *tdb, struct microarrayGroups *groups)
/* Make a drop-down of all the main combinations. */
{
struct maGrouping *comb;
int size = 0;
int i;
char **menuArray;
char **valArray;
char *dropDownName = expRatioCombineDLName(tdb->track);
char *defaultSelection = NULL;
char *cartSetting = NULL;
if (!groups->allArrays)
errAbort("The \'all\' stanza must be set in the microarrayGroup settings for track %s", tdb->track);
if (groups->defaultCombine)
defaultSelection = groups->defaultCombine->name;
else
defaultSelection = groups->allArrays->name;
size = groups->numCombinations + 1;
AllocArray(menuArray, size);
AllocArray(valArray, size);
menuArray[0] = groups->allArrays->description;
valArray[0] = groups->allArrays->name;
for (i = 1, comb = groups->combineSettings; (i < size) && (comb != NULL); i++, comb = comb->next)
{
menuArray[i] = cloneString(comb->description);
valArray[i] = cloneString(comb->name);
}
cartSetting = cartUsualString(cart, dropDownName, defaultSelection);
printf(" Combine arrays: ");
cgiMakeDropListWithVals(dropDownName, menuArray, valArray,
size, cartSetting);
}
void expRatioDrawExonOption(struct trackDb *tdb)
/* Add option to show exons if possible. */
{
char checkBoxName[512];
char *drawExons = trackDbSetting(tdb, "expDrawExons");
boolean checked = FALSE;
if (!drawExons || differentWord(drawExons, "on"))
return;
safef(checkBoxName, sizeof(checkBoxName), "%s.expDrawExons", tdb->track);
checked = cartCgiUsualBoolean(cart, checkBoxName, FALSE);
puts("Draw intron lines/arrows and exons: ");
cgiMakeCheckBox(checkBoxName, checked);
puts("
\n");
}
void expRatioColorOption(struct trackDb *tdb)
/* Radio button for red/green or blue/yellow */
{
char radioName[256];
char *colorSetting = NULL;
char *tdbSetting = trackDbSettingOrDefault(tdb, "expColor", "redGreen");
safef(radioName, sizeof(radioName), "%s.color", tdb->track);
colorSetting = cartUsualString(cart, radioName, tdbSetting);
puts("
Color:
");
cgiMakeRadioButton(radioName, "redGreen", sameString(colorSetting, "redGreen"));
puts("red/green
");
cgiMakeRadioButton(radioName, "redBlue", sameString(colorSetting, "redBlue"));
puts("red/blue
");
cgiMakeRadioButton(radioName, "yellowBlue", sameString(colorSetting, "yellowBlue"));
puts("yellow/blue
\n");
cgiMakeRadioButton(radioName, "redBlueOnWhite", sameString(colorSetting, "redBlueOnWhite"));
puts("red/blue on white background
");
cgiMakeRadioButton(radioName, "redBlueOnYellow", sameString(colorSetting, "redBlueOnYellow"));
puts("red/blue on yellow background
");
}
void expRatioSubsetDropDown(struct maGrouping *ss, char *varName, char *offset)
/* because setting up the droplist is a bit involved... this is just called */
/* from expRatioSubsetOptions() */
{
char **menu;
char **values;
int i;
AllocArray(menu, ss->numGroups);
AllocArray(values, ss->numGroups);
for (i = 0; i < ss->numGroups; i++)
{
char num[4];
safef(num, sizeof(num), "%d", i);
menu[i] = cloneString(ss->names[i]);
values[i] = cloneString(num);
}
cgiMakeDropListWithVals(varName, menu, values, ss->numGroups, offset);
}
void expRatioSubsetOptions(struct trackDb *tdb, struct microarrayGroups *groups)
/* subsetting options for a microarray track */
{
char *radioVarName = expRatioSubsetRadioName(tdb->track, groups);
char *subSetting = NULL;
struct maGrouping *subsets = groups->subsetSettings;
struct maGrouping *ss;
subSetting = cartUsualString(cart, radioVarName, NULL);
puts("
Subset:
");
cgiMakeRadioButton(radioVarName, "none", (subSetting == NULL) || sameString(subSetting, "none"));
puts("no subset
\n");
for (ss = subsets; ss != NULL; ss = ss->next)
{
char *dropVarName = expRatioSubsetDLName(tdb->track, ss);
char *offS = NULL;
offS = cartUsualString(cart, dropVarName, "-1");
cgiMakeRadioButton(radioVarName, ss->name, (subSetting) && sameString(ss->name, subSetting));
printf("%s \n", ss->description);
expRatioSubsetDropDown(ss, dropVarName, offS);
printf("
\n");
}
}
void expRatioUi(struct trackDb *tdb)
/* UI options for the expRatio tracks. */
{
struct microarrayGroups *groups = maGetTrackGroupings(database, tdb);
if (groups == NULL)
errAbort("Could not get group settings for track.");
expRatioDrawExonOption(tdb);
if (groups->numCombinations > 0)
expRatioCombineDropDown(tdb, groups);
if (groups->numSubsets > 0)
expRatioSubsetOptions(tdb, groups);
expRatioColorOption(tdb);
}
void expRatioCtUi(struct trackDb *tdb)
/* UI options for array custom tracks. */
{
expRatioColorOption(tdb);
}
void affyAllExonUi(struct trackDb *tdb)
/* put up UI for the affy all exon tracks. */
{
char *affyAllExonMap;
char *col;
char varName[128];
safef(varName, sizeof(varName), "%s.%s", tdb->track, "type");
affyAllExonMap = cartUsualString(cart, varName, affyAllExonEnumToString(affyAllExonTissue));
col = cartUsualString(cart, "exprssn.color", "rg");
printf("
Experiment Display: "); affyAllExonDropDown(varName, affyAllExonMap); printf(" Color Scheme: "); cgiMakeRadioButton("exprssn.color", "rg", sameString(col, "rg")); printf(" red/green "); cgiMakeRadioButton("exprssn.color", "rb", sameString(col, "rb")); printf(" red/blue "); } void rosettaUi(struct trackDb *tdb) /* put up UI for the rosetta track */ { char *rosettaMap = cartUsualString(cart, "rosetta.type", rosettaEnumToString(0)); char *col = cartUsualString(cart, "exprssn.color", "rg"); char *exonTypes = cartUsualString(cart, "rosetta.et", rosettaExonEnumToString(0)); printf("
Reference Sample: "); rosettaDropDown("rosetta.type", rosettaMap); printf(" "); printf("Exons Shown: "); rosettaExonDropDown("rosetta.et", exonTypes); printf(" Color Scheme: "); cgiMakeRadioButton("exprssn.color", "rg", sameString(col, "rg")); printf(" red/green "); cgiMakeRadioButton("exprssn.color", "rb", sameString(col, "rb")); printf(" red/blue "); } void switchDbScoreUi(struct trackDb *tdb) /* Put up UI for filtering switchDb track based on a score */ /* The scores use a drop-box to set scoreFilter at several */ /* thresholds. */ { char *option = "switchDbTss.scoreFilter"; char *pseudo = "switchDbTss.pseudo"; char *menu[3] = {"All TSSs (no filter)", "Lower stringency (score >= 10)", "Higher stringency (score >= 20)"}; char *values[3] = {"0", "10", "20"}; char *scoreValString = trackDbSetting(tdb, "scoreFilter"); int scoreSetting; int scoreVal = SWITCHDBTSS_FILTER; char tempScore[256]; if (scoreValString != NULL) scoreVal = atoi(scoreValString); printf("
Filter TSSs by score: "); scoreSetting = cartUsualInt(cart, option, scoreVal); safef(tempScore, sizeof(tempScore), "%d",scoreSetting); cgiMakeDropListWithVals(option, menu, values, ArraySize(menu), tempScore); printf("
Include TSSs for predicted pseudogenes "); cartMakeCheckBox(cart, pseudo, FALSE); } void blastSGUi(struct trackDb *tdb) { char geneName[64]; char accName[64]; char sprotName[64]; char posName[64]; char cModeStr[64]; boolean useGene, useAcc, useSprot, usePos; int cMode; char *cModes[3] = {"0", "1", "2"}; safef(geneName, sizeof(geneName), "%s.geneLabel", tdb->track); safef(accName, sizeof(accName), "%s.accLabel", tdb->track); safef(sprotName, sizeof(sprotName), "%s.sprotLabel", tdb->track); safef(posName, sizeof(posName), "%s.posLabel", tdb->track); useGene= cartUsualBoolean(cart, geneName, TRUE); useAcc= cartUsualBoolean(cart, accName, FALSE); useSprot= cartUsualBoolean(cart, sprotName, FALSE); usePos= cartUsualBoolean(cart, posName, FALSE); safef(cModeStr, sizeof(cModeStr), "%s.cmode", tdb->track); cMode = cartUsualInt(cart, cModeStr, 0); printf("
Color elements: "); cgiMakeRadioButton(cModeStr, cModes[0], cMode == 0); printf("by score "); cgiMakeRadioButton(cModeStr, cModes[1], cMode == 1); printf("by yeast chromosome "); cgiMakeRadioButton(cModeStr, cModes[2], cMode == 2); printf("black"); printf("
Label elements by: "); cgiMakeCheckBox(geneName, useGene); printf("Yeast Gene "); cgiMakeCheckBox(accName, useAcc); printf("Yeast mRNA "); cgiMakeCheckBox(sprotName, useSprot); printf("SwissProt ID "); cgiMakeCheckBox(posName, usePos); printf("Yeast Position"); baseColorDrawOptDropDown(cart, tdb); } void blastFBUi(struct trackDb *tdb) { char geneName[64]; char accName[64]; char sprotName[64]; char posName[64]; char cModeStr[64]; boolean useGene, useAcc, usePos; int cMode; char *cModes[3] = {"0", "1", "2"}; safef(geneName, sizeof(geneName), "%s.geneLabel", tdb->track); safef(accName, sizeof(accName), "%s.accLabel", tdb->track); safef(sprotName, sizeof(sprotName), "%s.sprotLabel", tdb->track); safef(posName, sizeof(posName), "%s.posLabel", tdb->track); useGene= cartUsualBoolean(cart, geneName, TRUE); useAcc= cartUsualBoolean(cart, accName, FALSE); usePos= cartUsualBoolean(cart, posName, FALSE); safef(cModeStr, sizeof(cModeStr), "%s.cmode", tdb->track); cMode = cartUsualInt(cart, cModeStr, 0); printf("
Color elements: "); cgiMakeRadioButton(cModeStr, cModes[0], cMode == 0); printf("by score "); cgiMakeRadioButton(cModeStr, cModes[1], cMode == 1); printf("by D. mel. chromosome "); cgiMakeRadioButton(cModeStr, cModes[2], cMode == 2); printf("black"); printf("
Label elements by: "); cgiMakeCheckBox(geneName, useGene); printf("FlyBase Gene "); cgiMakeCheckBox(accName, useAcc); printf("D. melanogaster mRNA "); cgiMakeCheckBox(posName, usePos); printf("D. melanogaster Position"); baseColorDrawOptDropDown(cart, tdb); } void blastUi(struct trackDb *tdb) { char geneName[64]; char accName[64]; char sprotName[64]; char posName[64]; char cModeStr[64]; boolean useGene, useAcc, useSprot, usePos; int cMode; char *cModes[3] = {"0", "1", "2"}; safef(geneName, sizeof(geneName), "%s.geneLabel", tdb->track); safef(accName, sizeof(accName), "%s.accLabel", tdb->track); safef(sprotName, sizeof(sprotName), "%s.sprotLabel", tdb->track); safef(posName, sizeof(posName), "%s.posLabel", tdb->track); useGene= cartUsualBoolean(cart, geneName, TRUE); useAcc= cartUsualBoolean(cart, accName, FALSE); useSprot= cartUsualBoolean(cart, sprotName, FALSE); usePos= cartUsualBoolean(cart, posName, FALSE); safef(cModeStr, sizeof(cModeStr), "%s.cmode", tdb->track); cMode = cartUsualInt(cart, cModeStr, 0); printf("
Color elements: "); cgiMakeRadioButton(cModeStr, cModes[0], cMode == 0); printf("by score "); cgiMakeRadioButton(cModeStr, cModes[1], cMode == 1); printf("by human chromosome "); cgiMakeRadioButton(cModeStr, cModes[2], cMode == 2); printf("black"); printf("
Label elements by: ");
cgiMakeCheckBox(geneName, useGene);
printf("Human Gene ");
cgiMakeCheckBox(accName, useAcc);
printf("Human mRNA ");
cgiMakeCheckBox(sprotName, useSprot);
printf("UniProt(Swiss-Prot/TrEMBL) ID ");
cgiMakeCheckBox(posName, usePos);
printf("Human Position");
baseColorDrawOptDropDown(cart, tdb);
}
void hg17KgIdConfig(struct trackDb *tdb)
/* Put up gene ID track controls */
{
char varName[64];
char *geneLabel;
safef(varName, sizeof(varName), "%s.label", tdb->track);
geneLabel = cartUsualString(cart, varName, "gene symbol");
printf("Label: ");
radioButton(varName, geneLabel, "gene symbol");
radioButton(varName, geneLabel, "UCSC Known Gene ID");
radioButton(varName, geneLabel, "all");
radioButton(varName, geneLabel, "none");
}
void hg17KgUI(struct trackDb *tdb)
/* Put up refGene-specific controls */
{
hg17KgIdConfig(tdb);
baseColorDrawOptDropDown(cart, tdb);
}
void omimLocationConfig(struct trackDb *tdb)
/* Put up OMIM Location track controls */
{
char varName[64];
char *geneLabel;
safef(varName, sizeof(varName), "%s.label", tdb->track);
geneLabel = cartUsualString(cart, varName, "OMIM ID");
printf("
Include Entries of: ");
printf("
Evidence | Score | ||
---|---|---|---|
4 | 1000 | ||
3 | 500 | ||
2 | 333 | ||
1 | 250 | ||
0 | 200 |
%s: | ", pops[i]); safef(cartVar, sizeof(cartVar), "%s_%s", HAP_MONO_PREFIX, pops[i]); cgiMakeDropList(cartVar, noYesNoMenu, 3, cartUsualString(cart, cartVar, HAP_FILTER_DEFAULT)); printf(" | \n"); cellCount += 2; if (cellCount == 12) { puts(""); puts(""); } puts(" |
%s allele: | \n", hapmapOrthoSpecies[i]); safef(cartVar, sizeof(cartVar), "%s_%s", HAP_ORTHO_PREFIX, hapmapOrthoSpecies[i]); cgiMakeDropList(cartVar, orthoMenu, 5, cartUsualString(cart, cartVar, HAP_FILTER_DEFAULT)); puts(" | "); safef(cartVar, sizeof(cartVar), "%s_%s", HAP_ORTHO_QUAL_PREFIX, hapmapOrthoSpecies[i]); int minQual = atoi(cartUsualString(cart, cartVar, HAP_ORTHO_QUAL_DEFAULT)); puts("Minimum quality score: | \n"); cgiMakeIntVar(cartVar, minQual, 4); puts(" (range: 0 to 100) |
"); if (tdbIsDownloadsOnly(tdb)) printf("%s ",tdb->shortLabel); else printf("%s ", (tdbIsDownloadsOnly(tdb)? hgFileUiName(): hgTrackUiName()), cartSessionVarName(), cartSessionId(cart), chromosome, cgiEncode(tdb->track), tdb->shortLabel); printf(" | "); if (tdbIsDownloadsOnly(tdb)) { printf("Downloads", hgFileUiName(),cartSessionVarName(), cartSessionId(cart), cgiEncode(tdb->track)); } else { enum trackVisibility tv = hTvFromString(cartUsualString(cart, tdb->track, hStringFromTv(tdb->visibility))); hTvDropDownClassVisOnly(tdb->track, tv, tdb->canPack, tv == tvHide ? "hiddenText" : "normalText", trackDbSetting(tdb, "onlyVisibility")); } printf(" | %s", tdb->longLabel); char *dataVersion = trackDbSetting(tdb, "dataVersion"); if (dataVersion) printf("  %s", dataVersion); printf(" |
WARNING: This data is provided for early access via the Preview Browser -- it is unreviewed and subject to change. For high quality reviewed annotations, see the Genome Browser.", "genome.ucsc.edu", db); } else { // TODO: use hTrackUiName() printf("
NOTE: Early access to additional track data may be available on the Preview Browser.",
"genome-preview.ucsc.edu", db, tdb->track);
}
}
}
void specificUi(struct trackDb *tdb, struct trackDb *tdbList, struct customTrack *ct, boolean ajax)
/* Draw track specific parts of UI. */
{
char *track = tdb->track;
if (sameString(track, "stsMap"))
stsMapUi(tdb);
else if (sameString(track, "affyTxnPhase2"))
affyTxnPhase2Ui(tdb);
else if (sameString(track, "cgapSage"))
cgapSageUi(tdb);
else if (sameString(track, "stsMapMouseNew"))
stsMapMouseUi(tdb);
else if (sameString(track, "stsMapRat"))
stsMapRatUi(tdb);
else if (sameString(track, "snpMap"))
snpMapUi(tdb);
else if (sameString(track, "snp"))
snpUi(tdb);
else if (snpVersion(track) >= 125)
snp125Ui(tdb);
else if (sameString(track, "rertyHumanDiversityLd") ||
startsWith("hapmapLd", track) ||
sameString(tdb->type, "ld2"))
ldUi(tdb);
else if (sameString(track, "cbr_waba"))
cbrWabaUi(tdb);
else if (sameString(track, "fishClones"))
fishClonesUi(tdb);
else if (sameString(track, "recombRate"))
recombRateUi(tdb);
else if (sameString(track, "recombRateRat"))
recombRateRatUi(tdb);
else if (sameString(track, "recombRateMouse"))
recombRateMouseUi(tdb);
else if (sameString(track, "cghNci60"))
cghNci60Ui(tdb);
else if (sameString(track, "xenoRefGene"))
refGeneUI(tdb);
else if (startsWith("transMapAln", track))
transMapUI(tdb);
else if (sameString(track, "refGene"))
refGeneUI(tdb);
else if (sameString(track, "rgdGene2"))
rgdGene2UI(tdb);
else if (sameString(track, "knownGene"))
knownGeneUI(tdb);
else if (sameString(track, "omimLocation"))
omimLocationUI(tdb);
else if (sameString(track, "omimGene2"))
omimGene2UI(tdb);
else if (sameString(track, "omimGene"))
omimGeneUI(tdb);
else if (sameString(track, "hg17Kg"))
hg17KgUI(tdb);
else if (startsWith("ucscRetro", track) || startsWith("retroMrnaInfo", track))
retroGeneUI(tdb);
else if (sameString(track, "ensGeneNonCoding"))
ensemblNonCodingUI(tdb);
else if (sameString(track, "vegaGeneComposite"))
vegaGeneUI(tdb);
else if (sameString(track, "all_mrna"))
mrnaUi(tdb, FALSE);
else if (sameString(track, "mrna"))
mrnaUi(tdb, FALSE);
else if (sameString(track, "splicesP"))
bedUi(tdb, cart, "", FALSE);
else if(sameString(track,"FantomCageBedForward") || sameString(track,"FantomCageBedReverse") ||
sameString(track,"FantomCageReadForward") || sameString(track,"FantomCageReadReverse"))
bedUi(tdb, cart, "", FALSE);
else if (sameString(track, "all_est"))
mrnaUi(tdb, FALSE);
else if (sameString(track, "est"))
mrnaUi(tdb, FALSE);
else if (sameString(track, "tightMrna"))
mrnaUi(tdb, FALSE);
else if (sameString(track, "tightEst"))
mrnaUi(tdb, FALSE);
else if (sameString(track, "intronEst"))
mrnaUi(tdb, FALSE);
else if (sameString(track, "xenoMrna"))
mrnaUi(tdb, TRUE);
else if (sameString(track, "xenoEst"))
mrnaUi(tdb, TRUE);
else if (sameString(track, "rosetta"))
rosettaUi(tdb);
else if (startsWith("blastDm", track))
blastFBUi(tdb);
else if (sameString(track, "blastSacCer1SG"))
blastSGUi(tdb);
else if (sameString(track, "blastHg17KG") || sameString(track, "blastHg16KG")
|| sameString(track, "blastCe3WB") || sameString(track, "blastHg18KG")
|| sameString(track, "blatzHg17KG")|| startsWith("mrnaMap", track)|| startsWith("mrnaXeno", track))
blastUi(tdb);
else if (sameString(track, "hgPcrResult"))
pcrResultUi(tdb);
else if (startsWith("bedGraph", tdb->type) || startsWith("bigWig", tdb->type))
wigCfgUi(cart,tdb,tdb->track,NULL, FALSE);
else if (startsWith("bamWig", tdb->type))
wigCfgUi(cart,tdb,tdb->track,NULL, FALSE);
else if (startsWith("wig", tdb->type))
{
if (startsWith("wigMaf", tdb->type))
wigMafCfgUi(cart, tdb, tdb->track, NULL, FALSE, database);
else
wigCfgUi(cart,tdb,tdb->track, NULL, FALSE);
}
else if (startsWith("chromGraph", tdb->type))
chromGraphUi(tdb);
/* else if (sameString(track, "affyHumanExon")) */
/* affyAllExonUi(tdb); */
else if (sameString(track, "ancientR"))
ancientRUi(tdb);
else if (sameString(track, "zoo") || sameString(track, "zooNew" ))
zooWiggleUi(tdb);
else if (sameString(track, "humMusL") ||
sameString( track, "musHumL") ||
sameString( track, "regpotent") ||
sameString( track, "mm3Rn2L" ) ||
sameString( track, "mm3Hg15L" ) ||
sameString( track, "hg15Mm3L" ))
humMusUi(tdb,7);
/* NOTE: type psl xeno
Cell Abbreviations:
\n");
char *sourceTable = trackDbRequiredSetting(tdb, "sourceTable");
struct sqlConnection *conn = hAllocConn(database);
hPrintAbbreviationTable(conn, sourceTable, "Cell Type");
hFreeConn(&conn);
}
}
freeMem(typeLine);
}
if (tdbIsSuperTrack(tdb))
{
superTrackUi(tdb, tdbList);
}
else if (tdbIsComposite(tdb)) // for the moment generalizing this to include other containers...
{
hCompositeUi(database, cart, tdb, NULL, NULL, MAIN_FORM, trackHash);
}
if (!ajax)
{
previewLinks(database, tdb);
extraUiLinks(database,tdb, trackHash);
}
}
#ifdef UNUSED
static void findSuperChildrenAndSettings(struct trackDb *tdbList, struct trackDb *super)
/* Find the tracks that have super as a parent and stuff references to them on
* super's children list. Also do some visibility and parentName futzing. */
{
struct trackDb *tdb;
for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
{
if (tdb->parent == super)
{
trackDbSuperMemberSettings(tdb); /* This adds tdb to tdb->parent->children. */
}
}
}
#endif /* UNUSED */
void trackUi(struct trackDb *tdb, struct trackDb *tdbList, struct customTrack *ct, boolean ajax)
/* Put up track-specific user interface. */
{
if (!ajax)
{
jsIncludeFile("jquery.js", NULL);
webIncludeResourceFile("jquery-ui.css");
jsIncludeFile("jquery-ui.js", NULL);
jsIncludeFile("utils.js",NULL);
#ifdef NEW_JQUERY
printf("\n");
#else///ifndef NEW_JQUERY
printf("\n");
#endif///ndef NEW_JQUERY
}
#define RESET_TO_DEFAULTS "defaults"
char setting[128];
// NOTE: Currently only composite multi-view tracks because
// reset relies upon all cart vars following naming convention:
// {track}.{varName}... ( One exception supported: {track}_sel ).
if (trackDbLocalSetting(tdb, "container"))
{
/* For the moment, be a composite... */
tdbMarkAsComposite(tdb);
}
if (ajax && cartOptionalString(cart, "descriptionOnly"))
{
//struct trackDb *tdbParent = tdbFillInAncestry(cartString(cart, "db"),tdb);
if (tdb->html != NULL && tdb->html[0] != 0)
puts(tdb->html);
else
{
struct trackDb *tdbParent = tdb->parent;
for (;tdbParent && (tdbParent->html == NULL || tdbParent->html[0] == 0); tdbParent = tdbParent->parent )
; // Get the first parent that has html
if (tdbParent != NULL && tdbParent->html != NULL && tdbParent->html[0])
{
printf("Retrieved from %s Track...
\n",COLOR_DARKGREEN,tdbParent->shortLabel);
puts(tdbParent->html);
}
else
printf("No description found for: %s.
",tdbParent?tdbParent->track:tdb->track);
}
cartRemove(cart,"descriptionOnly"); // This is a once only request and should be deleted
return;
}
if(tdbIsContainer(tdb))
{
safef(setting,sizeof(setting),"%s.%s",tdb->track,RESET_TO_DEFAULTS);
// NOTE: if you want track vis to not be reset, move to after vis dropdown
if (1 == cartUsualInt(cart, setting, 0))
cartRemoveAllForTdbAndChildren(cart,tdb);
else if (!ajax) // Overkill on !ajax, because ajax shouldn't be called for a composite
cartTdbTreeReshapeIfNeeded(cart,tdb);
}
printf("");
if (ajax)
return;
if (ct)
{
/* hidden form for custom tracks CGI */
printf("\n");
if (ct->bbiFile)
{
time_t timep = bbiUpdateTime(ct->bbiFile);
printBbiUpdateTime(&timep);
}
else
printUpdateTime(CUSTOM_TRASH, ct->tdb, ct);
}
if (!ct)
{
/* Print data version trackDB setting, if any */
char *version = trackDbSetting(tdb, "dataVersion");
if (version)
{
cgiDown(0.7);
printf("Data version: %s\n", version);
}
/* Print lift information from trackDb, if any */
trackDbPrintOrigAssembly(tdb, database);
printUpdateTime(database, tdb, NULL);
}
if (tdb->html != NULL && tdb->html[0] != 0)
{
char *browserVersion;
if (btIE == cgiClientBrowser(&browserVersion, NULL, NULL) && *browserVersion < '8')
htmlHorizontalLine();
else // Move line down, since Description (in ->html) is proceded by too much space
printf("
");
printf("
\n");
webEnd();
}
}
char *excludeVars[] = { "submit", "Submit", "g", NULL, "ajax", NULL,};
int main(int argc, char *argv[])
/* Process command line. */
{
cgiSpoof(&argc, argv);
htmlSetBackground(hBackgroundImage());
setUdcCacheDir();
cartEmptyShell(doMiddle, hUserCookie(), excludeVars, NULL);
return 0;
}