src/hg/hgc/hgc.c 1.1636

1.1636 2010/05/28 21:32:26 fanhsu
Changed a compound query of DECIPHER track into two queries to improve performance.
Index: src/hg/hgc/hgc.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/hgc.c,v
retrieving revision 1.1635
retrieving revision 1.1636
diff -b -B -U 4 -r1.1635 -r1.1636
--- src/hg/hgc/hgc.c	28 May 2010 17:22:18 -0000	1.1635
+++ src/hg/hgc/hgc.c	28 May 2010 21:32:26 -0000	1.1636
@@ -8796,8 +8796,12 @@
 struct sqlConnection *conn = hAllocConn(database);
 char query[256];
 struct sqlResult *sr;
 char **row;
+struct sqlConnection *conn2 = hAllocConn(database);
+char query2[256];
+struct sqlResult *sr2;
+char **row2;
 char *strand={"+"};
 
 printf("<H3>Patient %s </H3>", itemName);
 
@@ -8819,14 +8823,15 @@
     }
 sqlFreeResult(&sr);
 
 /* link to Ensembl DECIPHER Patient View page */
+printf("<B>Patient View: </B>\n");
 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 */
+/* print position info */
 safef(query, sizeof(query),
       "select chrom, chromStart, chromEnd from decipher where name ='%s'", itemName);
 sr = sqlMustGetResult(conn, query);
 row = sqlNextRow(sr);
@@ -8837,26 +8842,35 @@
 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);
+      "select distinct t.name from knownToDecipher t where value ='%s'", 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)
     	{
+	safef(query2, sizeof(query2),
+        "select geneSymbol, kgId, description from kgXref where kgId ='%s'", row[0]);
+	sr2 = sqlMustGetResult(conn2, query2);
+	row2 = sqlNextRow(sr2);
+	if (row2 != 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]);
+            printf("<A HREF=\"%s%s\" target=_blank>","./hgGene\?hgg_chrom=none&hgg_gene=", row2[1]);
+            printf("%s (%s)</A> ", row2[0], row2[1]);
+	    printf(" %s", row2[2]);fflush(stdout);
+	    }
+        sqlFreeResult(&sr2);
 	row = sqlNextRow(sr);
         }
+    sqlFreeResult(&sr);
     printf("</UL>");
     }
-sqlFreeResult(&sr);
 hFreeConn(&conn);
+hFreeConn(&conn2);
 }
 
 void doDecipher(struct trackDb *tdb, char *item, char *itemForUrl)
 /* Put up DECIPHER track info. */