src/hg/instinct/extractData/extractData.c 1.2
1.2 2010/01/14 05:37:23 jsanborn
updated
Index: src/hg/instinct/extractData/extractData.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/instinct/extractData/extractData.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -b -B -U 4 -r1.1 -r1.2
--- src/hg/instinct/extractData/extractData.c 14 Jan 2010 05:18:36 -0000 1.1
+++ src/hg/instinct/extractData/extractData.c 14 Jan 2010 05:37:23 -0000 1.2
@@ -127,9 +127,9 @@
return gaHash;
}
-void getProbeData(struct sqlConnection *hgConn, struct maGrouping *allA,
+struct slDouble *getProbeData(struct sqlConnection *hgConn, struct maGrouping *allA,
char *dataTable, struct slName *probes)
{
struct slName *sl;
struct dyString *dy = newDyString(100);
@@ -144,27 +144,35 @@
}
dyStringPrintf(dy, ");");
char *query = dyStringCannibalize(&dy);
-fprintf(stderr, "query: %s\n", query);
/* Get bed15 data from hg18 database */
struct sqlResult *sr = sqlGetResult(hgConn, query);
int count = 0;
char **row = NULL;
+struct slDouble *sdList = NULL;
+
+int i = 1;
while ((row = sqlNextRow(sr)) != NULL)
{
struct bed *nb = bedLoadN(row+1, 15);
// nb->expCount
// nb->expScores
count += 1;
+ if (i >= nb->expCount)
+ continue;
+
+ struct slDouble *sd = slDoubleNew(nb->expScores[i]);
+ slAddHead(&sdList, sd);
+
bedFree(&nb);
}
sqlFreeResult(&sr);
-fprintf(stderr, "found %d probes\n", count);
+return sdList;
}
void extractData(char *tableName, char *sampleName, char *geneList)
{
@@ -192,10 +200,33 @@
struct hashCookie cookie = hashFirst(gaHash);
while ((el = hashNext(&cookie)) != NULL)
{
+ char *name = el->name;
struct geneAlias *ga = el->val;
- getProbeData(hgConn, allA, tableName, ga->probes);
+ struct slDouble *sd, *sdList = getProbeData(hgConn, allA, tableName, ga->probes);
+
+ if (!sdList)
+ continue;
+
+ printf("%s\t", name);
+ if (median)
+ {
+ double val = slDoubleMedian(sdList);
+ printf("%f\n", val);
+ }
+ else
+ {
+ struct dyString *dy = newDyString(100);
+ for (sd = sdList; sd; sd = sd->next)
+ {
+ dyStringPrintf(dy, "%f", sd->val);
+ if (sd->next)
+ dyStringPrintf(dy, ",");
+ }
+ char *val = dyStringCannibalize(&dy);
+ printf("%s\n", val);
+ }
}
hFreeConn(&hgConn);
}