CellChat part4,5,6 cell-cell通信网络系统分析 保存CellChat对象 通过交互式CellChat浏览器探索细胞-细胞通信

CellChat通过从图论、模式识别和流形学习中抽象出来的方法对网络进行定量测量。

        它可以使用网络分析中的中心性度量来确定给定信号网络中的主要信号源和目标以及中介和影响者。

        它可以利用模式识别方法预测特定细胞类型的关键输入和输出信号以及不同细胞类型之间的协调反应。

        它可以通过定义相似性度量和从功能和拓扑角度进行多种学习来分组信号通路。

        它可以通过多个网络的联合流形学习来描述保守的和上下文特定的信号通路。

一、识别细胞群的信号作用(例如,主要的发送者,接受者)以及主要的信号作用

(A)计算并可视化网络中心性得分
ptm = Sys.time()
# Compute the network centrality scores
cellchat <- netAnalysis_computeCentrality(cellchat, slot.name = "netP") # the slot 'netP' means the inferred intercellular communication network of signaling pathways
# Visualize the computed centrality scores using heatmap, allowing ready identification of major signaling roles of cell groups
netAnalysis_signalingRole_network(cellchat, signaling = pathways.show, width = 8, height = 2.5, font.size = 10)
  • netAnalysis_computeCentrality 函数:这是 CellChat 包中的一个函数,其作用是计算细胞间通讯网络的中心性得分。中心性得分可以帮助我们了解每个细胞群体在整个通讯网络中的重要程度,常见的中心性指标包括度中心性(degree centrality)、接近中心性(closeness centrality)和中介中心性(betweenness centrality)等。
  • slot.name = "netP"slot.name 参数指定要使用的 CellChat 对象中的槽位。"netP" 表示使用推断出的信号通路的细胞间通讯网络数据来计算中心性得分。这行代码将计算得到的中心性得分更新到 cellchat 对象中,并将更新后的 cellchat 对象重新赋值给 cellchat 变量。

  • netAnalysis_signalingRole_network 函数:这也是 CellChat 包中的函数,用于将计算得到的中心性得分通过热图进行可视化。热图可以直观地展示不同细胞群体在特定信号通路中的信号传导角色,颜色的深浅通常表示中心性得分的高低。
  • signaling = pathways.show:指定要可视化的信号通路,pathways.show 应该是之前定义的一个包含要展示的信号通路名称的向量。
  • width = 8 和 height = 2.5:分别指定热图的宽度和高度,单位通常为英寸(inches)。
  • font.size = 10:指定热图中字体的大小,以控制标签和文本的显示效果
(B)在二维空间中可视化占优势的发送者(源)和接收者(目标)
# Signaling role analysis on the aggregated cell-cell communication network from all signaling pathways
gg1 <- netAnalysis_signalingRole_scatter(cellchat)
#> Signaling role analysis on the aggregated cell-cell communication network from all signaling pathways
# Signaling role analysis on the cell-cell communication networks of interest
gg2 <- netAnalysis_signalingRole_scatter(cellchat, signaling = c("CXCL", "CCL"))
#> Signaling role analysis on the cell-cell communication network from user's input
gg1 + gg2
  • netAnalysis_signalingRole_scatter 函数:该函数用于对细胞间通讯网络进行信号传导角色分析,并将结果以散点图的形式呈现。
  • gg1:将函数返回的散点图对象赋值给 gg1。这行代码执行的是对所有信号通路聚合后的细胞间通讯网络进行信号传导角色分析,并生成对应的散点图
  • signaling = c("CXCL", "CCL"):指定要分析的信号通路为 "CXCL" 和 "CCL"。这意味着函数将只对这两条信号通路的细胞间通讯网络进行信号传导角色分析。
  • gg2:将函数返回的散点图对象赋值给 gg2

(C)识别对某些细胞群的输出或输入信号贡献最大的信号
# Signaling role analysis on the aggregated cell-cell communication network from all signaling pathways
ht1 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "outgoing")
ht2 <- netAnalysis_signalingRole_heatmap(cellchat, pattern = "incoming")
ht1 + ht2
  • ht1 + ht2
    尝试合并 ht1 和 ht2 两个热图。若热图基于 ggplot2 构建,通常可通过 + 组合图层;若基于 ComplexHeatmap 等其他绘图系统,直接 + 不一定能实现合并,可能需用对应系统的合并函数,如 ComplexHeatmap 里的 draw 等函数配合设置来实现。

二、确定Global通信模式,探索多种细胞类型和信号通路如何协调在一起

