beee82d43659b3f682f57301c4a64feec96314ff
braney
  Thu Feb 1 14:25:25 2018 -0800
add support for math on bedGraph (including custom tracks)

diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index f12040e..c524692 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -14201,34 +14201,52 @@
 struct trackDb *subTracks = tdb->subtracks;
 
 tdb->subtracks = NULL;
 tdb->type = "mathWig";
 
 struct dyString *dy = newDyString(1024);
 
 if (sameString("add", aggregateFunc))
     dyStringPrintf(dy, "+ ");
 else // subtract
     dyStringPrintf(dy, "- ");
 struct trackDb *subTdb;
 for (subTdb=subTracks; subTdb; subTdb = subTdb->next)
     {
     char *bigDataUrl = trackDbSetting(subTdb, "bigDataUrl");
+    char *useDb;
+    char *table;
     if (bigDataUrl != NULL)
         dyStringPrintf(dy, "%s ",bigDataUrl);
-    else // native tracks are prepended with '$'
-        dyStringPrintf(dy, "$%s ",trackDbSetting(subTdb, "table"));
+    else 
+        {
+        if (isCustomTrack(trackHubSkipHubName(subTdb->track)))
+            {
+            useDb = CUSTOM_TRASH;
+            table = trackDbSetting(subTdb, "dbTableName");
+            }
+        else
+            {
+            useDb = database;
+            table = trackDbSetting(subTdb, "table");
+            }
+
+        if (startsWith("bedGraph", subTdb->type))
+            dyStringPrintf(dy, "^%s.%s ",useDb, table);
+        else
+            dyStringPrintf(dy, "$%s.%s ",useDb, table);
+        }
     }
 
 hashAdd(tdb->settingsHash, "mathDataUrl", dy->string);
 }
 
 #ifdef NOTNOW   /// for the moment, mathWigs are made at the composite level.  Since we may go back to having them at the view level I'm leaving this in
 void fixupMathWigs(struct trackDb *tdb)
 /* Look through a container to see if it has a mathWig view and convert it. */
 {
 struct trackDb *subTdb;
 
 for(subTdb = tdb->subtracks; subTdb; subTdb = subTdb->next)
     {
     char *type;
     if ((type = trackDbSetting(subTdb, "container")) != NULL)