名称: scvi-tools 描述: 使用 scvi-tools 进行单细胞分析的深度学习。此技能应在用户需要以下情况时使用:(1) 使用 scVI/scANVI 进行数据集成和批校正,(2) 使用 PeakVI 进行 ATAC-seq 分析,(3) 使用 totalVI 进行 CITE-seq 多模态分析,(4) 使用 MultiVI 进行多组学 RNA+ATAC 分析,(5) 使用 DestVI 进行空间转录组解卷积,(6) 使用 scANVI/scArches 进行标签转移和参考映射,(7) 使用 veloVI 进行 RNA 速度分析,或 (8) 任何基于深度学习的单细胞方法。触发词包括提及 scVI、scANVI、totalVI、PeakVI、MultiVI、DestVI、veloVI、sysVI、scArches、变分自编码器、VAE、批校正、数据集成、多模态、CITE-seq、多组学、参考映射、潜在空间。
scvi-tools 深度学习技能
此技能为使用 scvi-tools 进行基于深度学习的单细胞分析提供指导,scvi-tools 是单细胞基因组学中概率模型的领先框架。
如何使用此技能
- 从下方的模型/工作流表格中识别适当的工作流程
- 阅读相应的参考文件以获取详细步骤和代码
- 使用
scripts/中的脚本以避免重写通用代码 - 对于安装或 GPU 问题,参考
references/environment_setup.md - 对于调试,参考
references/troubleshooting.md
何时使用此技能
- 当提及 scvi-tools、scVI、scANVI 或相关模型时
- 当需要基于深度学习的批校正或集成时
- 当处理多模态数据(CITE-seq、多组学)时
- 当需要参考映射或标签转移时
- 当分析 ATAC-seq 或空间转录组数据时
- 当学习单细胞数据的潜在表示时
模型选择指南
| 数据类型 | 模型 | 主要用例 |
|---|---|---|
| scRNA-seq | scVI | 无监督集成、差异表达、插补 |
| scRNA-seq + 标签 | scANVI | 标签转移、半监督集成 |
| CITE-seq (RNA+蛋白) | totalVI | 多模态集成、蛋白去噪 |
| scATAC-seq | PeakVI | 染色质可及性分析 |
| 多组学 (RNA+ATAC) | MultiVI | 联合模态分析 |
| 空间 + scRNA 参考 | DestVI | 细胞类型解卷积 |
| RNA 速度 | veloVI | 转录动态 |
| 跨技术 | sysVI | 系统级批校正 |
工作流参考文件
| 工作流 | 参考文件 | 描述 |
|---|---|---|
| 环境设置 | references/environment_setup.md |
安装、GPU、版本信息 |
| 数据准备 | references/data_preparation.md |
为任何模型格式化数据 |
| scRNA 集成 | references/scrna_integration.md |
scVI/scANVI 批校正 |
| ATAC-seq 分析 | references/atac_peakvi.md |
使用 PeakVI 进行可及性分析 |
| CITE-seq 分析 | references/citeseq_totalvi.md |
使用 totalVI 进行蛋白+RNA 分析 |
| 多组学分析 | references/multiome_multivi.md |
使用 MultiVI 进行 RNA+ATAC 分析 |
| 空间解卷积 | references/spatial_deconvolution.md |
DestVI 空间分析 |
| 标签转移 | references/label_transfer.md |
使用 scANVI 进行参考映射 |
| scArches 映射 | references/scarches_mapping.md |
查询到参考映射 |
| 批校正 | references/batch_correction_sysvi.md |
高级批处理方法 |
| RNA 速度 | references/rna_velocity_velovi.md |
使用 veloVI 进行动态分析 |
| 故障排除 | references/troubleshooting.md |
常见问题及解决方案 |
CLI 脚本
模块化脚本用于常见工作流。按需链式使用或修改。
流水线脚本
| 脚本 | 目的 | 使用 |
|---|---|---|
prepare_data.py |
质量控制、过滤、高变基因选择 | python scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch |
train_model.py |
训练任何 scvi-tools 模型 | python scripts/train_model.py prepared.h5ad results/ --model scvi |
cluster_embed.py |
邻居、UMAP、Leiden 聚类 | python scripts/cluster_embed.py adata.h5ad results/ |
differential_expression.py |
差异表达分析 | python scripts/differential_expression.py model/ adata.h5ad de.csv --groupby leiden |
transfer_labels.py |
使用 scANVI 进行标签转移 | python scripts/transfer_labels.py ref_model/ query.h5ad results/ |
integrate_datasets.py |
多数据集集成 | python scripts/integrate_datasets.py results/ data1.h5ad data2.h5ad |
validate_adata.py |
检查数据兼容性 | python scripts/validate_adata.py data.h5ad --batch-key batch |
示例工作流
# 1. 验证输入数据
python scripts/validate_adata.py raw.h5ad --batch-key batch --suggest
# 2. 准备数据(质量控制、高变基因选择)
python scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch --n-hvgs 2000
# 3. 训练模型
python scripts/train_model.py prepared.h5ad results/ --model scvi --batch-key batch
# 4. 聚类和可视化
python scripts/cluster_embed.py results/adata_trained.h5ad results/ --resolution 0.8
# 5. 差异表达
python scripts/differential_expression.py results/model results/adata_clustered.h5ad results/de.csv --groupby leiden
Python 实用工具
scripts/model_utils.py 提供可导入函数用于自定义工作流:
| 函数 | 目的 |
|---|---|
prepare_adata() |
数据准备(质量控制、高变基因、层设置) |
train_scvi() |
训练 scVI 或 scANVI |
evaluate_integration() |
计算集成指标 |
get_marker_genes() |
提取差异表达标记基因 |
save_results() |
保存模型、数据、图 |
auto_select_model() |
建议最佳模型 |
quick_clustering() |
邻居 + UMAP + Leiden 聚类 |
关键要求
-
需要原始计数:scvi-tools 模型需要整数计数数据
adata.layers["counts"] = adata.X.copy() # 归一化前 scvi.model.SCVI.setup_anndata(adata, layer="counts") -
高变基因选择:使用 2000-4000 个高变基因
sc.pp.highly_variable_genes(adata, n_top_genes=2000, batch_key="batch", layer="counts", flavor="seurat_v3") adata = adata[:, adata.var['highly_variable']].copy() -
批信息:指定 batch_key 进行集成
scvi.model.SCVI.setup_anndata(adata, layer="counts", batch_key="batch")
快速决策树
需要集成 scRNA-seq 数据吗?
├── 有细胞类型标签? → scANVI (references/label_transfer.md)
└── 无标签? → scVI (references/scrna_integration.md)
有多模态数据吗?
├── CITE-seq (RNA + 蛋白)? → totalVI (references/citeseq_totalvi.md)
├── 多组学 (RNA + ATAC)? → MultiVI (references/multiome_multivi.md)
└── 仅 scATAC-seq? → PeakVI (references/atac_peakvi.md)
有空间数据吗?
└── 需要细胞类型解卷积? → DestVI (references/spatial_deconvolution.md)
有预训练参考模型吗?
└── 映射查询到参考? → scArches (references/scarches_mapping.md)
需要 RNA 速度吗?
└── veloVI (references/rna_velocity_velovi.md)
有强跨技术批效应吗?
└── sysVI (references/batch_correction_sysvi.md)