一张总路线图
步骤 | 模块 | 代表工具 | 要解决的问题 |
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 等多组学信息 |