前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单细胞分析十八般武艺7:CellChat

单细胞分析十八般武艺7:CellChat

作者头像
生信技能树jimmy
发布2021-04-29 17:06:57
4.2K0
发布2021-04-29 17:06:57
举报
文章被收录于专栏:单细胞天地单细胞天地

单细胞测序技术的发展日新月异,新的分析工具也层出不穷。每个工具都有它的优势与不足,在没有权威工具和流程的单细胞生信江湖里,多掌握几种分析方法和工具,探索数据时常常会有意想不到的惊喜。

往期回顾

单细胞初级8讲和高级分析8讲 单细胞分析十八般武艺1:harmony 单细胞分析十八般武艺2:LIGER 单细胞分析十八般武艺3:fastMNN 单细胞分析十八般武艺4:velocyto 单细胞分析十八般武艺5:monocle3 单细胞分析十八般武艺6:NicheNet

CellChat简介

CellChat的特点

  1. 全面的数据:大多数的细胞通讯分析方法通常只考虑配体/受体基因对,往往忽略了多亚基复合物受体和其他信号辅助因子。CellChat的作者人工挑选了2021个经过验证的细胞通讯关系,构建了新的细胞通讯参考数据库——CellChatDB。它不仅考虑了多亚基受体情况,还收录了其他重要的信号辅助因子:可溶性激动剂,拮抗剂,共刺激和共抑制膜结合受体。
  2. 高深的算法:CellChat在分析过程中使用了多种分析方法,不仅有常见的秩和检验、置换检验、SNN、KNN、UMAP,还有非负矩阵分解、社会网络分析、质量作用定律等不常用的方法。能灵活运用这么多方法分析数据,足以说明作者具有深厚的算法功底。
  3. 丰富的可视化结果:CellChat提供丰富且美观的可视化结果,有网络图、桑基图、热图、气泡图、散点图等多种图形。

安装CellChat

安装依赖项

代码语言:javascript
复制
## R环境安装NMF和ComplexHeatmap包
devtools::install_github("renozao/NMF@devel")
devtools::install_github("jokergoo/ComplexHeatmap")

## shell环境安装
pip install umap-learn  #如果报错,可使用conda安装
#conda install umap-learn

安装CellChat

代码语言:javascript
复制
devtools::install_github("sqjin/CellChat")

CellChat实践

数据来源

为了方便大家对比不同的分析方法,我们继续使用《单细胞分析十八般武艺6:NicheNet》的数据。数据下载链接:https://zenodo.org/record/3531889/files/seuratObj.rds

初始分析

代码语言:javascript
复制
library(CellChat)
library(tidyverse)
library(ggalluvial)
rm(list=ls())
options(stringsAsFactors = FALSE)

##提取表达矩阵和细胞分类信息
scRNA <- readRDS(url("https://zenodo.org/record/3531889/files/seuratObj.rds"))
scRNA <- UpdateSeuratObject(scRNA)
# CellChat要求输入标准化后的表达数据
data.input <- GetAssayData(scRNA, assay = "RNA", slot = "data")
identity <- subset(scRNA@meta.data, select = "celltype")

##创建cellchat对象
cellchat <- createCellChat(data = data.input)
cellchat <- addMeta(cellchat, meta = identity, meta.name = "labels")
cellchat <- setIdent(cellchat, ident.use = "labels") 
groupSize <- as.numeric(table(cellchat@idents)) # 后面有用

##设置参考数据库
# 选择合适的物种,可选CellChatDB.human, CellChatDB.mouse
CellChatDB <- CellChatDB.mouse  
# 使用"Secreted Signaling"用于细胞通讯分析
CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling") 
# 将数据库传递给cellchat对象
cellchat@DB <- CellChatDB.use 

##配体-受体分析
# 提取数据库支持的数据子集
cellchat <- subsetData(cellchat)
# 识别过表达基因
cellchat <- identifyOverExpressedGenes(cellchat)
# 识别配体-受体对
cellchat <- identifyOverExpressedInteractions(cellchat)
# 将配体、受体投射到PPI网络
cellchat <- projectData(cellchat, PPI.mouse)

推断细胞通讯网络

代码语言:javascript
复制
##推测细胞通讯网络
cellchat <- computeCommunProb(cellchat)
cellchat <- computeCommunProbPathway(cellchat)
cellchat <- aggregateNet(cellchat)

