今日的内容主要解决两个问题,一个是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"))
好了,这就是所有内容了,希望对你学习有帮助。也希望你能多多思考。觉得分享有用的,点个免费的赞再走呗!