src/hg/instinct/bioInt2/bioIntUI.c 1.17

1.17 2009/04/27 06:15:48 jsanborn
updated lots of stuff, will break older implementation of database
Index: src/hg/instinct/bioInt2/bioIntUI.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/instinct/bioInt2/bioIntUI.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -b -B -U 4 -r1.16 -r1.17
--- src/hg/instinct/bioInt2/bioIntUI.c	16 Apr 2009 19:53:55 -0000	1.16
+++ src/hg/instinct/bioInt2/bioIntUI.c	27 Apr 2009 06:15:48 -0000	1.17
@@ -150,16 +150,16 @@
 
 return sqlQuickString(conn, query);
 }
 
-struct pathways *getPathwayByName(struct sqlConnection *conn, char *name)
+struct genesets *getGenesetByName(struct sqlConnection *conn, char *name)
 {
 char query[256];
 safef(query, sizeof(query), 
       "select * from %s where name = \"%s\" ",
-      PA_TABLE, name);
+      GE_TABLE, name);
 
-return pathwaysLoadByQuery(conn, query);
+return genesetsLoadByQuery(conn, query);
 }
 
 void setAnalysisFeatureDesc(struct sqlConnection *conn, struct json *js, 
 			    struct analysisFeatures *af)
@@ -179,18 +179,18 @@
 void setAnalysisFeatureLink(struct sqlConnection *conn, struct json *js,
 			    struct analysisFeatures *af)
 {
 char *name, *source;
-name = getFieldFromKgXref(conn, af->feature_name, "kgId");
+name = getFieldFromKgXref(conn, af->feature_name, "geneSymbol");
 if (name)
     source = "UCSC";
 else
     {
-    struct pathways *pa = getPathwayByName(conn, af->feature_name);
-    if (!pa)
+    struct genesets *gs = getGenesetByName(conn, af->feature_name);
+    if (!gs)
 	return;
-    name = pa->name;
-    source = pa->source;
+    name = gs->name;
+    source = gs->source;
     }
 
 jsonAddString(js, "name", name);
 jsonAddString(js, "source", source);
@@ -279,9 +279,9 @@
 
 struct searchResults {
     struct searchResults *next;
     char *name;
-    char *source;
+    char *type;
     int length;
 };
 
 int searchResultsCmp(const void *va, const void *vb)
@@ -304,9 +304,9 @@
 int maxResponse = 5;
 /* Check analysis features */
 char query[256];
 safef(query, sizeof(query), 
-      "select feature_name from %s where feature_name like \"%%%s%%\" "
+      "select feature_name,type from %s where feature_name like \"%%%s%%\" "
       "order by length(feature_name);", 
       AF_TABLE, feature_name);
 
 int count = 0;
@@ -315,11 +315,12 @@
 char **row = NULL;
 while ((row = sqlNextRow(sr)) != NULL)
     { 
     char *name = row[0];
+    char *type = row[1];
     AllocVar(sp);
     sp->name = cloneString(name);
-    sp->source = cloneString("gene/geneset");
+    sp->type = cloneString(type);
     sp->length = strlen(sp->name);
     slAddHead(&spList, sp);
     if (count > maxResponse)
 	break;
@@ -354,9 +355,9 @@
     { 
     char *name = row[0];
     AllocVar(sp);
     sp->name = cloneString(name);
-    sp->source = cloneString("clinical");
+    sp->type = cloneString("clinical");
     sp->length = strlen(sp->name);
     slAddHead(&spList, sp);
     if (count < maxResponse)
 	break;
@@ -376,9 +377,9 @@
 void sendAmbiguities(struct json *js, struct searchResults *spList)
 {
 struct searchResults *sp;
 for (sp = spList; sp; sp = sp->next)
-    jsonAddString(js, sp->name, sp->source); 
+    jsonAddString(js, sp->name, sp->type); 
 }
 
 void sendAnalysisFeatureData(struct sqlConnection *conn, struct json *js, 
 			     int cohort_id, char *feature_name)
@@ -401,9 +402,9 @@
 char query[512];
 for (an = anList; an; an = an->next)
     {
     safef(query, sizeof(query), 
-	  "select DISTINCT %s.name, %s.val from %s join %s on %s.sample_id = %s.id "
+	  "select DISTINCT %s.name, %s.conf from %s join %s on %s.sample_id = %s.id "
 	  "where %s.feature_id = %d;",
 	  SA_TABLE, an->result_table, an->result_table, SA_TABLE, an->result_table, SA_TABLE,
 	  an->result_table, af->id);
     if (sqlExists(conn, query))
@@ -537,9 +538,9 @@
 
 for (s = sList, f = fList; s && f; s = s->next, f = f->next)
     {
     struct json *container = jsonAddContainer(js, f->name);
-    if (sameString(s->name, "gene/geneset"))
+    if (sameString(s->name, "gene") || sameString(s->name, "geneset"))
 	sendAnalysisFeatureData(conn, container, cohort_id, f->name);
     else if (sameString(s->name, "clinical"))
 	sendClinicalData(conn, container, cohort_id, f->name, daList);
     }
@@ -813,14 +814,11 @@
 
 void expandFeature()
 {
 int takeTop = cartUsualInt(cart, bioIntTakeTop, 5);
-
 int cohort_id = cartUsualInt(cart, bioIntCohortId, -1);
-if (cohort_id == -1)
-    cohort_id = 2;  // hard code for first analysis during testing!
-
 char *feature_name = cartOptionalString(cart, bioIntFeatureName);
+
 if (!feature_name)
     errAbort("%s must be set for mode=getGenesInGeneset\n", bioIntFeatureName);
 
 struct sqlConnection *conn = hAllocConnProfile(localDb, db);
@@ -865,50 +862,51 @@
     hFreeConn(&conn);
     errAbort("Table does not exist, %s.\n", input_tables);
     }
 
-/***
-select DISTINCT analysisFeatures.id from pathways join pathwayGenes on pathways.id=pathwayGenes.id join geneLookup on geneLookup.id=pathwayGenes.gene_id join kgXref on kgXref.kgID=geneLookup.kgId join analysisFeatures on analysisFeatures.feature_name=kgXref.geneSymbol where pathways.id=123;
-***/
 uglyTime(NULL);
 struct dyString *dy = newDyString(100);
 dyStringPrintf(dy, 
-	       "select DISTINCT %s.id from %s join %s on %s.id=%s.id "
-	       "join %s on %s.id=%s.gene_id join %s on %s.kgID=%s.kgId "
-	       "join %s on %s.feature_name=%s.geneSymbol where %s.name=\"%s\";",
-	       AF_TABLE, PA_TABLE, PG_TABLE, PA_TABLE, PG_TABLE,
-	       GL_TABLE, GL_TABLE, PG_TABLE, KX_TABLE, KX_TABLE, GL_TABLE,
-	       AF_TABLE, AF_TABLE, KX_TABLE, PA_TABLE, af->feature_name);
+	       "select DISTINCT gene_id from %s where id = %d",
+	       GG_TABLE, af->id);
 char *query = dyStringCannibalize(&dy);
 
 struct slInt *si, *siList = sqlQuickNumList(conn, query);
 
 dy = newDyString(100);
 dyStringPrintf(dy, 
-	       "select %s.feature_name from %s join %s on feature_id=%s.id where feature_id in (",
-	       AF_TABLE, input_tables, AF_TABLE, AF_TABLE);
+	       "select feature_name, type, sum(abs(conf)) as s from %s "
+	       "join %s on feature_id=id where feature_id in (",
+	       AF_TABLE, input_tables);
 for (si = siList; si; si = si->next)
     {
     dyStringPrintf(dy, "%d", si->val);
     if (si->next)
 	dyStringPrintf(dy, ",");
     }
 dyStringPrintf(dy, 
-	       ") group by feature_id order by sum(abs(val)) DESC limit %d;", 
+	       ") group by feature_id order by s DESC limit %d;", 
 	       takeTop);
 query = dyStringCannibalize(&dy);
 
-struct slName *sl, *fList = sqlQuickList(conn, query);
-struct slName *sList = NULL;
-// Only dealing with gene/genesets now
-for (sl = fList; sl; sl = sl->next)
-    slNameAddHead(&sList, "gene/geneset");
+struct slName *fList = NULL, *tList = NULL;
 
+struct sqlResult *sr = sqlGetResult(conn, query);
+char **row = NULL;
+while ((row = sqlNextRow(sr)) != NULL)
+    { 
+    char *name = row[0];
+    char *type = row[1];
+    slNameAddHead(&fList, name);
+    slNameAddHead(&tList, type);
+    }
+slReverse(&fList);
+slReverse(&tList);
 char *feature_names = slNameListToString(fList, ',');
-char *sources = slNameListToString(sList, ',');
+char *types = slNameListToString(tList, ',');
 
 struct json *js = newJson();
-sendUniqueMatch(conn, js, cohort_id, feature_names, sources, NULL);  
+sendUniqueMatch(conn, js, cohort_id, feature_names, types, NULL);  
 
 if (js)
     hPrintf("%s", js->print(js));