src/hg/oneShot/tdbRewriteViewsToSubtracks/tdbRewriteViewsToSubtracks.c 1.4
1.4 2009/12/14 03:14:06 kent
Tightening up identification of composite tracks with views. Adding in some things from branch.
Index: src/hg/oneShot/tdbRewriteViewsToSubtracks/tdbRewriteViewsToSubtracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/oneShot/tdbRewriteViewsToSubtracks/tdbRewriteViewsToSubtracks.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -B -U 4 -r1.3 -r1.4
--- src/hg/oneShot/tdbRewriteViewsToSubtracks/tdbRewriteViewsToSubtracks.c 10 Dec 2009 04:38:10 -0000 1.3
+++ src/hg/oneShot/tdbRewriteViewsToSubtracks/tdbRewriteViewsToSubtracks.c 14 Dec 2009 03:14:06 -0000 1.4
@@ -479,8 +479,15 @@
}
}
}
+
+boolean shouldBeParentOfView(struct raRecord *r)
+/* Return TRUE if its a record that we'll insert views underneath */
+{
+return findViewSubGroup(r) != NULL;
+}
+
void rewriteSettingsByViewComplex(struct raFile *file, struct raRecord *complexRecord, FILE *f,
struct lm *lm)
/* Rewrite track that has settings by view */
{
@@ -573,16 +580,25 @@
char *shortLabel = lmCloneString(lm, view->val);
subChar(shortLabel, '_', ' ');
fprintf(f, " shortLabel %s\n", shortLabel);
fprintf(f, " view %s\n", view->name);
+ char *vis = NULL;
if (visHash != NULL)
- {
- char *vis = hashFindVal(visHash, view->name);
+ vis = hashFindVal(visHash, view->name);
if (vis != NULL)
{
- fprintf(f, " visibility %s\n", vis);
- fprintf(f, " subTrack %s\n", complexRecord->key);
+ int len = strlen(vis);
+ boolean gotPlus = (lastChar(vis) == '+');
+ if (gotPlus)
+ len -= 1;
+ char visOnly[len+1];
+ memcpy(visOnly, vis, len);
+ visOnly[len] = 0;
+ fprintf(f, " visibility %s\n", visOnly);
+ if (gotPlus)
+ fprintf(f, " viewUi on\n");
}
+ fprintf(f, " subTrack %s\n", complexRecord->key);
struct slPair *settingList = hashFindVal(settingsHash, view->name);
struct slPair *setting;
for (setting = settingList; setting != NULL; setting = setting->next)
fprintf(f, " %s %s\n", setting->name, (char*)setting->val);
@@ -611,25 +627,23 @@
}
}
}
}
- }
}
void rewriteTrack(struct raLevel *level, struct raFile *file,
struct raRecord *r, FILE *f, struct lm *lm)
/* Write one track record. */
{
struct raRecord *recordInParentFile = findRecordInParentFileLevel(level, r);
-struct raTag *settingsByViewTag = raRecordFindTag(r, "settingsByView");
struct raTag *subTrack = raRecordFindTag(r, "subTrack");
-if (settingsByViewTag)
+if (shouldBeParentOfView(r))
{
if (recordInParentFile)
recordAbort(r, "Can't handle settingsByViews with records in parent file levels");
/* We are the parent. */
- fprintf(f, "# Rewriting parent with settingsByView %s\n", r->key);
+ fprintf(f, "# Rewriting parent with subGroup view %s\n", r->key);
rewriteSettingsByViewComplex(file, r, f, lm);
}
else if (subTrack)
{
@@ -637,15 +651,14 @@
lmCloneFirstWord(lm, subTrack->val),
findRelease(r, level));
if (rParent == NULL)
recordAbort(r, "Couldn't find rParent track %s, subTrack %s.", r->key, subTrack->val);
- settingsByViewTag = raRecordFindTag(rParent, "settingsByView");
- if (settingsByViewTag)
+ if (shouldBeParentOfView(rParent))
{
if (rParent->file != r->file)
recordAbort(r, "complex parent %s not in same file as subTrack %s",
rParent->key, r->key);
- fprintf(f, "# Omitting child (%s) of parent (%s) with settingsByView\n",
+ fprintf(f, "# Omitting child (%s) of parent (%s) with views\n",
r->key, rParent->key);
}
else
{