diff --git a/README.md b/README.md index 02b236c..dc5dd26 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Note: you may need to downgrade h5py with `pip install h5py==2.9.0` due to an [i ```bash mkdir ../cellxgene_data -wget https://github.com/chanzuckerberg/cellxgene/raw/master/example-dataset/pbmc3k.h5ad -O ../cellxgene_data/pbmc3k.h5ad +wget https://raw.githubusercontent.com/chanzuckerberg/cellxgene/master/example-dataset/pbmc3k.h5ad -O ../cellxgene_data/pbmc3k.h5ad ``` @@ -61,6 +61,7 @@ Here's what the environment variables mean: * `CELLXGENE_LOCATION` - the location of the cellxgene executable, e.g. `~/anaconda2/envs/cellxgene/bin/cellxgene` * `CELLXGENE_DATA` - a directory that can contain subdirectories with `.h5ad` data files, *without* trailing slash, e.g. `/mnt/cellxgene_data` Optional environment variables: +* `CELLXGENE_ARGS` - catch-all variable that can be used to pass additional command line args to cellxgene server * `EXTERNAL_HOST` - the hostname and port from the perspective of the web browser, typically `localhost:5005` if running locally. Defaults to "localhost:{GATEWAY_PORT}" * `EXTERNAL_PROTOCOL` - typically http when running locally, can be https when deployed if the gateway is behind a load balancer or reverse proxy that performs https termination. Default value "http" * `GATEWAY_IP` - ip addess of instance gateway is running on, mostly used to display SSH instructions. Defaults to `socket.gethostbyname(socket.gethostname())` diff --git a/cellxgene_gateway/env.py b/cellxgene_gateway/env.py index a770c29..c7fe0e3 100644 --- a/cellxgene_gateway/env.py +++ b/cellxgene_gateway/env.py @@ -13,6 +13,7 @@ import socket cellxgene_location = os.environ.get("CELLXGENE_LOCATION") cellxgene_data = os.environ.get("CELLXGENE_DATA") +cellxgene_args = os.environ.get("CELLXGENE_ARGS", None) gateway_port = int(os.environ.get("GATEWAY_PORT", "5005")) external_host = os.environ.get( "EXTERNAL_HOST", @@ -50,6 +51,7 @@ optional_env_vars = { "GATEWAY_ENABLE_UPLOAD": enable_upload, "GATEWAY_ENABLE_ANNOTATIONS": enable_annotations, "GATEWAY_ENABLE_BACKED_MODE": enable_backed_mode, + "CELLXGENE_ARGS": cellxgene_args, } diff --git a/cellxgene_gateway/subprocess_backend.py b/cellxgene_gateway/subprocess_backend.py index 4a149d5..628a993 100644 --- a/cellxgene_gateway/subprocess_backend.py +++ b/cellxgene_gateway/subprocess_backend.py @@ -11,7 +11,11 @@ import logging import subprocess from flask_api import status -from cellxgene_gateway.env import enable_annotations, enable_backed_mode +from cellxgene_gateway.env import ( + enable_annotations, + enable_backed_mode, + cellxgene_args, +) from cellxgene_gateway.process_exception import ProcessException from cellxgene_gateway.dir_util import make_annotations from cellxgene_gateway.path_util import get_file_path, get_annotation_file_path @@ -35,6 +39,9 @@ class SubprocessBackend: extra_args = " --disable-annotations" if enable_backed_mode: extra_args += " --backed" + if not cellxgene_args is None: + extra_args += f" {cellxgene_args}" + cmd = ( f"yes | {cellxgene_loc} launch {file_path}" + " --port " diff --git a/environment.yml b/environment.yml index 685adac..8ae3a1f 100644 --- a/environment.yml +++ b/environment.yml @@ -7,6 +7,7 @@ dependencies: - flask - psutil - black +- pip - pip: - flask-api - cellxgene>=0.15