src/hg/instinct/hgGeneset/hgGenesets.c 1.4

1.4 2010/01/22 05:11:28 jsanborn
updated drawing code
Index: src/hg/instinct/hgGeneset/hgGenesets.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/instinct/hgGeneset/hgGenesets.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -B -U 4 -r1.3 -r1.4
--- src/hg/instinct/hgGeneset/hgGenesets.c	21 Jan 2010 23:51:13 -0000	1.3
+++ src/hg/instinct/hgGeneset/hgGenesets.c	22 Jan 2010 05:11:28 -0000	1.4
@@ -256,8 +256,31 @@
 char *query = dyStringCannibalize(&dy);
 return analysisFeaturesLoadByQuery(conn, query);
 }
 
+char *getNumAnalysisFeatureIdsInDataset(struct sqlConnection *conn,
+					 struct datasets *da, 
+					 int numFeatures)
+{
+struct dyString *dy = dyStringNew(100);
+dyStringPrintf(dy, "select DISTINCT feature_id from %s limit %d;", 
+	       da->data_table, numFeatures);
+char *query = dyStringCannibalize(&dy);
+
+struct slName *sl, *slList = sqlQuickList(conn, query);
+
+dy = dyStringNew(100);
+for (sl = slList; sl; sl = sl->next)
+    {
+    dyStringPrintf(dy, "%s", sl->name);
+    if (sl->next)
+	dyStringPrintf(dy, ",");
+    }
+char *featureIds = dyStringCannibalize(&dy);
+
+return featureIds;
+}
+
 struct datasets *getDatasetById(struct sqlConnection *conn, int dataset_id)
 {
 char query[256];
 safef(query, sizeof(query), 
@@ -729,41 +752,46 @@
 void drawHeatmap()
 {
 struct sqlConnection *conn = hAllocConnProfile(localDb, db);
 
-int dataset_id   = cartUsualInt(cart, hgh3DatasetId, -1);
-if (dataset_id < 0)
-    errAbort("%s is required\n", hgh3DatasetId);
+int width  = cartUsualInt(cart, hghWidth, DEFAULT_HEATMAP_WIDTH);
+int height = cartUsualInt(cart, hghHeight, DEFAULT_HEATMAP_HEIGHT);
+
+int dataset_id   = cartUsualInt(cart, hghDatasetId, -1);
+struct datasets *da = getDatasetById(conn, dataset_id);
+if (!da)
+    errAbort("No dataset matching id = %d\n", dataset_id);
 
-char *sampleIds  = cartOptionalString(cart, hgh3SampleIds);
+char *sampleIds  = cartOptionalString(cart, hghSampleIds);
 if (!sampleIds)
-    errAbort("%s is required\n", hgh3SampleIds);
+    errAbort("%s is required\n", hghSampleIds);
 
-char *featureIds = cartOptionalString(cart, hgh3FeatureIds);
+char *featureIds = cartOptionalString(cart, hghFeatureIds);
 if (!featureIds)
-    errAbort("%s is required\n", hgh3FeatureIds);
+    errAbort("%s is required\n", hghFeatureIds);
 
 struct samples *samples = getSamplesByIds(conn, sampleIds);
 if (!samples)
     errAbort("No samples matching ids = %s\n", sampleIds);
 
+// To test LOTS of features
+// featureIds = getNumAnalysisFeatureIdsInDataset(conn, da, 1000);
 struct analysisFeatures *afList = getAnalysisFeaturesByIds(conn, featureIds);
 if (!afList)
     errAbort("No features matching ids = %s\n", featureIds);
 
-struct datasets *da = getDatasetById(conn, dataset_id);
+fprintf(stderr, "length of aflist = %d", slCount(afList));
 
 struct slName *saList = slNameListFromComma(sampleIds);
 struct slName *feList = slNameListFromComma(featureIds);
+struct mapSettings *settings = initMapSettings(saList, feList, width, height);
+if (!settings)
+    errAbort("settings = NULL");
 
 struct rawData *rdList = getRawData(conn, da, samples, afList);
 if (!rdList)
     errAbort("No data matching input parameters.");
 
-struct mapSettings *settings = initMapSettings(saList, feList, 20, 20);
-if (!settings)
-    errAbort("settings = NULL");
-
 char *filename = heatmapGif(conn, rdList, settings);
 struct json *js = newJson();
 jsonAddString(js, "image", filename);
 if (js)
@@ -774,19 +802,18 @@
 /* Look at command variables in cart and figure out which
  * page to draw. */
 {
 /* retrieve cart variables, handle various modes */
-char *mode = cartOptionalString(cart, hgh3Mode);
+char *mode = cartOptionalString(cart, hghMode);
 if (!mode)
-    errAbort("%s is required.", hgh3Mode);
+    errAbort("%s is required.", hghMode);
 
 if (sameString(mode, "drawHeatmap"))
     drawHeatmap();
 else
     errAbort("Incorrect mode = %s", mode);
 
-cartRemovePrefix(cart, hgh3Prefix);
-
+cartRemovePrefix(cart, hghPrefix);
 }
 
 void hghDoUsualHttp()
 /* Wrap html page dispatcher with code that writes out