mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-07 16:28:12 +08:00
Support diffmap and phate layouts. Explicitly handle embeddings with >2 components. (#662)
* Add diffmap and phate to supported embeddings * Explicitly pull the first two components of any given layout
This commit is contained in:
@@ -37,7 +37,7 @@ You should see your web browser open with the following
|
|||||||
|
|
||||||
There are several options available, such as:
|
There are several options available, such as:
|
||||||
|
|
||||||
- `--layout` to specify the layout as `tsne`, `umap`, `draw_graph_fa`, or `draw_graph_fr`
|
- `--layout` to specify the layout as `tsne`, `umap`, `diffmap`, `phate`, `draw_graph_fa`, or `draw_graph_fr`
|
||||||
- `--title` to show a title on the explorer
|
- `--title` to show a title on the explorer
|
||||||
- `--open` to automatically open the web browser after launching (OS X only)
|
- `--open` to automatically open the web browser after launching (OS X only)
|
||||||
|
|
||||||
|
|||||||
@@ -328,10 +328,15 @@ class ScanpyEngine(CXGDriver):
|
|||||||
* only returns Matrix in columnar layout
|
* only returns Matrix in columnar layout
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
df_layout = self.data.obsm[f"X_{self.layout_method}"]
|
full_embedding = self.data.obsm[f"X_{self.layout_method}"]
|
||||||
|
if full_embedding.shape[1] > 2:
|
||||||
|
warnings.warn(f"Warning: found {full_embedding.shape[1]} \
|
||||||
|
components of embedding. Using the first two for layout display.")
|
||||||
|
df_layout = full_embedding[:, :2]
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
raise PrepareError(
|
raise PrepareError(
|
||||||
f"Layout has not been calculated using {self.layout_method}, "
|
f"Layout has not been calculated using {self.layout_method}, "
|
||||||
f"please prepare your datafile and relaunch cellxgene") from e
|
f"please prepare your datafile and relaunch cellxgene") from e
|
||||||
|
|
||||||
normalized_layout = (df_layout - df_layout.min()) / (df_layout.max() - df_layout.min())
|
normalized_layout = (df_layout - df_layout.min()) / (df_layout.max() - df_layout.min())
|
||||||
return encode_matrix_fbs(normalized_layout.astype(dtype=np.float32), col_idx=None, row_idx=None)
|
return encode_matrix_fbs(normalized_layout.astype(dtype=np.float32), col_idx=None, row_idx=None)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ from server.app.util.utils import custom_format_warning
|
|||||||
@click.option(
|
@click.option(
|
||||||
"--layout",
|
"--layout",
|
||||||
"-l",
|
"-l",
|
||||||
type=click.Choice(["umap", "tsne", "draw_graph_fa", "draw_graph_fr"]),
|
type=click.Choice(["umap", "tsne", "draw_graph_fa", "draw_graph_fr", "diffmap", "phate"]),
|
||||||
default="umap",
|
default="umap",
|
||||||
show_default=True,
|
show_default=True,
|
||||||
help="Method for layout."
|
help="Method for layout."
|
||||||
|
|||||||
Reference in New Issue
Block a user