前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CellChat 三部曲3:具有不同细胞类型成分的多个数据集的细胞通讯比较分析

CellChat 三部曲3:具有不同细胞类型成分的多个数据集的细胞通讯比较分析

作者头像
生信技能树jimmy
发布2021-09-15 16:22:44
5.9K0
发布2021-09-15 16:22:44
举报
文章被收录于专栏:单细胞天地单细胞天地

分享是一种态度

此教程显示了如何将 CellChat 应用于具有不同细胞类型成分的多个数据集的比较分析。几乎所有的CellChat功能都可以应用。

笔记要点

  • 加载所需的包
  • 第一部分:比较分析具有略有不同细胞类型成分的多个数据集
  • 第二部分:对具有截然不同的细胞类型成分的多个数据集的比较分析

加载所需的包

代码语言:javascript
复制
library(CellChat)
library(ggplot2)                  
library(patchwork)
library(igraph)

第一部分:比较分析具有略有不同细胞类型成分的多个数据集

对于具有稍微不同的细胞类型(组)组成的数据集,CellChat 可以使用函数liftCellChat将细胞组提升到所有数据集的相同细胞标记,然后执行比较分析,作为对具有相同细胞类型成分的数据集的联合分析。

在这里,我们以E13.5天和E14.5天两个胚胎小鼠皮肤scRNA-seq数据集的比较分析为例。E13.5 和 E14.5 有 11 个共享皮肤细胞群,另外还有两个特定于 E14.5 的皮肤细胞群。因此,我们将将细胞组从 E13.5 提升到与 E14.5 相同的细胞标签。

加载每个数据集的CellChat对象

用户需要在每个数据集上单独运行 CellChat,然后将不同的 CellChat 对象合并在一起。在这里,我们也使用updateCellChat这样做,因为这两个对象是使用早期版本(<0.5.0)的CellChat获得。

代码语言:javascript
复制
cellchat.E13 <- readRDS(url("https://ndownloader.figshare.com/files/25957094"))
cellchat.E13 <- updateCellChat(cellchat.E13)
#> Update slot 'var.features' from a vector to a list
cellchat.E14 <- readRDS(url("https://ndownloader.figshare.com/files/25957634"))
cellchat.E14 <- updateCellChat(cellchat.E14)
#> Update slot 'var.features' from a vector to a list

升级cellchat对象并合并在一起

由于与E13.5相比,E14.5有另外两种细胞群,因此我们通过将细胞组cellchat.E13.5提升到与E14.5相同的细胞标签来提升。liftCellChat只会更新与细胞通信网络相关的插槽,包括插槽object@net、object@netP和object@idents。

代码语言:javascript
复制
# Define the cell labels to lift up
group.new = levels(cellchat.E14@idents)
cellchat.E13 <- liftCellChat(cellchat.E13, group.new)
#> The CellChat object will be lifted up using the cell labels FIB-A, FIB-B, FIB-P, DC, Pericyte, MYL, Immune, ENDO, Muscle, MELA, Basal-P, Basal, Spinious
#> Update slots object@net, object@netP, object@idents in a single dataset...
object.list <- list(E13 = cellchat.E13, E14 = cellchat.E14)
cellchat <- mergeCellChat(object.list, add.names = names(object.list), cell.prefix = TRUE)
#> Warning in mergeCellChat(object.list, add.names = names(object.list),
#> cell.prefix = TRUE): Prefix cell names!
#> Merge the following slots: 'data.signaling','net', 'netP','meta', 'idents', 'var.features' , 'DB', and 'LR'.

使用提升的对象可视化推断的信号网络

