52c0837e4083cc8e03a25e8a91a79631f569dd92 fanhsu Mon Jul 11 16:23:56 2011 -0700 Added COSMIC functions. diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index a05aae0..f805cd5 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -9092,30 +9092,113 @@ printPosOnChrom(chrom, atoi(chromStart), atoi(chromEnd), NULL, FALSE, itemName); } sqlFreeResult(&sr); hFreeConn(&conn); } } void doGad(struct trackDb *tdb, char *item, char *itemForUrl) /* Put up GAD track info. */ { genericHeader(tdb, item); printGadDetails(tdb, item, FALSE); printTrackHtml(tdb); } +void printCosmicDetails(struct trackDb *tdb, char *itemName) +/* Print details of a COSMIC entry. */ +{ +struct sqlConnection *conn = hAllocConn(database); +char query[1024]; +struct sqlResult *sr; +char **row; +char *chp; + +char *source, *cosmic_mutation_id, *gene_name, *accession_number; +char *mut_description, *mut_syntax_cds, *mut_syntax_aa; +char *chromosome, *grch37_start, *grch37_stop, *mut_nt; +char *mut_aa, *tumour_site, *mutated_samples, *examined_samples, *mut_freq; +char *url = tdb->url; + +char *chrom, *chromStart, *chromEnd; +chrom = cartOptionalString(cart, "c"); +chromStart = cartOptionalString(cart, "o"); +chromEnd = cartOptionalString(cart, "t"); + +safef(query, sizeof(query), + "select %s,%s from cosmicRaw where cosmic_mutation_id='%s'", + "source,cosmic_mutation_id,gene_name,accession_number,mut_description,mut_syntax_cds,mut_syntax_aa", + "chromosome,grch37_start,grch37_stop,mut_nt,mut_aa,tumour_site,mutated_samples,examined_samples,mut_freq", + itemName); + +sr = sqlMustGetResult(conn, query); +row = sqlNextRow(sr); +if (row != NULL) + { + int ii; + ii=0; + + source = row[ii];ii++; + cosmic_mutation_id = row[ii];ii++; + gene_name = row[ii];ii++; + accession_number = row[ii];ii++; + mut_description = row[ii];ii++; + mut_syntax_cds = row[ii];ii++; + mut_syntax_aa = row[ii];ii++; + + chromosome = row[ii];ii++; + grch37_start = row[ii];ii++; + grch37_stop = row[ii];ii++; + mut_nt = row[ii];ii++; + mut_aa = row[ii];ii++; + tumour_site = row[ii];ii++; + mutated_samples = row[ii];ii++; + examined_samples = row[ii];ii++; + mut_freq = row[ii];ii++; + + chp = strstr(itemName, "COSM")+strlen("COSM"); + printf("<B>COSMIC ID:</B> <A HREF=\"%s&id=%s\" TARGET=_BLANK>%s</A>\n", url, chp, chp); + + printf("<BR><B>Source:</B> %s\n", source); + printf("<BR><B>Gene Name:</B> %s\n", gene_name); + printf("<BR><B>Accession Number:</B> %s\n", accession_number); + printf("<BR><B>Genomic Position:</B> %s:%s-%s", chromosome, grch37_start, grch37_stop); + printf("<BR><B>Mutation Description:</B> %s\n", mut_description); + printf("<BR><B>Mutation Syntax CDS:</B> %s\n", mut_syntax_cds); + printf("<BR><B>Mutation Syntax AA:</B> %s\n", mut_syntax_aa); + printf("<BR><B>Mutation NT:</B> %s\n", mut_nt); + printf("<BR><B>Mutation AA:</B> %s\n", mut_aa); + printf("<BR><B>Tumour Site:</B> %s\n", tumour_site); + printf("<BR><B>Mutated Samples:</B> %s\n", mutated_samples); + printf("<BR><B>Examined Samples:</B> %s\n", examined_samples); + printf("<BR><B>Mutation Frequency:</B> %s\n", mut_freq); + } +sqlFreeResult(&sr); +hFreeConn(&conn); + +printf("<HR>"); +printPosOnChrom(chrom, atoi(chromStart), atoi(chromEnd), NULL, FALSE, itemName); +} + +void doCosmic(struct trackDb *tdb, char *item) +/* Put up COSMIC track info. */ +{ +genericHeader(tdb, item); +printCosmicDetails(tdb, item); +printTrackHtml(tdb); +} + void printDecipherDetails(struct trackDb *tdb, char *itemName, boolean encode) /* Print details of a DECIPHER entry. */ { struct sqlConnection *conn = hAllocConn(database); char query[256]; struct sqlResult *sr; char **row; struct sqlConnection *conn2 = hAllocConn(database); char query2[256]; struct sqlResult *sr2; char **row2; char *strand={"+"}; int start = cartInt(cart, "o"); int end = cartInt(cart, "t"); char *chrom = cartString(cart, "c"); @@ -24738,30 +24821,34 @@ { doParDetails(tdb, item); } else if (sameString("t2g", table)) { doT2gDetails(tdb, item); } else if (tdb != NULL && startsWith("bedDetail", tdb->type)) { doBedDetail(tdb, NULL, item); } else if (startsWith("numtS", table)) { doNumtS(tdb, item); } +else if (startsWith("cosmic", table)) + { + doCosmic(tdb, item); + } else if (tdb != NULL) { genericClickHandler(tdb, item, NULL); } else { cartWebStart(cart, database, "%s", track); printf("Sorry, clicking there doesn't do anything yet (%s).", track); } /* End of 1000+ line dispatch on table involving 100+ if/elses. */ if (didCartHtmlStart) cartHtmlEnd(); }