mcpField
A
alterlab-scvi-tools

alterlab-scvi-tools

github.com/alterlab-ieu数据与数据库7868 次安装5 周前更新
代码仓库

关于 alterlab-scvi-tools

alterlab-scvi-tools 是用于单细胞基因组学概率建模的 Python 技能,面向分析 RNA-seq、染色质、空间及多组学数据的研究者。它以统一的 PyTorch 工作流涵盖多种模态,并提供批次校正、整合和差异表达分析。

主要功能

  1. 01单细胞 RNA-seq 建模
  2. 02ATAC-seq 染色质分析
  3. 03多模态与多组学整合
  4. 04空间转录组分析
  5. 05差异表达与细胞注释
  6. 06概率模型与不确定性量化

适用场景

  1. 01校正并整合不同批次数据
  2. 02联合分析 CITE-seq 蛋白与 RNA
  3. 03对空间转录组进行细胞解卷积

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-scvi-tools

安装后在 Claude Code 中输入/alterlab-scvi-tools确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
references/
differential-expression.md
models-atac-seq.md
models-multimodal.md
models-scrna-seq.md
models-spatial.md
models-specialized.md
theoretical-foundations.md
workflows.md

详细介绍

scvi-tools

概述

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

何时使用此技能

适用于以下场景:

  • 分析单细胞 RNA-seq 数据(降维、批次校正、整合)
  • 处理单细胞 ATAC-seq 或染色质可及性数据
  • 整合多模态数据(CITE-seq、multiome、配对/非配对数据集)
  • 分析空间转录组数据(去卷积、空间映射)
  • 对单细胞数据进行差异表达分析
  • 执行细胞类型注释或迁移学习任务
  • 处理专用单细胞模态(甲基化、流式细胞术、RNA velocity)
  • 为单细胞分析构建自定义概率模型
不适用场景
场景改用
标准 QC -> 归一化 -> HVG -> PCA -> UMAP -> Leiden -> 标记基因 DEalterlab-scanpy
读取、重塑或拼接 .h5ad 对象本身alterlab-anndata
使用预训练基础模型进行零样本注释或生成嵌入alterlab-scgpt
根据剪接/未剪接计数分析 RNA velocity(scVelo 的 EM/动力学模型)alterlab-scvelo
对 Visium/Xenium 切片进行空间邻域统计、Moran's I、配体-受体分析alterlab-squidpy-spatial
Bulk RNA-seq 差异表达分析alterlab-pydeseq2

核心能力

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

1. 单细胞 RNA-seq 分析

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

  • scVI:无监督降维和批次校正
  • scANVI:半监督细胞类型注释和整合
  • AUTOZI:零膨胀检测和建模
  • VeloVI:RNA velocity 分析
  • 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. Load and preprocess data (AnnData format)
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. Register data with model (specify layers, covariates)
scvi.model.SCVI.setup_anndata(
    adata,
    layer="counts",  # Use raw counts, not log-normalized
    batch_key="batch",
    categorical_covariate_keys=["donor"],
    continuous_covariate_keys=["percent_mito"]
)

# 3. Create and train model
model = scvi.model.SCVI(adata)
model.train()

# 4. Extract latent representations and normalized values
latent = model.get_latent_representation()
normalized = model.get_normalized_expression(library_size=1e4)

# 5. Store in AnnData for downstream analysis
adata.obsm["X_scVI"] = latent
adata.layers["scvi_normalized"] = normalized

# 6. Downstream analysis with scanpy
sc.pp.neighbors(adata, use_rep="X_scVI")
sc.tl.umap(adata)
sc.tl.leiden(adata)

关键设计原则:

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

常见分析任务

差异表达

使用学得的生成模型进行概率差异表达分析:

de_results = model.differential_expression(
    groupby="cell_type",
    group1="TypeA",
    group2="TypeB",
    mode="change",  # composite hypothesis testing with an effect-size threshold
    delta=0.25,     # minimum |LFC| to count as a real change
)

# Significance lives in proba_de (posterior prob. of DE), NOT a p-value.
# In "change" mode this is the posterior prob. that |LFC| > delta.
sig = de_results[de_results["proba_de"] > 0.95]

完整的输出架构和解读方式,请参见 references/differential-expression.md。

模型持久化

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

# Save model
model.save("./model_directory", overwrite=True)

# Load model
model = scvi.model.SCVI.load("./model_directory", adata=adata)
批次校正与整合

整合跨批次或研究的数据集:

# Register batch information
scvi.model.SCVI.setup_anndata(adata, batch_key="study")

# Model automatically learns batch-corrected representations
model = scvi.model.SCVI(adata)
model.train()
latent = model.get_latent_representation()  # Batch-corrected

理论基础

scvi-tools 构建于以下基础之上:

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

详细了解数学框架,请参阅 references/theoretical-foundations.md。

更多资源

安装

uv pip install scvi-tools
uv pip install "scvi-tools[cuda]"      # CUDA 12; use [cuda13] for CUDA 13
uv pip install "scvi-tools[metal]"     # Apple silicon (MPS)
uv pip install "scvi-tools[autotune]"  # hyperparameter search (Ray Tune)

版本说明(2026-09):scvi-tools 1.5 完全移除了 JAX 后端,因此 scvi.model.JaxSCVI 和其他以 Jax 开头的模型已不复存在——所有内容都运行在 PyTorch/Lightning 上(Apple 芯片另有 mlxSCVI 变体)。Tangram 也在 1.5.0 中迁移到了 PyTorch 后端,因此 结果可能与 JAX 时代的运行略有不同;请重新运行,不要在同一项比较中混用新旧输出。

最佳实践

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

评论

支持 Markdown