61baacb2558c51f93fe4219337d4b5a0b21a6faa jcasper Tue Aug 13 22:16:36 2024 -0700 hgGene will start linking to our ncbiRefSeq track instead of refGene, refs #34291 diff --git src/hg/hgGene/synonym.c src/hg/hgGene/synonym.c index d2c8f76..8e7f732 100644 --- src/hg/hgGene/synonym.c +++ src/hg/hgGene/synonym.c @@ -18,30 +18,38 @@ /* Print URL for Entrez browser on a nucleotide. */ { fprintf(f, "../cgi-bin/hgc?%s&g=mrna&i=%s&c=%s&o=%d&t=%d&l=%d&r=%d&db=%s", cartSidUrlString(cart), accession, curGeneChrom, curGeneStart, curGeneEnd, curGeneStart, curGeneEnd, database); } static void printOurRefseqUrl(FILE *f, char *accession) /* Print URL for Entrez browser on a nucleotide. */ { fprintf(f, "../cgi-bin/hgc?%s&g=refGene&i=%s&c=%s&o=%d&l=%d&r=%d&db=%s", cartSidUrlString(cart), accession, curGeneChrom, curGeneStart, curGeneStart, curGeneEnd, database); } +static void printNcbiRefseqUrl(FILE *f, char *accession) +/* Print URL for ncbiRefSeq in hgc on a nucleotide. */ +{ +fprintf(f, "../cgi-bin/hgc?%s&g=ncbiRefSeq&i=%s&c=%s&o=%d&l=%d&r=%d&db=%s", + cartSidUrlString(cart), accession, curGeneChrom, curGeneStart, curGeneStart, + curGeneEnd, database); +} + static int countAlias(char *id, struct sqlConnection *conn) /* Count how many valid gene symbols to be printed */ { char query[256]; struct sqlResult *sr; int cnt = 0; char **row; sqlSafef(query, sizeof(query), "select alias from kgAlias where kgId = '%s' order by alias", id); sr = sqlGetResult(conn, query); row = sqlNextRow(sr); while (row != NULL) { /* skip kgId and the maint gene symbol (curGeneName) */ if ((!sameWord(id, row[0])) && (!sameWord(row[0], curGeneName))) @@ -308,45 +316,58 @@ /* get Gene Symbol and RefSeq accession from Zebrafish-specific */ /* cross-reference table */ printGeneSymbol(id, xrefTable, geneIdCol, conn); refSeqAcc = getRefSeqAcc(id, xrefTable, geneIdCol, conn); hPrintf("ENSEMBL ID: %s", id); } else { char query[256]; char *toRefTable = genomeOptionalSetting("knownToRef"); if (toRefTable != NULL && sqlTableExists(conn, toRefTable)) { sqlSafef(query, sizeof(query), "select value from %s where name='%s'", toRefTable, id); refSeqAcc = emptyForNull(sqlQuickString(conn, query)); + if (sqlTableExists(conn, "ncbiRefSeqLink")) + { + // Find the versioned accession number. Technically GENCODE might have specified a different + // version (e.g. their record lists NM_XXX.5, we cut off the .5 for kgXref, and our (older) + // ncbiRefSeq track still has the .4 version of the transcript). Probably better to link to + // an older transcript version than nothing though. On the plus side, this should help + // insulate kgXref from changes to ncbiRefSeq. + sqlSafef(query, sizeof(query), "select id from ncbiRefSeqLink where id like '%s%%'", refSeqAcc); + refSeqAcc = emptyForNull(sqlQuickString(conn, query)); + } } if (sqlTableExists(conn, "kgXref")) { sqlSafef(query, sizeof(query), "select mRNA from kgXref where kgID='%s'", id); mrnaAcc = emptyForNull(sqlQuickString(conn, query)); } if (sameWord(genome, "C. elegans")) hPrintf("WormBase ID: %s
", id); else hPrintf("UCSC ID: %s
", isGencode2 ? curAlignId : curGeneId ); } if (refSeqAcc[0] != 0) { hPrintf("RefSeq Accession: %s
\n", refSeqAcc); } else if (mrnaAcc[0] != 0) { sqlSafef(condStr, sizeof(condStr), "acc = '%s'", mrnaAcc); if (sqlGetField(database, gbCdnaInfoTable, "acc", condStr) != NULL) { hPrintf("Representative RNA: %s
\n", mrnaAcc); } else /* do not show URL link if it is not found in gbCdnaInfoTable */ {