9ca89f9ff4facb407acfd0a8e970472a45be29a0 hiram Tue Sep 22 11:48:06 2020 -0700 adding chrom.sizes as download file for hgTracks sequences in assembly hubs refs #24396 diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index 1212daf..586b181 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -390,46 +390,64 @@ AllocVar(ali); ali->alias = cloneString(words[i]); ali->chrom = cloneString(words[0]); ali->source = cloneString("asmHub"); hashAdd(aliasHash, words[0], ali); } } } } lineFileClose(&lf); /* frees cannibalized ds string */ } return aliasHash; } /* static struct hash *readAliasFile(char *url) */ -char *trackHubAliasFile(char *database) -/* see if this assembly hub has an alias file, return url if present */ +static char *assemblyHubGenomeSetting(char *database, char *tagName) +/* see if this assembly hub has specified tagName, return url if present + * returns NULL when not present + */ { struct trackHubGenome *genome = trackHubGetGenome(database); if (genome == NULL) return NULL; -char *aliasFile = hashFindVal(genome->settingsHash, "chromAlias"); -char *absAliasFile = NULL; -if (aliasFile) - absAliasFile = trackHubRelativeUrl((genome->trackHub)->url, aliasFile); -if (absAliasFile) +char *fileName = hashFindVal(genome->settingsHash, tagName); +char *absFileName = NULL; +if (fileName) + absFileName = trackHubRelativeUrl((genome->trackHub)->url, fileName); +if (absFileName) { - hashReplace(genome->settingsHash, "chromAlias", absAliasFile); - aliasFile = absAliasFile; + hashReplace(genome->settingsHash, tagName, absFileName); + fileName = absFileName; + } +return fileName; } -return aliasFile; + +char *trackHubChromSizes(char *database) +/* see if this assembly hub has a chrom.sizes file, return url if present + * returns NULL when not present + */ +{ +return assemblyHubGenomeSetting(database, "chromSizes"); +} + +char *trackHubAliasFile(char *database) +/* see if this assembly hub has an alias file, return url if present + * returns NULL when not present + */ +{ +return assemblyHubGenomeSetting(database, "chromAlias"); } struct hash *trackHubAllChromAlias(char *database) /* Return a hash of chroms with alias names from alias file if present */ { char *aliasFile = trackHubAliasFile(database); if (aliasFile == NULL) return NULL; return readAliasFile(aliasFile); } /* struct hash *trackHubAllChromAlias(char *database) */ struct chromInfo *trackHubAllChromInfo(char *database) /* Return a chromInfo structure for all the chroms in this database. */ {