6db164b1639cb2219a062e0ff86df8d37ee4f63f
markd
  Fri Jul 15 09:51:51 2011 -0700
added links to obtain predicted sequences for GENCODE genes
diff --git src/hg/hgc/gencodeClick.c src/hg/hgc/gencodeClick.c
index ef9c25a..4c62fb0 100644
--- src/hg/hgc/gencodeClick.c
+++ src/hg/hgc/gencodeClick.c
@@ -182,30 +182,56 @@
 printf("<tr><th>Ensembl automatic");
 prTdExtIdAnchor(tdb, transAttrs->transcriptId, "ensemblTranscriptIdUrl");
 prTdExtIdAnchor(tdb, transAttrs->geneId, "ensemblGeneIdUrl");
 printf("</tr>\n");
 
 printf("<tr><th><a href=\"http://www.gencodegenes.org/gencode_biotypes.html\">Biotype</a><td>%s<td>%s</tr>\n", transAttrs->transcriptType, transAttrs->geneType);
 /* FIXME: add href o */
 printf("<tr><th>Status<td>%s<td>%s</tr>\n", transAttrs->transcriptStatus, transAttrs->geneStatus);
 printf("<tr><th>Method<td>%s<td>%s</tr>\n", getMethodDesc(transcriptSource->source), getMethodDesc(geneSource->source));
 printf("<tr><th>HUGO gene<td colspan=2>%s</tr>\n", transAttrs->geneName);
 printf("<tr><th>CCDS<td>%s<td></tr>\n", transAttrs->ccdsId);
 // FIXME: add sequence here??
 printf("</tbody></table>\n");
 }
 
+static void writeSequenceHtml(struct trackDb *tdb, char *gencodeId, struct genePred *transAnno)
+/* write links to get sequences */
+{
+printf("<table class=\"hgcCcds\"><thead>\n");
+printf("<tr><th colspan=\"2\">Sequences</tr>\n");
+printf("</thead><tbody>\n");
+if (transAnno->cdsStart < transAnno->cdsEnd)
+    {
+    // protein coding
+    printf("<tr><td>");
+    hgcAnchorSomewhere("htcGeneMrna", gencodeId, tdb->table, seqName);
+    printf("Predicted mRNA</a>");
+    printf("<td>");
+    hgcAnchorSomewhere("htcTranslatedPredMRna", gencodeId, "translate", seqName);
+    printf("Predicted protein</a></tr>\n");
+    }
+else
+    {
+    // non-protein coding
+    printf("<tr><td>");
+    hgcAnchorSomewhere("htcGeneMrna", gencodeId, tdb->table, seqName);
+    printf("Predicted mRNA</a><td></tr>\n");
+    }
+printf("</tbody></table>\n");
+}
+
 static void writePdbLinkHtml(struct wgEncodeGencodePdb *pdbs)
 /* write HTML links to PDB */
 {
 printf("<table class=\"hgcCcds\"><thead>\n");
 printf("<tr><th colspan=\"3\">Protein Data Bank</tr>\n");
 printf("</thead><tbody>\n");
 struct wgEncodeGencodePdb *pdb = pdbs;
 int i, rowCnt = 0;
 while ((pdb != NULL) || (rowCnt == 0))
     {
     printf("<tr>");
     for (i = 0; i < 3; i++)
         {
         printf("<td>");
         if (pdb != NULL)
@@ -401,31 +427,31 @@
 
 static struct supportEvid *loadSupportEvid(struct wgEncodeGencodeTranscriptSupport *transcriptSupports,
                                            struct wgEncodeGencodeExonSupport *exonSupports)
 /* load transcript and supporting evidence into a common structure */
 {
 struct supportEvid *supportEvids = NULL;
 transcriptSupportToSupportEvid(&supportEvids, transcriptSupports);
 exonSupportToSupportEvid(&supportEvids, exonSupports);
 sortUniqSupportExidence(&supportEvids);
 return supportEvids;
 }
 
 static void writeSupportExidenceEntry(struct supportEvid *supportEvid)
 /* write HTML table entry  for a supporting evidence */
 {
-// FIXME: should like to sources when possible
+// FIXME: should link to sources when possible
 printf("<td>%s", supportEvid->seqSrc);
 printf("<td>%s", supportEvid->seqId);
 }
 
 static void writeSupportingEvidenceLinkHtml(struct wgEncodeGencodeTranscriptSupport *transcriptSupports,
                                             struct wgEncodeGencodeExonSupport *exonSupports)
 /* write HTML links to supporting evidence */
 {
 struct supportEvid *supportEvids = loadSupportEvid(transcriptSupports, exonSupports);
 
 printf("<table class=\"hgcCcds\"><thead>\n");
 printf("<tr><th colspan=\"4\">Supporting Evidence</tr>\n");
 printf("<tr><th>Source<th>Sequence<th>Source<th>Sequence</tr>\n");
 printf("</thead><tbody>\n");
 struct supportEvid *supportEvid = supportEvids;
@@ -502,31 +528,31 @@
 int geneChromStart, geneChromEnd;
 getGeneBounds(tdb, conn, transAnno, &geneChromStart, &geneChromEnd);
 
 char *title = "GENCODE Transcript Annotation";
 char header[256];
 safef(header, sizeof(header), "%s %s", title, gencodeId);
 if (!isEmpty(transAttrs->geneName))
     safef(header, sizeof(header), "%s %s (%s)", title, gencodeId, transAttrs->geneName);
 else
     safef(header, sizeof(header), "%s %s", title, gencodeId);
 cartWebStart(cart, database, "%s", header);
 printf("<H2> %s</H2>\n", header);
 
 writeBasicInfoHtml(tdb, gencodeId, transAnno, transAttrs, geneChromStart, geneChromEnd, geneSource, transcriptSource);
 writeTagLinkHtml(tags);
-/* FIXME: sequence links */
+writeSequenceHtml(tdb, gencodeId, transAnno);
 writePdbLinkHtml(pdbs);
 writePubMedLinkHtml(pubMeds);
 writeRefSeqLinkHtml(refSeqs);
 writeUniProtLinkHtml(uniProts);
 writeSupportingEvidenceLinkHtml(transcriptSupports, exonSupports);
 wgEncodeGencodeAttrsFree(&transAttrs);
 wgEncodeGencodeGeneSourceFreeList(&geneSource);
 wgEncodeGencodeTranscriptSourceFreeList(&transcriptSource);
 wgEncodeGencodePdbFreeList(&pdbs);
 wgEncodeGencodePubMedFreeList(&pubMeds);
 wgEncodeGencodeRefSeqFreeList(&refSeqs);
 wgEncodeGencodeTranscriptSupportFreeList(&transcriptSupports);
 wgEncodeGencodeExonSupportFreeList(&exonSupports);
 wgEncodeGencodeUniProtFreeList(&uniProts);
 }