Add simple cache to backend

This commit is contained in:
Charlotte Weaver
2018-08-01 13:32:04 -07:00
parent d77accc858
commit 7642251d44
3 changed files with 10 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ import argparse
import os
from flask import Flask
from flask.ext.cache import Cache
from flask_compress import Compress
from flask_cors import CORS
from flask_restful_swagger_2 import get_swagger_blueprint
@@ -12,6 +13,7 @@ from .rest_api.rest import get_api_resources
REACTIVE_LIMIT = 1_000_000
app = Flask(__name__)
cache = Cache(app, config={"CACHE_TYPE": "simple"})
Compress(app)
CORS(app)

View File

@@ -6,6 +6,7 @@ from scipy import stats
from ..util.schema_parse import parse_schema
from ..driver.driver import CXGDriver
from server.app.app import cache
class ScanpyEngine(CXGDriver):
@@ -41,6 +42,7 @@ class ScanpyEngine(CXGDriver):
def genes(self):
return self.data.var.index.tolist()
# Can't seem to cache a view of a dataframe, need to investigate why
def filter_cells(self, filter):
"""
Filter cells from data and return a subset of the data
@@ -69,6 +71,7 @@ class ScanpyEngine(CXGDriver):
cell_idx = np.logical_and(cell_idx, key_idx)
return self.data[cell_idx, :]
@cache.memoize(86400000)
def metadata_ranges(self, df=None):
metadata_ranges = {}
if not df:
@@ -88,6 +91,7 @@ class ScanpyEngine(CXGDriver):
}
return metadata_ranges
@cache.memoize(86400000)
def metadata(self, df, fields=None):
"""
Gets metadata key:value for each cells
@@ -101,6 +105,7 @@ class ScanpyEngine(CXGDriver):
metadata[idx]["CellName"] = metadata[idx].pop("cell_name", None)
return metadata
@cache.memoize(86400000)
def create_graph(self, df):
"""
Computes a n-d layout for cells through dimensionality reduction.
@@ -112,6 +117,7 @@ class ScanpyEngine(CXGDriver):
normalized_graph = (graph - graph.min()) / (graph.max() - graph.min())
return np.hstack((df.obs["cell_name"].values.reshape(len(df.obs.index), 1), normalized_graph)).tolist()
@cache.memoize(86400000)
def diffexp(self, cell_list_1, cell_list_2, pval, num_genes):
"""
Computes the top differentially expressed genes between two clusters
@@ -158,6 +164,7 @@ class ScanpyEngine(CXGDriver):
},
}
@cache.memoize(86400000)
def expression(self, cells=None, genes=None):
"""
Retrieves expression for each gene for cells in data frame

View File

@@ -6,6 +6,7 @@ click==6.7
cycler==0.10.0
decorator==4.3.0
Flask==0.12.4
Flask-Cache==0.13.1
Flask-Compress==1.4.0
Flask-Cors==3.0.6
Flask-RESTful==0.3.6