单细胞组学分析:降维、聚类与轨迹推断
单细胞组学分析:降维、聚类与轨迹推断
引言:从细胞群体到单细胞视角
传统测序技术测量的是组织样本中成千上万个细胞的平均信号,掩盖了细胞间的异质性。单细胞组学技术(如scRNA-seq、scATAC-seq)允许我们在单个细胞分辨率下观测基因表达、染色质可及性等分子特征,从而揭示组织内的细胞类型组成、发育轨迹和疾病微环境。
单细胞数据具有高维度(数万个基因)、高噪声(稀疏的dropout事件)和大规模(数万至百万个细胞)的特点,直接分析原始数据几乎不可能。因此,标准的分析流程通常包含三大核心步骤:降维、聚类和轨迹推断。本文将带你从零理解这些方法的原理、实用工具和典型应用场景。
第一节:数据预处理的核心概念
在深入降维之前,必须理解单细胞数据的预处理,因为它直接影响后续分析的质量。
- 质控与过滤:去除低质量细胞(线粒体基因比例过高、检测基因数过少)和杂质基因(核糖体基因、非编码RNA)。
- 归一化:消除测序深度导致的细胞间差异。最常用的是
LogNormalize:将每个细胞的计数除以总数后乘以一个缩放因子(如10,000),再取log1p。 - 高变基因选择:分析并非用到所有基因。通常选取表达量高且方差系数大的前2000-5000个高变基因(HVGs),这些基因携带了细胞异质性的主要信息,并能大幅降低计算负担。
- 数据缩放:对每个基因进行中心化和缩放,使得不同基因的尺度可比,避免高表达基因主导距离计算。
预处理后的数据矩阵(细胞 × 高变基因)便是降维算法的输入。
第二节:降维——在低维空间看见细胞
降维的目标是将高维基因表达空间压缩到2维或更多低维空间,同时保留细胞的原始距离关系和局部邻域结构。这对可视化和基于图论的聚类至关重要。
2.1 主成分分析(PCA):线性降维的基石
单细胞流程标准步骤先用PCA将数据降至30-50维。
- 原理:寻找数据方差最大的方向(主成分),每个主成分是原始基因的线性组合。
- 作用:去除噪声,保留整体数据结构。后续的聚类和距离计算通常在PCA空间上进行,而不是原始基因空间。
- 关键点:选择多少个主成分?通常基于“肘部图”,选取方差解释率趋于平缓之前的PCs。对于大多数组织,10-30个PCs足够捕获生物异质性。
# R语言示例
pca <- RunPCA(object, features = VariableFeatures(object))
ElbowPlot(object) # 查看各PC贡献
2.2 t-SNE:擅长大规模细胞群体的可视化
t-SNE(t-分布随机邻域嵌入)是一种非线性降维,专为生成漂亮的二维可视化图而设计。
- 核心思想:将高维空间中的细胞间相似性(概率分布)建模,然后在低维空间用 t 分布重建相似性。它擅长保持局部邻域,即原先聚在一起的细胞在二维图上依然靠近。
- 优点:能将巨大且复杂的细胞类型分离得十分清晰,分群效果直观。
- 注意事项:t-SNE的全局结构不可靠,不同距离间的簇不能直接比较;不同运行或不同参数(混乱度perplexity)会得到不同图像。因此,t-SNE只适合可视化,不适合作为定量分析的输入。
2.3 UMAP:平衡局部与全局的当前首选
UMAP(统一流形逼近与投影)是如今单细胞分析可视化和降维的主流方法。
- 原理:基于黎曼几何和代数拓扑,首先构建高维数据的模糊拓扑表示,然后在低维用类似力导向图的算法优化,保留局部和一定程度的全局结构。
- 比t-SNE的优势:更好地维持细胞群体的连续过渡,如发育轨迹;计算速度更快;聚类间的距离有一定可比性。
- 常见应用:UMAP直接嵌入到2或3维用于可视化;也可嵌入到10-50维作为聚类前的降维步骤,部分流程(如Scanpy)常用PCA+UMAP组合进行聚类。
| 方法 | 输入维度 | 常用输出维度 | 主要用途 | 结构保持 |
|---|---|---|---|---|
| PCA | 基因 | 30–50 | 降噪、聚类基础 | 全局线性 |
| t-SNE | PCA空间 | 2 | 可视化 | 局部 |
| UMAP | PCA空间 | 2, 3, 10-50 | 可视化与聚类 | 局部+部分全局 |
第三节:聚类——定义细胞的身份
聚类将表达模式相近的细胞划分到同一细胞群中,每一群代表一种潜在的细胞类型或状态。单细胞聚类几乎都使用基于图的社区发现算法。
3.1 构建细胞邻接图
降维后的PCA空间(或UMAP空间)中,计算每个细胞最近的k个邻居(kNN),构建一个共享最近邻图(SNN Graph)。图的节点是细胞,边代表两个细胞之间的相似性。
- 关键参数k:太小会导致图过于稀疏、分群琐碎;太大则模糊细胞群边界。通常设为20左右,并视细胞总数调整。
- Jaccard相似性 常被用来加权边,使得两个细胞共同邻居越多,连接越强。
3.2 图聚类算法:Louvain 与 Leiden
在图上运行社区发现算法,将图切割成高度互连的细胞群体。
- Louvain算法:早期经典,通过模块度优化快速迭代合并社区。容易产生“分裂不足”或“过度合并”的现象。
- Leiden算法:Louvain的改进版,能保证社区内部连通性,避免形成弱连接的不良聚类,已成为主流。它通常给出层次更清晰的聚类结构。
调整**分辨率(resolution)**参数可以控制聚类的颗粒度:较高的分辨率产生更多更小的群簇,适合识别稀有亚型;较低的分辨率将小簇合并,对应大类细胞。通常在0.4到1.2之间尝试。
3.3 寻找差异基因与自动注释
聚类完成后,对每个簇进行差异表达分析,找到该簇相对于其他簇显著高表达的基因(标记基因)。常见的自动注释工具(如SingleR、CellTypist)会用这些标记基因将簇映射到已知细胞类型。人工校对通常是必要的,可以结合领域知识解读标记基因的生物学意义。
# Python Scanpy 示例
sc.tl.leiden(adata, resolution=0.8)
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')
第四节:轨迹推断——重建动态生物学过程
单细胞数据是组织瞬间的快照,但细胞可能处于连续发育过程的不同阶段(如分化、细胞周期、免疫激活)。轨迹推断(也称伪时间分析)尝试将细胞沿着拟时间轴排序,重建动态变化。
4.1 轨迹推断的前置条件
并非所有数据集都适合做轨迹分析。你需要先判断数据特征:
- 连续过程:如干细胞分化、前体细胞向成熟细胞转变。
- 离散类型:成体中稳定的T细胞和B细胞,通常没有连续过渡,强行运行伪时间会得到误导性的结果。
- 预处理:通常只使用关注亚群(如内皮谱系)进行轨迹推断,排除无关细胞类型。仍然使用高变基因或与分化相关的基因模块。
4.2 主流方法一览
Monocle 3 / Monocle 2
最广为使用的R包。Monocle 3 采用基于图的近似方法,先将细胞划分到小区间,然后学习穿过这些区间的最短路径来表达轨迹。它可以构建分支轨迹,并识别分支依赖的差异基因。
Slingshot
基于最小生成树(MST)和同时主曲线的方法。从给定的起始簇开始,将平滑曲线穿过细胞,特别适合树形结构的分化路径。它稳定、简洁,常与tradeSeq结合进行沿轨迹的统计检验。
RNA Velocity(RNA速率)
一种不同的视角。利用新转录的未剪接mRNA与成熟的剪接mRNA的比例,预测每个细胞未来的表达状态,从而在嵌入图上用箭头指示细胞的“运动方向”。软件scVelo、velocyto可计算RNA速率,能推断分化方向,甚至预测根部细胞。但需要具备未剪接和剪接计数数据。
PAGA(分区图抽象)
结合聚类和粗粒化图,适合复杂的分化拓扑。它使用聚类簇作为节点,边表示簇之间的连通可能性,保留全局拓扑的同时去除噪声。
4.3 实践步骤示例(以Monocle 3为例)
- 选择起始细胞:根据生物学知识或高表达干性标记基因的簇定义“根”。
- 降低维度与学习图:Monocle 3 使用UMAP嵌入和简化的聚类,然后学习各个分区的图结构。
- 有序化:调用
order_cells()从根节点出发计算伪时间。 - 寻找动态基因:应用
graph_test()或拟合伪时间的表达趋势,找出随轨迹显著变化的基因。 - 验证:绘制标记基因的表达热图或沿伪时间的折线图,确保生物学合理性。
# Monocle 3 核心流程
cds <- learn_graph(cds)
cds <- order_cells(cds, root_cells = colnames(cds)[root_cells_index])
plot_cells(cds, color_cells_by = "pseudotime")
常用组合:RNA速率提供方向,Monocle/Slingshot 提供精细伪时间排序。 两者结合可构建更可靠的分化轨迹模型。
第五节:集成分析框架与最佳实践
实际项目中需将这些步骤整合到统一框架。主流平台:
- Seurat(R):功能全面,从预处理、整合多样本、降维聚类到空间转录组。与其配套的
Signac处理单细胞ATAC。 - Scanpy(Python):高效处理百万级数据,基于AnnData数据结构,生态丰富,与
scVelo、cellxgene等无缝衔接。 - Monocle 3(R):专注轨迹分析,兼容Seurat对象。
- scvi-tools:基于深度学习的概率模型,用于批次校正、降维和差异分析。
分析检查点建议:
- 降维前后:检查PCA是否受技术因素(如线粒体百分比)驱动,必要时回归掉这些变量。
- 聚类:不要仅依赖单一分辨率,观察多个分辨率下的标记基因一致性。可用Silhouette分数等指标辅助评估。
- 轨迹:用不同的起始点或方法验证轨迹的稳健性。无生物学背景的随机轨迹几乎肯定为假。
结语
单细胞组学的核心分析链——“降维 → 聚类 → 轨迹推断”——将数万维的原始信号转化为可解读的细胞图谱和动态叙事。对于初学者,建议先熟悉Seurat或Scanpy的官方教程,实际操作一个PBMC数据集或发育数据集,体会每一步的输出与参数影响。随着多组学技术和空间信息的整合,分析手段还将持续进化,但理解这些基础模块已经能够帮助你打开单细胞世界的大门。
资源推荐:
- Seurat官方教程 (satijalab.org)
- Scanpy文档 (scanpy.readthedocs.io)
- Monocle 3教程 (cole-trapnell-lab.github.io/monocle3)
- 单细胞分析课程 (如broadinstitute的单细胞workshop)