学习,记录,分享。
上一篇学习了用cellchat进行单数据集的细胞通讯分析,接下来学习不同可视化方式。
cellchat <- aggregateNet(cellchat)
这步之后即可保存供后续可视化操作:#保存数据
readr::write_rds(cellchat, 'data/cellchat_pbmc3k.rds')
对于单数据集的细胞通讯分析,我们一般会先看测序样本中所有类型的细胞间相互作用的数量和强度,和感兴趣的细胞类型与哪些细胞相互作用较多,就是上一节中的总的相互作用网络图和单个细胞类型作为source的网络图。
然后我们会想看感兴趣的细胞和其他细胞都有哪些的通讯或者是感兴趣的信号通路主要集中在哪些细胞间,更进一步,我们可能还想看具体的配体受体(感兴趣的基因)在其信号通路中的贡献,以挖掘能够支持科研故事的证据。
为了满足这些需求就要利用好不同的可视化方式进行信息挖掘
或者结果展示
。这节先学习单个信号通路的可视化
。主要用到以下四种图:
层次图需要用参数vertex.receiver
指定接收信号的细胞类型(表达受体的细胞
),这样可以看到感兴趣的细胞接收了哪些细胞的信号,先看下如何查看和选择所需参数:
library(tidyverse)
library(CellChat)
cellchat <- read_rds("data/cellchat_pbmc3k.rds")
# 查看各种细胞类型的索引,用于后面做图的vertex.receiver参数
levels(cellchat@idents)
# [1] "Naive CD4 T" "CD14+ Mono" "Memory CD4 T" "B" "CD8 T" "FCGR3A+ Mono"
# [7] "NK" "DC" "Platelet"
# 查看受体配体库,用于pathway_name和interaction_name参数
cellchat@LR$LRsig %>% View()
上面这个数据框包含了这个数据集中的信号通路和受体配体的信息,其中的pathway_name
和interaction_name
中的值分别对应作图函数中的signaling
和pairLR.use
参数。
可以看到很多信号通路都包含多个不同的配体和受体间的相互作用,这里有两个函数,其中netVisual_aggregate
可以展示一个信号通路ITGB2
中的所有配体受体间的细胞通讯,而netVisual_individual
可以指定展示一个信号通路中的特定配体受体ITGB2_ICAM2
间的细胞通讯。可以用extractEnrichedLR
获得指定信号通路中具有显著意义的相互作用受体配体对。
# 信号通路水平
netVisual_aggregate(
cellchat,
signaling = "ITGB2", #pathway_name
vertex.receiver = c(1, 3, 5), #指定受体细胞
layout = "hierarchy" #指定输出层次图
)
# 单个配体受体水平
extractEnrichedLR(cellchat, signaling = "ITGB2", geneLR.return = FALSE)
netVisual_individual(
cellchat,
signaling = "ITGB2",
vertex.receiver = c(1, 3, 5),
pairLR.use = 'ITGB2_ICAM2', #指定配体受体对, interaction_name
layout = "hierarchy"
)
层次图包含两张图,颜色代表细胞类型,两边实圈代表source,中间空圈⭕️代表target,左边是指定的细胞类型作为受体时的细胞通讯情况,右边是余下的细胞类型作为受体时的细胞通讯情况,这样就可以看到感兴趣的信号通路或配体受体对在所有细胞类型中的通讯情况。
注:这里上下两个图是一样的,是因为这个数据的细胞和基因数量比较少,这个通路中就只有这一个配体受体对是显著的,下面一些图也会这样。
网络图相当于把层次图的两张图整合在了一起,一般用于展示感兴趣的通路的整体通讯情况,更节省空间,但是不够清晰。可以不指定受体细胞,只需要调整layout
参数即可,如果不加这个参数默认也是网络图:
# circle plot
# 信号通路水平
netVisual_aggregate(
cellchat,
signaling = "ITGB2",
# vertex.receiver = c(1, 3, 5),
layout = "circle"
)
# 单个配体受体水平
netVisual_individual(
cellchat,
signaling = "ITGB2",
# vertex.receiver = c(1, 3, 5),
pairLR.use = 'ITGB2_ICAM2',
layout = "circle"
)
和弦图和网络图类似,都是用于展示整体的通讯情况,但是和弦图可以展示出每种受体细胞接收信号的强度(内环中不同颜色的条对应不同细胞类型,长度代表信号强度
),同样更改layout
参数即可:
# chord plot
# 信号通路水平
netVisual_aggregate(
cellchat,
signaling = "ITGB2",
# vertex.receiver = c(1, 3, 5),
layout = "chord"
)
# 单个配体受体水平
netVisual_individual(
cellchat,
signaling = "ITGB2",
# vertex.receiver = c(1, 3, 5),
pairLR.use = 'ITGB2_ICAM2',
layout = "chord"
)
和弦图也可以将不同细胞亚群合并成大群:
# 查看细胞类型
levels(cellchat@idents)
# 合并亚群
group.cellType <- c("T cell", "Mono", "T cell", "B cell", "T cell", "Mono", "T cell", "Dc", "Platelet") # grouping cell clusters into fibroblast, DC and TC cells
names(group.cellType) <- levels(cellchat@idents)
netVisual_chord_cell(
cellchat,
signaling = "ITGB2",
group = group.cellType,
title.name = paste0("ITGB2", " signaling network")
)
可以看到细胞亚群已经按照指定大群聚集分布了,这样和弦图就变得更加结构化,能够一眼看出大群之间通讯状况。
另外,可以使用函数netVisual_chord_gene
在基因水平展示信号通路:
netVisual_chord_gene(
cellchat,
signaling = "ITGB2"
)
这样就可以看到整个信号通路的不同配体受体在不同细胞间相互作用情况了。
热图也是从整个信号通路水平展示不同细胞间的相互作用:
netVisual_heatmap(
cellchat,
signaling = "ITGB2",
color.heatmap = "Reds")
去掉signaling
参数后就是所有细胞间的所有相互作用,类似于第一节中总的相互作用网络图。
netVisual_heatmap(
cellchat,
# signaling = "ITGB2",
color.heatmap = "Reds")
热图的Y轴是配体细胞,X轴是受体细胞,能够比较清晰的展示不同细胞的相互作用数量。
netAnalysis_contribution(cellchat, signaling = "ITGB2")
这样就能看到不同配体受体对对于该通路的贡献了。
参考资料:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有