946812f7ebe9bd45e3e3fbaaa3db102e9696a973
braney
  Thu Mar 24 14:21:20 2011 -0700
add support for supertracks in hubs  #3381
diff --git src/hg/lib/trackDbCustom.c src/hg/lib/trackDbCustom.c
index d1e4436..5946bc7 100644
--- src/hg/lib/trackDbCustom.c
+++ src/hg/lib/trackDbCustom.c
@@ -587,49 +587,62 @@
 {
 struct superTrackInfo *stInfo = getSuperTrackInfo(tdb);
 if(stInfo == NULL || stInfo->isSuper)
     return;
 tdb->parentName = cloneString(stInfo->parentName);
 tdb->visibility = stInfo->defaultVis;
 tdbMarkAsSuperTrackChild(tdb);
 if(tdb->parent)
     {
     tdbMarkAsSuperTrack(tdb->parent);
     refAddUnique(&(tdb->parent->children),tdb);
     }
 freeMem(stInfo);
 }
 
+char *maybeSkipHubPrefix(char *track)
+{
+if (!startsWith("hub_", track))
+    return track;
+
+char *nextUnderBar = strchr(track + sizeof "hub_", '_');
+
+if (nextUnderBar)
+    return nextUnderBar + 1;
+
+return track;
+}
+
 void trackDbSuperMarkup(struct trackDb *tdbList)
 /* Set trackDb from superTrack setting */
 {
 struct trackDb *tdb;
 struct hash *superHash = hashNew(0);
 struct superTrackInfo *stInfo;
 
 /* find supertracks, setup their settings */
 for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
     {
     stInfo = getSuperTrackInfo(tdb);
     if (!stInfo)
         continue;
     if (stInfo->isSuper)
         {
         tdbMarkAsSuperTrack(tdb);
         tdb->isShow = stInfo->isShow;
         if (!hashLookup(superHash, tdb->track))
-            hashAdd(superHash, tdb->track, tdb);
+            hashAdd(superHash, maybeSkipHubPrefix(tdb->track), tdb);
         tdb->children = NULL; // assertable?
         }
     freeMem(stInfo);
     }
 /* adjust settings on supertrack members after verifying they have
  * a supertrack configured in this trackDb */
 for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
     {
     stInfo = getSuperTrackInfo(tdb);
     if (!stInfo)
         continue;
     if(!stInfo->isSuper)
         {
         tdb->parent = hashFindVal(superHash, stInfo->parentName);
         if (tdb->parent)