7f7a9a5579d7acec698c51dbf93f5030ce1a0439 braney Tue Apr 8 15:43:17 2025 -0700 support genePred in quickLift diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index 8ec8aebd78d..a37ed9bb652 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -2893,39 +2893,41 @@ break; case cdsIncomplete: /* "incmpl" - CDS is not complete at this end */ printf("<em>not</em> complete<br>\n"); break; case cdsComplete: /* "cmpl" - CDS is complete at this end */ printf("complete<br>\n"); break; } } void showGenePos(char *name, struct trackDb *tdb) /* Show gene prediction position and other info. */ { char *rootTable = tdb->table; char query[512]; -struct sqlConnection *conn = hAllocConn(database); +char *liftDb = cloneString(trackDbSetting(tdb, "quickLiftDb")); +char *db = (liftDb == NULL) ? database : liftDb; +struct sqlConnection *conn = hAllocConn(db); struct genePred *gpList = NULL, *gp = NULL; char table[HDB_MAX_TABLE_STRING]; struct sqlResult *sr = NULL; char **row = NULL; char *classTable = trackDbSetting(tdb, GENEPRED_CLASS_TBL); -if (!hFindSplitTable(database, seqName, rootTable, table, sizeof table, NULL)) +if (!hFindSplitTable(db, seqName, rootTable, table, sizeof table, NULL)) errAbort("showGenePos track %s not found", rootTable); sqlSafef(query, sizeof(query), "name = \"%s\"", name); gpList = genePredReaderLoadQuery(conn, table, query); for (gp = gpList; gp != NULL; gp = gp->next) { printPos(gp->chrom, gp->txStart, gp->txEnd, gp->strand, FALSE, NULL); if(sameString(tdb->type,"genePred") && startsWith("ENCODE Gencode",tdb->longLabel) && startsWith("ENST",name)) { char *ensemblIdUrl = trackDbSetting(tdb, "ensemblIdUrl"); printf("<b>Ensembl Transcript Id: </b>"); if (ensemblIdUrl != NULL) printf("<a href=\"%s%s\" target=\"_blank\">%s</a><br>", ensemblIdUrl,name,name); @@ -2934,56 +2936,56 @@ } if (gp->name2 != NULL && strlen(trimSpaces(gp->name2))> 0) { /* in Ensembl gene info downloaded from ftp site, sometimes the name2 field is populated with "noXref" because there is no alternate name. Replace this with "none" */ printf("<b>Gene Symbol:"); if ((strlen(gp->name2) < 1) || (sameString(gp->name2, "noXref"))) printf("</b> none<br>\n"); else printf("</b> %s<br>\n",gp->name2); } char *ensemblSource = NULL; if (sameString("ensGene", table)) { - if (hTableExists(database, "ensemblSource")) + if (hTableExists(db, "ensemblSource")) { sqlSafef(query, sizeof(query), "select source from ensemblSource where name='%s'", name); ensemblSource = sqlQuickString(conn, query); } } if ((gp->exonFrames != NULL) && (!genbankIsRefSeqNonCodingMRnaAcc(gp->name))) { if (ensemblSource && differentString("protein_coding",ensemblSource)) { printf("<b>CDS Start: </b> none (non-coding)<BR>\n"); printf("<b>CDS End: </b> none (non-coding)<BR>\n"); } else { printf("<b>CDS Start: </b>"); printCdsStatus((gp->strand[0] == '+') ? gp->cdsStartStat : gp->cdsEndStat); printf("<b>CDS End: </b>"); printCdsStatus((gp->strand[0] == '+') ? gp->cdsEndStat : gp->cdsStartStat); } } /* if a gene class table exists, get gene class and print */ if (classTable != NULL) { - if (hTableExists(database, classTable)) + if (hTableExists(db, classTable)) { sqlSafef(query, sizeof(query), "select class from %s where name = \"%s\"", classTable, name); sr = sqlGetResult(conn, query); /* print class */ if ((row = sqlNextRow(sr)) != NULL) printf("<b>Prediction Class:</b> %s<br>\n", row[0]); sqlFreeResult(&sr); if (sqlFieldIndex(conn, classTable, "level") > 0 ) { sqlSafef(query, sizeof(query), "select level from %s where name = \"%s\"", classTable, name); sr = sqlGetResult(conn, query); if ((row = sqlNextRow(sr)) != NULL) printf("<b>Level: </b> %s<br>\n", row[0]); @@ -11696,32 +11698,34 @@ prGRShortRefGene(row[0]); } } sqlFreeResult(&sr); } showOmimDisorderTable(conn, url, itemName); } printf("</div>"); // #omimText } static void printOmimLocationDetails(struct trackDb *tdb, char *itemName, boolean encode) /* Print details of an OMIM Class 3 Gene entry. */ { -struct sqlConnection *conn = hAllocConn(database); -struct sqlConnection *conn2 = hAllocConn(database); +char *liftDb = cloneString(trackDbSetting(tdb, "quickLiftDb")); +char *db = (liftDb == NULL) ? database : liftDb; +struct sqlConnection *conn = hAllocConn(db); +struct sqlConnection *conn2 = hAllocConn(db); char query[256]; struct sqlResult *sr; char **row; char *url = tdb->url; char *kgId = NULL; char *title1 = NULL; char *geneSymbol = NULL; char *chrom, *chromStart, *chromEnd; char *kgDescription = NULL; char *refSeq; char *omimId; chrom = cartOptionalString(cart, "c"); chromStart = cartOptionalString(cart, "o"); chromEnd = cartOptionalString(cart, "t"); @@ -11923,31 +11927,33 @@ printf("<HR>"); printPosOnChrom(chrom, atoi(chromStart), atoi(chromEnd), NULL, FALSE, itemName); } void doOmimLocation(struct trackDb *tdb, char *item) /* Put up OmimGene track info. */ { genericHeader(tdb, item); printOmimLocationDetails(tdb, item, FALSE); printTrackHtml(tdb); } void printOmimAvSnpDetails(struct trackDb *tdb, char *itemName, boolean encode) /* Print details of an OMIM AvSnp entry. */ { -struct sqlConnection *conn = hAllocConn(database); +char *liftDb = cloneString(trackDbSetting(tdb, "quickLiftDb")); +char *db = (liftDb == NULL) ? database : liftDb; +struct sqlConnection *conn = hAllocConn(db); char query[256]; struct sqlResult *sr; char **row; char *url = tdb->url; char *title1 = NULL; char *chrom, *chromStart, *chromEnd; char *avId; char *dbSnpId; char *chp; char avString[255]; char *avDesc = NULL; chrom = cartOptionalString(cart, "c"); chromStart = cartOptionalString(cart, "o"); chromEnd = cartOptionalString(cart, "t");