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/hgConvert/hgConvert.c src/hg/hgConvert/hgConvert.c
index bcacfba1340..ef52c33f617 100644
--- src/hg/hgConvert/hgConvert.c
+++ src/hg/hgConvert/hgConvert.c
@@ -144,57 +144,63 @@
     sameOk(fromDb,chain->fromDb) &&
     sameOk(toOrg,chainToOrg) &&
     sameOk(toDb,chain->toDb))
     score += 10000000;
 
 if (sameOk(fromOrg,chainFromOrg))
     score += 2000000;
 if (sameOk(fromDb,chain->fromDb))
     score += 1000000;
 
 if (sameOk(toOrg,chainToOrg))
     score += 200000;
 if (sameOk(toDb,chain->toDb))
     score += 100000;
 
-if (toRank == 0)  // chains to db's that are not active shouldn't be considered
-    return 0;
+// at the moment we aren't ranking genark db's
+//if (toRank == 0)  // chains to db's that are not active shouldn't be considered
+    //return 0;
 score += 10*(maxRank-fromRank);
 score += (maxRank - toRank);
 
 return score;
 }
 
 
 static struct liftOverChain *defaultChoices(struct liftOverChain *chainList, char *fromOrg, char *fromDb)
 /* Out of a list of liftOverChains and a cart, choose a
  * list to display. */
 {
 char *toOrg, *toDb;
 struct liftOverChain *choice = NULL;
 struct hash *dbRank = hGetDatabaseRank();
 double bestScore = -1;
 struct liftOverChain *this = NULL;
 
 /* Get the initial values. */
 toOrg = cartCgiUsualString(cart, HGLFT_TOORG_VAR, "0");
 toDb = cartCgiUsualString(cart, HGLFT_TODB_VAR, "0");
 
 if (sameWord(toOrg,"0"))
     toOrg = NULL;
 if (sameWord(toDb,"0"))
     toDb = NULL;
+if ((toDb != NULL) && !sameOk(toOrg, hOrganism(toDb)))
+    toDb = NULL;
+
+if (toOrg == NULL)
+    toOrg = "Human";
 
 for (this = chainList; this != NULL; this = this->next)
     {
     double score = scoreLiftOverChain(this, fromOrg, fromDb, toOrg, toDb, dbRank);
     if (score > bestScore)
 	{
 	choice = this;
 	bestScore = score;
 	}
     }
 
 return choice;
 }
 
 static char *skipWord(char *s)
@@ -399,31 +405,31 @@
     printf("</TABLE>");
     }
 cartWebEnd();
 }
 
 static struct liftOverChain *cleanLiftOverList(struct liftOverChain *list)
 /* eliminate from the list where toDb doesn't exist in dbDb */
 {
 struct liftOverChain *cleanList = NULL;
 struct hash *dbDbHash = hDbDbHash();
 struct liftOverChain *this = NULL;
 struct liftOverChain *next = NULL;
 for (this = list; this != NULL; this = next)
     {
     next = this->next;
-    if (hashLookup(dbDbHash, this->toDb))
+    if (hashLookup(dbDbHash, this->toDb) || startsWith("GC", this->toDb))
         slAddHead(&cleanList, this);
     else
         liftOverChainFree(&this);
     }
 slReverse(&cleanList);
 return cleanList;
 }
 
 static void doMiddle(struct cart *theCart)
 /* Set up globals and make web page */
 {
 char *fromPos = cartString(theCart, "position");
 
 cart = theCart;
 getDbAndGenome(cart, &database, &organism, oldVars);