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