前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >保姆级教程 | CellCall细胞通讯分析全流程

保姆级教程 | CellCall细胞通讯分析全流程

作者头像
天意生信云
发布于 2025-05-21 07:41:41
发布于 2025-05-21 07:41:41
5800
代码可运行
举报
运行总次数:0
代码可运行

随着单细胞测序技术飞速发展,探索细胞间对话机制成为可能。细胞通讯通过配体-受体互作传递信号,是组织功能和疾病发展的关键。CellCall是一款独特的分析工具,它不仅识别配体-受体互作,还追踪信号如何激活转录因子并调控下游基因。这种"配体-受体-转录因子"三元框架提供了信号传递的完整视图,深化了我们对细胞通讯的理解。本教程从环境配置到结果解读,全面掌握CellCall分析流程。无论你是新手还是专家,都能通过这篇指南挖掘细胞对话的奥秘,揭示组织微环境中的信号网络。

准备环境和加载数据

首先,我们需要安装并加载必要的包,并导入示例数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 加载必要的包
library(cellcall)
library(Seurat)
library(SeuratObject)
library(tidyverse)
library(ggplot2)

# 设置工作目录
setwd("/path/to/your/workdir")

# 加载CellCall自带的示例数据
f.tmp <- system.file("extdata", "example_Data.Rdata", package="cellcall")
load(f.tmp)

# 查看数据维度和结构
dim(in.content)
in.content[1:4, 1:4]

# 检查细胞类型分布
table(str_split(colnames(in.content), "_", simplify = T)[,2])

这一步是为了准备分析环境并了解数据结构。CellCall提供的示例数据包含基因表达矩阵,每列表示一个细胞,每行表示一个基因。通过检查维度和结构,我们可以了解数据的大小和特征。

创建CellCall对象

接下来,我们使用表达矩阵创建CellCall对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建NichConObject对象
mt <- CreateNichConObject(data=in.content, 
                          min.feature = 3,       # 最少检测到的基因数
                          names.field = 2,       # 细胞类型在列名中的位置
                          names.delim = "_",     # 列名的分隔符
                          source = "TPM",        # 数据来源类型
                          scale.factor = 10^6,   # 缩放因子
                          Org = "Homo sapiens",  # 物种
                          project = "Microenvironment") # 项目名称

步骤创建一个CellCall对象,这是后续分析的基础。参数解释:

  • min.feature:每个细胞至少要检测到的基因数,用于质控
  • names.field和names.delim:定义如何从列名中提取细胞类型信息
  • source:说明数据类型(如TPM、UMI等)
  • scale.factor:标准化因子
  • Org:物种信息,用于查询相应的配体-受体数据库

计算细胞间通讯谱

现在,我们计算细胞间的通讯谱:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 计算通讯谱
mt <- TransCommuProfile(object = mt,
                        pValueCor = 0.05,     # 相关性p值阈值
                        CorValue = 0.1,       # 相关系数阈值
                        topTargetCor = 1,     # 每个配体选择的top靶基因数
                        p.adjust = 0.05,      # 调整后的p值阈值
                        use.type = "median",  # 使用中位数表达值
                        probs = 0.9,          # 百分位数阈值
                        method = "weighted",  # 计算方法
                        IS_core = TRUE,       # 是否使用核心基因
                        Org = 'Homo sapiens') # 物种

这一步是CellCall分析的核心步骤。TransCommuProfile函数完成以下任务:

  1. 计算每个细胞类型的基因平均表达
  2. 识别配体-受体对及其表达模式
  3. 推断受体激活的下游转录因子
  4. 计算配体-受体-转录因子三元关系的得分
  5. 生成细胞类型对之间的通讯分数矩阵

每个参数都会影响分析的严格程度,可以根据数据特点调整。

通路富集分析

为了理解细胞通讯的功能意义,我们进行通路富集分析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 获取表达数据
n <- mt@data$expr_l_r_log2_scale

# 对每对细胞类型进行通路富集分析
pathway.hyper.list <- lapply(colnames(n), function(i){
  print(i)
  tmp <- getHyperPathway(data = n, object = mt, cella_cellb = i, Org="Homo sapiens")
  return(tmp)
})

