aa4c545f151ae2ba7dadd211012e8b7ca51449fd
angie
  Tue Dec 6 08:36:20 2011 -0800
Feature #6172 (ISCA track tweaks): per ISCA's request, appendabbreviated variant origin to display names.

diff --git src/hg/hgTracks/gvfTrack.c src/hg/hgTracks/gvfTrack.c
index 5b1e99a..2c843c4 100644
--- src/hg/hgTracks/gvfTrack.c
+++ src/hg/hgTracks/gvfTrack.c
@@ -103,24 +103,52 @@
 // if we someday get dense GVF tracks, might consider upping the default hash size:
 if (nameHash == NULL)
     nameHash= hashNew(0);
 while ((row = sqlNextRow(sr)) != NULL)
     {
     struct bed8Attrs *gvf = bed8AttrsLoad(row+rowOffset);
     slAddHead(&list, gvf);
     hashAdd(nameHash, gvf->name, gvf);
     }
 sqlFreeResult(&sr);
 hFreeConn(&conn);
 slSort(&list, gvfHierCmp);
 tg->items = list;
 }
 
+static char *gvfItemName(struct track *tg, void *item)
+/* ISCA requested that we append abbreviated variant origin to the item names. */
+{
+struct bed8Attrs *gvf = item;
+struct dyString *name = dyStringNew(0);
+int ix = stringArrayIx("var_origin", gvf->attrTags, gvf->attrCount);
+if (ix >= 0)
+    {
+    char *origin = gvf->attrVals[ix];
+    if (sameWord(origin, "Not tested"))
+	dyStringPrintf(name, "%s_unk", gvf->name);
+    else if (sameWord(origin, "De novo"))
+	dyStringPrintf(name, "%s_dn", gvf->name);
+    else if (sameWord(origin, "Maternal"))
+	dyStringPrintf(name, "%s_mat", gvf->name);
+    else if (sameWord(origin, "Paternal"))
+	dyStringPrintf(name, "%s_pat", gvf->name);
+    else if (sameWord(origin, "Biparental"))
+	dyStringPrintf(name, "%s_bip", gvf->name);
+    else
+	dyStringPrintf(name, "%s_%s", gvf->name, origin);
+    }
+else
+    dyStringPrintf(name, "%s_unk", gvf->name);
+return dyStringCannibalize(&name);
+}
+
 void gvfMethods(struct track *tg)
 /* Load GVF variant data. */
 {
 bedMethods(tg);
 tg->canPack = TRUE;
 tg->loadItems = gvfLoad;
+tg->itemName = gvfItemName;
 tg->itemColor = gvfColor;
 tg->nextPrevExon = simpleBedNextPrevEdge;
 }