• 一文解决Cellphonedb单细胞互作分析及可视化作图(2)


    之前我们已经讲述了Cellphonedb的安装配置和数据分析,就差可视化了,这里简单说一下常见的可视化,如果需要其他更加个性化的可视方式,就需要发挥自己的聪明才智了!

    CellphoneDB单细胞互作分析:

    CellPhoneDB单细胞互作分析(1):Linux软件安装及遇到的Bug(ERROR)解决

    CellPhoneDB单细胞互作分析(2):数据分析|人鼠基因同源转化|ERROR解决|详细注释版代码

    cellphonedb分析完成后,我们得到6个数据文件,将其全部读入,看似6个,从内容上讲其实就三个。利用这些文件就可以做互作网络图、受配体气泡图及热图等等文章中常见的可视化图形了。

    1. setwd("D:/cellinter-celldb/out")
    2. #cellphonedb可视化
    3. count_net <- read.delim("count_network.txt", check.names = FALSE)
    4. inter_net <- read.delim("interaction_count.txt", check.names = FALSE)
    5. pvalues <- read.delim("pvalues.txt", check.names = FALSE)
    6. means <- read.delim("means.txt", check.names = FALSE)
    7. sig.means <- read.delim("significant_means.txt", check.names = FALSE)
    8. deconvoluted <- read.delim("deconvoluted.txt", check.names = FALSE)

    一、互作网络图

    互作图很多网上教程使用igraph包做的,其实这是源码,确实是需要这样做的,但是我认为太麻烦,因为你要自己调整,还不一定做的对。所以我想了一个妙招---”借鸡下蛋“,这应该是生信人需要做的举一反三。之前我们说过Cellchat的单细胞互作分析(Cellchat(代码详细注释版):单细胞转录组(人、小鼠)细胞互作分析及可视化),这里面有作者写好的函数,可视化也是相当不错的,只要将Cellphonedb文件格式整理成需要的格式,使用Cellchat函数包不就完成了?需要的文件是count_network.txt

    1. #互作网络图
    2. library(CellChat)
    3. count_inter <- count_net
    4. count_inter$count <- count_inter$count/100
    5. library(tidyr)
    6. count_inter<-spread(count_inter, TARGET, count)
    7. rownames(count_inter) <- count_inter$SOURCE
    8. count_inter <- count_inter[, -1]
    9. count_inter <- as.matrix(count_inter)
    10. netVisual_circle(count_inter,weight.scale = T)

    image.png

    每种细胞与其他细胞的互作,循环出图!

    1. par(mfrow = c(4,3), xpd=TRUE)
    2. for (i in 1:nrow(count_inter)) {
    3. mat2 <- matrix(0, nrow = nrow(count_inter), ncol = ncol(count_inter), dimnames = dimnames(count_inter))
    4. mat2[i, ] <- count_inter[i, ]
    5. netVisual_circle(mat2,
    6. weight.scale = T,
    7. edge.weight.max = max(count_inter),
    8. title.name = rownames(count_inter)[i],
    9. arrow.size=0.2)
    10. }

    image.png

    二、热图

    其实热图和网络图一样,都是展示了不同细胞之间互作的数目。我们在运行完cellphonedb的热图作图函数后,热图展示的已经是筛选过的p<0.05的受配体互作数目,生成的文件是count_net, 这里我们直接用这个文件作热图,进行一些简单的修饰,例如展示互作数目,其他个性化修饰同热图。当然如果不需要默认的作图,自己筛选做热图需要从pvalues这个文件开始,具体可参考网上其他教程。

    1. #热图其实和网络图一样,都是展示互作数目的。
    2. library(tidyr)
    3. count_matrix<-spread(count_net, TARGET, count)
    4. rownames(count_matrix) <- count_matrix$SOURCE
    5. count_matrix <- count_matrix[, -1]
    6. count_matrix <- as.matrix(count_matrix)
    7. 用pheatmap做热图。
    8. library(pheatmap)
    9. pheatmap(count_matrix, show_rownames = T, show_colnames = T, scale="none", cluster_cols = T,
    10. border_color='white', cluster_rows = T, fontsize_row = 14, fontsize_col = 14,
    11. main = "Control", treeheight_row = 0, family = 'Arial',
    12. color = colorRampPalette(c("dodgerblue4",'peachpuff','deeppink4' ))( 1000 ),
    13. treeheight_col = 0,
    14. display_numbers = T, number_color="white",fontsize_number=12,
    15. number_format="%.0f", legend_labels = c(0,300))

    image.png

    三、受配体点图

    受配体点图的绘制需要两个文件pvalues.txt和means.txt,原理是将两个文件合并,提取受配体对进行可视化,ggplot就可以实现。但是自己弄比较繁琐,这里有一个专门针对cellphonedb的可视化R包,可以轻松解决这一问题,你只需修改参数即可,可视化效果也不错,用在文章中绰绰有余!

    1. #安装
    2. if (!requireNamespace("devtools", quietly = TRUE))
    3. install.packages("devtools")
    4. if (!requireNamespace("BiocManager", quietly = TRUE))
    5. install.packages("BiocManager")
    6. devtools::install_github('zktuong/ktplots', dependencies = TRUE)
    7. library(ktplots)
    8. #作图需要的文件,means.txt, pvalues.txt, 单细胞seurat对象
    9. 读入作图需要的文件。
    1. pvals <- read.delim(paste0(pbmc,"pvalues.txt"), check.names = FALSE)
    2. means <- read.delim(paste0(pbmc,"means.txt"), check.names = FALSE)
    3. load("E:/生物信息学/数据/scRNA.Rdata")

    气泡图。cell_type1、2指定互作细胞,如果不指定则默认所有细胞,这里我们指定DC,可视化的就是DC发出信号作用于其他细胞,以及DC接受的其他细胞的作用。实际情况按照自己的实验目的指定。scdata就是我们用于分析的单细胞seurat对象。means和pvals就是我们cellphonedb分析产生的两个文件。gene.family是一些基因对集合,有chemokines', 'Th1', 'Th2', 'Th17', 'Treg', 'costimulatory', 'coinhibitory', 'niche',可以选择需要的指定,不选择则默认所有。keep_significant_only=T,我们只选择显著的。其他的可视化参数可自行查阅函数,可视化是基于ggplot的,所以主题修改和ggplot一样。

    1. plot_cpdb(cell_type1 = 'DC', cell_type2 = "", scdata = scRNA,
    2. idents = 'celltype', means = means, pvals = pvals,
    3. gene.family = 'costimulatory',highlight = "blue",
    4. keep_significant_only=T) +
    5. theme(axis.text = element_text(size = 10, color = 'black'))

    image.png

    这样的可视化就很足够了。当然了,ktplots还有其他的可视化,比如比较新奇的将细胞之间互作基因对用弦图展示,还可以指定特定的几种细胞互作弦图展示。还可以多组分析可视化、结合空间转录组的可视化、对于单细胞的可能化等等,感兴趣的值得学习。但是就我们细胞互作而言,已经足够了。

    我们这里提供了最少的代码和步骤,比较简洁的完成了cellphonedb的可视化,我觉得这就足够了。如果你觉得有用,分享点赞一下呗!当然,你可以学习其他包的函数,研究明白其原理,可以自己写函数可视化。

    更多精彩内容请至我的公众号《KS科研分享与服务》

  • 相关阅读:
    推荐系统中 纯用户冷启动问题研究
    关于射频同轴连接器的功率容量探讨
    双-(二苯胺基-苯基)-苯并[c]硫代咪唑聚集诱导发光微球/四苯基乙烯聚集诱导发光AIE微球
    [论文阅读]Coordinate Attention for Efficient Mobile Network Design
    SpringAOP(面向切面编程)的使用和原理
    C++【5】类与对象(二)
    YOLOv9理性解读 | 网络结构&损失函数&耗时评估
    小程序的深层了解
    【vue设计与实现】挂载和更新 3-class的处理
    C#和西门子PLC使用Udp通信
  • 原文地址:https://blog.csdn.net/qq_42090739/article/details/126264415