about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gn3/api/heatmaps.py18
-rw-r--r--gn3/heatmaps.py25
2 files changed, 23 insertions, 20 deletions
diff --git a/gn3/api/heatmaps.py b/gn3/api/heatmaps.py
index f053241..eea3ebe 100644
--- a/gn3/api/heatmaps.py
+++ b/gn3/api/heatmaps.py
@@ -15,15 +15,9 @@ def clustered_heatmaps():
             "message": "You need to provide at least one trait name."
         }), 400
     conn, _cursor = database_connector()
-    _heatmap_file, heatmap_fig = build_heatmap(traits_names, conn)
-
-    # stream the heatmap data somehow here.
-    # Can plotly actually stream the figure data in a way that can be used on
-    # remote end to display the image without necessarily being html?
-    # return jsonify(
-    #     {
-    #         "query": heatmap_request,
-    #         "output_png": heatmap_fig.to_image(format="png"),
-    #         "output_svg": heatmap_fig.to_image(format="svg")
-    #     }), 200
-    return jsonify({"output_filename": _heatmap_file}), 200
+    def setup_trait_fullname(trait):
+        name_parts = trait.split(":")
+        return "{dataset_name}::{trait_name}".format(
+            dataset_name=trait[1], trait_name=trait[0])
+    traits_fullnames = [parse_trait_fullname(trait) for trait in traits_names]
+    return jsonify(build_heatmap(traits_fullnames, conn)), 200
diff --git a/gn3/heatmaps.py b/gn3/heatmaps.py
index c4fc67d..205a3b3 100644
--- a/gn3/heatmaps.py
+++ b/gn3/heatmaps.py
@@ -199,17 +199,26 @@ def build_heatmap(traits_names, conn: Any):
         zip(traits_ids,
             [traits[idx]["trait_fullname"] for idx in traits_order]))
 
-    return generate_clustered_heatmap(
-        process_traits_data_for_heatmap(
+    # return generate_clustered_heatmap(
+    #     process_traits_data_for_heatmap(
+    #         organised, traits_ids, chromosome_names),
+    #     clustered,
+    #     "single_heatmap_{}".format(random_string(10)),
+    #     y_axis=tuple(
+    #         ordered_traits_names[traits_ids[order]]
+    #         for order in traits_order),
+    #     y_label="Traits",
+    #     x_axis=chromosome_names,
+    #     x_label="Chromosomes")
+    return {
+        "clustering_data": clustered,
+        "heatmap_data": process_traits_data_for_heatmap(
             organised, traits_ids, chromosome_names),
-        clustered,
-        "single_heatmap_{}".format(random_string(10)),
-        y_axis=tuple(
+        "traits": tuple(
             ordered_traits_names[traits_ids[order]]
             for order in traits_order),
-        y_label="Traits",
-        x_axis=chromosome_names,
-        x_label="Chromosomes")
+        "chromosomes": chromosome_names
+    }
 
 def compute_traits_order(slink_data, neworder: tuple = tuple()):
     """