d26f11fb046f1b9db6d3f39eaf1a60003f8d8f1e
braney
  Tue Dec 16 17:26:03 2014 -0800
blat support on assembly hubs
diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c
index ff7bf60..6274b24 100644
--- src/hg/lib/trackHub.c
+++ src/hg/lib/trackHub.c
@@ -170,61 +170,76 @@
 struct slPair *clade, *cladeList = NULL;
 
 struct trackHub *trackHub = globalAssemblyHubList;
 
 for(;trackHub; trackHub = trackHub->next)
     {
     AllocVar(clade);
     slAddHead(&cladeList, clade);
 
     clade->name = cloneString(trackHub->name);
     clade->val = cloneString(trackHub->shortLabel);
     }
 return cladeList;
 }
 
-struct dbDb *trackHubGetDbDbs(char *clade)
-/* Get a list of dbDb structures for all the tracks in this clade/hub. */
+static struct dbDb *getDbDbs(char *clade, boolean blatEnabled)
+/* Get a list of struct dbDbs from track hubs.  Only get blat enabled ones if asked */
 {
 struct dbDb *db, *dbList = NULL;
 
 if (globalAssemblyHubList != NULL)
     {
     struct trackHub *trackHub = globalAssemblyHubList;
 
     for(;trackHub; trackHub = trackHub->next)
 	{
 	if ((clade != NULL) && differentString(clade, trackHub->name))
 	    continue;
 
 	struct trackHubGenome *hubGenome = trackHub->genomeList;
 	for(; hubGenome; hubGenome = hubGenome->next)
 	    {
-	    if (hubGenome->twoBitPath != NULL)
+	    boolean blatCheck = !blatEnabled ||
+		((hashFindVal(hubGenome->settingsHash,"transBlat") != NULL) || 
+		(hashFindVal(hubGenome->settingsHash,"blat") != NULL));
+	    if ( blatCheck && (hubGenome->twoBitPath != NULL))
 		{
 		db = makeDbDbFromAssemblyGenome(hubGenome);
 		slAddHead(&dbList, db);
 		}
 	    }
 	}
     }
 
 slReverse(&dbList);
 slSort(&dbList, hDbDbCmpOrderKey);
 return dbList;
 }
 
+struct dbDb *trackHubGetBlatDbDbs()
+/* Get a list of connected track hubs that have blat servers */
+{
+return getDbDbs(NULL, TRUE);
+}
+
+struct dbDb *trackHubGetDbDbs(char *clade)
+/* Get a list of dbDb structures for all the tracks in this clade/hub. */
+{
+return getDbDbs(clade, FALSE);
+}
+
 struct slName *trackHubAllChromNames(char *database)
 /* Return a list of all the chrom names in this assembly hub database. */
 /* Free with slFreeList. */
 {
 struct trackHubGenome *genome = trackHubGetGenome(database);
 if (genome == NULL)
     return NULL;
 
 struct slName *chromList = twoBitSeqNames(genome->twoBitPath);
 
 return chromList;
 }
 
 int trackHubChromCount(char *database)
 /* Return number of chromosomes in a assembly data hub. */