当整合来自不同实验批次、测序平台或实验室的单细胞数据时,技术差异往往掩盖真实的生物学信号。 批次效应可能来源于:
| 方法 | 核心技术 | 适用场景 | 计算需求 |
|---|---|---|---|
| scVI | 变分自编码器(VAE) | 大规模数据集,复杂批次结构 | 中等(GPU可选) |
| scGEN | 条件VAE + 对抗训练 | 跨条件预测(如治疗响应) | 中等 |
| Harmony | 迭代聚类 + 线性校正 | 快速校正,内存友好 | 低 |
| LIGER | 整合非负矩阵分解 | 多模态数据整合(scRNA+scATAC) | 中等 |
scVI使用深度生成模型学习数据的低维潜在表示,同时将批次信息编码为条件变量,实现批次校正与数据整合的统一。
# 安装scvi-tools
pip install scvi-tools
# Python代码
import scanpy as sc
import scvi
# 加载数据
adata = sc.read_h5ad('multi_batch.h5ad')
# 预处理
sc.pp.filter_genes(adata, min_cells=10)
sc.pp.highly_variable_genes(adata, n_top_genes=3000, batch_key='batch')
# 训练scVI模型
scvi.model.SCVI.setup_anndata(
adata,
batch_key='batch',
layer='counts'
)
model = scvi.model.SCVI(adata)
model.train()
# 获取批次校正后的低维表示
adata.obsm['X_scVI'] = model.get_latent_representation()
# 下游分析
sc.pp.neighbors(adata, use_rep='X_scVI')
sc.tl.umap(adata)
sc.tl.leiden(adata)
# 可视化
sc.pl.umap(adata, color=['batch', 'leiden'], ncols=2)
# 批次混合程度可视化
sc.pl.umap(adata, color='batch', title='After correction')
# 检查生物学信号是否保留
sc.pl.umap(adata, color=['CD3D', 'CD79A', 'CST3'], ncols=3)
# 使用scib-metrics评估
from scib_metrics.benchmark import Benchmarker
bm = Benchmarker(
adata,
batch_key='batch',
label_key='celltype',
embedding_obsm_keys=['X_scVI', 'X_pca']
)
bm.benchmark()
© 2025 知识库 | 返回首页