2a20896498b6edf0c19565c8f8a19b29326da08c
ceisenhart
Thu May 11 11:38:52 2017 -0700
Putting COSMIC code back into hgc.c will remove again later, refs #14461
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 6e5de89..4d7f9bb 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -9866,30 +9866,219 @@
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);
+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 *gene_name, *accession_number;
+// char $source, *cosmic_mutation_id; unused variable
+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");
+
+sqlSafef(query, sizeof(query),
+ "select 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"
+ " from cosmicRaw where cosmic_mutation_id='%s'",
+ itemName);
+
+sr = sqlMustGetResult(conn, query);
+row = sqlNextRow(sr);
+if (row != NULL)
+ {
+ int ii;
+ boolean multipleTumorSites;
+ char *indentString;
+
+ ii=0;
+
+ ii++; // source = row[ii];ii++; unused variable
+ ii++; // cosmic_mutation_id = row[ii];ii++; unused variable
+ 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++;
+
+ // chromosome name adjustment
+ if (sameString(chromosome, "23"))
+ chromosome = "X";
+ if (sameString(chromosome, "24"))
+ chromosome = "Y";
+ if (sameString(chromosome, "25"))
+ chromosome = "M";
+
+ chp = strstr(itemName, "COSM")+strlen("COSM");
+ printf("COSMIC ID: %s (details at COSMIC site)", url, chp, chp);
+
+ // Embed URL to COSMIC site per COSMICT request.
+ // printf("
Source: ");
+ // printf("%s\n", source);
+
+ printf("
Gene Name: %s\n", gene_name);
+ printf("
Accession Number: %s\n", accession_number);
+ printf("
Genomic Position: chr%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);
+
+ sqlSafef(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);
+
+ sqlSafef(query2, sizeof(query2),
+ "select tumour_site,mutated_samples,examined_samples,mut_freq "
+ " from cosmicRaw where cosmic_mutation_id='%s' order by tumour_site",
+ 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("
%sTumor 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);
+
+ sqlSafef(query2, sizeof(query2),
+ "select sum(mutated_samples) from cosmicRaw where cosmic_mutation_id='%s'",
+ itemName);
+
+ sr2 = sqlMustGetResult(conn2, query2);
+ row2 = sqlNextRow(sr2);
+ if (row2 != NULL)
+ {
+ printf("
Total Mutated Samples: %s\n", row2[0]);
+ //printf("
%s ", row2[0]);
+ }
+ sqlFreeResult(&sr2);
+
+ sqlSafef(query2, sizeof(query2),
+ "select sum(examined_samples) from cosmicRaw where cosmic_mutation_id='%s'",
+ itemName);
+ sr2 = sqlMustGetResult(conn2, query2);
+ row2 = sqlNextRow(sr2);
+ if (row2 != NULL)
+ {
+ printf("
Total Examined Samples: %s\n", row2[0]);
+ }
+ sqlFreeResult(&sr2);
+ sqlSafef(query2, sizeof(query2),
+ "select sum(mutated_samples)*100/sum(examined_samples) from cosmicRaw where cosmic_mutation_id='%s'",
+ itemName);
+ sr2 = sqlMustGetResult(conn2, query2);
+ row2 = sqlNextRow(sr2);
+ if (row2 != NULL)
+ {
+ char *chp;
+ chp = strstr(row2[0], ".");
+ if ((chp != NULL) && (strlen(chp) > 3))
+ {
+ chp++;
+ chp++;
+ chp++;
+ chp++;
+ *chp = '\0';
+ }
+ printf("
Total Mutation Frequency: %s%c\n", row2[0], '%');
+ //printf("
%s", row2[0]);
+ }
+ sqlFreeResult(&sr2);
+
+ }
+
+sqlFreeResult(&sr);
+hFreeConn(&conn);
+
+printf("