src/hg/hgc/hgc.c 1.1546

1.1546 2009/05/21 19:24:12 fanhsu
Added decipher section.
Index: src/hg/hgc/hgc.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/hgc.c,v
retrieving revision 1.1545
retrieving revision 1.1546
diff -b -B -U 4 -r1.1545 -r1.1546
--- src/hg/hgc/hgc.c	20 May 2009 18:08:22 -0000	1.1545
+++ src/hg/hgc/hgc.c	21 May 2009 19:24:12 -0000	1.1546
@@ -8571,8 +8571,84 @@
 printGadDetails(tdb, item, FALSE);
 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;
+char *strand={"+"};
+
+printf("<H3>Patient %s </H3>", itemName);
+
+/* print phenotypes */
+safef(query, sizeof(query),
+      "select distinct phenotype from decipherRaw where id ='%s'", itemName);
+sr = sqlMustGetResult(conn, query);
+row = sqlNextRow(sr);
+if (row != NULL) 
+    {
+    printf("<B>Phenotype: </B><UL>");
+    while (row != NULL)
+    	{
+	printf("<LI>");
+	printf("%s\n", row[0]);
+	row = sqlNextRow(sr);
+        }
+    printf("</UL>");
+    }
+sqlFreeResult(&sr);
+
+/* link to Ensembl DECIPHER Patient View page */
+printf("For more details of patient %s, click ", itemName);
+printf("<A HREF=\"%s%s\" target=_blank>",
+       "https://decipher.sanger.ac.uk/application/patient/", itemName);
+printf("here</A>.<BR><BR>");
+
+/* print position inof */
+safef(query, sizeof(query),
+      "select chrom, chromStart, chromEnd from decipher where name ='%s'", itemName);
+sr = sqlMustGetResult(conn, query);
+row = sqlNextRow(sr);
+if (row != NULL) 
+    {
+    printPosOnChrom(row[0], atoi(row[1]), atoi(row[2]), strand, TRUE, itemName);
+    }
+sqlFreeResult(&sr);
+    
+/* print UCSC Genes in the reported region */
+safef(query, sizeof(query),
+      "select distinct geneSymbol, kgId, description from decipher d, kgXref x, knownToDecipher t where value ='%s' and t.name=kgId", itemName);
+sr = sqlMustGetResult(conn, query);
+row = sqlNextRow(sr);
+if (row != NULL) 
+    {
+    printf("<BR><B>UCSC Gene(s) in this genomic region: </B><UL>");
+    while (row != NULL)
+    	{
+	printf("<LI>");
+        printf("<A HREF=\"%s%s\" target=_blank>","./hgGene\?hgg_chrom=none&hgg_gene=", row[1]);
+        printf("%s (%s)</A> ", row[0], row[1]);
+	printf(" %s", row[2]);
+	row = sqlNextRow(sr);
+        }
+    printf("</UL>");
+    }
+sqlFreeResult(&sr);
+hFreeConn(&conn);
+}
+
+void doDecipher(struct trackDb *tdb, char *item, char *itemForUrl)
+/* Put up DECIPHER track info. */
+{
+genericHeader(tdb, item);
+printDecipherDetails(tdb, item, FALSE);
+printTrackHtml(tdb);
+}
+
 char *gbCdnaGetDescription(struct sqlConnection *conn, char *acc)
 /* return mrna description, or NULL if not available. freeMem result */
 {
 char query[128];
@@ -21566,8 +21642,12 @@
 else if (sameWord(track, "gad"))
     {
     doGad(tdb, item, NULL);
     }
+else if (sameWord(track, "decipher"))
+    {
+    doDecipher(tdb, item, NULL);
+    }
 else if (sameWord(track, "omimGene"))
     {
     doOmimGene(tdb, item);
     }