Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据降维以及细胞亚群分类

数据降维以及细胞亚群分类

作者头像
生信喵实验柴
发布于 2022-10-25 11:39:26
发布于 2022-10-25 11:39:26
1.6K00
代码可运行
举报
文章被收录于专栏:生信喵实验柴生信喵实验柴
运行总次数:0
代码可运行

一、数据降维

单细胞数据中包含很多细胞以及很多基因,是一个较大的数据集,维度较大,需要对数据进行降维。降维就是对原始数据进行特征提取,经常会得到高维度的特征向量。通过降维的方式来寻找数据内部的特性,提升特征表达能力,降低模型的训练成本。

数据降维的目的:数据降维,直观的好处是维度降低了,便于计算和可视化,其更深层次的意义在于有效信息的提取综合及无用信息的摈弃;

数据降维的方法:主要的方法是线性映射和非线性映射方法两大类。

线性降维方法主要包括主成分分析 PCA(Principal component analysis),LDA(Linear Discriminant Analysis),非线性包括 MDS(多维缩放)和 ISOMAP(等度量映射)等。

单细胞数据分析中常用的降维方法包括 PCA,以及 UMAP,tSNE。对多个细胞进行聚类分群。细胞亚群分类是 10X ScRNA-seq 数据分析的核心步骤,不同软件有不同的算法。因为10X ScRNA-seq 数据量大,数据结构复杂,对应的分群算法也比较复杂。

分群的基本原理就是利用基因表达量的信息,计算各个细胞间表达模式的差异度,然后基于一定的标准将所有细胞归为多个亚群(将差异度小于值的细胞归为一个亚群)。

二、PCA 与 tSNE 以及 UMAP 之间比较

PCA:

PCA 是线性降维的方法。以转录组数据为例,PC 的主要目的是从大量基因的表达量信息中,提取对整体基因表达量影响最大的效应(例如,实验处理效应,实验批次效应,异常样本效应等)。这些效应被称为主成分(PC),然后利用主成分绘图。PCA 分析就是将数据中大量基因的信息浓缩到少数几个变量(代表样本中的主要效应)中。而后,只要 2~3 个变量(命名为 PC1,PC2,PC3)就可以代表原来几万个基因含有的大部分信息。那么细胞之间表达量差异,就体现在 PC1、PC2 这些变量数值上的差异。

tSNE:

t-SNE (t-distributed Stochastic Neighbor Embedding)算法是用于降维的一种机器学习算法,由 Laurens van der Maaten 和 Geoffrey Hinton 在 2008 年提出来。t-SNE 是一种用于探索高维数据的非线性降维算法,非常适用于将高维数据降维到二维或者三维,再使用散点图等基本图表进行可视化。

UMAP:

UMAP ,全称 Uniform Manifold Approximation and Projection,统一流形逼近与投影,是基于曼和几何代数据的理论框架结构构建的。在处理大数据集时,UMAP 优势明显,运行速度快,占用内存小。Etienne Becht 等人 2019 年在 Nature Biotechnology 上发表的一篇文章将其应用在生物学数据上并分析了 UMAP 在处理单细胞数据方面的应用和优势。UMAP 应该说是目前最好的降维算法了,现在的 10X 单细胞的降维图都选择了 UMAP,因为其能最大程度的保留原始数据的特征同时降低特征维数。

tSNE 与 UMAP 三维展示:https://pair-code.github.io/understanding-umap/

tSNE 与 UMAP 三维展示

三、为什么 tSNE 与 UMAP 更适合单细胞数据降维?

PCA 的方法侧重于去抓住样本中隐含的主要效应,从而让差异大的样本在图中呈现较远的距离。在常规 RNA-seq 项目中,一般样本不多,实验处理效应组合数通常不会超过 10 种(例如,2 类病人× 3 个时间点取样 = 6 种处理组合),因此每个实验处理效应在所有因素的总体效应中占比都比较大,属于效应比较大的因素。

