10X单细胞转录组下游流程-1-整合多个cellranger结果
2019-11-08 本文已影响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
- 从数据上看效果依旧不是太好。