# 整合富集结果用于可视化
myPub.df <- getForBubble(pathway.hyper.list, cella_cellb=colnames(n))

这一步分析每对细胞类型间通讯信号涉及的生物学通路。getHyperPathway函数执行超几何检验,识别在各细胞对通讯中显著富集的通路。结果被整合到myPub.df中,为后续可视化做准备。

气泡图可视化通路富集

使用气泡图可视化通路富集结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制气泡图
p <- plotBubble(myPub.df)
print(p)
ggsave("pathway_enrichment_bubble.pdf", p, width=12, height=10)

气泡图直观展示了不同细胞对之间显著富集的通路。气泡大小表示富集程度,颜色表示统计显著性,帮助我们识别关键的信号通路。

环形图可视化细胞间通讯

接下来,使用环形图可视化细胞间通讯网络:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 定义细胞类型颜色
cell_color <- data.frame(color=c('#e31a1c','#1f78b4',
                                '#e78ac3','#ff7f00'), 
                         stringsAsFactors = FALSE)
rownames(cell_color) <- c("SSC", "SPGing", "SPGed", "ST")

# 绘制环形图
ViewInterCircos(object = mt, 
                font = 2, 
                cellColor = cell_color,        # 细胞类型颜色
                lrColor = c("#F16B6F", "#84B1ED"),  # 配体受体颜色
                arr.type = "big.arrow",        # 箭头类型
                arr.length = 0.04,             # 箭头长度
                trackhight1 = 0.05,            # 轨道高度
                slot = "expr_l_r_log2_scale",  # 使用的数据槽
                linkcolor.from.sender = TRUE,  # 连线颜色基于发送细胞
                linkcolor = NULL,              # 自定义连线颜色
                gap.degree = 2,                # 间隔角度
                order.vector = c('ST', "SSC", "SPGing", "SPGed"),  # 细胞排序
                trackhight2 = 0.032,           # 第二轨道高度
                track.margin2 = c(0.01,0.12),  # 轨道边距
                DIY = FALSE)                   # 是否自定义

环形图是可视化细胞间通讯网络的强大工具。每个细胞类型在圆周上占据一段弧,连线表示细胞间的通讯关系。线的宽度表示通讯强度,颜色区分不同的信号。参数可以调整图形的各个方面,如细胞颜色、排序、连线样式等。

热图可视化配体-受体对表达

热图可以直观展示配体-受体对在不同细胞类型对之间的表达情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制热图
viewPheatmap(object = mt, 
             slot = "expr_l_r_log2_scale",  # 数据槽
             show_rownames = T,             # 显示行名
             show_colnames = T,             # 显示列名
             treeheight_row = 0,            # 行聚类树高度
             treeheight_col = 10,           # 列聚类树高度
             cluster_rows = T,              # 行聚类
             cluster_cols = F,              # 列不聚类
             fontsize = 5,                  # 字体大小
             angle_col = "45",              # 列名角度
             main = "score")                # 主标题

热图展示了每对配体-受体在所有细胞类型对之间的表达分数。行代表配体-受体对,列代表细胞类型对。颜色强度反映通讯强度,聚类有助于识别相似的通讯模式。

配体-受体-转录因子关系分析

CellCall的一个重要特点是能够分析配体-受体激活的下游转录因子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 分析特定细胞对的配体-受体-转录因子关系
mt <- LR2TF(object = mt, 
            sender_cell = "ST",              # 发送信号的细胞
            recevier_cell = "SSC",           # 接收信号的细胞
            slot = "expr_l_r_log2_scale",    # 数据槽
            org = "Homo sapiens")            # 物种

# 查看结果
head(mt@reductions$sankey)

Sankey图可视化信号传递

使用Sankey图可视化配体-受体-转录因子关系:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 加载networkD3包
if(!require(networkD3)){
  BiocManager::install("networkD3")
}

# 绘制Sankey图
sank <- LRT.Dimplot(mt, 
                   fontSize = 8,           # 字体大小
                   nodeWidth = 30,         # 节点宽度
                   height = NULL, 
                   width = 1200,           # 图形宽度
                   sinksRight = FALSE,     # 汇点位置
                   DIY.color = FALSE)      # 自定义颜色

