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("COSMIC ID: %s\n", url, chp, chp); + printf("COSMIC ID: %s", chp); + + printf(" (click here for more details at COSMIC site)\n", url, chp); printf("
Source: %s\n", source); printf("
Gene Name: %s\n", gene_name); printf("
Accession Number: %s\n", accession_number); printf("
Genomic Position: %s:%s-%s", chromosome, grch37_start, grch37_stop); printf("
Mutation Description: %s\n", mut_description); printf("
Mutation Syntax CDS: %s\n", mut_syntax_cds); printf("
Mutation Syntax AA: %s\n", mut_syntax_aa); printf("
Mutation NT: %s\n", mut_nt); printf("
Mutation AA: %s\n", mut_aa); - printf("
Tumour Site: %s\n", tumour_site); - printf("
Mutated Samples: %s\n", mutated_samples); - printf("
Examined Samples: %s\n", examined_samples); - printf("
Mutation Frequency: %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("
"); + printf("
%sTumour Site: %s\n", indentString, tumour_site); + printf("
%sMutated Samples: %s\n", indentString, mutated_samples); + printf("
%sExamined Samples: %s\n", indentString, examined_samples); + printf("
%sMutation Frequency: %s\n", indentString, mut_freq); + row2 = sqlNextRow(sr2); + } + sqlFreeResult(&sr2); + } + sqlFreeResult(&sr); hFreeConn(&conn); printf("
"); 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); }