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