美文网首页收入即学习
10X单细胞转录组下游流程-1-整合多个cellranger结果

10X单细胞转录组下游流程-1-整合多个cellranger结果

作者: 大吉岭猹 | 来源:发表于2019-11-08 19:10 被阅读0次

    1. 写在前面

    • 因为后续的课题以及下一次的JC都准备做单细胞的,所以开始学习单细胞转录组的下游分析。
    • 又因为7月在珠海跑过一次基于Seurat v2的单细胞转录组下游流程,所以这一次准备做一些不一样的,首先是在新买的服务器上跑,其次是自己摸一摸Seurat v3,和原作者的v2比一比。
    • 说是自己摸索,其实还是有前辈先探路了(毕竟开始得这么晚,很不好意思),前辈的简书首页,里面有技能树暑期单细胞培训两篇文章(分别是10X和smart-seq)的流程复现。
    • 除此之外,学习资料当然离不开Jimmy老师的录频和代码。

    2. 读取数据

    • 上游分析的结果中,对我们最有用的是三个文件和一个报告
    • 我们本次使用的数据是作者测的同一个患者四个时期的PBMC样本


    • 这四个sra文件和四个时间点的对应关系是

    | SRR7722939 | PBMC Pre |

    | SRR7722940 | PBMC Disc Early |

    | SRR7722941 | PBMC Disc Resp |

    | SRR7722942 | PBMC Disc AR |

    • 开始读取
    library(Seurat)
    sce.10x <- Read10X(data.dir = './cellranger/four-PBMC-mtx/SRR7722939/')
    sce1 <- CreateSeuratObject(counts = sce.10x,
                               min.cells = 60,
                               min.features = 200,
                               project = "SRR7722939")
    sce1
    sce.10x <- Read10X(data.dir = './cellranger/four-PBMC-mtx/SRR7722940/')
    sce2 <- CreateSeuratObject(counts = sce.10x,
                               min.cells = 60,
                               min.features = 200,
                               project = "SRR7722940")
    sce2
    sce.10x <- Read10X(data.dir = './cellranger/four-PBMC-mtx/SRR7722941/')
    sce3 <- CreateSeuratObject(counts = sce.10x,
                               min.cells = 60,
                               min.features = 200,
                               project = "SRR7722941")
    sce3
    sce.10x <- Read10X(data.dir = './cellranger/four-PBMC-mtx/SRR7722942/')
    sce4 <- CreateSeuratObject(counts = sce.10x,
                               min.cells = 60,
                               min.features = 200,
                               project = "SRR7722942")
    sce4
    
    > sce1;sce2;sce3;sce4
    An object of class Seurat
    6163 features across 2047 samples within 1 assay
    Active assay: RNA (6163 features)
    An object of class Seurat
    4267 features across 1074 samples within 1 assay
    Active assay: RNA (4267 features)
    An object of class Seurat
    5480 features across 4311 samples within 1 assay
    Active assay: RNA (5480 features)
    An object of class Seurat
    6429 features across 4028 samples within 1 assay
    Active assay: RNA (6429 features)
    
    • 和技能树提供的v2代码跑出来有些许差异,我们暂且忽视。

    • v2,v3的Seurat对象结构也是不一样的,先探索一下。



    • 我大胆猜测这个assays它就是v2里的data(后面证明是猜错了),而这个meta.data应该和原来是一样的。

    3. 添加分组信息

    sce1@meta.data$group <- "PBMC_Pre"
    sce2@meta.data$group <- "PBMC_EarlyD27"
    sce3@meta.data$group <- "PBMC_RespD376"
    sce4@meta.data$group <- "PBMC_ARD614"
    
    • meta.data的确没变,所以这个代码跑下来没问题

    4. 添加分组信息至细胞名

    • 在v2中,我们是可以通过colnames(sce1@data)来看到每个细胞的barcode的,但v3中我们不能通过colnames(sce1@assays)来做到同样的事情,看来果然不是变了个名字那么简单,我们继续探索assays的结构。
    > str(sce1@assays)
    List of 1
    #后面还有一大堆
    #既然是个列表,我们就取它第一项看看
    > str(sce1@assays[[1]])
    Formal class 'Assay' [package "Seurat"] with 7 slots
    
    • 我们来看看这7个slots分别是啥


    • 很可能这个data才类似v2中的data

    • 那么我们就在这里添加组别

    head(colnames(sce1@assays[[1]]@data))
    colnames(sce1@assays[[1]]@data) <- paste0("PBMC_Pre.",colnames(sce1@assays[[1]]@data))
    head(colnames(sce1@assays[[1]]@data))
    colnames(sce1@assays[[1]]@data) <- paste0("PBMC_Pre.",colnames(sce1@assays[[1]]@data))
    colnames(sce1@assays[[1]]@data) <- paste0("PBMC_Pre.",colnames(sce1@assays[[1]]@data))
    colnames(sce1@assays[[1]]@data) <- paste0("PBMC_Pre.",colnames(sce1@assays[[1]]@data))
    

    5. 归一化+标准化

    • 这里用的是公司官网的推荐函数
    sce1 <- NormalizeData(sce1)
    sce1 <- ScaleData(sce1, display.progress = F)
    sce2 <- NormalizeData(sce2)
    sce2 <- ScaleData(sce2, display.progress = F)
    sce3 <- NormalizeData(sce3)
    sce3 <- ScaleData(sce3, display.progress = F)
    sce4 <- NormalizeData(sce4)
    sce4 <- ScaleData(sce4, display.progress = F)
    

    6. 整合

    • 技能树提供的代码跑出来整合效果是没有原作者好的,四组细胞分得比较开,理想情况是各个群里四组细胞都存在。
    sce1@meta.data$orig.ident <- "PBMC_Pre"
    sce2@meta.data$orig.ident <- "PBMC_EarlyD27"
    sce3@meta.data$orig.ident <- "PBMC_RespD376"
    sce4@meta.data$orig.ident <- "PBMC_ARD614"
    
    sce.big <- merge(sce1,
                     y = c(sce2,sce3,sce4),
                     add.cell.ids = c("PBMC_Pre.","PBMC_EarlyD27.","PBMC_RespD376.","PBMC_ARD614."),
                     project = "p1-PBMC")
    
    table(sce.big$orig.ident)
    sce.big <- SCTransform(sce.big, verbose = FALSE)
    sce.big <- RunPCA(sce.big, verbose = FALSE)
    sce.big <- RunTSNE(sce.big, verbose = FALSE)
    DimPlot(object = sce.big,
            reduction = "tsne",group.by = 'orig.ident')
    
    • 可以看到效果还算可以
    • 再按亚群画图
    sce.big <- FindNeighbors(sce.big, dims = 1:20)
    sce.big <- FindClusters(sce.big, resolution = 0.2)
    DimPlot(object = sce.big, reduction = "tsne",
            group.by = 'SCT_snn_res.0.2')#这里的SCT_snn_res.0.2就是分群信息
    
    > table(sce.big$SCT_snn_res.0.2,sce.big$orig.ident)
    
         PBMC_ARD614 PBMC_EarlyD27 PBMC_Pre PBMC_RespD376
      0         1175           347       22          1555
      1          987           152      137          1103
      2          862            35       24           488
      3          396            43       14           471
      4            0             2      862             1
      5          294             0      160           330
      6           26           272        6           261
      7            0             1      361             1
      8            1            43      228             2
      9          112           130        1            15
      10           0             0      205             5
      11         134            29        4            29
      12          41            20       23            50
    
    • 从数据上看效果依旧不是太好。

    相关文章

      网友评论

        本文标题:10X单细胞转录组下游流程-1-整合多个cellranger结果

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