另外,实验批次效应,离群样本等也属于比较大的效应。以上的效应都易于被 PCA 获取,因此 PCA 的方法可以良好地去展示常规 RNA-seq 项目中的处理效应、批次效应和离群样本。而单细胞测序,一次测序成千上万个细胞,可以区分出几十种细胞亚群,包括一些稀有的细胞,PCA 则无法对这些样本进行准确区分。

tSNE 算法就属于这种可以同时兼顾局部结构和全局结构的非线性降维可视化算法。

四、PCA 分析数据降维

PCA 分析数据准备,使用 ScaleData()进行数据归一化。进行一种线性转换,对每个基因进行转换,最终所有基因均值为 0,方差为 1。默认只是标准化高变基因(2000 个),速度更快,不影响 PCA 和分群,但影响热图的绘制。如果想对所有基因进行处理,可以通过 features选项修改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 22000)
all.genes <- rownames(pbmc)
all.genes

#默认处理2000个基因,添加features对所有基因进行处理
pbmc <- ScaleData(pbmc,features = all.genes)
pbmc
#同时过滤掉不想要的基因组
# pbmc <- ScaleData(pbmc, vars.to.regress = "percent.mt")

五、PCA 分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#PCA分析
pbmc <- RunPCA(pbmc,features = VariableFeatures(object = pbmc))
#输出前五个PCA结果
print(pbmc[['pca']],dims = 1:5,nfeatures = 5)

六、绘制 PCA

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#PCA可视化,Seurat提供三个函数VizDimReduction(), DimPlot(), DimHeatmap()
VizDimLoadings(pbmc,dims = 1:2,reduction = "pca")

前两个主成分中的基因

绘制 PCA 散点图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DimPlot(pbmc,reduction = "pca" )

第一主成分散点图

绘制两个主成分的热图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DimHeatmap(pbmc,dims = 1:2,cells = 500,balanced = TRUE,)

绘制多个主成分热图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#绘制15DimHeatmap(pbmc, dims = 1:15, cells = 500, balanced = TRUE)

七、非线性降维

7.1 确定数据的分群个数

在进行分群之前,需要首先定义数据集分群个数,这里我们需要选择出主成分的数目,用于后续细胞分类。这里定义的“维度”并不代表细胞类型的数目,而是对细胞分类时需要用到的一个参数。

方法 1:Jackstraw 置换检验算法;重复取样(原数据的 1%),重跑 PCA,鉴定 p-value 较小的PC;计算‘null distribution’(即零假设成立时)时的基因 scores。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#确定数据的分群个数,比较耗时
pbmc <- JackStraw(pbmc,num.replicate = 100)
pbmc <- ScoreJackStraw(pbmc,dims = 1:20)

这里我们需要选择出主成分的数目,用于后续细胞分类。这里定义的“维度”并不代表细胞类型的数目,而是对细胞分类时需要用到的一个参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JackStrawPlot(pbmc,dims = 1:15)

JackStrawPlot

方法 2:肘部图(碎石图),基于每个主成分对方差解释率的排名。

分群个数这里选择 10,建议尝试选择多个主成分个数做下游分析,对整体影响不大;在选择此参数时,建议选择偏高的数字,一些亚群很罕见,如果没有先验知识,很难将这种大小的数据集与背景噪声区分开来。

碎石图检验

JackStraw 和 Elbow 都可以决定数据的“维度”。但是 Elbow 比较直观,我们选择 Elbow 结果进行解读。可以看到,主成分(PC)12 到 15 之间,数据的标准差基本不再下降。所以我们需要在 12 到 15 之间进行选择,(官网的建议10),我们选取 15,即前 15 个主成分用于细胞的分类。

7.2 非线性降维

基于 PCA 空间中的欧氏距离计算 nearest neighbor graph,优化任意两个细胞间的距离权重(输入上一步得到的 PC 维数)。选择不同的 resolution 值可以获得不同的 cluster 数目,值越大 cluster 数目越多,默认值是 0.5。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#细胞聚类
pbmc <- FindNeighbors(pbmc,dims = 1:15)

