随着单细胞测序技术飞速发展,探索细胞间对话机制成为可能。细胞通讯通过配体-受体互作传递信号,是组织功能和疾病发展的关键。CellCall是一款独特的分析工具,它不仅识别配体-受体互作,还追踪信号如何激活转录因子并调控下游基因。这种"配体-受体-转录因子"三元框架提供了信号传递的完整视图,深化了我们对细胞通讯的理解。本教程从环境配置到结果解读,全面掌握CellCall分析流程。无论你是新手还是专家,都能通过这篇指南挖掘细胞对话的奥秘,揭示组织微环境中的信号网络。
首先,我们需要安装并加载必要的包,并导入示例数据:
# 加载必要的包
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对象:
# 创建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对象,这是后续分析的基础。参数解释:
现在,我们计算细胞间的通讯谱:
# 计算通讯谱
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函数完成以下任务:
每个参数都会影响分析的严格程度,可以根据数据特点调整。
为了理解细胞通讯的功能意义,我们进行通路富集分析:
# 获取表达数据
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中,为后续可视化做准备。
使用气泡图可视化通路富集结果:
# 绘制气泡图
p <- plotBubble(myPub.df)
print(p)
ggsave("pathway_enrichment_bubble.pdf", p, width=12, height=10)
气泡图直观展示了不同细胞对之间显著富集的通路。气泡大小表示富集程度,颜色表示统计显著性,帮助我们识别关键的信号通路。
接下来,使用环形图可视化细胞间通讯网络:
# 定义细胞类型颜色
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) # 是否自定义
环形图是可视化细胞间通讯网络的强大工具。每个细胞类型在圆周上占据一段弧,连线表示细胞间的通讯关系。线的宽度表示通讯强度,颜色区分不同的信号。参数可以调整图形的各个方面,如细胞颜色、排序、连线样式等。
热图可以直观展示配体-受体对在不同细胞类型对之间的表达情况:
# 绘制热图
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的一个重要特点是能够分析配体-受体激活的下游转录因子:
# 分析特定细胞对的配体-受体-转录因子关系
mt <- LR2TF(object = mt,
sender_cell = "ST", # 发送信号的细胞
recevier_cell = "SSC", # 接收信号的细胞
slot = "expr_l_r_log2_scale", # 数据槽
org = "Homo sapiens") # 物种
# 查看结果
head(mt@reductions$sankey)
使用Sankey图可视化配体-受体-转录因子关系:
# 加载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图,突出显示重要的信号通路:
# 准备数据
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图,专注于有效的配体-受体关系,使用自定义颜色方案,并调整了节点和连线的显示方式。
最后,分析转录因子调控的下游基因并进行可视化:
# 查看转录因子基因集
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提供了从细胞间通讯识别到下游转录调控的完整分析流程。通过这个教程,我们:
这种分析方法不仅回答了"哪些细胞在通讯"的问题,还回答了"通讯如何影响接收细胞的功能",为理解复杂的细胞间相互作用提供了强大工具。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有