e3e21c453e6963fddd0f1c32a1d6a4b9bab685e2
hiram
  Thu Feb 4 14:57:18 2016 -0800
first pass as display of metadata for NCBI RefSeq track, needs improvement refs #13673

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index bb36852..e6e685b 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -87,30 +87,31 @@
 #include "cnpIafrate2.h"
 #include "cnpLocke.h"
 #include "cnpSebat.h"
 #include "cnpSebat2.h"
 #include "cnpSharp.h"
 #include "cnpSharp2.h"
 #include "delHinds2.h"
 #include "delConrad2.h"
 #include "dgv.h"
 #include "dgvPlus.h"
 #include "tokenizer.h"
 #include "softberryHom.h"
 #include "borkPseudoHom.h"
 #include "sanger22extra.h"
 #include "ncbiRefLink.h"
+#include "ncbiRefSeqLink.h"
 #include "refLink.h"
 #include "hgConfig.h"
 #include "estPair.h"
 #include "softPromoter.h"
 #include "customTrack.h"
 #include "trackHub.h"
 #include "hubConnect.h"
 #include "sage.h"
 #include "sageExp.h"
 #include "pslWScore.h"
 #include "lfs.h"
 #include "mcnBreakpoints.h"
 #include "fishClones.h"
 #include "featureBits.h"
 #include "web.h"
@@ -11397,30 +11398,94 @@
 
 /* optional summary text */
 summary = getRefSeqSummary(conn, sqlRnaName);
 if (summary != NULL)
     {
     htmlHorizontalLine();
     printf("<H3>Summary of %s</H3>\n", rl->name);
     printf("<P>%s</P>\n", summary);
     freeMem(summary);
     }
 htmlHorizontalLine();
 
 return rl;
 }
 
+void doNcbiRefSeq(struct trackDb *tdb, char *rnaName)
+/* Process click on a NCBI RefSeq gene. */
+{
+struct sqlConnection *conn = hAllocConn(database);
+struct sqlResult *sr;
+char **row;
+char query[256];
+char *sqlRnaName = rnaName;
+struct ncbiRefSeqLink *nrl;
+char noDot[1024];
+
+struct dyString *dy = newDyString(1024);
+dyStringPrintf(dy, "%s", tdb->longLabel);
+
+struct trackVersion *trackVersion = getTrackVersion(database, "ncbiRefSeq");
+if ((trackVersion != NULL) && !isEmpty(trackVersion->version))
+    dyStringPrintf(dy, "- Release %s\n", trackVersion->version);
+
+cartWebStart(cart, database, "%s", dy->string);
+safecpy(noDot, sizeof noDot,  rnaName);
+char *ptr = strchr(noDot, '.');
+if (ptr)
+    *ptr++ = 0;
+
+/* get refLink entry */
+sqlSafef(query, sizeof(query), "select * from ncbiRefSeqLink where id = '%s'", sqlRnaName);
+sr = sqlGetResult(conn, query);
+if ((row = sqlNextRow(sr)) == NULL)
+    errAbort("Couldn't find %s in ncbiRefSeqLink table.", rnaName);
+nrl = ncbiRefSeqLinkLoad(row);
+sqlFreeResult(&sr);
+
+/* print the first section with info  */
+printf("<ul>\n");
+printf("<li>%s: %s</li>\n", "status", nrl->status);
+printf("<li>%s: %s</li>\n", "name", nrl->name);
+printf("<li>%s: %s</li>\n", "product", nrl->product);
+printf("<li>%s: %s</li>\n", "mrnaAcc", nrl->mrnaAcc);
+printf("<li>%s: %s</li>\n", "protAcc", nrl->protAcc);
+printf("<li>%s: %s</li>\n", "locusLinkId", nrl->locusLinkId);
+printf("<li>%s: %s</li>\n", "omimId", nrl->omimId);
+printf("<li>%s: %s</li>\n", "hgnc", nrl->hgnc);
+printf("<li>%s: %s</li>\n", "genbank", nrl->genbank);
+printf("<li>%s: %s</li>\n", "pseudo", nrl->pseudo);
+printf("<li>%s: %s</li>\n", "gbkey", nrl->gbkey);
+printf("<li>%s: %s</li>\n", "source", nrl->source);
+printf("<li>%s: %s</li>\n", "gene_biotype", nrl->gene_biotype);
+printf("<li>%s: %s</li>\n", "gene_synonym", nrl->gene_synonym);
+printf("<li>%s: %s</li>\n", "ncrna_class", nrl->ncrna_class);
+printf("<li>%s: %s</li>\n", "note", nrl->note);
+printf("<li>%s: %s</li>\n", "description", nrl->description);
+
+if ((trackVersion != NULL) && !isEmpty(trackVersion->version))
+    {
+    printf("<B>Annotation Release:</B> <A HREF=\"%s\" TARGET=_blank> %s <BR></A>", trackVersion->comment, trackVersion->version);
+    htmlHorizontalLine();
+    }
+
+printf("</tr>\n</table>\n");
+
+printTrackHtml(tdb);
+hFreeConn(&conn);
+}
+
 void doNcbiRefGene(struct trackDb *tdb, char *rnaName)
 /* Process click on a NCBI RefSeq gene. */
 {
 struct sqlConnection *conn = hAllocConn(database);
 struct sqlResult *sr;
 char **row;
 char query[256];
 char *sqlRnaName = rnaName;
 struct ncbiRefLink *nrl;
 boolean isPredicted = sameString(tdb->table, "ncbiRefPredicted");
 int left = cartInt(cart, "l");
 int right = cartInt(cart, "r");
 char *chrom = cartString(cart, "c");
 char noDot[1024];
 
@@ -24925,34 +24990,42 @@
     {
     doSuperfamily(tdb, item, NULL);
     }
 else if (sameWord(table, "ensGene") || sameWord (table, "ensGeneNonCoding"))
     {
     doEnsemblGene(tdb, item, NULL);
     }
 else if (sameWord(table, "xenoRefGene"))
     {
     doRefGene(tdb, item);
     }
 else if (sameWord(table, "knownGene"))
     {
     doKnownGene(tdb, item);
     }
-else if (sameWord(table, "ncbiRefPredicted") || sameWord(table, "ncbiRefCurated") )
+else if (sameWord(table, "ncbiRefPredicted") ||
+         sameWord(table, "ncbiRefCurated") )
     {
     doNcbiRefGene(tdb, item);
     }
+else if (sameWord(table, "ncbiRefSeq") ||
+         sameWord(table, "ncbiRefSeqCurated") ||
+         sameWord(table, "ncbiRefSeqPredicted") ||
+         sameWord(table, "ncbiRefSeqOther") )
+    {
+    doNcbiRefSeq(tdb, item);
+    }
 else if (sameWord(table, "refGene") )
     {
     doRefGene(tdb, item);
     }
 else if (sameWord(table, "ccdsGene"))
     {
     doCcdsGene(tdb, item);
     }
 else if (isNewGencodeGene(tdb))
     {
     doGencodeGene(tdb, item);
     }
 else if (sameWord(table, "mappedRefSeq"))
     /* human refseqs on chimp browser */
     {