单细胞seurat包的原理解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单细胞seurat包的原理解析相关的知识,希望对你有一定的参考价值。
参考技术A seurat涉及的数据分析包括很多步骤。之前只顾着干活儿,也没有系统的整理过分析中的具体内容。
这里就参照网上大神们分享的帖子,来梳理一下。
这个函数就是根据输入矩阵/数据框,创建Seurat对象的。重要步骤是 设置 ident 和添加 meta.data。
*min.cells 表示一个基因至少要在3个细胞中被检测到,否则不要。
*min.features 参数指定每个细胞需要检测的最小基因数量。此参数将过滤掉质量较差的细胞,这些细胞可能只是封装了随机barcodes,而没有任何真实的细胞。通常,检测到的基因少于100或者200个的细胞不会被考虑进行分析。
这里还是设计一个知识点就是R里面的S3类和S4类。
list一般情况下被认为是S3类,S4类是指使用slots存储数据的格式。(如果说的不对欢迎中纠错)
这里读进去的数值是三个文本文件创建的稀疏矩阵。
什么是稀疏矩阵?
在[矩阵]中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。
如果自己手上有单细胞数据,那个matrix文件里面包含很多0。
因为在测序之前会对抓取到的RNA进行PCR扩增,所以需要考虑文库深度的对测序的影响,所以需要对上一步得到的稀疏矩阵进行Normalize。
Normalize的方式:每个细胞每个基因的特征计数除以该细胞的特征总计数,再乘以scale.factor(默认10000),然后使用log1p进行对数转换。(log1p=log(n+1))
Normalize之后的数据储存在seurat[['RNA']]@data这里。
首先我们合并数据的时候一般直接用的是merge,所以不同样本的细胞的数值不会发生变化。
这里截取whitebird的解释。
做过传统转录组分析的家人们都明白,用转录组数据的FPKM和TPM绘制热图等等的时候,因为数值的变化范围太过巨大,都需要进行一个log转换,让数据压缩在一个区间。
其次,也是最重要的改变数据分布:测序数值本身不符合正态分布,log转换能让数据趋近于正态分布,方便后续的进一步分析。
高变异基因就是highly variable features(HVGs),就是在细胞与细胞间进行比较,选择表达量差别最大的基因,Seurat使用FindVariableFeatures函数鉴定高可变基因,这些基因在不同细胞之间的表达量差异很大(在一些细胞中高表达,在另一些细胞中低表达)。
默认情况下,会返回2,000个高可变基因用于下游的分析,如PCA等。
算法实现在 FindVariableFeatures.default() 中。
目的是在var~mean曲线中,不同mean值区域都能挑选var较大的基因。
单细胞基因表达counts矩阵数据经过NormalizeData()处理后,还需要进行scale。
[ScaleData()]函数将基因的表达转换为Z分数(值以 0 为中心,方差为 1)。
它存储在 seurat_obj[['RNA']]@scale.data,用于下游的PCA降维。
默认是仅在高可变基因上运行标准化。
最开始分析单细胞的时候,这里有点疑惑。
为什么前面已经Normalize,这里还要scale一下?
"Scaling与Normalization的区别"
scale改变的是数据的范围,normalize改变的是数据的分布。
scale是将数据的分布限定在一个范围内,这样子方便比较。normalize却是将偏态分布转换成趋近于正态分布。
这里引用“whitebird”所写的内容。
R语言的Z score计算是通过[scale()]函数求得,Seurat包中ScaleData()函数也基本参照了scale()函数的功能。
scale方法中的两个参数:center和scale
Z score的概念是指原始数据距离均值有多少个标准差。当以标准差为单位进行测量时,Z score衡量的是一个数值偏离总体均值以上或以下多少个标准差。如果原始数值高于均值,则 Z score得分为正,如果低于均值,则Z score为负。
Z score其实是标准正态分布(Standard Normal Distribution),即平均值μ=0,标准差 σ=1 的正态分布。SND标准正态分布的直方图如下所示:
Seurat使用RunPCA函数对标准化后的表达矩阵进行PCA降维处理。
默认情况下,只对前面选出的2000个高可变基因进行线性降维,也可以通过feature参数指定想要降维的数据集。
RunPCA之后会返回5个PC和对应的一大堆基因。
每个PC对应60个基因,分为Positive和Negative,各30个。
Positive和Negative就是PC轴的正负映射关系,正值为Positive,负值为Negative。
返回的是正值和负值绝对值最大的top30,可以理解为对所有细胞区分度最大的基因。
这是PCA之后得到的两个结果。
第一个是每个PC对应的基因。
第二个是每个细胞对应的PC上的坐标。
得到的PCA的结果还可以用以下两种方式来看。
首先计算每个细胞的KNN,也就是计算每个细胞之间的相互距离,依据细胞之间邻居的overlap来构建snn graph。
计算给定数据集的k.param最近邻。也可以选择(通过compute.SNN),通过计算每个细胞最近邻之间的邻域重叠(Jaccard索引)和其邻近的k.param来构造SNN。
具体在计算细胞之间的距离的时候呢,用得到的KNN算法,即邻近算法。
但是,这个算法我也不太懂,但是其中有个事情还蛮有趣。
就是判定邻近的模块有两个:annoy、rann
其中这个annoy全称又叫做Approximate Nearest Neighbors Oh Yeah,名字还蛮可爱的。
下面这位博主对于这个算法有非常详细的解释,有兴趣的家人们自行前往观看。
FindNeighbors Seurat - (jianshu.com)
就是在已经计算完细胞之间的距离之后,对这些细胞进行分类。
可以指定分为几类细胞。
但是很多参考资料里面最重要强调的都只是一个参数:resolution。
resolution这个参数设置的大小决定了细胞类型的多少,值越大细胞类型越多。
具体分析的时候很多时候就会问:到底多少合理?到底应该分为几群?
其实对于测序的人来讲,很多时候确实也不太清楚到底有多少种细胞。
那就有两种解决办法。
1)直接看tSNE的图,物理距离就是判断的一种方法。当物理距离很近的一群细胞被拆开了,那就说明可能没拆开之前是合理的。但是,这种方法呢就简单粗暴一些。
2)有另外一个包clustree,可以对你的分群数据进行判断。
如下图中,当分为4、5和6群的时候,细胞之间没有太多的交叉,都是在进一步细分。
但是再往下,那些半透明的箭头就表示,从一个细胞群跑到了另外一个细胞群,说明就不太合适。
所以,参照上述两种判断方法,可以得到结果。
上述两种方法其实都是对数据进行降维。
为什么需要降维?
常见的降维方法有PCA (principle component analysis)、MDS (multi-dimensional scaling)、Sammon mapping、Isomap 、t-SNE (t-distributed stochastic neighbor embedding)和UMAP(Uniform Approximation and Projection method)。
其中PCA, t-SNE和UMAP在scRNA-seq中使用非常普遍。
之前的分析中已经用PCA降维了,为什么这里还要降维?
这两种方法有什么区别?
摘抄自:( 跟着小鱼头学单细胞测序-scRNA-seq数据的降维和可视化 - 云+社区 - 腾讯云 (tencent.com)
)
处理完上述数据之后,可视化就很简单了。
具体的参数自行查阅。
以上。
欢迎查漏补缺。
Seurat | 单细胞分析工具
Seurat是一个老牌的单细胞分析工具了(satija的力作),我之前测试过,但是没怎么用。
最近发现这个工具又publish在了NBT上,所以很有必要看一下这篇文章。
Integrating single-cell transcriptomic data across different conditions, technologies, and species
主要目的:identifying subpopulations of cells that are present across multiple data sets
主要就是为了多样品之间的比较,甚至不同物种间的对比。
Overview of Seurat alignment workflow
We aimed to develop a diverse integration strategy that could compare scRNA-seq data sets across different conditions, technologies, or species.
Identifying shared correlation structures across data sets
Machine-learning techniques for ‘data fusion’ aim to integrate information from multiple experiments into a consistent representation.
待续~
以上是关于单细胞seurat包的原理解析的主要内容,如果未能解决你的问题,请参考以下文章