iTALK---单细胞受配体互作分析及可视化(详细版教程)

今天我们说一说另外一种---iTALK,iTALK也在很多文章中出现过,原理是基于受配体平均表达量。它有两个优点,第一是可以比较差异受配体,第二是可视化比较好,我们可以借用借用它的函数,让自己的结果更加完美!详细版注释代码以及使用的数据已上传QQ群文件,更多精彩内容请至我的公众号---KS科研分享与服务!iTALK的文章连接如下:iTALK: an R Package to Characterize and Illustrate Intercellular Communication | bioRxiv包的地址:GitHub - Coolgenome/iTALK首先安装包。

if(!require(devtools)) install.packages("devtools");
devtools::install_github("Coolgenome/iTALK", build_vignettes = TRUE)
library(circlize)
library(iTALK)

构建数据、设置细胞及分组,设置颜色,寻找高变基因!


human_data <- readRDS("D:/cellinter-celldb/human_data.rds")
exp <- as.data.frame(t(as.matrix(human_data@assays$RNA@counts)))
exp$cell_type <- human_data@meta.data$celltype
exp$compare_group <- human_data@meta.data$group
length(unique(human_data$celltype))
# [1] 5
highly_exprs_genes<-rawParse(exp,top_genes=25,stats='mean')
comm_list<-c('growth factor','other','cytokine','checkpoint')
cell_col<-structure(c("#B17BA6", "#FF7F00", "#FDB462", "#E7298A", "#E78AC3"),names=unique(exp$cell_type))

接下来进行分析,并对每种类型的互作进行可视化:

par(mfrow=c(1,2))
res<-NULL

for(comm_type in comm_list){
  res_cat<-FindLR(highly_exprs_genes,datatype='mean count',comm_type=comm_type)
  res_cat<-res_cat[order(res_cat$cell_from_mean_exprs*res_cat$cell_to_mean_exprs,decreasing=T),]
  NetView(res_cat,col=cell_col,vertex.label.cex=1,arrow.width=1,edge.max.width=5)
  LRPlot(res_cat[1:20,],datatype='mean count',cell_col=cell_col,link.arr.lwd=res_cat$cell_from_mean_exprs[1:20],link.arr.width=res_cat$cell_to_mean_exprs[1:20])
  title(comm_type)
  res<-rbind(res,res_cat)
}

image.png

最后可视化一下整体的互作效果,有互作图和受配体弦图两种形式。

res<-res[order(res$cell_from_mean_exprs*res$cell_to_mean_exprs,decreasing=T),]
NetView(res,col=cell_col,vertex.label.cex=1,arrow.width=1,edge.max.width=5)

image.png


iTALK::LRPlot(res[1:20,],
       datatype='mean count',
       link.arr.lwd=res$cell_from_mean_exprs[1:20],
       link.arr.width=res$cell_to_mean_exprs[1:20])

image.png

当然了,我们也提到,iTALK可以做组间差异比较,可能是由于我的数据随意构建吧,没有差异,这里就不展示了,感兴趣的可跟着作者的数据学习。

#######------------------两组间显著的配体-受体对---------------------------------

# # randomly assign the compare group to each sample
# data<-data %>% mutate(compare_group=sample(2,nrow(data),replace=TRUE))
# # find DEGenes of regulatory T cells and NK cells between these 2 groups
# deg_t<-DEG(data %>% filter(cell_type=='regulatory_t'),method='Wilcox',contrast=c(2,1))
# deg_nk<-DEG(data %>% filter(cell_type=='cd56_nk'),method='Wilcox',contrast=c(2,1))
# # find significant ligand-receptor pairs and do the plotting
# par(mfrow=c(1,2))
# res<-NULL
# for(comm_type in comm_list){
#   res_cat<-FindLR(deg_t,deg_nk,datatype='DEG',comm_type=comm_type)
#   res_cat<-res_cat[order(res_cat$cell_from_logFC*res_cat$cell_to_logFC,decreasing=T),]
#   #plot by ligand category
#   if(nrow(res_cat)==0){
#     next
#   }else if(nrow(res_cat>=20)){
#     LRPlot(res_cat[1:20,],datatype='DEG',cell_col=cell_col,link.arr.lwd=res_cat$cell_from_logFC[1:20],link.arr.width=res_cat$cell_to_logFC[1:20])
#   }else{
#     LRPlot(res_cat,datatype='DEG',cell_col=cell_col,link.arr.lwd=res_cat$cell_from_logFC,link.arr.width=res_cat$cell_to_logFC)
#   }
#   NetView(res_cat,col=cell_col,vertex.label.cex=1,arrow.width=1,edge.max.width=5)
#   title(comm_type)
#   res<-rbind(res,res_cat)
# }

###https://github.com/Coolgenome/iTALK/blob/master/example/example_code.r

到这里还没有结束,我非常看好iTALK种的LRPlot函数,不仅可视化了细胞之间的关系,还展示了具体的受配体,这样的图形一目了然。之间我们在cellchat及cellphonedb种没有这样的可视化,这里我们使用cellchat的数据,也可以利用iTALK这个包的函数做很好的可视化!


setwd("D:/KS项目/公众号文章/iTalk_细胞互作")
A <- read.csv("net_inter.csv", header = T)
A<-A[order(A$cell_from_mean_exprs*A$cell_to_mean_exprs,decreasing=T),]

设置受配体及细胞颜色。


gene_col<-structure(c(rep('#CC3333',length(A[1:40,]$ligand)),
                      rep("#006699",length(A[1:40,]$receptor))),
                    names=c(A[1:40,]$ligand,
                            A[1:40,]$receptor))

cell_col <- structure(c("#DC050C", "#FB8072", "#1965B0", "#7BAFDE", "#882E72",
                        "#B17BA6", "#FF7F00", "#FDB462", "#E7298A", "#E78AC3",
                        "#33A02C", "#B2DF8A", "#55A1B1"),
                      names=unique(A$cell_from))

作图:


iTALK::LRPlot(A[1:40,],
              datatype='mean count',
              link.arr.lwd=A$cell_from_mean_exprs[1:40],
              link.arr.width=0.1,
              link.arr.col = 'grey20',#连线颜色设置
              print.cell = T,
              track.height_1=uh(1, "mm"),
              track.height_2 = uh(15, "mm"),
              text.vjust = "0.5cm",
              gene_col = gene_col,
              cell_col = cell_col)

image.png

效果还是很好的,用在论文中也是挺吸引人的,对于结果的解读也是更加清晰。觉得小编分享有用的,点个赞、分享一下呗!更多精彩内容请至我的公众号---KS科研分享与服务

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值