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