601d8ad878b9cd491de411fde57453f2da7608bb braney Fri Jul 18 18:00:28 2025 -0700 it turns out that hOrganism and hGenome are basically the same thing but both have to be working with Genark diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index 2bd047d7ff4..166b6a0e772 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -2630,30 +2630,32 @@ return res; } char *hDefaultPos(char *database) /* Return default chromosome position for the organism associated with database. use freeMem on * this when done. */ { return hDbDbField(database, "defaultPos"); } char *hOrganism(char *database) /* Return organism associated with database. use freeMem on * this when done. */ { +if (database == NULL) + return NULL; if (sameString(database, "rep")) /* bypass dbDb if repeat */ return cloneString("Repeat"); if (startsWith("GC", database)) { struct dbDb *dbDb = genarkLiftOverDb(database); if (dbDb != NULL) return dbDb->genome; } return hDbDbOptionalField(database, "organism"); } char *hDbDbNibPath(char *database) /* return nibPath from dbDb for database, has to be freed */ { @@ -2663,30 +2665,38 @@ seqDir = hDbDbOptionalField(database, "nibPath"); else { char buf[4096]; safef(buf, sizeof(buf), "/gbdb/%s", database); char *twoBitDir = hReplaceGbdbSeqDir(buf, database); seqDir = twoBitDir; } return seqDir; } char *hGenome(char *database) /* Return genome associated with database. * use freeMem on this when done. */ { +if (database == NULL) + return NULL; +if (startsWith("GC", database)) + { + struct dbDb *dbDb = genarkLiftOverDb(database); + if (dbDb != NULL) + return dbDb->genome; + } return hDbDbOptionalField(database, "genome"); } char *hScientificName(char *database) /* Return scientific name for organism represented by this database */ /* Return NULL if unknown database */ /* NOTE: must free returned string after use */ { return hDbDbOptionalField(database, "scientificName"); } char *hOrgShortName(char *org) /* Get the short name for an organism. Returns NULL if org is NULL. * WARNING: static return */ {