SuperAPI AI 工具集

scvi-tools

数据与分析

查看项目

更新于 10-15 10:24

技能介绍

用途

scvi-tools 是一个用于单细胞基因组学概率模型的综合 Python 框架,基于 PyTorch 和 PyTorch Lightning 构建,通过变分推断提供深度生成模型,用于分析多种单细胞数据模态。

适用场景

当进行以下工作时可使用本技能:

  • 分析单细胞 RNA-seq 数据(降维、批次校正、整合)
  • 处理单细胞 ATAC-seq 或染色质可及性数据
  • 整合多模态数据(CITE-seq、multiome、配对/非配对数据集)
  • 分析空间转录组数据(去卷积、空间映射)
  • 对单细胞数据进行差异表达分析
  • 执行细胞类型注释或迁移学习任务
  • 处理专门单细胞模态(甲基化、流式细胞术、RNA 速率)
  • 为单细胞分析构建自定义概率模型

主要能力

scvi-tools 按数据模态组织模型:

1. 单细胞 RNA-seq 分析

用于表达分析、批次校正和整合的核心模型,详见 references/models-scrna-seq.md:

  • scVI:无监督降维与批次校正
  • scANVI:半监督细胞类型注释与整合
  • AUTOZI:零膨胀检测与建模
  • VeloVI:RNA 速率分析
  • contrastiveVI:扰动效应分离

2. 染色质可及性(ATAC-seq)

用于分析单细胞染色质数据的模型,详见 references/models-atac-seq.md:

  • PeakVI:基于峰值的 ATAC-seq 分析与整合
  • PoissonVI:定量片段计数建模
  • scBasset:结合基序分析的深度学习方法

3. 多模态与多组学整合

多种数据类型的联合分析,详见 references/models-multimodal.md:

  • totalVI:CITE-seq 蛋白与 RNA 联合建模
  • MultiVI:配对与非配对多组学整合
  • MrVI:多分辨率跨样本分析

4. 空间转录组

空间分辨转录组分析,详见 references/models-spatial.md:

  • DestVI:多分辨率空间去卷积
  • Stereoscope:细胞类型去卷积
  • Tangram:空间映射与整合
  • scVIVA:细胞-环境关系分析

5. 专门模态

其他专门分析工具,详见 references/models-specialized.md:

  • MethylVI/MethylANVI:单细胞甲基化分析
  • CytoVI:流式/质谱细胞术批次校正
  • Solo:双细胞检测
  • CellAssign:基于标记的细胞类型注释

使用方式

所有 scvi-tools 模型遵循一致的 API 模式:

# 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)

关键设计原则:

  • 需要原始计数:模型期望未归一化的计数数据以获得最佳性能
  • 统一 API:所有模型接口一致(setup → train → extract)
  • 以 AnnData 为中心:与 scanpy 生态无缝集成
  • GPU 加速:自动利用可用 GPU
  • 批次校正:通过协变量注册处理技术变异

常见分析任务

差异表达

使用学习到的生成模型进行概率 DE 分析:

de_results = model.differential_expression(
    groupby="cell_type",
    group1="TypeA",
    group2="TypeB",
    mode="change",  # 使用复合假设检验
    delta=0.25      # 最小效应量阈值
)

详见 references/differential-expression.md 了解详细方法与解读。

模型持久化

保存和加载训练好的模型:

# 保存模型
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()  # 批次校正后

理论基础

scvi-tools 构建于:

  • 变分推断:为可扩展贝叶斯推断提供近似后验分布
  • 深度生成模型:学习复杂数据分布的 VAE 架构
  • 摊销推断:共享神经网络实现跨细胞的高效学习
  • 概率建模:有原则的不确定性量化和统计检验

详见 references/theoretical-foundations.md 了解数学框架的详细背景。

附加资源

  • 工作流:references/workflows.md 包含常见工作流、最佳实践、超参数调优和 GPU 优化
  • 模型参考:references/ 目录中每个模型类别的详细文档
  • 官方文档: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

安装

uv pip install scvi-tools
# GPU 支持
uv pip install scvi-tools[cuda]

最佳实践

  • 使用原始计数:始终向模型提供未归一化的计数数据
  • 过滤基因:分析前移除低计数基因(如 min_counts=3)
  • 注册协变量:在 setup_anndata 中包含已知技术因素(批次、供体等)
  • 特征选择:使用高变基因以提升性能
  • 模型保存:始终保存训练好的模型以避免重新训练
  • GPU 使用:对大数据集启用 GPU 加速(accelerator="gpu")
  • Scanpy 集成:将输出存入 AnnData 对象供下游分析

限制

资料未提供关于收费、价格、平台支持范围或具体性能效果的信息,暂未提供。