SCS【26】单细胞细胞间通信第二部分通信网络的系统分析(CellChat)

news2024/11/24 3:17:35

b82e158d707c6739afb317aa697f8fcb.gif


桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程,目前整理出来的相关教程目录如下:

Topic 6. 克隆进化之 Canopy

Topic 7. 克隆进化之 Cardelino

Topic 8. 克隆进化之 RobustClone

SCS【1】今天开启单细胞之旅,述说单细胞测序的前世今生

SCS【2】单细胞转录组 之 cellranger

SCS【3】单细胞转录组数据 GEO 下载及读取

SCS【4】单细胞转录组数据可视化分析 (Seurat 4.0)

SCS【5】单细胞转录组数据可视化分析 (scater)

SCS【6】单细胞转录组之细胞类型自动注释 (SingleR)

SCS【7】单细胞转录组之轨迹分析 (Monocle 3) 聚类、分类和计数细胞

SCS【8】单细胞转录组之筛选标记基因 (Monocle 3)

SCS【9】单细胞转录组之构建细胞轨迹 (Monocle 3)

SCS【10】单细胞转录组之差异表达分析 (Monocle 3)

SCS【11】单细胞ATAC-seq 可视化分析 (Cicero)

SCS【12】单细胞转录组之评估不同单细胞亚群的分化潜能 (Cytotrace)

SCS【13】单细胞转录组之识别细胞对“基因集”的响应 (AUCell)

SCS【14】单细胞调节网络推理和聚类 (SCENIC)

SCS【15】细胞交互:受体-配体及其相互作用的细胞通讯数据库 (CellPhoneDB)

SCS【16】从肿瘤单细胞RNA-Seq数据中推断拷贝数变化 (inferCNV)

SCS【17】从单细胞转录组推断肿瘤的CNV和亚克隆 (copyKAT)

SCS【18】细胞交互:受体-配体及其相互作用的细胞通讯数据库 (iTALK)

SCS【19】单细胞自动注释细胞类型 (Symphony)

SCS【20】单细胞数据估计组织中细胞类型(Music)

SCS【21】单细胞空间转录组可视化 (Seurat V5)

SCS【22】单细胞转录组之 RNA 速度估计 (Velocyto.R)

SCS【23】单细胞转录组之数据整合 (Harmony)

SCS【24】单细胞数据量化代谢的计算方法 (scMetabolism)

SCS【25】单细胞细胞间通信第一部分细胞通讯可视化(CellChat)



上一期我们介绍了细胞通讯的可视化,这期我们继续介绍细胞通讯系统性分析,通过NMF的方式找到重要的通路,并对其进行分析,可视化最后结果。

为了便于解释复杂的细胞间通信网络,CellChat通过从图论、模式识别和流形学习中抽象出来的方法对网络进行定量测量。

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

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

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

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

数据构造

library(CellChat)
library(patchwork)
library(Seurat)
options(Seurat.object.assay.version = "v3")
library(SeuratData)

# Load data
load("data_humanSkin_CellChat.rda")
data.input = data_humanSkin$data  # normalized data matrix
meta = data_humanSkin$meta  # a dataframe with rownames containing cell mata data
cell.use = rownames(meta)[meta$condition == "LS"]  # extract the cell names from disease data

# Prepare input data for CelChat analysis
data.input = data.input[, cell.use]
meta = meta[cell.use, ]
# meta = data.frame(labels = meta$labels[cell.use], row.names =
# colnames(data.input)) # manually create a dataframe consisting of the cell
# labels
unique(meta$labels)  # check the cell labels
##  [1] Inflam. FIB  FBN1+ FIB    APOE+ FIB    COL11A1+ FIB cDC2        
##  [6] LC           Inflam. DC   cDC1         CD40LG+ TC   Inflam. TC  
## [11] TC           NKT         
## 12 Levels: APOE+ FIB FBN1+ FIB COL11A1+ FIB Inflam. FIB cDC1 cDC2 ... NKT

