4690c819e89c7f5f70ed91da46fb2843e78f043c markd Wed Aug 18 17:01:54 2010 -0700 add CCDS public notes to the CCDS details page diff --git src/hg/hgc/ccdsClick.c src/hg/hgc/ccdsClick.c index 446fd16..f5fae2d 100644 --- src/hg/hgc/ccdsClick.c +++ src/hg/hgc/ccdsClick.c @@ -3,6 +3,7 @@ #include "hgc.h" #include "ccdsClick.h" #include "ccdsInfo.h" +#include "ccdsNotes.h" #include "ccdsGeneMap.h" #include "geneSimilarities.h" #include "genbank.h" @@ -296,39 +297,20 @@ geneSimilaritiesFreeList(&geneSims); } -void doCcdsGene(struct trackDb *tdb, char *ccdsId) -/* Process click on a CCDS gene. */ -{ -struct sqlConnection *conn = hAllocConn(database); -struct ccdsInfo *rsCcds = ccdsInfoSelectByCcds(conn, ccdsId, ccdsInfoNcbi); -struct ccdsInfo *vegaCcds = ccdsInfoSelectByCcds(conn, ccdsId, ccdsInfoVega); -struct ccdsInfo *ensCcds = ccdsInfoSelectByCcds(conn, ccdsId, ccdsInfoEnsembl); -char *geneSym, *desc, *summary; - -if (rsCcds == NULL) - errAbort("database inconsistency: no NCBI ccdsInfo entries found for %s", ccdsId); -if ((vegaCcds == NULL) && (ensCcds == NULL)) - errAbort("database inconsistency: no Hinxton ccdsInfo entries found for %s", ccdsId); - -ccdsInfoMRnaSort(&rsCcds); -ccdsInfoMRnaSort(&vegaCcds); -ccdsInfoMRnaSort(&ensCcds); - -cartWebStart(cart, database, "CCDS Gene"); - -printf("

Consensus CDS Gene %s

\n", ccdsId); - -/* table with basic information about the CCDS (2 columns) */ +static void writeBasicInfoHtml(struct sqlConnection *conn, char *ccdsId, struct ccdsInfo *rsCcds, + struct ccdsInfo *vegaCcds, struct ccdsInfo *ensCcds) +/* write table with basic information about the CCDS (2 columns) */ +{ { printf("\n"); /* gene symbol */ -geneSym = getCcdsGeneSymbol(conn, rsCcds); +char *geneSym = getCcdsGeneSymbol(conn, rsCcds); if (geneSym != NULL) printf("\n", geneSym); freez(&geneSym); /* description */ -desc = hGenBankGetDesc(database, rsCcds->mrnaAcc, TRUE); +char *desc = hGenBankGetDesc(database, rsCcds->mrnaAcc, TRUE); if (desc != NULL) printf("\n", desc); freez(&desc); @@ -354,10 +336,14 @@ printf("
Gene%s
Description%s
\n"); printf("
\n"); +} } -/* table with links to other browser apps or external databases (3 columns) */ +static void writeLinksHtml(struct sqlConnection *conn, char *ccdsId, struct ccdsInfo *rsCcds, + struct ccdsInfo *vegaCcds, struct ccdsInfo *ensCcds) +/* write table with links to other browser apps or external databases (3 columns) */ +{ +printf("

Associated Sequences

\n"); printf("\n"); -printf("\n"); printf("\n"); printf("\n"); printf("\n"); @@ -374,9 +360,33 @@ printf("
Associated Sequences
 mRNAProtein
\n"); printf("

Note: mRNA and protein sequences in other gene collections " - "may differ from the CCDS sequences.\n"); + "may differ from the CCDS sequences.
\n"); +} + +static void writePublicNotesHtml(struct sqlConnection *conn, char *ccdsId) +/* write public notes if available */ +{ +struct ccdsNotes *ccdsNotes = sqlQueryObjs(conn, (sqlLoadFunc)ccdsNotesLoad, sqlQueryMulti, + "select * from ccdsNotes where ccds = \"%s\" order by createDate", ccdsId); +if (ccdsNotes != NULL) + { + htmlHorizontalLine(); + printf("

Annotator Notes

\n"); + printf("\n"); + printf("\n"); + printf("\n"); + printf("\n"); + struct ccdsNotes *note; + for (note = ccdsNotes; note != NULL; note = note->next) + printf("", note->createDate, note->note); + printf("
DateNote
%s%s
\n"); + } +} -summary = getCcdsRefSeqSummary(conn, rsCcds); +static void writeRefSeqSummaryHtml(struct sqlConnection *conn, char *ccdsId, struct ccdsInfo *rsCcds) +/* write refseq summary HTML, if a summary is available */ +{ +char *summary = getCcdsRefSeqSummary(conn, rsCcds); if (summary != NULL) { htmlHorizontalLine(); @@ -384,6 +394,34 @@ printf("

%s

\n", summary); freez(&summary); } +} + +void doCcdsGene(struct trackDb *tdb, char *ccdsId) +/* Process click on a CCDS gene. */ +{ +struct sqlConnection *conn = hAllocConn(database); +struct ccdsInfo *rsCcds = ccdsInfoSelectByCcds(conn, ccdsId, ccdsInfoNcbi); +struct ccdsInfo *vegaCcds = ccdsInfoSelectByCcds(conn, ccdsId, ccdsInfoVega); +struct ccdsInfo *ensCcds = ccdsInfoSelectByCcds(conn, ccdsId, ccdsInfoEnsembl); + +if (rsCcds == NULL) + errAbort("database inconsistency: no NCBI ccdsInfo entries found for %s", ccdsId); +if ((vegaCcds == NULL) && (ensCcds == NULL)) + errAbort("database inconsistency: no Hinxton ccdsInfo entries found for %s", ccdsId); + +ccdsInfoMRnaSort(&rsCcds); +ccdsInfoMRnaSort(&vegaCcds); +ccdsInfoMRnaSort(&ensCcds); + +cartWebStart(cart, database, "CCDS Gene"); + +printf("

Consensus CDS Gene %s

\n", ccdsId); + +writeBasicInfoHtml(conn, ccdsId, rsCcds, vegaCcds, ensCcds); +writeLinksHtml(conn, ccdsId, rsCcds, vegaCcds, ensCcds); +writePublicNotesHtml(conn, ccdsId); +writeRefSeqSummaryHtml(conn, ccdsId, rsCcds); +htmlHorizontalLine(); printTrackHtml(tdb); ccdsInfoFreeList(&rsCcds);