Cellcall:单细胞数据细胞间通讯分析工具
近日,做单细胞细胞间通讯分析,发现又有新的方法出现---cellcall,文章发表在Nucleic Acids Research杂志。
1636703877(1).png
看了一下,这个方法相比于Cellchat、cellphonedb等,在可操作性方面就具有优势,不会有技术难题。此外在结果方面,受配体信息更加全面!所以很值得一试!分析源代码作者也提供了,见https://github.com/ShellyCoder/cellcall。这里我们还是以学习介绍为主。
1、cellcall包介绍
CellCall 是一个通过整合细胞内和细胞间信号来推断细胞间通讯网络和内部调节信号的工具包。 (1) CellCall 基于 KEGG 通路收集配体-受体-转录因子 (L-R-TF) 轴数据集。 (2) 根据 L-R-TF 相互作用的先验知识,CellCall 通过结合配体/受体的表达和某些 L-R 对的下游 TF 活动来推断细胞间通讯。 (3) CellCall 嵌入了一种通路活性分析方法来识别某些细胞类型之间的通信所涉及的关键通路。 (4) CellCall 提供了一套丰富的可视化选项(Circos plot、Sankey plot、bubble plot、ridge plot等)来直观地呈现分析结果。 CellCall 概览图如下所示。
2、安装包
library(devtools)
devtools::install_github("ShellyCoder/cellcall")
3、数据格式
简单地说,cellcall需要的分析数据是一个行名为基因,列名为细胞类型的表达矩阵。列名不能包含逗号、句号、破折号等标点符号。建议使用下划线连接条形码和单元格类型。由于本包的方法依赖于细胞类型信息,因此正确获取细胞类型信息很重要。
4、单细胞数据细胞互作分析
这里我们以单细胞数据为例。本包的作者提供了一个函数,用来直接将seurat对象转化为cellcall需要输入的数据格式,所以直接用函数即可。准备好一个定义好细胞群的单细胞seurat对象。
构建cellcall object
test <- CreateObject_fromSeurat(Seurat.object=Seurat_single, #seurat对象
slot="counts",
cell_type="celltype", #细胞类型
data_source="UMI",
scale.factor = 10^6,
Org = "Mus musculus") #物种信息
接下来推断细胞-细胞通讯得分。参数我们都使用默认值,具体意义可以查看函数,根据需要修改!
mt <- TransCommuProfile(object = test,
pValueCor = 0.05,
CorValue = 0.1,
topTargetCor=1,
p.adjust = 0.05,
use.type="median",
probs = 0.9,
method="weight",
IS_core = TRUE,
Org = 'Mus musculus')
CellCall 嵌入了一种通路活性分析方法,以帮助探索某些细胞之间通信所涉及的主要通路。这个整合在其他工具中不常见,所以做一下看看。
n <- mt@data$expr_l_r_log2_scale
pathway.hyper.list <- lapply(colnames(n), function(i){
print(i)
tmp <- getHyperPathway(data = n, object = mt, cella_cellb = i, Org="Mus musculus")
return(tmp)
})
myPub.df <- getForBubble(pathway.hyper.list, cella_cellb=colnames(n))
plotBubble(myPub.df)
1636713541(1).png
5、细胞互作可视化
还是和别的工具一样,来一个圈图,展示所有细胞间的互作联系。
#有多少细胞类型就设置多少个颜色
cell_color <- data.frame(color=c("#FF34B3","#BC8F8F","#20B2AA","#00F5FF","#FFA500","#ADFF2F","#FF6A6A","#7CFC00"), stringsAsFactors = FALSE)
rownames(cell_color) <- c("Plasma cell","CD8+ Tcell","B cell","pDC","NK","Th17","CD4+ Tcell","Th1")
1636713114(1).png
使用 CellCall 对象绘制圆图(这里作者提出两种object画图,我觉得第一种好,另一种就不展示了):
ViewInterCircos(object = mt, font = 2, cellColor = cell_color,
lrColor = c("#F16B6F", "#84B1ED"),
arr.type = "big.arrow",arr.length = 0.04,
trackhight1 = 0.05, slot="expr_l_r_log2_scale",
linkcolor.from.sender = TRUE,
linkcolor = NULL, gap.degree = 0.5, #细胞类型多的话设置小点,不然图太大画不出来
order.vector=c('ST', "SSC", "SPGing", "SPGed"),
trackhight2 = 0.032, track.margin2 = c(0.01,0.12), DIY = FALSE)
还可以采用热 图来呈现不同细胞类型之间 L-R 相互作用的详细通信分数。
viewPheatmap(object = mt, slot="expr_l_r_log2_scale", show_rownames = T,
show_colnames = T,treeheight_row=0, treeheight_col=10,
cluster_rows = T,cluster_cols = F,fontsize = 12,angle_col = "45",
main="score")
1636713210(1).png
还有其他的弦图去展现结果,和其他工具类似,我认为没有多少意义,不画了,感兴趣的可以去尝试。
6、转录因子富集图
采用转录因子富集图来呈现受体细胞中的转录因子活性,这个很好,其他工具很少有整转录因子的,而且转录因子的分析费时费力。
比如我想关注pDC细胞的转录因子:
pDC.tf <- names(mt@data$gsea.list$pDC@geneSets)
pDC.tf
1636713918(1).png
Draw the TF enrichment plot:
getGSEAplot(gsea.list=mt@data$gsea.list, geneSetID = c("Rb1","Runx2","Tcf7l2"),
myCelltype="pDC", fc.list=mt@data$fc.list,
selectedGeneID = mt@data$gsea.list$pDC@geneSets$Rb1[1:10],
mycol = NULL)
1636713955(1).png
以上就是所有内容了,总体感受,cellcall分析快速简单。除此之外,还有很多可视化的选项,具体参考作者的代码介绍。有兴趣的做单细胞细互作还发愁不会做的可以尝试!!!
参考文献:
[1] Yang, Z. , Tianyuan, L. , Xuesong, H. , Mei, W. , Jing, W. , & Bohao, Z. , et al. Cellcall: integrating paired ligand–receptor and transcription factor activities for cell–cell communication. Nucleic Acids Research(15), 15.