From 8dbb131afdb95321a95651bb0c8ba8ccb02e0d99 Mon Sep 17 00:00:00 2001 From: Charlotte Weaver Date: Thu, 2 Aug 2018 16:09:37 -0700 Subject: [PATCH] Move data to a property of the app object --- server/app/app.py | 3 +-- server/app/rest_api/rest.py | 36 ++++++++++++++++++------------------ 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/server/app/app.py b/server/app/app.py index 547a9db5..0998273a 100644 --- a/server/app/app.py +++ b/server/app/app.py @@ -43,7 +43,6 @@ app.add_url_rule("/", endpoint="index") def run_scanpy(args): - global data title = args.title if not title: title = os.path.basename(os.path.normpath(args.data_directory)) @@ -54,7 +53,7 @@ def run_scanpy(args): ) from .scanpy_engine.scanpy_engine import ScanpyEngine - data = ScanpyEngine(args.data_directory, schema="data_schema.json") + app.data = ScanpyEngine(args.data_directory, schema="data_schema.json") app.run(host="0.0.0.0", debug=True, port=args.port) diff --git a/server/app/rest_api/rest.py b/server/app/rest_api/rest.py index f5892125..c6d5a4a7 100644 --- a/server/app/rest_api/rest.py +++ b/server/app/rest_api/rest.py @@ -88,13 +88,13 @@ class InitializeAPI(Resource): } }) def get(self): - from server.app.app import data, REACTIVE_LIMIT + from server.app.app import app, REACTIVE_LIMIT return make_payload({ - "schema": data.schema, - "cellcount": data.cell_count, + "schema": app.data.schema, + "cellcount": app.data.cell_count, "reactivelimit": REACTIVE_LIMIT, - "genes": data.genes(), - "ranges": data.metadata_ranges(), + "genes": app.data.genes(), + "ranges": app.data.metadata_ranges(), }) @@ -191,7 +191,7 @@ class CellsAPI(Resource): } }) def get(self): - from server.app.app import data + from server.app.app import app payload = { "metadata": [], "cellcount": 0, @@ -199,12 +199,12 @@ class CellsAPI(Resource): "ranges": {}, } # get query params - cells_filter = parse_filter(request.args, data.schema) - filtered_data = data.filter_cells(cells_filter) - payload["metadata"] = data.metadata(filtered_data) - payload["ranges"] = data.metadata_ranges(filtered_data) - payload["graph"] = data.create_graph(filtered_data) - payload["cellcount"] = data.cell_count + cells_filter = parse_filter(request.args, app.data.schema) + filtered_data = app.data.filter_cells(cells_filter) + payload["metadata"] = app.data.metadata(filtered_data) + payload["ranges"] = app.data.metadata_ranges(filtered_data) + payload["graph"] = app.data.create_graph(filtered_data) + payload["cellcount"] = app.data.cell_count return make_payload(payload) @@ -251,8 +251,8 @@ class ExpressionAPI(Resource): } }) def get(self): - from server.app.app import data - expression_data = data.expression() + from server.app.app import app + expression_data = app.data.expression() return make_payload(expression_data) @swagger.doc({ @@ -309,14 +309,14 @@ class ExpressionAPI(Resource): } }) def post(self): - from server.app.app import data + from server.app.app import app args = request.get_json() cell_list = args.get("celllist", []) gene_list = args.get("genelist", []) if not cell_list and not gene_list: return make_payload([], "must include celllist and/or genelist parameter", 400) - expression_data = data.expression(cell_list, gene_list) + expression_data = app.data.expression(cell_list, gene_list) if cell_list and len(expression_data["cells"]) < len(cell_list): return make_payload([], "Some cell ids not available", 400) @@ -415,7 +415,7 @@ class DifferentialExpressionAPI(Resource): } }) def post(self): - from server.app.app import data + from server.app.app import app args = request.get_json() cell_list_1 = args.get("celllist1", []) cell_list_2 = args.get("celllist2", []) @@ -425,7 +425,7 @@ class DifferentialExpressionAPI(Resource): return make_payload([], "must include celllist1 and celllist2 parameters", 400) - data = data.diffexp(cell_list_1, cell_list_2, pval, num_genes) + data = app.data.diffexp(cell_list_1, cell_list_2, pval, num_genes) return make_payload(data)