问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单细胞seurat包的原理解析

发布网友 发布时间:2022-11-18 16:52

我来回答

1个回答

热心网友 时间:2023-12-19 20:16

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)


处理完上述数据之后,可视化就很简单了。
具体的参数自行查阅。

以上。
欢迎查漏补缺。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中国福利彩票龟兔赛跑出现两个箭头算不算中奖 ...都没有笑了感觉活得好麻木完全没有意义我该怎么办?? 我的情感很麻木,可以改变或改善吗? 我觉得我麻木不仁,如何改变? 我高二时候突然变得很麻木 应该怎样解脱出来? 曹颖代言的CC换颜祛斑的精油重庆哪里有卖? 第三套人民币蕴含的巨大增值潜力 租赁合同≠租赁凭证!深圳租房家长不要再搞错了!否则申请不了公办学位... 仓埠街道革命传统 ...当归 黄芪 三七一起吃了,有什么功效,吃了会长胖吗?拜托了各位... 运用转基因技术培养的单细胞“工程硅藻”,可把光合作用合成的有机物... loomR介绍及使用指南 在集成吊顶上如何安装吊灯和吸顶灯 集成吊顶可以装明装吸顶灯吗 最新的那个版本的《简·爱》是在英国的哪里拍的啊? 凉菜:野山椒花生米,怎么做? 为什么要形成回路电灯才能亮呢 求答案?回路什么意思,一个电灯难道不是直接一个火线一个零线啦过来接... "同一照明灯具的几个回路"是什么意思?一个灯具不就只有一个回路吗?哪... "同一照明灯具的几个回路"是什么意思 我想了解初级电工知识,请教大家灯,开关的回路是什么? 一个灯泡一个回路 是什么意思 什么情况下才叫回路? 想买一个闲置充电万用宝,谁有? 我在天猫新飞官方旗舰店买的bcd—363k新飞冰箱刚送货就出问题了退货还... 网络营销中,ROI有什么意义? 高考取消英语的利与弊 如何从能量变换的角度去理解pwm变流器的功能和控制 毕业后还能查到四六级的成绩吗 句号点在文字正中间的 字体是什么字体 Linux使用密码保护文件夹或目录 多细胞如何以及为何在植物中进化? 怎样能交到很多好朋友 为什么干燥柜会有周期性的湿度波动 如何管控干燥柜温度湿度 1400度分体式马弗炉怎么样,谁提供下这方面的公司信息? 帕萨特氙气灯改led灯费用多少钱? 汽车led灯价格大概多少钱? 嵌入式花洒弊端 看电影时怎么没有声音是怎么回事 北海兴诚船舶修造有限公司怎么样? 为什么看电影声音一会大一会小 微信换手机号了怎么改绑定 微波源有哪些? 怎么才能把改成手机号 岛津荧光检测器氙灯更换后响应值很低 稠州银行今天上班吗 把爱说出来 歌词 有一首歌歌词高潮是,把爱说出来,不要再离开~歌名是什么? 许嵩 有首歌里面有句歌词 把爱说出来 是什么歌啊 母亲节把爱说出来500字