(A) 确定并可视化分泌细胞的 outgoing 通讯模式
library(NMF)
#> Loading required package: registry
#> Loading required package: rngtools
#> Loading required package: cluster
#> NMF - BioConductor layer [OK] | Shared memory capabilities [NO: bigmemory] | Cores 2/2
#>   To enable shared memory capabilities, try: install.extras('
#> NMF
#> ')
#> 
#> Attaching package: 'NMF'
#> The following objects are masked from 'package:igraph':
#> 
#>     algorithm, compare
library(ggalluvial)
    • 这行代码尝试加载 NMF 包。NMF 包主要用于非负矩阵分解(Non - negative Matrix Factorization)相关的分析,在生物信息学等领域常用于处理基因表达数据等。加载该包时,出现了一些提示信息:
      • Loading required package: registry 等提示表明 NMF 包依赖于其他包,如 registryrngtoolscluster ,系统会自动加载这些依赖包。
      • NMF - BioConductor layer [OK] | Shared memory capabilities [NO: bigmemory] | Cores 2/2 等信息显示了 NMF 包的一些配置情况,如 BioConductor 层已成功加载,但共享内存功能因缺少 bigmemory 包而不可用,同时显示了当前使用的核心数。还给出了启用共享内存功能的建议 install.extras('NMF') 。
      • Attaching package: 'NMF' 表示 NMF 包已成功加载,随后提示 The following objects are masked from 'package:igraph': algorithm, compare ,说明 NMF 包中的 algorithm 和 compare 函数会覆盖 igraph 包中同名函数。
  • library(ggalluvial)
    • 这行代码用于加载 ggalluvial 包。ggalluvial 包基于 ggplot2 ,主要用于绘制冲积图(alluvial plots),常用于展示数据在不同类别间的流动和分布情况,比如在生物信息学中展示不同样本在不同基因集或功能类别间的分布。
selectK(cellchat, pattern = "outgoing")

nPatterns = 6
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "outgoing", k = nPatterns)
  • 当传出模式的数量为 6 时,Cophenetic 和 Silhouette 值都开始突然下降。
  • 定义一个变量 nPatterns 并将其赋值为 6。这个变量代表了后续要识别的细胞通讯模式的数量,即代码将尝试把细胞的传出信号模式划分为 6 种不同的模式。
  • identifyCommunicationPatterns 函数:这是 CellChat 包中的一个关键函数,用于识别细胞间通讯的模式。
  • cellchat:是一个 CellChat 对象,其中包含了细胞间通讯分析的所有结果,如细胞类型、信号通路强度、配体 - 受体对信息等。
  • pattern = "outgoing":指定要分析的信号模式为传出信号模式。这意味着函数将聚焦于细胞作为信号发送者的情况,分析细胞如何向外发送信号以及形成的不同模式。
  • k = nPatterns:指定要识别的通讯模式的数量,这里使用之前定义的 nPatterns 变量,即 6 种模式。
  • 函数执行完毕后,会将识别出的通讯模式信息更新到 cellchat 对象中,并将更新后的 cellchat 对象重新赋值给 cellchat 变量。

# river plot
netAnalysis_river(cellchat, pattern = "outgoing")
#> Please make sure you have load `library(ggalluvial)` when running this function

# dot plot
netAnalysis_dot(cellchat, pattern = "outgoing")

(B) 识别并可视化目标细胞的传入通信模式

selectK(cellchat, pattern = "incoming")

nPatterns = 3
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "incoming", k = nPatterns)

# river plot
netAnalysis_river(cellchat, pattern = "incoming")
#> Please make sure you have load `library(ggalluvial)` when running this function

# dot plot
netAnalysis_dot(cellchat, pattern = "incoming")

三、信号网络的流形和分类学习分析

CellChat 能够量化所有显著信号通路之间的相似性,并基于细胞通讯网络相似性对它们进行分组,分组方式分为基于功能相似性和结构相似性。

高度的功能相似性表明主要的信号发送者和接收者相似,意味着两个信号通路或两个配体 - 受体对发挥相似和 / 或冗余的作用。先使用computeNetSimilarity(cellchat, type = "functional")计算功能相似性,接着netEmbedding(cellchat, type = "functional")对信号网络进行流形学习,netClustering(cellchat, type = "functional")进行分类学习,最后利用netVisual_embedding(cellchat, type = "functional", label.size = 3.5)在二维空间进行可视化,还可选择使用netVisual_embeddingZoomIn(cellchat, type = "functional", nCol = 2)进行更细致的可视化。

结构相似性用于比较信号网络结构,不考虑信号发送者和接收者的相似性。通过computeNetSimilarity(cellchat, type = "structural")计算结构相似性,再依次使用netEmbedding(cellchat, type = "structural")netClustering(cellchat, type = "structural")进行流形学习和分类学习,可视化使用netVisual_embedding(cellchat, type = "structural", label.size = 3.5) ,netVisual_embeddingZoomIn(cellchat, type = "structural", nCol = 2)可用于进一步放大可视化。

Part V & VI

saveRDS(cellchat, file = "cellchat_humanSkin_LS.rds") 这行代码将名为 cellchat 的 CellChat 对象保存为一个 RDS 文件,文件名为 cellchat_humanSkin_LS.rds。RDS 文件是 R 语言用于存储和读取对象的一种格式,这样可以方便后续重新加载该对象进行分析,而无需重新运行整个分析流程。

runCellChatApp(cellchat) 这行代码用于启动一个交互式的 CellChat 应用程序,通过这个程序可以更直观地探索单细胞转录组数据中的细胞 - 细胞通讯。不过需要注意的是,为了在这个应用程序中生成信号基因的特征图,要求 cellchat 对象的 @dr 中包含数据的低维空间,如 “umap” 和 “tsne” 。如果没有这些低维空间,可以使用 addReduction 函数添加。

essionInfo() 这行代码用于查看当前 R 会话的信息,包括 R 版本、运行平台、操作系统、矩阵计算相关的库、已加载的基础包和其他包,以及加载的命名空间等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值