325f711f30c884459738f065f3415ce2914ec828 braney Wed Aug 13 16:18:51 2025 -0700 get hgConvert and hgLiftOver to use genark assemblies that are not in the UCSC taxId list diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c index 10116648f78..fa4aa5e64e7 100644 --- src/hg/lib/hdb.c +++ src/hg/lib/hdb.c @@ -2908,30 +2908,52 @@ hashAdd(dbDbHash, dbdb->name, dbdb); return dbDbHash; } int hDbDbCmpOrderKey(const void *va, const void *vb) /* Compare to sort based on order key */ { const struct dbDb *a = *((struct dbDb **)va); const struct dbDb *b = *((struct dbDb **)vb); if (b->orderKey > a->orderKey) return -1; else if (b->orderKey < a->orderKey) return 1; else return 0; } +static int hDbDbCmpName(const void *va, const void *vb) +/* Compare to sort based on organism */ +{ +const struct dbDb *a = *((struct dbDb **)va); +const struct dbDb *b = *((struct dbDb **)vb); + +// put Human at top followed by Mouse and then alphabetically with "Other" at the bottom +if (sameString(a->genome, "Human")) + return -1; +if (sameString(b->genome, "Human")) + return 1; +if (sameString(a->genome, "Mouse")) + return -1; +if (sameString(b->genome, "Mouse")) + return 1; +if (sameString(a->genome, "Other")) + return 1; +if (sameString(b->genome, "Other")) + return -1; +return strcmp(a->genome, b->genome); +} + struct slName *hDbList() /* List of all database versions that are online (database * names only). See also hDbDbList. */ { struct slName *nList = NULL, *n; struct dbDb *dbList, *db; dbList = hDbDbList(); for (db = dbList; db != NULL; db = db->next) { n = newSlName(db->name); slAddTail(&nList, n); } dbDbFree(&dbList); return nList; @@ -4980,31 +5002,31 @@ } if (cfgOptionBooleanDefault("genarkLiftOver", FALSE) && (strlen(dy->string) > 0)) { dy->string[strlen(dy->string) - 1] = 0; struct dbDb *genarkDbDbs = genarkLiftOverDbs(dy->string); liftOverDbList = slCat(genarkDbDbs, liftOverDbList); } hashFree(&hash); hashFree(&dbNameHash); liftOverChainFreeList(&chainList); /* sort by orderKey so that assemblies always appear from most recent */ /* to the oldest assemblies in the dropdown menu for fromDbs */ -slSort(&liftOverDbList, hDbDbCmpOrderKey); +slSort(&liftOverDbList, hDbDbCmpName); return liftOverDbList; } struct dbDb *hGetLiftOverToDatabases(char *fromDb) /* Get list of databases for which there are liftOver chain files * to convert from the fromDb assembly. * Dispose of this with dbDbFreeList. */ { struct dbDb *allDbList = NULL, *liftOverDbList = NULL, *dbDb, *nextDbDb; struct liftOverChain *chainList = NULL, *chain; struct hash *hash = newHash(0); struct hash *dbNameHash = newHash(3); /* Get list of all liftOver chains in central database */ @@ -5039,31 +5061,31 @@ dbDbFree(&dbDb); } if (cfgOptionBooleanDefault("genarkLiftOver", FALSE) && (strlen(dy->string) > 0)) { dy->string[strlen(dy->string) - 1] = 0; struct dbDb *genarkDbDbs = genarkLiftOverDbs(dy->string); liftOverDbList = slCat(genarkDbDbs, liftOverDbList); } hashFree(&hash); liftOverChainFreeList(&chainList); /* sort by orderKey so that assemblies always appear from most recent */ /* to the oldest assemblies in the dropdown menu for toDbs */ -slSort(&liftOverDbList, hDbDbCmpOrderKey); +slSort(&liftOverDbList, hDbDbCmpName); return liftOverDbList; } struct dbDb *hGetBlatIndexedDatabases() /* Get list of databases for which there is a BLAT index. * Dispose of this with dbDbFreeList. */ { struct hash *hash=newHash(5); struct sqlConnection *conn = hConnectCentral(); struct sqlResult *sr; char **row; struct dbDb *dbList = NULL, *db; char query[1024]; /* Get hash of active blat servers. */