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 */
{