1b7bcc0c14d301e3a97ad0ca9739a1172bdfde39 fanhsu Tue Jul 12 16:07:33 2011 -0700 Refined details page for COSMIC track. diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index f805cd5..31e14dc 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -9096,94 +9096,145 @@ } } 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); +struct sqlConnection *conn2 = hAllocConn(database); char query[1024]; +char query2[1024]; struct sqlResult *sr; +struct sqlResult *sr2; char **row; +char **row2; + char *chp; +char indent1[40] = {" "}; +char indent2[40] = {""}; 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; + boolean multipleTumorSites; + char *indentString; + 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("<B>COSMIC ID:</B> %s", chp); + + printf(" (click <A HREF=\"%s&id=%s\" TARGET=_BLANK>here</A> for more details at COSMIC site)\n", url, 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); + + safef(query2, sizeof(query2), + "select count(tumour_site) from cosmicRaw where cosmic_mutation_id='%s'", itemName); + + sr2 = sqlMustGetResult(conn2, query2); + row2 = sqlNextRow(sr2); + if ((atoi(row2[0])) > 1) + { + multipleTumorSites = TRUE; + indentString = indent1; + } + else + { + multipleTumorSites = FALSE; + indentString = indent2; } + sqlFreeResult(&sr2); + + safef(query2, sizeof(query2), + "select %s from cosmicRaw where cosmic_mutation_id='%s' order by tumour_site", + "tumour_site,mutated_samples,examined_samples,mut_freq ", + itemName); + + sr2 = sqlMustGetResult(conn2, query2); + row2 = sqlNextRow(sr2); + while (row2 != NULL) + { + int ii; + ii=0; + tumour_site = row2[ii];ii++; + mutated_samples = row2[ii];ii++; + examined_samples = row2[ii];ii++; + mut_freq = row2[ii];ii++; + + if (multipleTumorSites) printf("<BR>"); + printf("<BR><B>%sTumour Site:</B> %s\n", indentString, tumour_site); + printf("<BR><B>%sMutated Samples:</B> %s\n", indentString, mutated_samples); + printf("<BR><B>%sExamined Samples:</B> %s\n", indentString, examined_samples); + printf("<BR><B>%sMutation Frequency:</B> %s\n", indentString, mut_freq); + row2 = sqlNextRow(sr2); + } + sqlFreeResult(&sr2); + } + 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); }