577abc852567f4e4356b9f8c2438ade69221959a braney Fri Nov 20 13:18:26 2020 -0800 changes to support isPcr in assembly hubs diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index 586b181..d9e1f60 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -182,30 +182,58 @@ 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 *trackHubGetPcrServers() +/* Look through attached trackHubs to see which of them have "isPcr" line in them. */ +{ +struct dbDb *db, *dbList = NULL; + +if (globalAssemblyHubList != NULL) + { + struct trackHub *trackHub = globalAssemblyHubList; + + for(;trackHub; trackHub = trackHub->next) + { + struct trackHubGenome *hubGenome = trackHub->genomeList; + for(; hubGenome; hubGenome = hubGenome->next) + { + if (hashFindVal(hubGenome->settingsHash,"isPcr") != NULL) + { + db = makeDbDbFromAssemblyGenome(hubGenome); + slAddHead(&dbList, db); + } + } + } + } + +slReverse(&dbList); +slSort(&dbList, hDbDbCmpOrderKey); +return dbList; +} + 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; @@ -1271,30 +1299,50 @@ void trackHubFindPos(struct cart *cart, char *db, char *term, struct hgPositions *hgp) /* Look for term in track hubs. Update hgp if found */ { struct trackDb *tdbList = NULL; if (trackHubDatabase(db)) { struct trackHubGenome *genome = trackHubGetGenome(db); tdbList = trackHubTracksForGenome(genome->trackHub, genome); } else tdbList = hubCollectTracks(db, NULL); findBigBedPosInTdbList(cart, db, tdbList, term, hgp, NULL); } +boolean trackHubGetPcrParams(char *database, char **pHost, char **pPort) +/* Get the isPcr params from a trackHub genome. */ +{ +char *hostPort; + +hostPort = trackHubAssemblyField(database, "isPcr"); + +if (hostPort == NULL) + return FALSE; + +hostPort = cloneString(hostPort); + +*pHost = nextWord(&hostPort); +if (hostPort == NULL) + return FALSE; +*pPort = hostPort; + +return TRUE; +} + boolean trackHubGetBlatParams(char *database, boolean isTrans, char **pHost, char **pPort) { char *hostPort; if (isTrans) { hostPort = trackHubAssemblyField(database, "transBlat"); } else { hostPort = trackHubAssemblyField(database, "blat"); } if (hostPort == NULL) return FALSE;