02.认识Seurat对象

作者: 科研小徐 | 来源:发表于2022-03-12 00:35 被阅读0次

    关于Seurat对象的构建请参考:
    01.单细胞入门-Seurat对象创建


    Seurat对象结构及信息存储

    我们使用seurat官方pbm3k数据集作为示例,强烈建议直接阅读官方文档说明,有构建-整合拆分-质控全套流程和代码。

    我们首先读取上一教程里构建好的pbm3k数据集的seurat对象

    library(Seurat)
    load(file = "pbmc.rdata") #读取保存的.Rdata
    

    Seurat我们可以把他比作一个大容器,几乎存储了一切项目相关信息,包括每个细胞的barcodes所有定量的基因每个细胞的UMI矩阵。我们后面的大量分析包括对数据的降维、聚类分群、注释、等都是可以写入到Seurat对象来保存。
    我们不用过度的去解读Seurat的数据结构,结果导向的去学会调取你所需要的数据即可。接下来通过对pbm3k数据集的一些示例来熟悉这些操作


    使用 pbmc@ 来访问pbmc这个大容器中的数据

    pbmc@

    可以看到自动补全中出现了一些Seurat对象中的二级数据,其中最为关键的就是前两个assaysmeta.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_RNAnFeature_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

    相关文章

      网友评论

        本文标题:02.认识Seurat对象

        本文链接:https://www.haomeiwen.com/subject/kcxhdrtx.html