问题:当我有一些bulk RNA-seq数据,例如高生存率与低生存率的患者组织、疾病与正常的患者组织、存在药物反应与无药物反应的患者组织。我如何找到能够影响这些条件的确切的细胞类型?
Bulk数据是由多种细胞类型共同构成的(就是一块肉,里面什么细胞都有)。利用Bulk数据识别临床相关细胞是非常困难的。
这里推荐一个工具——scAB,这个工具能够根据有label注释的bulk RNA-seq以及一套单细胞数据,找到与临床条件相关的细胞。如下图所示
在该文章中利用了癌症组织与正常组织作为例子,简单的描述了该方法能够得到的结果。其中与癌症最相关的是恶性细胞(malignant cells)。个人认为这个方法最大的作用就是锁定某种细胞类型进行后续分析,所以做到这一步大抵上可以了。
除了上述结果,scAB会将与临床标签相关细胞(scAB cell)亚分类,表明不同亚分类特异的生物学功能。
该算法同样鼓励用整体scAB cell与不相关细胞进行比较
代码如下
library(dplyr)
library(stringi)
library(stringr)
library(DESeq2)
library(ggplot2)
library(ggrepel)
library(GEOquery)
library(limma)
library(umap)
library(Seurat)
library(scAB)
# load series and platform data from GEO
the.count = readRDS("thecount.RDS")
Sys.setenv("VROOM_CONNECTION_SIZE" = 99999999)
gset <- getGEO("GSE165004", GSEMatrix =TRUE, getGPL=FALSE)
if (length(gset) > 1) idx <- grep("GPL16699", attr(gset, "names")) else idx <- 1
gset <- gset[[idx]]
pdata <- pData(gset)
pdata = pdata[which(pdata$title %>% str_detect(pattern = "Control|RPL")),]
group = rep("con",nrow(pdata))
names(group) = pdata$geo_accession
group[which(pdata$title %>% str_detect(pattern = "RPL"))] = "RPL"
the.count = the.count[,names(group)]
sc_dataset = readRDS("sampled_seurat.rds")
scAB_data <- create_scAB(sc_dataset,the.count,group)
K <- select_K(scAB_data,K_max = 20,repeat_times = 5,verbose = T)
K %>% print(K)
scAB_result <- scAB(Object=scAB_data, K=K)
sc_dataset <- findSubset(sc_dataset, scAB_Object = scAB_result, tred = 2)
saveRDS(scAB_result,"scAB_result.RDS")
saveRDS(sc_dataset,"sc_dataset.RDS")
总结
scAB能够找到与临床标签相关的细胞,进而锁定某种细胞类型。这样一来,就可以把从前基于BULK数据的文章拿到单细胞水平,是基于公共数据完全可行的方式。结合更多的单细胞相关算法,例如单细胞基因调控网络,单细胞interaction,单细胞的分化分析,能够极大的丰富文章内容。
私聊我,提供专业的生信服务