单细胞转录组学的记录(part2)
鲁珀 lupo Lv2

我们继续专注于数据的缩放(线性变换),主成分分析和聚类

进行数据的线性变换是非常重要的一步,由于单细胞转录组分析的数据通常是高维且稀疏的,不同基因的表达水平可以相差几个数量级,有的基因可能出现很高表达,而有的基因可能表达量非常低,这一步是为了减少高表达基因的主导性,使得所有基因对分析贡献均衡。

在Seurat中,可以使用ScaleData()语法进行数据的线性变换。

在本例中,我们执行如下的代码从而实现对所有基因的线性变换

1
2
all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes)

当我们对数据完成了线性变换以后,就可以进行主成分分析(PCA)了

在这一步之前,我们需要来讲解一下主成分分析是什么

想象你是一个商店的经理,现在你拿到了很多种商品的销售数据,比如苹果、香蕉、牛奶、面包等,每种商品的销量每天都在变化。这些商品销量的数据可以看作是高维数据,因为每种商品代表一个维度,这个维度可以理解为变量。

如果你希望用一张图表示超市所有商品的销售情况,但是你的超市里有成千上万种物品,你很难找到一个二维的办法来把他们都描述出来,这个时候,PCA就发挥作用了。

PCA的宗旨是:找到数据中最重要的趋势或模式,用更少的维度表示出来,这个过程就被称为降维

简单的原理是,PCA可以计算数据的主要变化趋势,在这个超市例子中,那就是那些物品的销售情况是相关的

例如人们一般买面包的同时也会买上牛奶一起作为早餐,那么牛奶和面包的销量就可以用面包牛奶指数进行表达。

对于单细胞数据分析也是一样,计算机会寻找到多个主成分,我们选取能解释大部分数据的主成分,这一般在几个到几十个之间,通过这个原理,你就可以将成千上万的数据压缩到几个到几十个维度中。

在本例中,我们可以通过下面的语句进行PCA分析

1
pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))

在PCA结束以后,我们需要检查分析结果,从而在后续的判断中判断我们需要选取多少个主成分。

这个时候,肘部图 Elbow Plot 就发挥作用了。

肘部图的原理是:根据每个主成分解释的方差百分比对主成分进行排名,我们需要寻找到Elbow Plot的拐点。

Elbow Plot of Pbmc

从这张图中可以明显看到,在大约9-10这里,曲线出现了明显的弯曲,并且在10以后趋于平缓。这说明大部分数据都在前10个主成分中被捕获。因此我们可以舍弃10以后的主成分。

请注意:这个方法适用于大部分的数据集,但是对于一些罕见的细胞种类来说,主成分分析的筛选不当可能筛选掉一些罕见的细胞群体

在完成了主成分分析以后,我们就可以开始对数据进行聚类了。

所谓的聚类,通俗理解就是,根据细胞的基因表达模式,将相似的细胞归类到同一个群体,进而识别不同的细胞类型或状态,这个非常好理解。

我们执行下面的两行代码对数据进行聚类,聚类的结果会保存在对象的Idents名录下

1
2
3
4
pbmc <- FindNeighbors(pbmc, dims = 1:10)
pbmc <- FindClusters(pbmc, resolution = 0.5)
#查看聚类的结果
head(Idents(pbmc), 5)

在完成聚类以后,我们就可以开始进行运行非线性降维和可视化了。

Seurat提供了很多的非线性降维方法,我们常用的是tSNE 和 UMAP

请注意:所有可视化技术都有局限性,无法完全代表底层数据的复杂性,不提倡仅根据可视化技术得出生物学结论。

我们运行如下的代码进行这个过程

1
2
pbmc <- RunUMAP(pbmc, dims = 1:10)
DimPlot(pbmc, reduction = "umap")

如果没有意外,你现在可以看到这张图

Umap result

在后面的Part3中,我们将会着重于差异表达分析和对细胞群进行注释。

Powered by Hexo & Theme Keep
Unique Visitor Page View