首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单细胞测序数据分析标准流程详解

单细胞测序数据分析标准流程详解

原创
作者头像
生信小博士
修改2025-10-17 18:35:48
修改2025-10-17 18:35:48
200
代码可运行
举报
文章被收录于专栏:单细胞单细胞
运行总次数:0
代码可运行

单细胞分析流程简介

代码语言:javascript
代码运行次数:0
运行
复制
subset_data <- NormalizeData(subset_data) %>%         FindVariableFeatures(selection.method="vst", nfeatures=2000) VariableFeaturePlot(subset_data)   subset_data <- ScaleData(subset_data) %>%    RunPCA(npcs=50) ElbowPlot(subset_data, ndims=50)   library(harmony) subset_data <- RunHarmony(subset_data, group.by.vars="stim", plot_convergence = TRUE)          subset_data <- subset_data %>%     RunUMAP(reduction="harmony", dims=1:15) %>%     FindNeighbors(dims=1:15, reduction="harmony") %>%     FindClusters() 
DimPlot(subset_data, label=TRUE)  

   以上代码演示了一个典型的10x单细胞RNA测序(scRNA-seq)数据的聚类分析流程,从数据预处理一直到降维和聚类。每一步骤都或多或少会对后续细胞聚类的效果以及细胞类型注释的准确性产生影响。下面我们按顺序详细说明各步骤及函数如何影响结果。

1 数据标准化(NormalizeData)

首先进行数据归一化(标准化)。Seurat默认采用全局缩放的LogNormalize方法,将每个细胞的基因表达计数除以该细胞总的转录本数,再乘以固定尺度因子(如10000),然后取对数。这样做的目的是在比较细胞时消除测序深度或细胞总RNA含量差异的影响。标准化确保不同细胞的表达水平具有可比性,使得后续聚类更多反映生物差异而非技术噪音。例如,如果不做归一化,测序reads较多的细胞可能整体表达值偏高,在 PCA/聚类时聚成一类,造成按测序深度而非真实细胞类型分组的假象,从而干扰细胞类型注释的正确性。通过NormalizeData,技术因素(如测序深度)被校正,有助于使相似细胞按真实生物特征聚为一类。

Image
Image

normalize之后,会出现data这个slot

2 高可变基因选择(FindVariableFeatures)

接下来识别高变异基因(HVG)。FindVariableFeatures函数使用变异/均值拟合的方法选择在细胞间表达变异度最高的基因集合,这里选择了2000个高可变基因。聚类通常只在这些高变基因上进行,因为这些基因在不同细胞中表达差异大,往往携带了细胞类型或状态的关键信息。聚焦于高变基因有助于突出真实的生物学信号,而将成千上万变化不大的基因(如管家基因)的噪声排除。如下图所示,高变基因筛选将平均表达量和变异度结合筛选出了约2000个基因(红色散点),其余黑色点表示变异不显著的基因。。这一步确保后续降维和聚类主要基于这些最能区分细胞的基因进行。如果跳过该步骤而使用所有基因,众多不变或噪声基因会掩盖真正有差异的基因信号,可能导致聚类结果不够清晰,细胞类型间的差异被稀释,降低细胞注释的准确性。VariableFeaturePlot只是将筛选得到的高变基因可视化出来,方便确认基因变异分布情况,并不改变数据本身。

Image
Image

3 数据缩放(ScaleData)