## Create a CellChat object
cellchat <- createCellChat(object = data.input, meta = meta, group.by = "labels")
## [1] "Create a CellChat object from a data matrix"
## Set cell identities for the new CellChat object 
## The cell groups used for CellChat analysis are  APOE+ FIB FBN1+ FIB COL11A1+ FIB Inflam. FIB cDC1 cDC2 LC Inflam. DC TC Inflam. TC CD40LG+ TC NKT

## Add cell information into meta slot of the object (Optional)
cellchat <- addMeta(cellchat, meta = meta)
cellchat <- setIdent(cellchat, ident.use = "labels")  # set 'labels' as default cell identity
levels(cellchat@idents)  # show factor levels of the cell labels
##  [1] "APOE+ FIB"    "FBN1+ FIB"    "COL11A1+ FIB" "Inflam. FIB"  "cDC1"        
##  [6] "cDC2"         "LC"           "Inflam. DC"   "TC"           "Inflam. TC"  
## [11] "CD40LG+ TC"   "NKT"
groupSize <- as.numeric(table(cellchat@idents))  # number of cells in each cell group

## Set the ligand-receptor interaction database
CellChatDB <- CellChatDB.human  # use CellChatDB.mouse if running on mouse data

##
dplyr::glimpse(CellChatDB$interaction)
## Rows: 1,939
## Columns: 11
## $ interaction_name   <chr> "TGFB1_TGFBR1_TGFBR2", "TGFB2_TGFBR1_TGFBR2", "TGFB…
## $ pathway_name       <chr> "TGFb", "TGFb", "TGFb", "TGFb", "TGFb", "TGFb", "TG…
## $ ligand             <chr> "TGFB1", "TGFB2", "TGFB3", "TGFB1", "TGFB1", "TGFB2…
## $ receptor           <chr> "TGFbR1_R2", "TGFbR1_R2", "TGFbR1_R2", "ACVR1B_TGFb…
## $ agonist            <chr> "TGFb agonist", "TGFb agonist", "TGFb agonist", "TG…
## $ antagonist         <chr> "TGFb antagonist", "TGFb antagonist", "TGFb antagon…
## $ co_A_receptor      <chr> "", "", "", "", "", "", "", "", "", "", "", "", "",…
## $ co_I_receptor      <chr> "TGFb inhibition receptor", "TGFb inhibition recept…
## $ evidence           <chr> "KEGG: hsa04350", "KEGG: hsa04350", "KEGG: hsa04350…
## $ annotation         <chr> "Secreted Signaling", "Secreted Signaling", "Secret…
## $ interaction_name_2 <chr> "TGFB1 - (TGFBR1+TGFBR2)", "TGFB2 - (TGFBR1+TGFBR2)…
CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling")  # use Secreted Signaling
# set the used database in the object
cellchat@DB <- CellChatDB.use

## Preprocessing the expression data for cell-cell communication analysis
## subset the expression data of signaling genes for saving computation cost
cellchat <- subsetData(cellchat)  # This step is necessary even if using the whole database
future::plan("multicore", workers = 1)  # do parallel
cellchat <- identifyOverExpressedGenes(cellchat)
cellchat <- identifyOverExpressedInteractions(cellchat)
# 计算通信概率,推断细胞通信网络
cellchat <- computeCommunProb(cellchat)
## triMean is used for calculating the average gene expression per cell group. 
## [1] ">>> Run CellChat on sc/snRNA-seq data <<< [2023-05-15 13:29:47]"
## [1] ">>> CellChat inference is done. Parameter values are stored in `object@options$parameter` <<< [2023-05-15 13:32:15]"
cellchat <- filterCommunication(cellchat, min.cells = 10)
# 在信号通路水平推断细胞间的通讯
cellchat <- computeCommunProbPathway(cellchat)

## Calculate the aggregated cell-cell communication network
cellchat <- aggregateNet(cellchat)
groupSize <- as.numeric(table(cellchat@idents))

细胞间通信网络系统分析

