单细胞分析之细胞交互-3:CellChat - 简书 (jianshu.com)
单细胞转录组之使用CellChat对单个数据集进行细胞间通讯分析 - 简书 (jianshu.com)
单细胞转录组之使用CellChat 对多个数据集细胞通讯进行比较分析 - 简书 (jianshu.com)
细胞通讯分析(单细胞测序)———CellChat(Homo、Mus) - 知乎 (zhihu.com)
CellChat:单细胞测序-细胞互作 - 知乎 (zhihu.com)
原理和特点
保姆级教程续集 《单细胞测序数据分析——细胞通讯》_哔哩哔哩_bilibili
image.png
cellchat数据库情况
image.png
cellchat可视化结果
image.png
实战代码
#加载需要的包
library(CellChat)
library(patchwork)
### 创建图片保存的目录
data.dir <- './Result_CellChat'
dir.create(data.dir)
setwd(data.dir)
### 1.数据准备
data.input = integrated[["RNA"]]@data # 标准化过的矩阵,seurat对象就这么取
meta_cellchat =integrated$meta #取metadata信息
uniquemeta_cellchat$group)
# 整理数据:将Use组单细胞数据提取出来
cell.Use = rownames(meta_cellchat)[meta$group == "Use"] # 从疾病组中提取细胞名
data.input.Use = data.input[, cell.Use] #取出对应的细胞
meta_Use = meta[cell.Use, ]
unique(meta$labels) # check the cell labels
### 2.创建CellChat对象
cellchat <- createCellChat(object = data.input.Use, meta =meta_Use, group.by = "labels")
cellchat <- setIdent(cellchat, ident.use = "labels")
levels(cellchat@idents)
groupSize <- as.numeric(table(cellchat@idents)) # 每个亚群细胞数
groupSize
### 3.设置配体受体交互数据库
CellChatDB <- CellChatDB.human
# 如果是小鼠数据,使用CellChatDB.mouse
showDatabaseCategory(CellChatDB)
#查看下数据库结构
dplyr::glimpse(CellChatDB$interaction)
# 使用数据库中的自分泌/旁分泌信号相互作用部分进行后续分析,可根据试验方案、目的选择
CellChatDB.use <- subsetDB(CellChatDB, search = "Secreted Signaling")
# 在cellchat对象中设置使用的数据库
cellchat@DB <- CellChatDB.use
### 4.表达数据的预处理
cellchat <- subsetData(cellchat,features = NULL)#取出表达数据,features感兴趣的基因
#设置并行运算
future::plan("multicore", workers = 12)
cellchat <- identifyOverExpressedGenes(cellchat) #找每个细胞群中高表达的配体受体
cellchat <- identifyOverExpressedInteractions(cellchat)#寻找高表达的通路
#上一步运行的结果储存在cellchat@LR$LRsig
cellchat <- projectData(cellchat, PPI.human)#投影到PPI
#找到配体受体关系后,projectData将配体受体对的表达值投射到PPI上,来对@data.signaling中的表达值进行校正。结果保存在@data.project
### 5.计算通信概率并推断cellchat网络
cellchat <- computeCommunProb(cellchat, raw.use = T)#默认计算方式为type = "truncatedMean",
#默认cutoff的值为20%,即表达比例在25%以下的基因会被认为是0, trim = 0.1可以调整比例阈值
#去掉通讯数量很少的细胞
cellchat <- filterCommunication(cellchat, min.cells = 10)
#将细胞通讯预测结果以数据框的形式取出
df.net <- subsetCommunication(cellchat)
view(df.net)
write.csv(df.net,'01.df.net.csv')