在选择了高变基因后,对数据进行线性缩放。ScaleData会对每个基因的表达进行中心化和尺度化处理:即减去均值使平均表达为0,除以标准差使变异为1。这一标准化确保各基因在后续分析中具有等量权重,避免少数高表达基因主导主成分分析和聚类结果。例如,不经缩放,大量表达量极高的基因(如线粒体基因或核糖体基因)可能因为数值巨大而强烈影响距离度量和主成分,从而把细胞按这些基因分成不具有生物意义的组。通过ScaleData(通常默认只缩放前一步选出的高变基因集合,以减少内存占用,可以均衡不同基因对距离的贡献,使聚类更取决于多个基因的综合差异而非某些特定高丰度基因的影响。这一步对细胞注释的影响在于:保证聚类结果不会因为某些技术因素(例如一些细胞中的高表达伪基因)而失真,从而使每个簇更准确地对应真实的细胞类型。

Image
Image

4 主成分分析(RunPCA)及肘形图选择主成分 (ElbowPlot)

经过上述预处理,我们对高变基因的表达矩阵进行主成分分析(PCA)。PCA将高维基因表达数据压缩到少数几个综合变量(主成分)上,每个主成分实质上是一些相关基因的线性组合,代表了数据中的主要变异方向 。Seurat会使用细胞的 PCA 得分来进行聚类,因为相对于单个基因的原始数据,前几个主成分作为“元特征”能够有效提炼出主要的生物学差异信号,克服单个基因高噪声的影响。

代码中RunPCA(npcs=50)计算了50个主成分,并使用ElbowPlot可视化前50个主成分解释方差的情况,以确定保留多少个主成分用于下游分析。通常我们寻找“肘点”(解释方差的折点),在此示例中肘形图在大约第10个左右PC出现拐点,意味着前20个PC捕获了数据中绝大部分真实信号(如下图ElbowPlot所示)。实际分析中可稍微取大一些维度保证不遗漏信号,因此作者选择了前15个主成分用于后续步骤。选择适当数量的主成分对聚类非常重要:主成分太少会遗漏部分细胞类型差异,导致不同细胞类型被错误地混为一团;主成分过多则可能引入噪音或批次效应,产生虚假的簇分裂。合理选取PC数量(例如依据肘形图选择15个)可以提高聚类对真实细胞亚群的解析度,保障细胞注释的准确性。

Image
Image

5 批次效应校正整合(RunHarmony)

在得到PCA坐标后,代码使用Harmony算法进行批次/条件整合校正。这里RunHarmony(subset_data, group.by.vars="stim")指定按照元数据列“stim”将数据对齐,这通常表示将不同处理条件(刺激组 vs 对照组)之间的差异作为批次效应加以去除。Harmony会在 PCA 低维空间中迭代调整细胞嵌入,使得不同批次或条件下本应属于同一细胞类型的细胞能够对齐。“stim”变量可能表示细胞是否经过刺激处理,如果不进行校正,刺激组和对照组之间广泛的基因表达差异会主导前几个主成分,使得细胞在聚类时首先按处理分开,而不是按细胞类型分开。Harmony的作用就是消除这类全局条件差异,将不同组别的数据融合在一起,同时保留真实的生物学变异(比如不同细胞类型之间的差异)。

整合对聚类和细胞注释有重大影响:未经批次校正的数据往往会出现按批次聚类的现象。同一种细胞类型由于来自不同处理组,会被错误分成两个簇。例如在未整合时,可能出现“簇0”全是对照组的某类细胞,而“簇3”全是刺激组的同类细胞,二者本应是一个细胞群却被拆开。这会使下游分析和细胞注释变得混乱困难,因为聚类主要反映了实验处理而非细胞本身的类型。经过Harmony整合后,同类型细胞在低维空间中重合在一起,不再因批次分开聚类,从而每个聚类更纯粹地对应一个生物学细胞亚群而不混杂批次信息。这极大地方便了正确的细胞类型命名。例如,下图对比了批次矫正前后聚类的差异:

Image
Image

  未经过Harmony整合的UMAP:左图按stim组别上色(红=对照CTRL,青=刺激STIM),可以看到同种颜色的细胞彼此聚成团,红色细胞和青色细胞基本不重叠,说明刺激组和对照组在低维空间明显分开;右图按初步聚类结果(数字)上色,可以发现有些簇(如簇0与簇3)实际上对应两种处理组的细胞,各自成簇。这表明未校正时,细胞主要被按处理分组聚类,而不是按细胞类型。

Image
Image

经过Harmony批次校正后的UMAP:左图按stim组别着色可以看到红色和青色细胞相互混合、重叠良好,同种处理的细胞不再各自成堆,而是散布在共同的簇中;右图为Harmony整合后得到的聚类(数字)上色,原先分开的对应细胞类型簇已经合并。例如之前分属簇0和簇3的两组细胞现在归为同一簇0。整合后聚类主要反映细胞内在类型而非处理差异

通过上述对比可以直观看到,Harmony有效地消除了批次/处理效应对聚类的干扰,使同种细胞(不论来自哪个样本或处理)归于同一聚类。这对于细胞注释至关重要——确保我们标记的每个聚类对应单一的细胞类型,而不会因为批次原因把相同类型拆分成多个簇或把不同类型混在一起。

6 降维可视化与细胞聚类 (UMAP, FindNeighbors, FindClusters)

完成批次整合后,代码进行UMAP降维和图谱绘制,并基于Harmony嵌入空间进行邻近图构建和社区聚类。这些步骤产生具体的聚类结果供细胞类型注释。

UMAP降维 (RunUMAP):UMAP是一种非线性降维算法,它将高维数据投射到二维(或三维)平面上,以便可视化。UMAP会尝试保持细胞间的局部邻近关系,使相似的细胞在低维图上彼此靠近、不同类细胞远离。在本流程中,我们使用Harmony整合后的PC空间(dims=1:15)来计算UMAP嵌入,因此UMAP图将直观展示整合后细胞的分群情况。需要注意,UMAP仅影响数据的展示方式,本身并不改变聚类结果,但一个清晰的UMAP有助于识别聚类模式和指导注释。

构建KNN图 (FindNeighbors):该步骤在选定的低维空间中(此处为Harmony后的前15个主成分)计算每个细胞的K近邻细胞,建立细胞间的邻接图。具体来说,Seurat基于PC坐标计算细胞两两距离,为每个细胞找到最近的几十个邻居,然后以Jaccard相似度等方式过滤加权边,从而形成一个表征细胞相似性的图结构。这一邻居图捕捉了数据中细胞群的内部连接关系,是后续图聚类的基础。如果FindNeighbors阶段构建的邻里关系不准确(例如由于前面用的特征或主成分不恰当),聚类就可能划分错误。因此之前挑选高变基因、选择合适PC、进行批次校正都是为了使真正相似的细胞在此邻居图中紧密相连,不相似的细胞连接稀疏。

图聚类 (FindClusters):Seurat使用基于图的Louvain算法(或改进的Leiden算法)在邻居图上进行社区检测,将高密度连接的细胞分配到同一簇中。该过程本质上寻找网络中的“社区”或“类团”,对应具有相似基因表达模式的一组细胞。FindClusters的resolution参数可以调整簇的分辨率:较高的值会得到更多、更细的簇,较低的值则产出更少、更大的簇。合适的分辨率需要结合生物学知识选择,以匹配预期的细胞群粒度。在本例中未显式指定resolution,使用Seurat默认值(通常~0.8),得到合理数量的聚类。聚类结果直接影响细胞注释的粒度和准确性——如果分辨率太低,不同类型细胞可能被混成一个簇,注释会不够细致;若太高,单一细胞类型可能被过度切分为多个簇,导致过度注释。因此,我们希望通过前面的规范流程,使得默认聚类划分就能较好地对应实际的细胞类型。

完成FindClusters后,DimPlot(subset_data, label=TRUE)被用来绘制UMAP散点图并给每个聚类标上编号标签,方便我们识别和注释各簇。下图展示了整套流程完成后PBMC数据的UMAP聚类图,每个簇已根据其特征基因手动标注为对应的细胞类型名称:

整合后UMAP及细胞类型注释示例:每种颜色代表一个聚类,经鉴定这些聚类分别对应不同的免疫细胞亚群(如CD14单核细胞、CD4^+ T细胞、B细胞、NK细胞等)。可以看到,同类型细胞聚成清晰分离的簇,而且每个簇同时包含了对照(CTRL)和刺激(STIM)两组细胞,证明了整合聚类成功按细胞类型而非处理条件分组。这为后续的细胞类型注释提供了可靠依据。

在这个结果中,每个聚类都可以根据差异表达的标志基因进行生物学解释和命名。例如簇0高表达单核细胞标志基因,被标记为“CD14 Mono”;簇5富含CD8 T细胞标志,被标记为“CD8 T”;如此完成细胞注释。可见,前面各步骤(归一化、挑选高变基因、降维、批次校正、合理选取主成分、图聚类)共同确保了最终得到的聚类准确对应实际的细胞类型,使得我们的细胞注释既细致又可靠。若缺少任何一步,聚类结果可能发生偏差,从而细胞注释要么无法清晰对应已知细胞类型,要么因技术因素产生误导。通过严格按照上述流程处理数据,我们最终获得了生物学意义明确的聚类结构,大大提高了细胞类型注释的准确性和可信度。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单细胞分析流程简介
    • 1 数据标准化(NormalizeData)
    • 2 高可变基因选择(FindVariableFeatures)
    • 3 数据缩放(ScaleData)
    • 4 主成分分析(RunPCA)及肘形图选择主成分 (ElbowPlot)
    • 5 批次效应校正整合(RunHarmony)
    • 6 降维可视化与细胞聚类 (UMAP, FindNeighbors, FindClusters)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档