from flask import jsonify from flask import request from flask import Blueprint from gn3.heatmaps import build_heatmap from gn3.db_utils import database_connector heatmaps = Blueprint("heatmaps", __name__) @heatmaps.route("/clustered", methods=("POST",)) def clustered_heatmaps(): heatmap_request = request.get_json() traits_names = heatmap_request.get("traits_names", tuple()) if len(traits_names) < 1: return jsonify({ "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