Merge pull request #141 from chanzuckerberg/csweaver/datatoapp

Move data to a property of the app object
This commit is contained in:
Charlotte Weaver
2018-08-03 13:03:34 -07:00
committed by GitHub
2 changed files with 16 additions and 21 deletions
+1 -2
View File
@@ -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)
+15 -19
View File
@@ -1,5 +1,5 @@
from flask import (
Blueprint, request
Blueprint, request, current_app
)
from flask_restful_swagger_2 import Api, swagger, Resource
@@ -88,13 +88,13 @@ class InitializeAPI(Resource):
}
})
def get(self):
from server.app.app import data, REACTIVE_LIMIT
from server.app.app import REACTIVE_LIMIT
return make_payload({
"schema": data.schema,
"cellcount": data.cell_count,
"schema": current_app.data.schema,
"cellcount": current_app.data.cell_count,
"reactivelimit": REACTIVE_LIMIT,
"genes": data.genes(),
"ranges": data.metadata_ranges(),
"genes": current_app.data.genes(),
"ranges": current_app.data.metadata_ranges(),
})
@@ -191,7 +191,6 @@ class CellsAPI(Resource):
}
})
def get(self):
from server.app.app import data
payload = {
"metadata": [],
"cellcount": 0,
@@ -199,12 +198,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, current_app.data.schema)
filtered_data = current_app.data.filter_cells(cells_filter)
payload["metadata"] = current_app.data.metadata(filtered_data)
payload["ranges"] = current_app.data.metadata_ranges(filtered_data)
payload["graph"] = current_app.data.create_graph(filtered_data)
payload["cellcount"] = current_app.data.cell_count
return make_payload(payload)
@@ -251,8 +250,7 @@ class ExpressionAPI(Resource):
}
})
def get(self):
from server.app.app import data
expression_data = data.expression()
expression_data = current_app.data.expression()
return make_payload(expression_data)
@swagger.doc({
@@ -309,14 +307,13 @@ class ExpressionAPI(Resource):
}
})
def post(self):
from server.app.app import data
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 = current_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 +412,6 @@ class DifferentialExpressionAPI(Resource):
}
})
def post(self):
from server.app.app import data
args = request.get_json()
cell_list_1 = args.get("celllist1", [])
cell_list_2 = args.get("celllist2", [])
@@ -425,7 +421,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 = current_app.data.diffexp(cell_list_1, cell_list_2, pval, num_genes)
return make_payload(data)