问题:当我有一些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 GEOthe.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 <- 1gset <- gset[[idx]]pdata <- pData(gset)pdata = pdata[which(pdata$title %>% str_detect(pattern = "Control|RPL")),]group = rep("con",nrow(pdata))names(group) = pdata$geo_accessiongroup[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,单细胞的分化分析,能够极大的丰富文章内容。
私聊我,提供专业的生信服务