mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-06 15:38:13 +08:00
Merge pull request #142 from chanzuckerberg/csweaver/cli-subparsers
Csweaver/cli subparsers
This commit is contained in:
+9
-4
@@ -1,5 +1,6 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
|
import warnings
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask_caching import Cache
|
from flask_caching import Cache
|
||||||
@@ -53,7 +54,8 @@ def run_scanpy(args):
|
|||||||
)
|
)
|
||||||
|
|
||||||
from .scanpy_engine.scanpy_engine import ScanpyEngine
|
from .scanpy_engine.scanpy_engine import ScanpyEngine
|
||||||
app.data = ScanpyEngine(args.data_directory, schema="data_schema.json")
|
app.data = ScanpyEngine(args.data_directory, schema="data_schema.json",
|
||||||
|
graph_method=args.layout, diffexp_method=args.diffexp)
|
||||||
app.run(host="127.0.0.1", debug=True, port=args.port)
|
app.run(host="127.0.0.1", debug=True, port=args.port)
|
||||||
|
|
||||||
|
|
||||||
@@ -63,8 +65,11 @@ def main():
|
|||||||
"of the directory from the data_directory arg")
|
"of the directory from the data_directory arg")
|
||||||
parser.add_argument("--port", help="Port to run server on.", type=int, default=5005)
|
parser.add_argument("--port", help="Port to run server on.", type=int, default=5005)
|
||||||
subparsers = parser.add_subparsers(dest="cellxgene_command")
|
subparsers = parser.add_subparsers(dest="cellxgene_command")
|
||||||
scanpy_subparser = subparsers.add_parser("scanpy", help="run cellxgene using the scanpy engine")
|
try:
|
||||||
scanpy_subparser.add_argument("data_directory", metavar="dir", help="Directory containing data and schema file")
|
from .scanpy_engine.scanpy_engine import ScanpyEngine
|
||||||
scanpy_subparser.set_defaults(func=run_scanpy)
|
except ImportError:
|
||||||
|
warnings.warn("Scanpy engine not available", ImportWarning)
|
||||||
|
else:
|
||||||
|
ScanpyEngine.add_to_parser(subparsers, run_scanpy)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
args.func(args)
|
args.func(args)
|
||||||
|
|||||||
@@ -23,6 +23,18 @@ class ScanpyEngine(CXGDriver):
|
|||||||
def _set_cell_names(self):
|
def _set_cell_names(self):
|
||||||
self.data.obs["cell_name"] = list(self.data.obs.index)
|
self.data.obs["cell_name"] = list(self.data.obs.index)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def add_to_parser(cls, subparsers, invocation_function):
|
||||||
|
scanpy_group = subparsers.add_parser("scanpy", help="run cellxgene using the scanpy engine")
|
||||||
|
# TODO these choices should be generated from the actual available methods
|
||||||
|
scanpy_group.add_argument("-l", "--layout", choices=["umap", "tsne"], default="umap",
|
||||||
|
help="Algorithm to use for graph layout")
|
||||||
|
scanpy_group.add_argument("-d", "--diffexp", choices=["ttest"], default="ttest",
|
||||||
|
help="Algorithm to use to calculate differential expression")
|
||||||
|
scanpy_group.add_argument("data_directory", metavar="dir", help="Directory containing data and schema file")
|
||||||
|
scanpy_group.set_defaults(func=invocation_function)
|
||||||
|
return scanpy_group
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _load_data(data):
|
def _load_data(data):
|
||||||
return sc.read(os.path.join(data, "data.h5ad"))
|
return sc.read(os.path.join(data, "data.h5ad"))
|
||||||
|
|||||||
Reference in New Issue
Block a user