目录
通讯网络系统分析
①社会网络分析
1,计算每个细胞群的网络中心性指标
2,识别细胞的信号流模式
②非负矩阵分解(NMF)识别细胞的通讯模式
1,信号输出细胞的模式识别
2,信号输入细胞的模式识别
信号网络的流行学习与分类
①功能相似性
②结构相似性
为了便于解释复杂的细胞间通信网络,CellChat 通过从图论、模式识别和流形学习中抽象出来的方法对网络进行定量测量。
- CellChat可以使用网络分析中的中心性度量来确定给定信号网络内的主要信号源和目标以及中介和影响者
- CellChat可以利用模式识别方法预测特定细胞类型的关键传入和传出信号以及不同细胞类型之间的协调反应。
- CellChat可以通过定义相似性度量并从功能和拓扑角度执行多种学习来对信号通路进行分组。
- CellChat可以通过多个网络的联合流形学习来描绘保守的和特定于上下文的信号通路。
关于cellchat的流程图在进行细胞交互分析的时候,不同分组的样本尽量不要一起进行分析,想要一起分析的时候需要保证不同分组间的细胞种类一致。同一分组的不同生物学重复可以一起分析。
单细胞分析之细胞交互-3:CellChat - 简书 (jianshu.com)
通讯网络系统分析
①社会网络分析
1,计算每个细胞群的网络中心性指标
#数据载入
rm(list=ls())
library(CellChat)
library(patchwork)
library(ggplot2)
library(Seurat)
library(ggalluvial)#绘制桑基图
library(expm)
library(sna)
library(NMF)
options(stringsAsFactors = FALSE)##输入数据不自动转换成因子(防止数据格式错误)load('humanSkin_CellChat.Rdata')#分析后的cellchat对象
通过计算每个细胞群的网络中心性指标,识别每类细胞在信号通路中的角色/作用C(发送者、接收者、调解者和影响者)
cellchat@netP$pathways #查看都有哪些信号通路
pathways.show <- c("GALECTIN")##选择其中一个信号通路,比如说GALECTIN
#计算网络中心性权重:识别每类细胞在信号通路中的角色/作用
cellchat <- netAnalysis_computeCentrality(cellchat, slot.name = "netP")
#pdf("GALECTIN通路网络中心性权重.pdf",width = 8,height = 4)##一定添加大小
netAnalysis_signalingRole_network(cellchat, signaling = pathways.show, width = 15, height = 6, font.size = 10)
#dev.off()
2,识别细胞的信号流模式
CellChat分析哪些信号对某些细胞组的传出或传入信号贡献最大的问题。
ht1 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "outgoing", font.size = 5)
ht2 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "incoming", font.size = 5)
ht1 + ht2
上图横轴是细胞类型,纵轴是pathway。左图是各个细胞类型中各个通路发出信号的强度,由图是各个细胞类型中各个通路接受信号的强度
②非负矩阵分解(NMF)识别细胞的通讯模式
1,信号输出细胞的模式识别
除了探索单个通路的详细通信之外,一个重要的问题是多个细胞群和信号通路如何协调发挥作用。CellChat 采用模式识别方法来识别全局通信模式。 识别和可视化分泌细胞的传出通信模式 (pattern) 传出模式揭示了发送细胞(即作为信号源的细胞)如何相互协调,以及它们如何与某些信号通路协调以驱动通信。
计算分解成几个因子(pattern)比较合适(这一步运行比较慢 。在使用NMF对细胞进行亚群细分时,如果不测试的话,最好选择比细胞类型多一点的值。
#非负矩阵分解(NMF)识别细胞的通讯模式
selectK(cellchat, pattern = "outgoing")
根据坡度图选择合适的pattern数量
nPatterns = 3
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "outgoing",k = nPatterns)
左边是细胞模式,右边是信号通路模式
河流图
#河流图
netAnalysis_river(cellchat, pattern = "outgoing")
气泡图
#气泡图
netAnalysis_dot(cellchat, pattern = "outgoing")
2,信号输入细胞的模式识别
#输入模式的识别
selectK(cellchat, pattern = "incoming")
热图
#热图
nPatterns = 8
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "incoming", k = nPatterns, width = 5, height = 9, font.size = 6)
#桑基图
netAnalysis_river(cellchat, pattern = "incoming")
#气泡图
netAnalysis_dot(cellchat, pattern = "incoming")
信号网络的流行学习与分类
①功能相似性
cellchat <- computeNetSimilarity(cellchat, type = "functional")
cellchat <- netEmbedding(cellchat, type = "functional")
#> Manifold learning of the signaling networks for a single dataset
cellchat <- netClustering(cellchat, type = "functional")
#> Classification learning of the signaling networks for a single dataset
# Visualization in 2D-space
netVisual_embedding(cellchat, type = "functional", label.size = 3.5)# netVisual_embeddingZoomIn(cellchat, type = "functional", nCol = 2)
②结构相似性
cellchat <- computeNetSimilarity(cellchat, type = "structural")
cellchat <- netEmbedding(cellchat, type = "structural")
#> Manifold learning of the signaling networks for a single dataset
cellchat <- netClustering(cellchat, type = "structural")
#> Classification learning of the signaling networks for a single dataset
# Visualization in 2D-space
netVisual_embedding(cellchat, type = "structural", label.size = 3.5)
参考:
1:CellChat细胞通讯分析(中)--实操代码(单个样本) - 知乎 (zhihu.com)
2:单细胞分析之细胞交互-3:CellChat - 简书 (jianshu.com)