当前位置:首页>python>从 Scanpy 到 scVI:一篇讲清 Python 单细胞分析全流程

从 Scanpy 到 scVI:一篇讲清 Python 单细胞分析全流程

  • 2026-09-10 09:17:57
从 Scanpy 到 scVI:一篇讲清 Python 单细胞分析全流程

一张总路线图

步骤

模块

代表工具

要解决的问题

1

基础分析

Scanpy

读取 10x/h5ad、质控、标准化、HVG、PCA、邻接图、UMAP、聚类、marker 基因

2

多样本整合

Scanpy + Harmony/scVI

去批次、跨样本整合、保留真实生物差异

3

可视化

Scanpy/Matplotlib/Seaborn

UMAP、DotPlot、Violin、Heatmap、MatrixPlot、空间/分组比较

4

轨迹分析

PAGA、Palantir、RNA velocity/scVelo

推断细胞状态转移、分化路径、伪时间与未来方向

5

细胞通讯

CellPhoneDB

配体-受体互作、细胞群之间可能的信号交流

6

网络分析

pySCENIC、WGCNA 思路

转录因子调控网络、regulon、模块、关键调控因子

7

CNV 分析

infercnvpy、CopyKAT

肿瘤/正常细胞区分、染色体大片段拷贝数变化推断

8

AI 应用

CellTypist、scVI/scANVI、Geneformer/scGPT

自动注释、整合建模、扰动预测、基础模型表征

Python 基础分析:Scanpy 是主线

如果说 Seurat 是 R 语言单细胞分析的经典入口,那么 Scanpy 就是 Python 单细胞分析的主线。它的核心数据对象是 AnnData:表达矩阵放在 .X,细胞信息放在 .obs,基因信息放在 .var,降维和邻接图结果放在 .obsm、.uns、.obsp 中。初学者只要理解 AnnData,就抓住了 Python 单细胞的骨架。

1.读取数据:10x 的 matrix.mtx.gz、features.tsv.gz、barcodes.tsv.gz,或直接读取 .h5ad。

2.质控:过滤低基因数细胞、高线粒体比例细胞、低表达基因,必要时识别 doublet。

3.标准化:每个细胞归一化到相同总 counts,再 log1p 转换。

4.筛选高变基因:保留最能解释细胞差异的基因。

5.降维聚类:PCA → 邻接图 → Leiden/Louvain 聚类 → UMAP/t-SNE 可视化。

6.注释细胞类型:marker 基因人工判读,或 CellTypist 自动注释辅助。

import scanpy as scadata = sc.read_10x_mtx("filtered_feature_bc_matrix/", var_names="gene_symbols")adata.var_names_make_unique()adata.obs["mt_frac"] = adata[:, adata.var_names.str.startswith("MT-")].X.sum(1).A1 / adata.X.sum(1).A1sc.pp.filter_cells(adata, min_genes=200)sc.pp.filter_genes(adata, min_cells=3)adata = adata[adata.obs["mt_frac"] < 0.15].copy()sc.pp.normalize_total(adata, target_sum=1e4)sc.pp.log1p(adata)sc.pp.highly_variable_genes(adata, n_top_genes=3000)adata = adata[:, adata.var["highly_variable"]].copy()sc.pp.scale(adata, max_value=10)sc.tl.pca(adata)sc.pp.neighbors(adata, n_neighbors=15, n_pcs=30)sc.tl.leiden(adata, resolution=0.6)sc.tl.umap(adata)sc.pl.umap(adata, color=["leiden", "CD3D", "MS4A1", "LYZ"])

多样本整合:不要把批次效应当成生物学发现

单细胞数据最常见的坑,是不同样本、不同批次、不同平台的技术差异被误认为真实细胞差异。Python 里常用两类路线:一种是传统嵌入校正,如 Harmony、BBKNN;另一种是概率深度模型,如 scVI。scVI 的优势是能把批次信息放进生成模型中,用潜在空间表示细胞状态,适合多样本、多批次、大数据整合。

·小数据、快速探索:Scanpy + Harmony/BBKNN 往往够用。

·多批次、多中心、上万到百万细胞:优先考虑 scVI。

·有标签细胞类型:可进一步用 scANVI 做半监督注释和整合。

·整合后一定检查:每个样本是否混合合理,关键细胞类型是否被过度融合。

import scviscvi.model.SCVI.setup_anndata(adata, batch_key="sample")model = scvi.model.SCVI(adata, n_latent=30)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=["sample", "leiden", "cell_type"])

