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/hgLiftOver/hgLiftOver.c src/hg/hgLiftOver/hgLiftOver.c index ce8f0b789d2..402ddafe6e1 100644 --- src/hg/hgLiftOver/hgLiftOver.c +++ src/hg/hgLiftOver/hgLiftOver.c @@ -355,32 +355,32 @@ " Run <I>liftOver</I> with no arguments to see the usage message.\n" "See the <a href=\"../goldenPath/help/hgTracksHelp.html#Liftover\">LiftOver documentation</a>."); } double scoreLiftOverChain(struct liftOverChain *chain, char *fromOrg, char *fromDb, char *toOrg, char *toDb, char *cartOrg, char *cartDb, struct hash *dbRank, struct hash *dbHash) /* Score the chain in terms of best match for cart settings */ { double score = 0; struct dbDb *chainFromDbDb = hashFindVal(dbHash, chain->fromDb); struct dbDb *chainToDbDb = hashFindVal(dbHash, chain->toDb); -char *chainFromOrg = (chainFromDbDb) ? chainFromDbDb->organism : NULL; -char *chainToOrg = (chainToDbDb) ? chainToDbDb->organism : NULL; +char *chainFromOrg = (chainFromDbDb) ? chainFromDbDb->organism : hOrganism(chain->fromDb); +char *chainToOrg = (chainToDbDb) ? chainToDbDb->organism : hOrganism(chain->toDb); int fromRank = hashIntValDefault(dbRank, chain->fromDb, 0); /* values up to approx. #assemblies */ int toRank = hashIntValDefault(dbRank, chain->toDb, 0); int maxRank = hashIntVal(dbRank, "maxRank"); if (!chainFromOrg || !chainToOrg) return 0; if (sameOk(fromOrg,chainFromOrg) && sameOk(fromDb,chain->fromDb) && sameOk(toOrg,chainToOrg) && sameOk(toDb,chain->toDb)) score += 10000000; if (sameOk(fromOrg,chainFromOrg)) score += 2000000; @@ -431,59 +431,42 @@ if (sameWord(fromOrg,"0")) fromOrg = NULL; if (sameWord(fromDb,"0")) fromDb = NULL; if (sameWord(toOrg,"0")) toOrg = NULL; if (sameWord(toDb,"0")) toDb = NULL; if (sameWord(cartDb,"0")) cartDb = NULL; if ((fromDb != NULL) && !sameOk(fromOrg, hOrganism(fromDb))) fromDb = NULL; if ((toDb != NULL) && !sameOk(toOrg, hOrganism(toDb))) toDb = NULL; -boolean choiceBestScore = FALSE; for (this = chainList; this != NULL; this = this->next) { if (sameOk(this->fromDb ,fromDb) && sameOk(this->toDb, toDb)) { choice = this; - choiceBestScore = FALSE; break; } double score = scoreLiftOverChain(this, fromOrg, fromDb, toOrg, toDb, cartOrg, cartDb, dbRank, dbDbHash); if (score > bestScore) { choice = this; bestScore = score; - choiceBestScore = TRUE; - } - } - -// the scoring regime is not working correctly with genark assemblies to get -// the user selected fromDb even if there is a change for it. -if (cfgOptionBooleanDefault("genarkLiftOver", FALSE) && choiceBestScore && !sameOk(choice->fromDb ,fromDb)) - { - for (this = chainList; this != NULL; this = this->next) - { - if (sameOk(this->fromDb ,fromDb)) - { - choice = this; - break; - } } } return choice; } void doMiddle(struct cart *theCart) /* Set up globals and make web page */ { char *userData; char *organism; char *db; float minBlocks, minMatch; boolean multiple, fudgeThick;