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;