src/hg/makeDb/hgTrackDb/hgTrackDb.c 1.65
1.65 2010/05/07 05:04:12 kent
Code to get container multiWig to go.
Index: src/hg/makeDb/hgTrackDb/hgTrackDb.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/makeDb/hgTrackDb/hgTrackDb.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -b -B -U 4 -r1.64 -r1.65
--- src/hg/makeDb/hgTrackDb/hgTrackDb.c 1 Mar 2010 01:04:54 -0000 1.64
+++ src/hg/makeDb/hgTrackDb/hgTrackDb.c 7 May 2010 05:04:12 -0000 1.65
@@ -29,14 +29,8 @@
"usage:\n"
" hgTrackDb [options] org database trackDb_$(USER) trackDb.sql hgRoot\n"
"\n"
"Options:\n"
- " -visibility=vis.ra - A ra file used to override the initial visibility\n"
- " settings in trackDb.ra. This is used to configure the initial setting\n"
- " for special-purpose browsers. All visibility will be set to hide and\n"
- " then specific track are modified using the track and visibility fields\n"
- " in this file.\n"
- " -priority=priority.ra - A ra file used to override the priority settings\n"
" -hideFirst - Before applying vis.ra, set all visibilities to hide.\n"
" -strict - only include tables that exist (and complain about missing html files).\n"
" -raName=trackDb.ra - Specify a file name to use other than trackDb.ra\n"
" for the ra files.\n"
@@ -46,10 +40,8 @@
);
}
static struct optionSpec optionSpecs[] = {
- {"visibility", OPTION_STRING},
- {"priority", OPTION_STRING},
{"raName", OPTION_STRING},
{"strict", OPTION_BOOLEAN},
{"hideFirst", OPTION_BOOLEAN},
{"release", OPTION_STRING},
@@ -90,9 +82,13 @@
struct trackDb *tdbList = NULL;
struct hashCookie cookie = hashFirst(tdHash);
struct hashEl *hel;
while ((hel = hashNext(&cookie)) != NULL)
- slSafeAddHead(&tdbList, (struct trackDb*)hel->val);
+ {
+ struct trackDb *tdb = hel->val;
+ slSafeAddHead(&tdbList, tdb);
+ if (sameString("affyAllExonSuper", tdb->tableName)) uglyf("trackDbListFromHash of %s, tdb %p, tdb->grp=%s<BR>\n", tdb->tableName, tdb, tdb->grp);
+ }
return tdbList;
}
static struct trackDb *pruneStrict(struct trackDb *tdbList, char *db)
@@ -272,8 +268,9 @@
/* load tracks, replacing higher-level ones with lower-level and
* applying overrides*/
while ((tdb = slPopHead(&tdbList)) != NULL)
{
+ if (sameString("affyAllExonSuper", tdb->tableName)) uglyf("addVersionRa %s of %s, tdb %p, tdb->grp=%s<BR>\n", raName, tdb->tableName, tdb, tdb->grp);
if (tdb->overrides != NULL)
applyOverride(trackHash, tdb);
else
hashStore(trackHash, tdb->tableName)->val = tdb;
@@ -501,8 +498,10 @@
for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
{
struct slRef *child;
+ if (trackDbLocalSetting(tdb, "composite"))
+ {
struct slRef *childList = trackDbListGetRefsToDescendantLeaves(
tdb->subtracks);
verbose(2,"verifying %s child %p\n",tdb->tableName, childList);
@@ -518,8 +517,9 @@
assert(sgd != NULL);
checkOneSubGroups(tdb->tableName, childTdb, sgd);
}
}
+ }
}
static void checkSubGroups(struct trackDb *tdbList)
/* Check integrity of subGroup clauses */
@@ -591,8 +591,9 @@
if(countOfSortedContainers > 0)
verbose(1,"Sorted %d containers\n",countOfSortedContainers);
}
+#ifdef OLD
static void inheritFieldsFromParents(struct trackDb *tdb, struct trackDb *parent)
/* Inherit undefined fields (outside of settings) from parent. */
{
if (tdb->shortLabel == NULL)
@@ -613,20 +614,20 @@
tdb->private = TRUE;
if (parent->useScore)
tdb->useScore = TRUE;
}
+#endif /* OLD */
-static void rFillInFromParents(struct trackDb *parent, struct trackDb *tdbList)
-/* Fill in some possibly missing fields recursively. */
+static void rSetTrackDbFields(struct trackDb *tdbList)
+/* Recursively fill in non-settings fields from settings. */
{
struct trackDb *tdb;
for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
{
- if (parent != NULL)
- inheritFieldsFromParents(tdb, parent);
- rFillInFromParents(tdb, tdb->subtracks);
+ trackDbFieldsFromSettings(tdb);
+ rSetTrackDbFields(tdb->subtracks);
}
}
static void rPolish(struct trackDb *tdbList)
@@ -647,15 +648,16 @@
for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
{
struct trackDb *parent = tdb->parent;
if (parent != NULL)
+ {
+ trackDbFieldsFromSettings(parent);
trackDbPolish(parent);
}
+ }
}
-static struct trackDb *buildTrackDb(char *org, char *database, char *hgRoot,
- char *visibilityRa, char *priorityRa,
- boolean strict)
+static struct trackDb *buildTrackDb(char *org, char *database, char *hgRoot, boolean strict)
/* Build trackDb objects from files. */
{
struct hash *trackHash = newHash(0);
char rootDir[PATH_LEN], orgDir[PATH_LEN], asmDir[PATH_LEN];
@@ -672,15 +674,8 @@
layerOnRa(strict, database, rootDir, trackHash, TRUE);
layerOnRa(strict, database, orgDir, trackHash, FALSE);
layerOnRa(strict, database, asmDir, trackHash, FALSE);
-#ifdef OLD
-if (visibilityRa != NULL)
- trackDbOverrideVisbility(trackHash, visibilityRa, optionExists("hideFirst"));
-if (priorityRa != NULL)
- trackDbOverridePriority(trackHash, priorityRa);
-#endif /* OLD */
-
/* Represent hash as list */
struct trackDb *tdbList = trackDbListFromHash(trackHash);
/* Get rid of orphans with no parent of the correct release. */
@@ -696,10 +691,9 @@
/* Set up parent/subtracks pointers. */
tdbList = trackDbLinkUpGenerations(tdbList);
-/* Fill in missing info in fields (but not settings) from parents. */
-rFillInFromParents(NULL, tdbList);
+rSetTrackDbFields(tdbList);
/* Fill in any additional missing info from defaults. */
rPolish(tdbList);
polishSupers(tdbList);
@@ -731,8 +725,9 @@
/* The supertrack may appear as a 'floating' parent for multiple tracks.
* Only put it on the list once. */
if (!hashLookup(superTrackHash, parent->tableName))
{
+ if (parent != NULL && sameString("affyAllExonSuper", parent->tableName)) uglyf("flatten from heavens of %s, tdb %p, parent %p, parent->subTracks %p, parent->grp=%s<BR>\n", parent->tableName, tdb, parent, parent->subtracks, parent->grp);
hashAdd(superTrackHash, parent->tableName, parent);
slAddHead(&tdbList, parent);
}
}
@@ -745,17 +740,16 @@
return tdbList;
}
void hgTrackDb(char *org, char *database, char *trackDbName, char *sqlFile, char *hgRoot,
- char *visibilityRa, char *priorityRa, boolean strict)
+ boolean strict)
/* hgTrackDb - Create trackDb table from text files. */
{
struct trackDb *td;
char tab[PATH_LEN];
safef(tab, sizeof(tab), "%s.tab", trackDbName);
-struct trackDb *tdbList = buildTrackDb(org, database, hgRoot,
- visibilityRa, priorityRa, strict);
+struct trackDb *tdbList = buildTrackDb(org, database, hgRoot, strict);
tdbList = flatten(tdbList);
slSort(&tdbList, trackDbCmp);
verbose(1, "Loaded %d track descriptions total\n", slCount(tdbList));
@@ -763,8 +757,9 @@
{
FILE *f = mustOpen(tab, "w");
for (td = tdbList; td != NULL; td = td->next)
{
+ if (sameString("affyAllExonSuper", td->tableName)) uglyf("got %s befor hVarSubstTrackDb, grp=%s\n", td->tableName, td->grp);
hVarSubstTrackDb(td, database);
char *hold = td->html;
td->html = "";
trackDbTabOut(td, f);
@@ -861,9 +856,7 @@
errAbort("-raName value should be a file name without directories");
release = optionVal("release", release);
releaseBit = getReleaseBit(release);
-hgTrackDb(argv[1], argv[2], argv[3], argv[4], argv[5],
- optionVal("visibility", NULL), optionVal("priority", NULL),
- optionExists("strict"));
+hgTrackDb(argv[1], argv[2], argv[3], argv[4], argv[5], optionExists("strict"));
return 0;
}