识别细胞群的信号作用以及主要的信号作用

CellChat通过计算每个细胞群的几个网络中心性度量,可以随时识别细胞间通信网络中的主要发送者、接收者、中介者和影响者。具体而言,我们在加权定向网络中使用了度量,包括出度、入度、流间性和信息中心性,分别确定了细胞间通信的主要发送者、接收者、中介者和影响者。在权重为计算的通信概率的加权有向网络中,输出度(计算为从一个细胞组发出的信令的通信概率的总和)和输入度(计算为从一个细胞组传入的信令的通信概率的总和)可分别用于识别信令网络中占优势的细胞发送者和接收器。

pathways.show <- c("CXCL")
# 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)

c0fae074758e5ba8827c6a70604592df.png

在二维空间中可视化主要的发送者(源)和接收者(目标)

# 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

6594b4edecff25ac49a789ca22bb369f.png

识别对某些细胞群的输出或输入信号贡献最大的信号

# 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

0c835acd8bcf1e950be4c06b80769c33.png

识别和可视化分泌细胞的外向通信模式

library(NMF)
library(ggalluvial)
selectK(cellchat, pattern = "outgoing")

c05a915569a84094d343a5f26db8fdd4.png

当输出模式数为3时,Cophenetic值和Silhouette值都开始突然下降。

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

3b7c175dd5f90d94b358c604a91a3f70.png

river plot

netAnalysis_river(cellchat, pattern = "outgoing")

998545349fdb8f05768d6e7579799826.png

dot plot

netAnalysis_dot(cellchat, pattern = "outgoing")

bedb209dc8102e1dda1dbf273c0d7856.png

识别和可视化目标细胞的传入通信模式

selectK(cellchat, pattern = "incoming")

18a05c2c218176eaa4d29a090671e337.png

当输入模式数为4时,相干值开始下降。

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

d235e794eb988966e44c67e72e58e507.png

# river plot
netAnalysis_river(cellchat, pattern = "incoming")

60e9fbcac7183f0b799566dcf2df90fb.png

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

ef9c3c20fcc618be143c09264b6a904a.png

信令网络的流形与分类学习分析

此外,CellChat能够量化所有重要信号通路之间的相似性,然后根据它们的细胞通信网络相似性对它们进行分组。可以根据功能或结构相似性进行分组。

功能相似性: 高度的功能相似性表明主要的发送者和接受者是相似的,这可以解释为两个信号通路或两个配体受体对表现出相似和/或冗余的作用。功能相似性分析要求两个数据集之间的细胞种群组成相同。

结构相似性: 使用结构相似性来比较它们的信令网络结构,而不考虑发送方和接收方的相似性。

基于功能相似性来识别信号组

cellchat <- computeNetSimilarity(cellchat, type = "functional")
cellchat <- netEmbedding(cellchat, type = "functional")
## Manifold learning of the signaling networks for a single dataset
# > Manifold learning of the signaling networks for a single dataset
cellchat <- netClustering(cellchat, type = "functional", do.parallel = FALSE)
## Classification learning of the signaling networks for a single dataset
# > Classification learning of the signaling networks for a single dataset
# Visualization in 2D-space
netVisual_embedding(cellchat, type = "functional", label.size = 3.5)

01922435c37617ecb102803adbc6fcda.png

基于结构相似性识别信令组

cellchat <- computeNetSimilarity(cellchat, type = "structural")
cellchat <- netEmbedding(cellchat, type = "structural")
## Manifold learning of the signaling networks for a single dataset
# > Manifold learning of the signaling networks for a single dataset
cellchat <- netClustering(cellchat, type = "structural", do.parallel = FALSE)
## Classification learning of the signaling networks for a single dataset
# > Classification learning of the signaling networks for a single dataset
# Visualization in 2D-space
netVisual_embedding(cellchat, type = "structural", label.size = 3.5)

82e3ac57857d7a41865d088939ce972b.png

netVisual_embeddingZoomIn(cellchat, type = "structural", nCol = 2)