接着优化模型,resolution 参数决定下游聚类分析得到的分群数,对于 3K 左右的细胞,设为 0.4-1.2 能得到较好的结果(官方说明);如果数据量增大,该参数也应该适当增大。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pbmc <- FindClusters(pbmc,resolution = 0.5)

使用 Idents()函数可查看不同细胞的分群;

head(Idents(pbmc), 8)

7.3 结果可视化

Seurat 提供了几种非线性降维的方法进行数据可视化(在低维空间把相似的细胞聚在一起),比如 UMAP 和 t-SNE。

t-SNE (t-distributed Stochastic Neighbor Embedding)算法是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hintn 在 2008 年提出来的。t-SNE 是一种用于探索高维数据的非线性降维算法。非常适用于将高维数据降维到二维或者三维,再使用散点图等基本图形进行可视化。PCA 是一种线性算法,它不能解释征之间的复杂多项式关系;而t-SNE 是基于在邻域图上随机游走的概率分布来找到数据内的结构。SNE 通过仿射(affinitie)变换将数据点映射到概率分布上,主要包括两个步骤。

(1)SNE 构建一个高维对象之间的概率分布,使得相似的对象有更高的概率被选择,而不相似的对象有较低的概率被选择。

(2)SNE 在低维空间里构建这些点的概率分布,使得这两个概率分布之间尽可能地相似。t-SNE 作为新兴的降维算法,也并非万能。

其中,t-SNE 主要不足有如下几点。

(1)t-SNE 倾向于保存局部特征,对于本征维数(intrinsic dimersionality)本身就很高的数据集,是不可能完整地映射到二到三维的空间。

(2) t-SNE 没有唯一最优解,且没有预估部分。如果想要做预估,则可以考虑在降维之后构建一个回归方程之类的模型。但是要注意,在 t-SNE 中,距离本身是没有意义的,都是概率分布问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pbmc <- RunUMAP(pbmc,dims = 1:10,label=T)
pbmc@reductions
pbmc@reductions$umap
pbmc@reductions$umap@cell.embeddings
head(pbmc@reductions$umap@cell.embeddings)
write.csv(pbmc@reductions$umap@cell.embeddings,file = 'umap.csv') #可以导出到loupe browser中查看

#DimPlot绘图,可绘制umap,tsne以及pca。
#也可以使用单独的函数PCAPlot,TSNEPlot,UMAPPlot
p1 <- DimPlot(pbmc,reduction = "umap")
p1

#调整颜色DiscretePalette(),"alphabet", "alphabet2", "glasbey", "polychrome", and "stepped"
DimPlot(pbmc,reduction = "umap",cols = DiscretePalette(n = 8,palette = "polychrome"))
library(RColorBrewer)
brewer.pal.info# 查看不同调色板颜色数,有的调色板不够上面我们需要的8种

#绘制tSNE
pbmc <- RunTSNE(pbmc,dims = 1:10)
head(pbmc@reductions$tsne@cell.embeddings)
write.csv(pbmc@reductions$tsne@cell.embeddings,file = 'tsne.csv',quote = FALSE) #可以导出到loupe browser中查看

p2 <- DimPlot(pbmc,reduction = "tsne")
p2
DimPlot(pbmc,reduction = "tsne",cols = DiscretePalette(n = 8,palette = "polychrome"))
p1+p2

p3 <- DimPlot(pbmc,reduction = "pca")
p1+p2+p3
# 美化
DimPlot(pbmc,reduction = "umap") + guides(color = 'none')
library(ggsci)
DimPlot(pbmc,reduction = "umap") + guides(color = 'none') +
  scale_color_npg() #nature主题
# lancet #柳叶刀
# nejm #新英格兰

p1 <- DimPlot(pbmc,reduction = "umap") + guides(color = 'none')
p2 <- DimPlot(pbmc,reduction = "tsne") + guides(color = 'none')
p1+p2+p3
#保存数据集为 RDS 文件
saveRDS(pbmc,file = "pbmc_tutorial.rds")

umap 绘图

t-SNE 绘图

