From 0a27b2923a8ea3d959bbbbd1ab5f6abce652f8e2 Mon Sep 17 00:00:00 2001 From: bmccandless Date: Wed, 2 Sep 2020 15:35:50 -0700 Subject: [PATCH] =?UTF-8?q?Add=20error=20message=20and=20exit=20if=20reemb?= =?UTF-8?q?eddings=20is=20enabled=20and=20scanpy=20is=20n=E2=80=A6=20(#181?= =?UTF-8?q?2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add error message and exit if reembeddings is enabled and scanpy is not installed fixes #1811 --- server/common/app_config.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/server/common/app_config.py b/server/common/app_config.py index df7a0f96..ae67eeaf 100644 --- a/server/common/app_config.py +++ b/server/common/app_config.py @@ -9,6 +9,7 @@ import yaml from flatten_dict import flatten, unflatten import server.compute.diffexp_cxg as diffexp_tiledb +import server.compute.scanpy from server import display_version as cellxgene_display_version from server.auth.auth import AuthTypeFactory from server.common.annotations.hosted_tiledb import AnnotationsHostedTileDB @@ -898,16 +899,21 @@ class DatasetConfig(BaseConfig): self.check_attr("embeddings__enable_reembedding", bool) server_config = self.app_config.server_config - if server_config.single_dataset__datapath: - if self.embeddings__enable_reembedding: + if self.embeddings__enable_reembedding: + if server_config.single_dataset__datapath: matrix_data_loader = MatrixDataLoader( server_config.single_dataset__datapath, app_config=self.app_config ) if matrix_data_loader.matrix_data_type != MatrixDataType.H5AD: - raise ConfigurationError("'enable-reembedding is only supported with H5AD files.") + raise ConfigurationError("enable-reembedding is only supported with H5AD files.") if server_config.adaptor__anndata_adaptor__backed: raise ConfigurationError("enable-reembedding is not supported when run in --backed mode.") + try: + server.compute.scanpy.get_scanpy_module() + except NotImplementedError: + raise ConfigurationError("Please install scanpy to enable UMAP re-embedding") + def handle_diffexp(self, context): self.check_attr("diffexp__enable", bool) self.check_attr("diffexp__lfc_cutoff", float)