代码语言:javascript
复制
# Hierarchy plot
pathways.show <- c("WNT") 
weight.max <- getMaxWeight(object.list, slot.name = c("netP"), attribute = pathways.show) # control the edge weights across different datasets
vertex.receiver = seq(1,10) # Left portion of hierarchy plot the shows signaling to dermal cells and right portion shows signaling to epidermal cells
par(mfrow = c(1,2), xpd=TRUE)
for (i in 1:length(object.list)) {
  netVisual_aggregate(object.list[[i]], signaling = pathways.show, vertex.receiver = vertex.receiver, edge.weight.max = weight.max[1], edge.width.max = 10, signaling.name = paste(pathways.show, names(object.list)[i]))
}
代码语言:javascript
复制
# Circle plot
pathways.show <- c("WNT") 
weight.max <- getMaxWeight(object.list, slot.name = c("netP"), attribute = pathways.show) # control the edge weights across different datasets
par(mfrow = c(1,2), xpd=TRUE)
for (i in 1:length(object.list)) {
  netVisual_aggregate(object.list[[i]], signaling = pathways.show, layout = "circle", edge.weight.max = weight.max[1], edge.width.max = 10, signaling.name = paste(pathways.show, names(object.list)[i]))
}
代码语言:javascript
复制
# Chord diagram
pathways.show <- c("WNT") 
par(mfrow = c(1,2), xpd=TRUE)
for (i in 1:length(object.list)) {
  netVisual_aggregate(object.list[[i]], signaling = pathways.show, layout = "chord", signaling.name = paste(pathways.show, names(object.list)[i]))
}
#> Note: The second link end is drawn out of sector 'Basal-P'.
#> Note: The second link end is drawn out of sector 'FIB-A'.

对于和弦图,CellChat 具有独立函数netVisual_chord_cell,通过调整circlize包中的不同参数来灵活可视化信号网络。例如,我们可以定义一个group命名的字符矢量,以创建多组和弦图,例如,将细胞群集分组到不同的细胞类型。

代码语言:javascript
复制
# Chord diagram
group.merged <- c(rep("Dermal", 10), rep("Epidermal", 3)) # grouping cell clusters into dermal and epidermal cells to study the cell-cell communication between dermal and epidermal
names(group.merged) <- levels(object.list[[1]]@idents)
pathways.show <- c("WNT") 
par(mfrow = c(1,2), xpd=TRUE)
for (i in 1:length(object.list)) {
  netVisual_chord_cell(object.list[[i]], signaling = pathways.show, group = group.merged, title.name = paste0(pathways.show, " signaling network - ", names(object.list)[i]))
}
#> Plot the aggregated cell-cell communication network at the signaling pathway level
#> Note: The second link end is drawn out of sector 'Basal-P'.
#> Plot the aggregated cell-cell communication network at the signaling pathway level
#> Note: The second link end is drawn out of sector 'FIB-A'.

第二部分:对具有截然不同的细胞类型成分的多个数据集的比较分析

CellChat 可用于比较来自截然不同的生物背景的两个 scRNA-seq 数据集之间的细胞-细胞通信模式。如胚胎形态形成细胞与引起伤口修复的细胞。对于具有截然不同的细胞类型(组)组成的数据集,除了以下两个方面外,大多数 CellChat 的功能都可以应用:

  • 不能用于比较不同细胞群之间相互作用的差异数和相互作用强度。但是,用户仍然可以使用函数netVisual_diffInteractionnetVisual_circle来显示交互次数和交互强度。
  • 不能使用computeNetSimilarityPairwise(cellchat, type = "functional")的功能相似性识别信号组。但是,用户仍然可以使用computeNetSimilarityPairwise(cellchat, type = "structural")执行结构相似性分析。

欲了解更多,请查看cellchat原文,比较分析两个 scRNA-seq 数据集,一个来自胚胎E13.5 皮肤,另一个来自成人第 12 天伤口皮肤。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加载所需的包
  • 第一部分:比较分析具有略有不同细胞类型成分的多个数据集
    • 加载每个数据集的CellChat对象
      • 升级cellchat对象并合并在一起
        • 使用提升的对象可视化推断的信号网络
        • 第二部分:对具有截然不同的细胞类型成分的多个数据集的比较分析
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档