3种降维的比较

单细胞测序比传统bulk分辨率更高,比较不同细胞亚群的差异。

写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。原地址暂未启用(bioinfoer.com)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sx.voiceclouds.cn

有些板块也可以预设为大家日常趣事的分享等,欢迎大家来提建议。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信喵实验柴 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RunTSNE二维及三维结果可视化
在单细胞PCA降维结果理解以及细胞聚类分群及其可视化中,除了有PCA以及聚类分群结果的可视化以外,都展示了一下UMAP图
生信技能树jimmy
2024/06/25
4890
RunTSNE二维及三维结果可视化
拟南芥根系单细胞亚群类型鉴定
然后作者提供了这10个样品的表达矩阵文件,初步看起来并不是10x商业仪器出来数据 :
生信技能树
2021/07/06
7510
学徒单细胞作业:敲除Dnmt1基因对小鼠肺部发育的影响
另外,前两天在《生信技能树》和《单细胞天地》等公众号都推出来了一个10X单细胞转录组钜惠套餐,详见:2个分组的单细胞项目标准分析,原价15~20万的6个10x单细胞转录组套餐,现价10万。其实本文介绍的就是:敲除Dnmt1基因前后分组的两个单细胞转录组数据分析。
生信技能树
2021/11/23
9520
细分亚群后需要使用harmony去除样品差异
但是这样的分析太常规了,远不够!一般来说, 需要进行各自细胞亚群独立进行更加细致的降维聚类分群:
生信技能树
2021/08/25
1.5K0
细分亚群后需要使用harmony去除样品差异
单细胞Seurat流程与步骤详解
FindNeighbors 和 FindClusters 主要是用来进行细胞聚类的,它们会基于数据的相似性计算细胞之间的邻近关系,并通过聚类算法(如 Louvain 或 Leiden 方法)将细胞分成不同的群体。这对于数据的探索和分析非常重要,尤其是当你没有预定义细胞类型时。
生信菜鸟团
2024/12/30
2390
单细胞Seurat流程与步骤详解
人人都需掌握的单细胞分群聚类分析&Marker基因的可视化
批量转录组测序可以为组织或细胞系的整体基因表达提供信息但无法解析不同细胞间的异质性问题;单细胞测序则可提供每个单个细胞的基因表达特征,允许研究者探索细胞类型、细胞状态、细胞亚群等更细致的分子特征。由于单细胞测序数据具有高度异质性,因此需要特定的数据分析方法来处理和解释数据,如聚类分析、降维算法等。这里意味着单细胞测序分析要比批量转录组的分析更为发杂。
生信菜鸟团
2023/11/14
3.8K0
人人都需掌握的单细胞分群聚类分析&Marker基因的可视化
单细胞测序—基础分析流程
参考官方文档:https://satijalab.org/seurat/articles/pbmc3k_tutorial
sheldor没耳朵
2024/07/30
9550
单细胞测序—基础分析流程
OSCA单细胞数据分析笔记8—Dimensionality reduction
二维平面是对于我们人类可接受的表征细胞间距离的可视化方式。因此,尽管上一步PCA已经降至50个维度以内,但在可视化呈现方面,仍需采取一定手段。
生信技能树jimmy
2021/07/02
1.4K0
OSCA单细胞数据分析笔记8—Dimensionality reduction
初探单细胞分析 — 标准化与降维聚类分群的理解
类似于bulk RNA-seq,single-cell RNA-seq 的原始count数据也是需要进行标准化的。
生信技能树jimmy
2024/03/04
1.5K0
初探单细胞分析 — 标准化与降维聚类分群的理解
单细胞基本分析流程概述
上次直播Seurat对象内部结构解析,给大家分享一下step1—— 单细胞数据不同格式,数据读取方法创建Seurat对象,以及seurat对象内容结构简介。
生信技能树
2024/01/11
1.3K0
单细胞基本分析流程概述
RUNX1在B前体急性白血病细胞中的过表达(readMM函数活学活用)
接下来就可以读取它们啦,有意思的是每个样品都需要独立的读取3个文件,合并成为一个单细胞Seurat对象,操作技巧满满!
生信技能树
2021/12/04
6800
RUNX1在B前体急性白血病细胞中的过表达(readMM函数活学活用)
单细胞文献学习
看到Jimmy老师开启了《100篇单细胞转录组文献计划》,我连忙报名了,申领了一个任务,是解读发表于2021年3月,广东省人民医院肺癌研究所团队在《Journal For Immunotherapy Of Cancer》(IF=10.252)杂志的,一篇题为“Multiomics analysis reveals a distinct response mechanism in multiple primary lung adenocarcinoma after neoadjuvant immunotherapy”
生信技能树
2021/07/06
8660
对单细胞亚群取子集后继续降维聚类分群该如何做
描述的很清楚,每个单细胞亚群细分后取子集的时候,仍然是需要UMI 的raw counts值,从代码的角度就是:
生信技能树
2022/03/03
4.5K0
对单细胞亚群取子集后继续降维聚类分群该如何做
单细胞降维聚类分群注释全流程学习(seruat5/harmony)
https://mp.weixin.qq.com/s/drmfwJgbFsFCtoaMsMGaUA
凑齐六个字吧
2024/09/07
3310
单细胞降维聚类分群注释全流程学习(seruat5/harmony)
胃癌单细胞数据集GSE163558复现(二):Seurat V5标准流程
Hello小伙伴们大家好,我是生信技能树的小学徒”我才不吃蛋黄“。今天是胃癌单细胞数据集GSE163558复现系列第二期。第一期我们进行了数据的下载与读取并成功构建Seurat对象。本期,我们将在第一期基础上走Seurat V5标准流程,对Seurat对象进行QC质控、并利用harmony整合去批次、并按标准流程进行降维聚类分群。
生信技能树jimmy
2024/06/13
1.6K5
胃癌单细胞数据集GSE163558复现(二):Seurat V5标准流程
细胞亚群细分的时候仍然是要选择harmony等算法去除样品差异
然后绝大部分文章都是抓住免疫细胞亚群进行细分,包括淋巴系(T,B,NK细胞)和髓系(单核,树突,巨噬,粒细胞)的两大类作为第二次细分亚群。说起来很简单,但是实际上每次做到单细胞数据集的细分亚群就非常的头疼,尤其是myeloid的髓系,(单核,树突,巨噬,粒细胞)有时候根本就分不清楚,而且分完之后仍然是可以继续细分。
生信技能树
2021/07/06
1.8K0
ADAR1基因敲除前后肿瘤免疫微环境单细胞水平变化
在单细胞大行其道的近两年,我也安排了学徒们做了几百个有表达量矩阵可以下载的单细胞转录组文献图表复现,挑选其中100个成功的案例,提供代码给大家,希望对大家有帮助!
生信技能树
2021/04/29
8250
ADAR1基因敲除前后肿瘤免疫微环境单细胞水平变化
使用Rtsne包进行t-SNE降维分析
t-SNE降维算法是由机器学习领域的大牛在2008年提出的一种高效的降维算法,属于非线性降维算法的一种,相比之前常用的PCA算法,该算法更加的先进,应用的领域也非常的多,在单细胞转录组的数据分析中,t-SNE应用的更为广泛。
生信修炼手册
2019/12/19
5.1K0
使用Rtsne包进行t-SNE降维分析
Seurat 包图文详解 | 单细胞转录组(scRNA-seq)分析02
使用的示例数据集来自10X Genome 测序的 Peripheral Blood Mononuclear Cells (PBMC)。
白墨石
2021/01/13
3.4K0
Seurat 包图文详解 | 单细胞转录组(scRNA-seq)分析02
单细胞PCA降维结果理解
在上一期推文单细胞数据标准化及高变基因鉴定里面有整理单细胞下游分析基本流程及使用到的函数
生信技能树jimmy
2024/05/31
7420
单细胞PCA降维结果理解
推荐阅读
相关推荐
RunTSNE二维及三维结果可视化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验