2c46b362496c5eaf4457a751df9921af.png

Reference

  1. Suoqin Jin et al., Inference and analysis of cell-cell communication using CellChat. Nature Communications, 12:1088 (2021). https://www.nature.com/articles/s41467-021-21246-9

这个软件包代码量还是很多的,需要具有一定 R 语言编程基础,并不是看起来那么简单,所有好多老师想直接自己学习教程来分析,但是实质上没有基础还是很难实现,每步报错都不知道该怎样处理,是最崩溃的,所以有需求的老师可以联系桓峰基因,提供最优质的服务!!!

桓峰基因,铸造成功的您!

未来桓峰基因公众号将不间断的推出单细胞系列生信分析教程,

敬请期待!!

桓峰基因和投必得合作,文章润色优惠85折,需要文章润色的老师可以直接到网站输入领取桓峰基因专属优惠券码:KYOHOGENE,然后上传,付款时选择桓峰基因优惠券即可享受85折优惠哦!https://www.topeditsci.com/

有想进生信交流群的老师可以扫最后一个二维码加微信,备注“单位+姓名+目的”!!!

c50aad02a36f3c4464bfd827402b3d34.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《微服务实战》 第十一章 Spring Cloud Alibaba nacos配置中心

前言 Nacos 提供用于存储配置和其他元数据的 key/value 存储&#xff0c;为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config&#xff0c;您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。 Spring Cloud Aliba…

【C++ 入坑指南】(08)循环

文章目录 一、while 循环二、do...while 循环三、for 循环四、嵌套循环五、跳转语句5.1 break 语句5.2 continue 语句5.3 goto 语句 有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c…

c++ 11标准模板(STL) std::set(五)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class set;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using se…

Java中的线程通信的几种方式

Java中的线程间通信是指不同线程之间相互协作&#xff0c;以完成一些复杂的任务或实现某些功能的过程。线程间通信主要包括两个方面&#xff1a;线程之间的互斥和同步&#xff0c;以及线程之间的数据共享和通信。Java提供了多种方式来实现线程间通信&#xff0c;本文将介绍Java…

Java | 一分钟掌握定时任务 | 5 - Spring Task

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱原创&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 多线程解决了并发阻塞问题&#xff0c;但是不能方便的表达我们的定时方…

redi可持久化配置

回顾&#xff1a;rpcbind111 nfs2049 redis高可用高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%&#xff0c;99.99%&#xff0c;99.999%等&#xff09; 还要考虑提供主从分离&#xff0c;快速容灾技术&#…

用netty实现聊天

1.引入netty依赖 <dependencies> <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.92.Final</version> </dependency> </dependencies> 2.准备一个服务端ChatServer和…

Redis优化与常见问题

---------------------- Redis 命令工具 ---------------------------------------- redis-server&#xff1a;用于启动 Redis 的工具 redis-benchmark&#xff1a;用于检测 Redis 在本机的运行效率 redis-check-aof&#xff1a;修复 AOF 持久化文件 redis-check-rdb&#xff1…

C语言库函数详解(两万字)

目录 目录 目录 前言 1.C 标准库 - <stdio.h> 简介 1.1 printf&#xff08;&#xff09;&#xff1b; 1.2 scanf(); 1.3 getchar(); 1.4 putchar(); 1.5 gets(); 1.6 puts(); 1.7fscanf(); 1.8 fprintf(); 1.9 fgetc(); 1.10 fgets(); 1.11 fputs(); 1.12 fclose();…

人机融合智能中的诱导引导交互

智能的核心不在于人工智能系统的记忆、注意力和上下文感知等能力&#xff0c;而在于其能够洞察、理解和解决问题的能力。也就是说智能系统需要具备更高层次的思维能力&#xff0c;能够从信息中抽象出本质&#xff0c;识别问题的核心&#xff0c;并提供有效的解决方案。这对于人…

MATLAB绘制动画(四)AVI

