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); }