可视化:图不是装饰,而是分析的证据链

图类型

用途

新手提醒

UMAP/t-SNE

看细胞群分布、批次混合、疾病/对照差异

先按样本、批次、细胞类型分别着色

DotPlot

展示 marker 基因在不同细胞群中的表达

适合细胞注释和论文主图

Violin/Box

比较基因或评分在不同群体中的分布

注意不要忽略样本层面的重复

Heatmap/MatrixPlot

展示 marker 基因模块或通路评分

适合多细胞群横向比较

Rank genes groups

差异 marker 筛选

结果要结合表达比例和生物学背景

轨迹分析:从细胞地图走向细胞故事

聚类告诉你“有哪些细胞群”,轨迹分析试图回答“这些细胞群可能如何变化”。PAGA 适合先看全局拓扑结构,Palantir 更强调分化命运概率和伪时间,RNA velocity/scVelo 则利用未剪接和已剪接 RNA 的比例估计细胞未来方向。

·PAGA:适合粗略判断细胞群之间的连接关系,常用于给 UMAP 布局提供拓扑约束。

·Palantir:适合连续分化过程,输出伪时间、分支概率、终末状态概率。

·RNA velocity/scVelo:适合有 spliced/unspliced 信息的数据,能推断细胞状态变化方向。

·关键提醒:轨迹不是时间机器,它是基于转录相似性和模型假设推断出的可能路径。

细胞通讯:CellPhoneDB 帮你从细胞群走向微环境

在肿瘤免疫、炎症、发育和组织微环境研究中,细胞通讯分析很容易成为文章亮点。CellPhoneDB 会基于配体-受体数据库,判断哪些细胞群之间存在潜在信号互作。Python 工作流里,常见做法是先用 Scanpy 得到细胞注释和表达矩阵,再导出给 CellPhoneDB。

·输入:表达矩阵 + 每个细胞的细胞类型标签。

·输出:细胞群之间显著的 ligand-receptor pairs。

·适合讲故事:肿瘤细胞如何影响免疫细胞,成纤维细胞如何塑造微环境。

·限制:配体-受体共表达不等于真实通讯,最好结合空间转录组、蛋白验证或功能实验。

基因共表达/调控网络:从 marker gene 走向调控因子

单细胞论文如果只停在 marker 基因,很容易显得浅。网络分析能进一步回答:哪些转录因子可能驱动细胞状态?哪些基因形成模块?哪些 regulon 在某类细胞中特异激活?pySCENIC 是 Python 生态中常见的调控网络工具,可推断 TF-target 关系和 regulon 活性。

·pySCENIC:从表达矩阵推断共表达模块,再结合 motif 数据筛选可能的 TF regulon。

·WGCNA 思路:按基因共表达构建模块,再关联细胞类型、疾病状态或评分。

·输出重点:不要只列网络图,最好提炼出关键 TF、靶基因模块和生物学机制。

CNV 分析:肿瘤单细胞里最容易出亮点的一步

肿瘤单细胞分析常常需要区分恶性细胞和非恶性细胞。infercnvpy 可以在 Python 中参考 inferCNV 思路,通过染色体位置上的表达偏移推断拷贝数变异。CopyKAT 是常用的 R 工具,能推断肿瘤细胞的 aneuploidy 和 CNV 模式;如果坚持 Python 主流程,可以把 AnnData 导出表达矩阵后调用 R 脚本运行 CopyKAT,再把结果写回 .obs。

·适用场景:肿瘤组织、恶性细胞识别、肿瘤亚克隆探索。

·必要前提:有比较可靠的正常参考细胞,或工具能自动估计 diploid 细胞。

·结果解释:CNV 推断是表达层面的近似,不等同于 DNA 测序确认的 CNV。

AI 在单细胞中的应用:不是炫技,而是解决三个问题

应用方向

代表工具

能帮你做什么

自动注释

CellTypist

基于参考模型快速预测细胞类型,适合初筛和批量注释

整合建模

scVI/scANVI

处理批次效应、低维表示、半监督注释、差异表达

扰动预测

scGen、CPA、GEARS

预测药物、基因敲除或状态变化后的表达响应

基础模型

Geneformer、scGPT

用大规模单细胞数据预训练,提取基因/细胞表示

多模态整合

totalVI、MultiVI

整合 RNA、蛋白、ATAC 等多组学信息

最新文章

随机文章