Cellchat和Cellphonedb细胞互作一些问题的解决(error和可视化)

今日的内容主要解决两个问题,一个是cellchat的代码报错问题,因为已经有很多人提出这个问题了。第二个是Cellphonedb结果的可视化,这里提供一种免费的很实用的快捷可视化方法。其实这些问题只要自己思考都是能明白的。 Cellchat和cellphonedb细胞互作分析历史相关帖子:
Cellchat(代码详细注释版):单细胞转录组(人、小鼠)细胞互作分析及可视化 CellPhoneDB单细胞互作分析(1):Linux软件安装及遇到的Bug(ERROR)解决
CellPhoneDB单细胞互作分析(2):数据分析|人鼠基因同源转化|ERROR解决|详细注释版代码
CellPhoneDB单细胞互作分析(3):结果可视化作图
CellPhoneDB单细胞互作分析(4):受配体对结果提取及可视化作图

1、Cellchat报错问题

Cellchat在做网络图的时候会有如下的报错:


mat <- cellchat@net$weight
par(mfrow = c(5,3), xpd=TRUE, mar=c(1,1,1,1))
for (i in 1:nrow(mat)) {
  mat2 <- matrix(0, nrow = nrow(mat), ncol = ncol(mat), dimnames = dimnames(mat))
  mat2[1, ] <- mat[1, ]
  netVisual_circle(mat2, 
                   vertex.weight = groupSize, 
                   weight.scale = T, 
                   edge.weight.max = max(mat), 
                   title.name = rownames(mat)[i])
}
Cellchat运行出现错误:
# Error in i_set_edge_attr(x, attr(value, "name"), index = value, value = attr(value,  : 
# Length of new attribute value must be 1 or 11, the number of target edges, not 2

Error in i_set_edge_attr这个并不是代码都问题,当看到自己文件步骤没问题,是不是应该思考是内部问题。没错,主要的原因是igraph包更新了,如果你igraph是1.4.0或者以下就不会有问题。但是你降低版本或者保持旧版本可能其他包不答应。况且Cellchat更新了到1.6.0了,解决办法可以是更新cellchat。或者cellchat也提供了办法,就是更新object,就不会有问题了。

library(CellChat)
cellchat <- updateCellChat(cellchat)

2、Cellphonedb可视化

Cellphonedb我们也提供过一种免费的可视化方式,使用ktplots包完成。但是总是有人嫌弃这个包的图臭,也一直问我问题,因为这个包的函数legend设置的不太好。我觉得直接转化成气泡图以文献的方式呈现就完美了。

#cellphonedb受配体点图的可视化
# devtools::install_github('zktuong/ktplots', dependencies = TRUE)
library(ktplots)
pvals <- read.delim("pvalues.txt", check.names = FALSE)
means <- read.delim("means.txt", check.names = FALSE)

pvals_sec <- pvals[grep(c("^CCL|CXCL"), pvals$interacting_pair),] 
means_sec <- means[grep(c("^CCL|CXCL"), means$interacting_pair),] 

Tcell_comm <- plot_cpdb(cell_type1 = 'T_cell', 
                      cell_type2 = "", 
                      scdata = scRNA_sam,
                      idents = 'celltype', 
                      means = means_sec, 
                      pvals = pvals_sec, 
                      highlight = "darkblue",
                      keep_significant_only =T) +
  theme(axis.text  = element_text(size = 10, color = 'black'))

Tcell_comm_data <- Tcell_comm$data
Tcell_comm_data <- Tcell_comm_data[,c(1:4)]
Tcell_comm_data$scaled_means[is.na(Tcell_comm_data$scaled_means)]=0
Tcell_comm_data$pvals[is.na(Tcell_comm_data$pvals)]=1

my_palette <- colorRampPalette(c("darkblue","yellow","red"))(n=100)
ggplot(Tcell_comm_data,aes(x=Var2,y=Var1)) +    
  geom_point(aes(size=-log10(pvals),color=scaled_means)) +
  scale_size_continuous(range=c(1,5),breaks = c(0,1.0,2.0))+
  scale_color_gradientn('Mean expression', colors=my_palette,limits=c(0,3)) +
  theme_bw() +
  theme(axis.text=element_text(size=10, colour = "black"),
        axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0, size=10),
        axis.text.y = element_text(size=10, colour = "black"),
        axis.title=element_blank(),
        panel.border = element_rect(size = 0.7, linetype = "solid", colour = "black"))

好了,这就是所有内容了,希望对你学习有帮助。也希望你能多多思考。觉得分享有用的,点个免费的赞再走呗!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值