*/
- char *words[2];
- char *scoreFilterCt = NULL;
- chopLine(cloneString(scoreCtString), words);
- safef(option, sizeof(option), "%s.filterTopScorersOn", name);
- bool doScoreCtFilter =
- cartUsualBooleanClosestToHome(cart, tdb, viewLevel, "filterTopScorersOn", sameString(words[0], "on"));
- puts("");
- cgiMakeCheckBox(option, doScoreCtFilter);
- safef(option, sizeof(option), "%s.filterTopScorersCt", name);
- scoreFilterCt = cartUsualStringClosestToHome(cart, tdb, viewLevel, "filterTopScorersCt", words[1]);
-
- puts(" Show only items in top-scoring ");
- cgiMakeIntVarWithLimits(option,atoi(scoreFilterCt),"Top-scoring count",0,1,100000);
- /* Only check size of table if track does not have subtracks */
- if ( !viewLevel && hTableExists(db, tdb->table))
- printf(" (range: 1 to 100,000 total items: %d)\n",getTableSize(db, tdb->table));
- else
- printf(" (range: 1 to 100,000)\n");
+ if (!bigBed)
+ {
+ /* filter top-scoring N items in track */
+ char *scoreCtString = trackDbSettingClosestToHome(tdb, "filterTopScorers");
+ if (scoreCtString != NULL)
+ {
+ /* show only top-scoring items. This option only displayed if trackDb
+ * setting exists. Format: filterTopScorers */
+ char *words[2];
+ char *scoreFilterCt = NULL;
+ chopLine(cloneString(scoreCtString), words);
+ safef(option, sizeof(option), "%s.filterTopScorersOn", name);
+ bool doScoreCtFilter =
- cartUsualBooleanClosestToHome(cart, tdb, compositeLevel, "filterTopScorersOn", sameString(words[0], "on"));
++ cartUsualBooleanClosestToHome(cart, tdb, viewLevel, "filterTopScorersOn", sameString(words[0], "on"));
+ puts("");
+ cgiMakeCheckBox(option, doScoreCtFilter);
+ safef(option, sizeof(option), "%s.filterTopScorersCt", name);
- scoreFilterCt = cartUsualStringClosestToHome(cart, tdb, compositeLevel, "filterTopScorersCt", words[1]);
++ scoreFilterCt = cartUsualStringClosestToHome(cart, tdb, viewLevel, "filterTopScorersCt", words[1]);
+
+ puts(" Show only items in top-scoring ");
+ cgiMakeIntVarWithLimits(option,atoi(scoreFilterCt),"Top-scoring count",0,1,100000);
+ /* Only check size of table if track does not have subtracks */
- if ( !compositeLevel && hTableExists(db, tdb->table))
++ if ( !viewLevel && hTableExists(db, tdb->table))
+ printf(" (range: 1 to 100,000 total items: %d)\n",getTableSize(db, tdb->table));
+ else
+ printf(" (range: 1 to 100,000)\n");
+ }
}
cfgEndBox(boxed);
}
+// Moved from hgTrackUi for consistency
+static void filterByChromCfgUi(struct cart *cart, struct trackDb *tdb)
+{
+char *filterSetting;
+char filterVar[256];
+char *filterVal = "";
+
+printf("
Filter by chromosome (e.g. chr10): ");
+snprintf(filterVar, sizeof(filterVar), "%s.chromFilter", tdb->track);
+filterSetting = cartUsualString(cart, filterVar, filterVal);
+cgiMakeTextVar(filterVar, cartUsualString(cart, filterVar, ""), 15);
+}
+
+// Moved from hgTrackUi for consistency
+void crossSpeciesCfgUi(struct cart *cart, struct trackDb *tdb)
+// Put up UI for selecting rainbow chromosome color or intensity score.
+{
+char colorVar[256];
+char *colorSetting;
+// initial value of chromosome coloring option is "on", unless
+// overridden by the colorChromDefault setting in the track
+char *colorDefault = trackDbSettingOrDefault(tdb, "colorChromDefault", "on");
+
+printf("
Color track based on chromosome: ");
+snprintf(colorVar, sizeof(colorVar), "%s.color", tdb->track);
+colorSetting = cartUsualString(cart, colorVar, colorDefault);
+cgiMakeRadioButton(colorVar, "on", sameString(colorSetting, "on"));
+printf(" on ");
+cgiMakeRadioButton(colorVar, "off", sameString(colorSetting, "off"));
+printf(" off ");
+printf("
");
+filterByChromCfgUi(cart,tdb);
+}
+
void pslCfgUi(char *db, struct cart *cart, struct trackDb *tdb, char *name, char *title, boolean boxed)
/* Put up UI for psl tracks */
{
boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
+
+char *typeLine = cloneString(tdb->type);
+char *words[8];
+int wordCount = wordCount = chopLine(typeLine, words);
+if (wordCount == 3 && sameWord(words[1], "xeno"))
+ crossSpeciesCfgUi(cart,tdb);
baseColorDropLists(cart, tdb, name);
indelShowOptionsWithName(cart, tdb, name);
cfgEndBox(boxed);
}
void netAlignCfgUi(char *db, struct cart *cart, struct trackDb *tdb, char *prefix, char *title, boolean boxed)
/* Put up UI for net tracks */
{
boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
-boolean compositeLevel = isNameAtCompositeLevel(tdb,prefix);
+boolean viewLevel = isNameAtCompositeLevel(tdb,prefix);
-enum netColorEnum netColor = netFetchColorOption(cart, tdb, compositeLevel);
+enum netColorEnum netColor = netFetchColorOption(cart, tdb, viewLevel);
char optString[256]; /* our option strings here */
safef(optString, ArraySize(optString), "%s.%s", prefix, NET_COLOR );
printf("
Color nets by: ");
netColorDropDown(optString, netColorEnumToString(netColor));
#ifdef NOT_YET
-enum netLevelEnum netLevel = netFetchLevelOption(cart, tdb, compositeLevel);
+enum netLevelEnum netLevel = netFetchLevelOption(cart, tdb, viewLevel);
safef( optString, ArraySize(optString), "%s.%s", prefix, NET_LEVEL );
printf("
Limit display of nets to: ");
netLevelDropDown(optString, netLevelEnumToString(netLevel));
#endif
cfgEndBox(boxed);
}
void chainCfgUi(char *db, struct cart *cart, struct trackDb *tdb, char *prefix, char *title, boolean boxed, char *chromosome)
/* Put up UI for chain tracks */
{
boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
-boolean compositeLevel = isNameAtCompositeLevel(tdb,prefix);
+boolean viewLevel = isNameAtCompositeLevel(tdb,prefix);
enum chainColorEnum chainColor =
- chainFetchColorOption(cart, tdb, compositeLevel);
+ chainFetchColorOption(cart, tdb, viewLevel);
/* check if we have normalized scores available */
boolean normScoreAvailable = chainDbNormScoreAvailable(tdb);
char optString[256];
if (normScoreAvailable)
{
safef(optString, ArraySize(optString), "%s.%s", prefix, OPT_CHROM_COLORS );
printf("
Color chains by: ");
chainColorDropDown(optString, chainColorEnumToString(chainColor));
}
else
{
printf("
Color track based on chromosome: ");