细胞通讯网络系统分析及可视化

代码语言:javascript
复制
levels(cellchat@idents)            #查看细胞顺序
vertex.receiver = c(3, 6)          #指定靶细胞的索引
cellchat@netP$pathways             #查看富集到的信号通路
pathways.show <- "CCL"             #指定需要展示的通路
# Hierarchy plot
png(filename = "sig_pathway_hierarchy.png", width = 1000, height = 650)
netVisual_aggregate(cellchat, signaling = pathways.show,  vertex.receiver = vertex.receiver, vertex.size = groupSize)
dev.off()
# Circle plot
png(filename = "sig_pathway_cricle.png", width = 650, height = 600)
netVisual_aggregate(cellchat, signaling = pathways.show, layout = "circle", vertex.size = groupSize)
dev.off()
# 计算配体-受体对信号网络的贡献度
png(filename = "sig_pathway_L-R.png", width = 800, height = 600)
netAnalysis_contribution(cellchat, signaling = pathways.show)
dev.off()
# 分析细胞在信号网络中角色
cellchat <- netAnalysis_signalingRole(cellchat, slot.name = "netP")
png(filename = "sig_pathway_role.png", width = 800, height = 600)
netVisual_signalingRole(cellchat, signaling = pathways.show)
dev.off()

sig_pathway_hierarchy

sig_pathway_cricle

sig_pathway_L-R

sig_pathway_role

代码语言:javascript
复制
##细胞通讯模式和信号网络
nPatterns = 5   #默认为5
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "outgoing", k = nPatterns)
# river plot
p = netAnalysis_river(cellchat, pattern = "outgoing")
ggsave("com_pattern_outgoing_river.png", p, width = 12, height = 6)
# dot plot
p = netAnalysis_dot(cellchat, pattern = "outgoing")
ggsave("com_pattern_outgoing_dot.png", p, width = 9, height = 6)

nPatterns = 5
cellchat <- identifyCommunicationPatterns(cellchat, pattern = "incoming", k = nPatterns)
# river plot
p = netAnalysis_river(cellchat, pattern = "incoming")
ggsave("com_pattern_incoming_river.png", p, width = 12, height = 6)
# dot plot
p = netAnalysis_dot(cellchat, pattern = "incoming")
ggsave("com_pattern_incoming_dot.png", p, width = 9, height = 6)

com_pattern_outgoing_river

com_pattern_outgoing_dot

com_pattern_incoming_river

om_pattern_incoming_dot

代码语言:javascript
复制
##信号网络聚类
# 按功能相似性聚类
cellchat <- computeNetSimilarity(cellchat, type = "functional")
cellchat <- netEmbedding(cellchat, type = "functional")
cellchat <- netClustering(cellchat, type = "functional")
# Visualization in 2D-space
p = netVisual_embedding(cellchat, type = "functional")
ggsave("custer_pathway_function.png", p, width = 9, height = 6)
p = netVisual_embeddingZoomIn(cellchat, type = "functional")
ggsave("custer_pathway_function2.png", p, width = 8, height = 6)

# 按结构相似性聚类
cellchat <- computeNetSimilarity(cellchat, type = "structural")
cellchat <- netEmbedding(cellchat, type = "structural")
cellchat <- netClustering(cellchat, type = "structural")
# Visualization in 2D-space
p = netVisual_embedding(cellchat, type = "structural")
ggsave("custer_pathway_structure.png", p, width = 9, height = 6)
p = netVisual_embeddingZoomIn(cellchat, type = "structural")
ggsave("custer_pathway_structure2.png", p, width = 8, height = 6)

save(cellchat, file = "cellchat.rds")

custer_pathway_function

custer_pathway_structure

交流探讨:如果您阅读此文有所疑惑,或有不同见解,亦或其他问题,可以点击阅读原文联系探讨。

往期回顾

Barcoding || 海量单细胞的关键技术

单细胞转录组下游分析是否有必要删除线粒体和核糖体基因

细胞亚群注释神器SingleR把它的参考数据库放在了celldex包




如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 往期回顾
  • CellChat简介
    • CellChat的特点
    • 安装CellChat
    • CellChat实践
      • 数据来源
        • 初始分析
          • 推断细胞通讯网络
            • 细胞通讯网络系统分析及可视化
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档