Scanpy 多样本整合分析:批次效应校正实战

单细胞分析中最容易被忽略、又最容易踩坑的环节------批次效应(Batch Effect)

同一个实验,不同跑胶日期、不同操作人员、不同测序批次,都可能引入系统性偏差。如果不校正,你看到的"差异"可能只是技术噪声。

1. 识别批次效应

复制代码
import scanpy as sc
​
# 模拟两个批次的数据
adata1 = sc.datasets.pbmc68k_reduced()
adata2 = sc.datasets.pbmc3k()
adata2.var_names = adata2.var_names.str.upper()  # 基因名统一大写
​
# 合并
adata = sc.concat([adata1, adata2], keys=['batch1', 'batch2'],
                  index_unique='-', join='outer')
adata.obs['batch'] = [s.split('-')[0] for s in adata.obs_names]
​
# 快速看有没有批次效应
sc.tl.pca(adata)
sc.pl.pca_scatter(adata, color='batch', title='Before correction')

2. Harmony 校正(推荐)

复制代码
# pip install harmonypy
import harmonypy as hm
​
# 先做 PCA
sc.tl.pca(adata, n_comps=50)
​
# Harmony 校正
pcs = adata.obsm['X_pca'][:, :30]
meta = adata.obs[['batch']].copy()
ho = hm.run_harmony(pcs, meta, 'batch')
​
# 把 Harmony 结果写回
adata.obsm['X_pca_harmony'] = ho.Z_corr.T
sc.pp.neighbors(adata, use_rep='X_pca_harmony', n_neighbors=15)
sc.tl.leiden(adata, resolution=0.8)
sc.tl.umap(adata)
​
sc.pl.umap(adata, color=['leiden', 'batch'],
           title='After Harmony correction')

3. BBKNN 校正(Scanpy 内置)

复制代码
# 不用额外安装,Scanpy 自带
sc.tl.pca(adata, n_comps=50)
sc.external.pp.bbknn(adata, batch_key='batch')
sc.tl.leiden(adata, resolution=0.8)
sc.tl.umap(adata)
​
sc.pl.umap(adata, color=['leiden', 'batch'],
           title='After BBKNN correction')

4. Scanorama 校正

复制代码
# pip install scanorama
from scanorama import correct, visualize
​
# Scanorama 需要按批次分开的 AnnData 列表
batches = [adata[adata.obs['batch'] == b].copy() for b in adata.obs['batch'].unique()]
corrected = correct(batches, batch_key='batch')
​
# 合并校正后的数据
adata_corr = sc.concat(corrected, index_unique='-', join='outer')
sc.pp.neighbors(adata_corr)
sc.tl.leiden(adata_corr, resolution=0.8)
sc.tl.umap(adata_corr)
​
sc.pl.umap(adata_corr, color=['leiden', 'batch'],
           title='After Scanorama correction')

5. 如何选择

方法 优势 适用场景
Harmony 速度快,效果好 多样本、多批次首选
BBKNN Scanpy 内置,零依赖 快速验证、少量批次
Scanorama 保留更多生物变异 跨物种/跨平台整合
scVI 深度学习,最强 大规模数据集(10万+细胞)

批次效应校正做得不好,后续所有分析结论都可能有问题。如果你有多个样本需要整合分析,建议交给专业团队处理------标准化的 Pipeline 能确保结果可重复、可验证。

🔗 RunLabAI 运智(研算AI(RunLabAI) · 专注AI驱动生物科研计算与智能生信分析)------支持多样本批次校正与整合分析,从数据到报告一站搞定。

相关推荐
yingjie11020 小时前
Scanpy vs Seurat 深度对比:Python 与 R 的单细胞分析框架谁更强?
开发语言·python·r语言·生物信息学·单细胞转录组·seurat·scanpy
Tiger Z1 个月前
文献阅读 | Preprint | scMarkerAgent:基于大语言模型证据智能体的细胞标志物图谱
ai·生物信息·文献阅读·单细胞
纪伊路上盛名在1 个月前
单细胞转录组数据可视化
信息可视化·生信·单细胞·转录组
生信之灵1 个月前
拓扑与曲率双剑合璧:scGeom如何从单细胞数据中“看见”细胞命运
人工智能·深度学习·算法·单细胞·多组学
追风少年ii2 个月前
HD文章分享(正刊)--健康人肝脏的空间图谱—来自live donors
数据分析·空间·单细胞
乐备实LabEx2 个月前
流式细胞术(FCM)的原理、应用与关键技术分析
单细胞·fmc·流式细胞术·乐备实·labex·质谱流式
追风少年ii3 个月前
第12篇HD文章--射血分数保留的心力衰竭患者左心室心肌免疫细胞丰度正常
python·分类·数据分析·空间·单细胞
追风少年ii3 个月前
顶刊分享--由细菌-癌细胞相互作用决定的差异性肿瘤免疫
人工智能·算法·数据分析·空间·单细胞
追风少年ii3 个月前
CosMx文献分享--空间同型聚类对癌细胞可塑性的抑制
大数据·数据挖掘·数据分析·空间·单细胞