3514789be36e7dc886cd044528a54e3c72dc3648
angie
  Wed Aug 5 16:26:26 2015 -0700
Account for different regulatory track table names in hg19 vs hg38.  Really we need .ra's for this.

diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c
index e0c731e..3378f46 100644
--- src/hg/hgVai/hgVai.c
+++ src/hg/hgVai/hgVai.c
@@ -722,43 +722,55 @@
 }
 
 void selectDbSnp(boolean gotSnp)
 /* Offer to include rsID (and other fields, or leave that for advanced output??) if available */
 {
 if (!gotSnp)
     return;
 startCollapsibleSection("dbSnp", "Known variation", TRUE);
 cartMakeCheckBox(cart, "hgva_rsId", TRUE);
 printf("Include <A HREF='http://www.ncbi.nlm.nih.gov/projects/SNP/' TARGET=_BLANK>dbSNP</A> "
        "rs# ID if one exists<BR>\n");
 puts("<BR>");
 endCollapsibleSection();
 }
 
-boolean isRegulatoryTrack(struct trackDb *tdb, void *filterData)
+boolean isHg19RegulatoryTrack(struct trackDb *tdb, void *filterData)
 /* For now, just look for a couple specific tracks by tableName. */
 {
 //#*** NEED METADATA
 return (sameString("wgEncodeRegDnaseClusteredV3", tdb->table) ||
 	sameString("wgEncodeRegTfbsClusteredV3", tdb->table));
 }
 
+boolean isHg38RegulatoryTrack(struct trackDb *tdb, void *filterData)
+/* For now, just look for a couple specific tracks by tableName. */
+{
+//#*** NEED METADATA
+return (sameString("wgEncodeRegDnaseClustered", tdb->table) ||
+	sameString("wgEncodeRegTfbsClusteredV3", tdb->table));
+}
+
 struct slRef *findRegulatoryTracks()
 /* Look for the very limited set of Regulation tracks that hgVai offers. */
 {
 struct slRef *regTrackRefList = NULL;
-tdbFilterGroupTrack(fullTrackList, fullGroupList, isRegulatoryTrack,
+if (sameString(database, "hg19"))
+    tdbFilterGroupTrack(fullTrackList, fullGroupList, isHg19RegulatoryTrack,
+                        NULL, NULL, &regTrackRefList);
+else if (sameString(database, "hg38"))
+    tdbFilterGroupTrack(fullTrackList, fullGroupList, isHg38RegulatoryTrack,
                         NULL, NULL, &regTrackRefList);
 return regTrackRefList;
 }
 
 void selectRegulatory()
 /* If trackRefList is non-NULL, make a section with a checkbox for each track,
  * labelled with longLabel, and optionally some filtering options. */
 {
 struct slRef *trackRefList = findRegulatoryTracks();
 if (trackRefList != NULL)
     {
     puts("<BR>");
     printf("<div class='sectionLiteHeader'>Select Regulatory Annotations</div>\n");
     printf("The annotations in this section provide predicted regulatory regions "
 	   "based on various experimental data.  "
@@ -1440,31 +1452,33 @@
 	{
 	struct trackDb *tdb = tdbForTrack(database, trackName, &fullTrackList);
 	if (tdb != NULL)
 	    {
 	    grator = hAnnoGratorFromTrackDb(assembly, tdb->table, tdb, chrom, ANNO_NO_LIMIT, NULL,
                                             agoNoConstraint);
 	    if (grator != NULL)
 		{
 		//#*** Need something more sophisticated but this works for our
 		//#*** limited selection of extra tracks:
 		if (asColumnFind(grator->streamer.asObj, "name") != NULL)
 		    column = "name";
 		addFiltersToGrator(grator, tdb);
 		}
 	    description = tdb->longLabel;
-	    isReg = includeReg && isRegulatoryTrack(tdb, NULL);
+	    isReg = (includeReg &&
+                     ((sameString(database, "hg19") && isHg19RegulatoryTrack(tdb, NULL)) ||
+                      (sameString(database, "hg38") && isHg38RegulatoryTrack(tdb, NULL))));
 	    }
 	}
     haveReg |= isReg;
     updateGratorListAndVepExtra(grator, pGratorList, vepOut, subset, column, description, isReg);
     if (grator != NULL)
 	hashAdd(gratorsByName, trackName, grator);
     }
 if (retHasRegulatory)
     *retHasRegulatory = haveReg;
 }
 
 void addFilterTracks(struct annoGrator **pGratorList, struct hash *gratorsByName,
 		     struct annoAssembly *assembly, char *chrom)
 // Add grators for filters (not added to vepOut):
 {