关于Seurat对象的构建请参考:
01.单细胞入门-Seurat对象创建
Seurat对象结构及信息存储
我们使用seurat官方pbm3k
数据集作为示例,强烈建议直接阅读官方文档说明,有构建-整合拆分-质控全套流程和代码。
我们首先读取上一教程里构建好的pbm3k数据集的seurat对象
library(Seurat)
load(file = "pbmc.rdata") #读取保存的.Rdata
Seurat我们可以把他比作一个大容器,几乎存储了一切项目相关信息,包括每个细胞的barcodes
,所有定量的基因
和每个细胞的UMI矩阵
。我们后面的大量分析包括对数据的降维、聚类分群、注释、等都是可以写入到Seurat对象来保存。
我们不用过度的去解读Seurat的数据结构,结果导向的去学会调取你所需要的数据即可。接下来通过对pbm3k
数据集的一些示例来熟悉这些操作
使用 pbmc@
来访问pbmc这个大容器中的数据
可以看到自动补全中出现了一些Seurat对象中的二级数据,其中最为关键的就是前两个assays
和meta.data
。
我们对assays
进行调取
pbmc@assays
可以看到assays
下是主要保存了所有细胞的UMI矩阵
而结果中也提示输出结果来自于assays
下的RNA
,并且直接对RNA
进行调取的方式改变为使用$
,因此我们就大概知道了对pbmc这个seurat对象不同层级数据调取的方法,@
和$
。
我们进行一下尝试验证
pbmc@assays$RNA
可见结果是与上方一致的。
接下来我们对meta.data
也进行相同的尝试
pbmc@meta.data
可以看到meta.data
的结果是一个保存了各种信息的数据框,我们可以用class()
进行确认。
因此我们对meta.data
的下级数据进行调用时,也是和data.frame
取列类似使用$
。
pbmc@meta.data$orig.ident
pbmc@meta.data$nCount_RNA
pbmc@meta.data$nFeature_RNA
这里我们对这三列数据是什么进行说明:
orig.ident
:一般存储细胞的样本来源,但这不是100%的,每个人都有自己的习惯,Seurat对象里面的信息是可以根据细胞barcodes
匹配而自己修改的,因此我们要根据获取的数据自行判断或根据自己的习惯自行更改。
而nCount_RNA
和nFeature_RNA
是Seurat创建时CreateSeuratObject()
生成并存储在metadata
中的。
nCount_RNA
:每个细胞的UMI数量
nFeature_RNA
:基因数
实际上我们下游的处理结果大部分也会存储在meta.data
中,随着后续的学习也会不断认识到新的变量。
到这里我们就基本认识了Seurat对象的基本结构和大概信息
接下来我们学习一下对Seurat对象中数据的提取
不同于上一部分,有些数据是通过seurat包的函数来读取。详见代码
Idents(pbmc) #提取细胞的标识/来源,取出的为因子向量
#等效于
pbmc$orig.ident
#不同于
pbmc@meta.data$orig.ident#这种提取方法不包含细胞barcodes
#不同于
pbmc[["orig.ident"]] #取出的为data.frame
dat=GetAssayData(pbmc,slot='counts',assay='RNA')#提取当前保存的单细胞表达矩阵
dat[1:5,1:5]
可见读取的数据为单细胞的表达矩阵,但pbmc数据集使用了稀松矩阵储存所以.
代替了0
也拥有配套函数来对保存的矩阵进行修改
主要应用场景:在进行其他分析之前的标准化
#这里我们对所有表达量+1作为演示
count.data <- as.matrix(x = dat + 1) #对取出来的矩阵+1
count.data[1:5,1:5]
pbmc <- SetAssayData(pbmc, slot = "counts", new.data = count.data,assay = "RNA") #写回pbmc
dat=GetAssayData(pbmc,slot='counts',assay='RNA') #再次读取
dat[1:5,1:5]
到这里我们对Seurat对象就有了基本的认识和基础的数据操作理解。我们接下来的分析中会涉及到很多这种操作的重复和嵌套,这里介绍的只是冰山一角,还是需要靠自己的尝试和带着问题去检索
参考来源:
https://blog.csdn.net/qazplm12_3/article/details/105588174
问题交流:
Email: xuran@hrbmu.edu.cn
网友评论