使用例
インストール
$ conda create -n scvi-env python=3.7
$ conda install scvi-tools -c conda-forge
#@
import scvi
import scanpy as sc
#@
adata = adata_1.concatenate(adata_2)
#@ Preprocessing
#@ Normalize
# For other tasks, store normalized data in the anndata object separately
adata.layers["counts"] = adata.X.copy()
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
adata.raw = adata
#@ HVG
sc.pp.highly_variable_genes(
adata,
n_top_genes = 2000,
subset=True,
layer = "counts",
flavor = "seurat_v3",
batch_key = "batch"
)
#@ SET UP
scvi.model.SCVI.setup_anndata(
adata,
layer = "counts",
batch_key = "batch",
continuous_covariate_keys = ["percent_mito", "percent_ribo"]
)
#@ Creating/Training a model & Obtaining a model output
model = scvi.model.SCVI(adata, n_layer = 2, n_latent=30, gene_likelihood="nb")
model.train()
# SAVE & LOAD
# model.save("my_model/")
# model = scvi.model.SCVI.load("my_model/", adata)
adata.obsm["X_scVI"] = model.get_latent_representation()
#@ UMAP & Clustering / using scVI latent space
sc.pp.neibors(adata, use_rep = "X_scVI")
sc.tl.umap(adata)
sc.tl.leiden(adata)
sc.pl.umap(adata, color = ["batch", "leiden" ] )
#@ RENAME
#@ MARKERS
de_df = model.differential_expression(
groupby = "cell_type",
)
markers = {}
cats = adata.obs.cell_type.cat.categories
for i, c in enumerate(cats):
cid = "{} vs Rest".format(c)
cell_type_df = de_df.loc[de_df.comparison == cid ]
cell_type_df = cell_type_df[cell_type_df.lfc_mean > 0 ]
cell_type_df = cell_type_df[cell_type_df["bayes_factor"] > 3 ]
cell_type_df = cell_type_df[ cell_type_df["non_zeros_proportion1"] > 0.1 ]
markers[c] = cell_type_df.index.tolist()[:3]
sc.tl.dendrogram(adata, groupby="cell_type", use_rep="X_scVI")
sc.pl.dotplot(
adata,
markers,
groupby = "cell_type",
dendrogram = True,
color_map = "Blues",
swap_axes = True,
use_raw = True,
standard_scale = "var"
)
sc.pl.heatmap(
adata,
markers,
groupby = "cell_type",
layer = "scvi_normalized",
standard_scale = "var",
dendrogram = True,
figsize = (8, 12)
)
参考文献