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 liftOver with no arguments to see the usage message.\n"
"See the LiftOver documentation.");
}
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;