# 保存为交互式HTML文件
networkD3::saveNetwork(sank, "ST-SSC_full.html")

Sankey图是一种流程图,直观展示配体-受体-转录因子之间的关系。节点表示分子,连线表示它们之间的关系,连线宽度表示关系强度。这种可视化帮助识别关键的信号转导路径。

自定义Sankey图

进一步定制Sankey图,突出显示重要的信号通路:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 准备数据
library(magrittr)
library(dplyr)
tmp <- mt@reductions$sankey
tmp1 <- dplyr::filter(tmp, weight1 > 0)  # 过滤有效的配体-受体关系
tmp.df <- trans2tripleScore(tmp1)        # 转换权重

# 定义节点颜色
mycol.vector = c('#9e0142','#d53e4f','#f46d43','#fdae61','#fee08b',
                '#e6f598','#abdda4','#66c2a5','#3288bd','#5e4fa2')
elments.num <- length(unique(tmp.df$Ligand))
mycol.vector.list <- rep(mycol.vector, times=ceiling(elments.num/length(mycol.vector)))

# 绘制自定义Sankey图
sankey_graph(df = tmp.df, 
             axes = 1:3,                         # 展示三列数据
             mycol = mycol.vector.list[1:elments.num],  # 颜色
             isGrandSon = TRUE,                  # 显示"孙子"关系
             font.size = 2,                      # 字体大小
             boder.col = "white",                # 边框颜色
             set_alpha = 0.8)                    # 透明度

这一步提供了更高度定制的Sankey图,专注于有效的配体-受体关系,使用自定义颜色方案,并调整了节点和连线的显示方式。

基因集富集分析

最后,分析转录因子调控的下游基因并进行可视化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看转录因子基因集
mt@data$gsea.list$SSC@geneSets
ssc.tf <- names(mt@data$gsea.list$SSC@geneSets)

# GSEA富集图可视化
getGSEAplot(gsea.list = mt@data$gsea.list, 
            geneSetID = c("CREBBP", "ESR1", "FOXO3"),  # 感兴趣的转录因子
            myCelltype = "SSC",                         # 细胞类型
            fc.list = mt@data$fc.list,                  # 差异表达数据
            selectedGeneID = mt@data$gsea.list$SSC@geneSets$CREBBP[1:10],  # 选择的基因
            mycol = NULL)                               # 颜色

# 过滤显著的转录因子
egmt <- mt@data$gsea.list$SSC
egmt.df <- data.frame(egmt)
flag.index <- which(egmt.df$p.adjust < 0.05)

# 绘制富集山脊图
ridgeplot.DIY(x = egmt, 
              fill = "p.adjust",             # 填充颜色基于调整后p值
              showCategory = flag.index,     # 显示类别
              core_enrichment = T,           # 核心富集
              orderBy = "NES",               # 排序依据
              decreasing = FALSE)            # 排序方向

这一步分析转录因子调控的下游靶基因,并进行基因集富集分析。GSEA富集图展示了特定转录因子对应基因集的富集情况,山脊图则直观展示多个转录因子的富集情况,帮助理解信号通路激活的下游效应。

总结 CellCall提供了从细胞间通讯识别到下游转录调控的完整分析流程。通过这个教程,我们:

  1. 建立了细胞通讯模型
  2. 鉴定了重要的配体-受体对
  3. 将配体-受体信号与下游转录因子连接
  4. 用多种方法可视化了分析结果

这种分析方法不仅回答了"哪些细胞在通讯"的问题,还回答了"通讯如何影响接收细胞的功能",为理解复杂的细胞间相互作用提供了强大工具。

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

本文分享自 BioOmics 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备环境和加载数据
  • 创建CellCall对象
  • 计算细胞间通讯谱
  • 通路富集分析
  • 气泡图可视化通路富集
  • 环形图可视化细胞间通讯
  • 热图可视化配体-受体对表达
  • 配体-受体-转录因子关系分析
  • Sankey图可视化信号传递
  • 自定义Sankey图
  • 基因集富集分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档