用途
scvi-tools 是一个用于单细胞基因组学概率建模的 Python 框架,构建在 PyTorch 和 PyTorch Lightning 之上。它使用变分推断的深度生成模型,分析多种单细胞数据模态,适合需要进行概率化批次校正、迁移学习、差异表达等任务的场景。
适用任务包括:单细胞 RNA-seq 数据分析(降维、批次校正、整合);单细胞 ATAC-seq 或染色质可及性数据;多模态数据整合(CITE-seq、multiome、配对/非配对数据集);空间转录组数据分析(去卷积、空间映射);单细胞差异表达分析;细胞类型注释或迁移学习;甲基化、细胞术、RNA 速率等专门模态;以及为单细胞分析构建自定义概率模型。
主要能力
模型按数据模态组织:
单细胞 RNA-seq 分析:scVI(无监督降维与批次校正)、scANVI(半监督细胞类型注释与整合)、AUTOZI(零膨胀检测与建模)、VeloVI(RNA 速率分析)、contrastiveVI(扰动效应分离)。
染色质可及性(ATAC-seq):PeakVI(基于 peak 的 ATAC-seq 分析与整合)、PoissonVI(定量片段计数建模)、scBasset(结合 motif 分析的深度学习方法)。
多模态与多组学整合:totalVI(CITE-seq 蛋白与 RNA 联合建模)、MultiVI(配对与非配对多组学整合)、MrVI(多分辨率跨样本分析)。
空间转录组:DestVI(多分辨率空间去卷积)、Stereoscope(细胞类型去卷积)、Tangram(空间映射与整合)、scVIVA(细胞—环境关系分析)。
专门模态:MethylVI/MethylANVI(单细胞甲基化分析)、CytoVI(流式/质谱细胞术批次校正)、Solo(双细胞检测)、CellAssign(基于标记的细胞类型注释)。
使用方式
所有模型遵循一致的 API 模式(setup → train → extract):
# 1. 加载与预处理数据(AnnData 格式)
import scvi
import scanpy as sc
adata = scvi.data.heart_cell_atlas_subsampled()
sc.pp.filter_genes(adata, min_counts=3)
sc.pp.highly_variable_genes(adata, n_top_genes=1200)
# 2. 向模型注册数据(指定层、协变量)
scvi.model.SCVI.setup_anndata(
adata,
layer="counts", # 使用原始计数,而非对数归一化
batch_key="batch",
categorical_covariate_keys=["donor"],
continuous_covariate_keys=["percent_mito"]
)
# 3. 创建并训练模型
model = scvi.model.SCVI(adata)
model.train()
# 4. 提取隐表示与归一化值
latent = model.get_latent_representation()
normalized = model.get_normalized_expression(library_size=1e4)
# 5. 存回 AnnData 供下游分析
adata.obsm["X_scVI"] = latent
adata.layers["scvi_normalized"] = normalized
# 6. 使用 scanpy 进行下游分析
sc.pp.neighbors(adata, use_rep="X_scVI")
sc.tl.umap(adata)
sc.tl.leiden(adata)
差异表达示例:
de_results = model.differential_expression(
groupby="cell_type",
group1="TypeA",
group2="TypeB",
mode="change", # 使用复合假设检验
delta=0.25 # 最小效应量阈值
)
模型保存与加载:
# 保存模型
model.save("./model_directory", overwrite=True)
# 加载模型
model = scvi.model.SCVI.load("./model_directory", adata=adata)
批次校正与整合:
scvi.model.SCVI.setup_anndata(adata, batch_key="study")
model = scvi.model.SCVI(adata)
model.train()
latent = model.get_latent_representation() # 已批次校正
关键设计原则:模型要求原始计数以获最佳性能;所有模型接口统一(setup → train → extract);以 AnnData 为中心,与 scanpy 生态无缝集成;自动利用可用 GPU;通过协变量注册处理技术变异带来的批次校正。
理论背景
scvi-tools 建立在变分推断(近似后验分布实现可扩展贝叶斯推断)、深度生成模型(学习复杂数据分布的 VAE 架构)、摊销推断(跨细胞高效学习的共享神经网络)、概率建模(有原则的不确定性量化与统计检验)之上。
适用场景与最佳实践
适合单细胞多模态数据的建模、整合、批次校正、注释、差异表达与空间分析。最佳实践包括:始终向模型提供未归一化的计数数据;分析前过滤低计数基因(如 min_counts=3);在 setup_anndata 中注册已知技术因素(批次、供体等);使用高变基因提升性能;保存训练好的模型避免重复训练;大数据集启用 GPU 加速(accelerator="gpu");将输出存入 AnnData 对象以供下游分析。
安装与资源
uv pip install scvi-tools
# GPU 支持
uv pip install scvi-tools[cuda]
官方文档:https://docs.scvi-tools.org/en/stable/ ;教程:https://docs.scvi-tools.org/en/stable/tutorials/index.html ;API 参考:https://docs.scvi-tools.org/en/stable/api/index.html 。
限制
资料未提供关于收费、价格、平台支持范围、性能指标或与其他工具对比的明确信息。