8d7997b0de6bd0f5c0dd7b4dd90c36742cec3812
hiram
  Thu Feb 4 16:08:41 2016 -0800
improving formatting of ncbiRefSeq click data refs #13673

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index e6e685b..6d1657d 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -11407,162 +11407,135 @@
     }
 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);
+dyStringPrintf(dy, "%s - %s ", tdb->longLabel, rnaName);
 
 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("<h2>RefSeq Gene %s</h2><br>\n", nrl->name);
+printf("<b>RefSeq:</b> <a href=\"");
+printEntrezNucleotideUrl(stdout, nrl->id);
+printf("\" target=_blank>%s</a>", nrl->id);
+printf("&nbsp;&nbsp;<b>Status: </b>%s<br>\n", nrl->status);
+printf("<b>Description:</b> %s<br>\n", nrl->product);
+if (differentWord(nrl->gbkey, "n/a"))
     {
-    printf("<B>Annotation Release:</B> <A HREF=\"%s\" TARGET=_blank> %s <BR></A>", trackVersion->comment, trackVersion->version);
-    htmlHorizontalLine();
+    printf("<b>Molecule type:</b> %s<br>\n", nrl->gbkey);
     }
-
-printf("</tr>\n</table>\n");
-
-printTrackHtml(tdb);
-hFreeConn(&conn);
+if (differentWord(nrl->pseudo, "n/a"))
+    {
+    printf("<b>Pseudogene:</b> %s<br>\n", nrl->pseudo);
     }
-
-void doNcbiRefGene(struct trackDb *tdb, char *rnaName)
-/* Process click on a NCBI RefSeq gene. */
+if (differentWord(nrl->source, "n/a"))
     {
-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];
-
-struct dyString *dy = newDyString(1024);
-if (isPredicted)
-    dyStringPrintf(dy, "NCBI Predicted RefSeq Gene");
-else
-    dyStringPrintf(dy, "NCBI Curated RefSeq Gene");
-
-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 info from Genbank (if any)
-struct refLink *rl = printRefSeqInfo( conn, tdb, noDot, ptr);
-
-/* Make sure to escape single quotes for DB parseability */
-if (strchr(rnaName, '\''))
+    printf("<b>Source:</b> %s<br>\n", nrl->source);
+    }
+if (differentWord(nrl->gene_biotype, "n/a"))
     {
-    sqlRnaName = replaceChars(rnaName, "'", "''");
+    printf("<b>Biotype:</b> %s<br>\n", nrl->gene_biotype);
     }
-
-/* get refLink entry */
-sqlSafef(query, sizeof(query), "select * from ncbiRefLink where id = '%s'", sqlRnaName);
-sr = sqlGetResult(conn, query);
-if ((row = sqlNextRow(sr)) == NULL)
-    errAbort("Couldn't find %s in ncbiRefLink table.", rnaName);
-nrl = ncbiRefLinkLoad(row);
-sqlFreeResult(&sr);
-
-/* print the first section with info  */
-printf("<table border=0>\n<tr>\n");
-if (rl == NULL)
+if (differentWord(nrl->gene_synonym, "n/a"))
     {
-    prNcbiRefGeneInfo(conn, rnaName, sqlRnaName, nrl, isPredicted);
-    htmlHorizontalLine();
+    printf("<b>Synonyms:</b> %s<br>\n", nrl->gene_synonym);
     }
+if (differentWord(nrl->ncrna_class, "n/a"))
+    {
+    printf("<b>ncRNA class:</b> %s<br>\n", nrl->ncrna_class);
+    }
+if (differentWord(nrl->note, "n/a"))
+    {
+    printf("<b>Other notes:</b> %s<br>\n", nrl->note);
+    }
+printf("<b>OMIM:</b> <a href=\"");
+printEntrezOMIMUrl(stdout, sqlSigned(nrl->omimId));
+printf("\" target=_blank>%s</a><br>\n", nrl->omimId);
 
-if ((trackVersion != NULL) && !isEmpty(trackVersion->version))
+if (nrl->locusLinkId != 0)
     {
-    printf("<B>Annotation Release:</B> <A HREF=\"%s\" TARGET=_blank> %s <BR></A>", trackVersion->comment, trackVersion->version);
-    htmlHorizontalLine();
+    printf("<b>Entrez Gene:</b> ");
+    printf("<a href=\"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids=%s\" TARGET=_blank>",
+           nrl->locusLinkId);
+    printf("%s</a><br>\n", nrl->locusLinkId);
     }
 
-printf("</tr>\n</table>\n");
+if (differentWord(nrl->name,"n/a"))
+    {
+    printGeneCards(nrl->name);
+    if (startsWith("hg", database))
+        {
+        printf("<b>AceView:</b> ");
+        printf("<a href = \"http://www.ncbi.nlm.nih.gov/IEB/Research/Acembly/av.cgi?db=human&l=%s\" target=_blank>",
+	   nrl->name);
+        printf("%s</a><br>\n", nrl->name);
+        }
+    }
+printf("<hr>\n");
+printf("Summary of <b>%s</b><br>\n%s<br><hr>\n", nrl->name, nrl->description);
 
-struct palInfo *palInfo = NULL;
+/* 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 (genbankIsRefSeqCodingMRnaAcc(rnaName))
+if ((trackVersion != NULL) && !isEmpty(trackVersion->version))
     {
-    AllocVar(palInfo);
-    palInfo->chrom = chrom;
-    palInfo->left = left;
-    palInfo->right = right;
-    palInfo->rnaName = rnaName;
+    printf("<B>Annotation Release:</B> <A href=\"%s\" TARGET=_blank> %s <BR></A>", trackVersion->comment, trackVersion->version);
+    htmlHorizontalLine();
     }
 
-geneShowPosAndLinksPal(nrl->id, NULL, tdb, NULL, "htcTranslatedProtein",
-		    "htcGeneMrna", "htcGeneInGenome", "mRNA Sequence",palInfo);
+printf("</tr>\n</table>\n");
 
 printTrackHtml(tdb);
 hFreeConn(&conn);
 }
 
 void doRefGene(struct trackDb *tdb, char *rnaName)
 /* Process click on a known RefSeq gene. */
 {
 struct sqlConnection *conn = hAllocConn(database);
 int start = cartInt(cart, "o");
 int left = cartInt(cart, "l");
 int right = cartInt(cart, "r");
 char *chrom = cartString(cart, "c");
 
 boolean isXeno = sameString(tdb->table, "xenoRefGene");
@@ -24990,35 +24963,30 @@
     {
     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") )
-    {
-    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);
     }