MATLAB绘制动画&#xff08;四&#xff09;AVI与GIF clc; clear; close all; fig figure ; aviobj avifile(example.avi); n 100; t 0:2*pi/n:2*pi; x cos(t); y sin(t); for k 1:nx(k) cos(t(k));y(k) sin(t(k));H plot(x,y,x(k),y(k),or,x(k),-y(k),ob);axis equa…

应届生怎么才能提高职场竞争力

前言 随着社会的不断发展&#xff0c;竞争也在逐渐增加。对于应届生来说&#xff0c;提高职场竞争力是很重要的&#xff0c;这样才能更好地融入工作环境、获得更好的机会和待遇。那么&#xff0c;应届生怎么才能提高职场竞争力呢&#xff1f;本文就来简单聊一聊。 应届生步入职…

【再获殊荣】中创算力入选“河南省2023年第五批拟入库科技型中小企业名单”

科技促发展&#xff0c;创新赢未来&#xff01; 科技型中小企业作为最具活力、最具潜力、最具成长性的创新群体&#xff0c;已成为我国在经济转型阶段培育发展新动能的重要载体&#xff01; 2022年&#xff0c;中创算力正式入库河南省2022年科技型中小企业。 2023年&#xf…

F. Array Stabilization (GCD version)

题目链接&#xff1a;传送门 思路&#xff1a; 进行预处理的算法模板&#xff1a; for(int i1;(1<<i)<n;i)for(int j1;j(1<<i)-1<n;j)st[j][i]gcd(st[j][i-1],st[j(1<<(i-1))][i-1]);进行查询的算法模板 int check(int i,int mid){int klog2(mid-i1);…

【Mybatis】Mybatis的动态SQL、缓存机制-三

唠嗑部分 之前我们说了Mybatis的基本操作、关系映射等等&#xff0c;相关文章&#xff1a; 【Mybatis】简单入门及工具类封装-一 【Mybatis】如何实现ORM映射-二 本篇文章和大家说的是Mybatis的动态SQL、缓存机制 言归正传 一、动态SQL MyBatis的映射文件中支持在基础SQL上…

系统分析师:六、企业信息化战略与实施

目录 一、信息与信息化概念 1.1 信息的概念 1.2 信息化的概念 二、信息系统 2.1 信息系统的概念 2.2 信息系统的类型 2.3 信息系统的生命周期 2.4 系统建模 2.5 信息系统战略规划 2.6 信息化开发方法 三、电子政务 四、企业资源计划(ERP) 五、系统集成 一、信息与信息…

k8s1.20版本部署Redis集群(三主三从)——2023.05

文章目录 一、准备工作二、逻辑图三、部署Redis集群1. 安装NFS服务2. 修改API配置3. 创建持久卷PVC4. 创建Redis服务4. 组建Redis集群5. 验证集群 一、准备工作 主机规划 节点IPk8s-master1192.168.2.245k8s-master2192.168.2.246k8s-master3192.168.2.247k8s-node1192.168.2…

【MySQL】-- 库的操作

目录 库的操作 显示数据库 创建数据库 创建数据库案例 删除数据库 删除数据库案例 字符集和校验规则 字符集 校验规则 小结 查看数据库支持的字符集 查看数据库支持的校验规则 校验规则对数据库的影响 不区分大小写 区分大小写 进行查询 结果排序 修改数据库…

我爱我家联合第四范式发布房产经纪大模型

5月15日&#xff0c;在我爱我家年度品牌战略发布会上&#xff0c;我爱我家联合第四范式发布“房产经纪大模型”&#xff0c;将大模型能力用于提升行业生产力的原点&#xff1a;赋能经纪人。本次发布的房产经纪大模型1.0版本已经具备了合格经纪人的基本能力&#xff0c;‍‍‍‍…

leetcode 不同路径详解

文章目录 62 . 不同路径题目详情动态规划之带备忘录实现Java完整代码 63. 不同路径 II题目详情动态规划之带备忘录实现Java完整代码 62 . 不同路径 题目详情 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只…