← 返回分析流程中心创建时间 2026/6/3 分析难度 高级 推荐场景 单细胞分析 预计耗时 3-5 天
Pipeline Detail
scRNA-Seq单细胞与空间组学
单细胞高级下游:拟时序、通讯、RNA velocity
面向 scRNA-seq 的高级下游分析流程,覆盖拟时序轨迹、细胞通讯、RNA velocity、起点选择、结果交叉验证和生物学解释。
Metadata
流程元数据
先看应用场景、输入输出和工具依赖,再进入正文命令细节。
Difficulty
高级
Scenario
单细胞分析
Estimated Time
3-5 天
Tools
SeuratMonocle3CellChatscVelo
Inputs
GTF
Outputs
UMAP
Workflow DAG
流程图
用步骤节点快速理解这个分析从原始数据到结果报告的流转关系。
STEP 1
→已注释 scRNA-seq 对象
STEP 2
→选择目标细胞群
STEP 3
→Monocle3/Slingshot 拟时序
STEP 4
→CellChat/NicheNet 通讯
STEP 5
→scVelo RNA velocity
STEP 6
→多结果交叉验证
STEP 7
→轨迹/网络/velocity 图
STEP 8
机制解释报告
Protocol
流程文档
正文保留 Markdown 排版、代码语言标识和表格样式,适合边学边复现。
单细胞高级下游:拟时序、通讯、RNA velocity
一、适用场景
基础 scRNA-seq 分析得到细胞类型和 marker 后,高级下游用于回答更深入的问题:
| 分析 | 主要问题 | 常用工具 |
|---|---|---|
| 拟时序 | 细胞是否存在连续状态转换或分化轨迹? | Monocle3、Slingshot、Palantir |
| 细胞通讯 | 细胞群之间可能通过哪些 ligand-receptor 互作? | CellChat、NicheNet、LIANA |
| RNA velocity | 细胞状态变化方向是什么? | velocyto、scVelo |
注意:这些方法都是推断,不能替代实验验证。结果必须结合 marker、样本背景、时间点和已知生物学知识解释。
二、整体流程图
flowchart TD
A[Seurat/Scanpy 基础分析对象] --> B[选择目标细胞群]
B --> C[重新降维聚类]
C --> D[Monocle3 / Slingshot 拟时序]
C --> E[CellChat / NicheNet 通讯]
C --> F[velocyto + scVelo RNA velocity]
D --> G[动态基因与分支基因]
E --> H[ligand-receptor 网络]
F --> I[velocity arrows 和 latent time]
G --> J[交叉验证候选机制]
H --> J
I --> J
J --> K[报告和实验验证候选]
三、拟时序 Monocle3
拟时序适合分析发育、分化、激活、疾病进展等连续状态。
library(monocle3)
library(SeuratWrappers)
target <- subset(seurat_obj, subset = celltype %in% c("Progenitor", "Intermediate", "Mature"))
cds <- as.cell_data_set(target)
cds <- cluster_cells(cds)
cds <- learn_graph(cds)
cds <- order_cells(
cds,
root_cells = colnames(cds)[colData(cds)$celltype == "Progenitor"]
)
plot_cells(
cds,
color_cells_by = "pseudotime",
label_cell_groups = FALSE,
label_leaves = TRUE,
label_branch_points = TRUE
)
关键点:
- 起点 root cells 需要根据生物学先验选择。
- 不要对完全无连续关系的细胞强行做拟时序。
- 分支点附近基因值得重点关注。
四、拟时序动态基因
deg_pseudo <- graph_test(
cds,
neighbor_graph = "principal_graph",
cores = 4
)
dynamic_genes <- deg_pseudo |>
dplyr::filter(q_value < 0.05) |>
dplyr::arrange(q_value)
write.csv(dynamic_genes, "monocle3_pseudotime_genes.csv")
解释示例:
GeneA 在 pseudotime 早期高表达,随后下降,可能标记祖细胞状态。
GeneB 在分支 2 后持续升高,可能参与成熟细胞命运决定。
五、CellChat 细胞通讯
library(CellChat)
data.input <- GetAssayData(seurat_obj, assay = "RNA", slot = "data")
meta <- seurat_obj@meta.data
cellchat <- createCellChat(
object = data.input,
meta = meta,
group.by = "celltype"
)
cellchat@DB <- CellChatDB.human
cellchat <- subsetData(cellchat)
cellchat <- identifyOverExpressedGenes(cellchat)
cellchat <- identifyOverExpressedInteractions(cellchat)
cellchat <- computeCommunProb(cellchat)
cellchat <- filterCommunication(cellchat, min.cells = 10)
cellchat <- computeCommunProbPathway(cellchat)
cellchat <- aggregateNet(cellchat)
netVisual_circle(
cellchat@net$count,
vertex.weight = as.numeric(table(cellchat@idents)),
weight.scale = TRUE,
label.edge = FALSE
)
图例解释:
| 元素 | 含义 |
|---|---|
| 节点 | 细胞类型 |
| 节点大小 | 细胞数量 |
| 连线 | 推断的通讯关系 |
| 连线粗细 | ligand-receptor 互作数量或强度 |
| 方向 | sender 到 receiver |
六、NicheNet 配体活性分析
NicheNet 适合从 receiver 细胞的差异基因反推 upstream ligands。
# 思路示意:
# 1. 定义 sender cell types
# 2. 定义 receiver cell type
# 3. 找 receiver 中处理组 vs 对照组 DEG
# 4. 用 NicheNet 预测哪些 ligand 最能解释这些 DEG
解释:
如果 macrophage 表达 TGFB1,fibroblast 中 TGF-beta response genes 上调,
NicheNet 可能将 TGFB1 排为高活性 ligand。
七、RNA velocity scVelo
RNA velocity 需要 spliced/unspliced count,通常由 velocyto 或 kallisto|bustools 生成 loom/h5ad。
velocyto run10x sample_cellranger_output ref/genes.gtf
import scvelo as scv
import scanpy as sc
adata = scv.read("sample.loom", cache=True)
scv.pp.filter_and_normalize(adata)
scv.pp.moments(adata, n_pcs=30, n_neighbors=30)
scv.tl.velocity(adata, mode="stochastic")
scv.tl.velocity_graph(adata)
scv.pl.velocity_embedding_stream(adata, basis="umap", color="celltype")
scv.tl.latent_time(adata)
scv.pl.scatter(adata, color="latent_time", color_map="gnuplot")
图例解释:
| 图 | 读法 |
|---|---|
| velocity stream | 箭头方向表示预测状态变化方向 |
| latent time | 越大表示越靠近推断终末状态 |
| phase portrait | spliced/unspliced 关系支持基因动态 |
八、三类结果如何交叉验证
| 发现 | 支持证据组合 |
|---|---|
| 分化方向 | Monocle3 pseudotime 与 scVelo arrows 方向一致 |
| 关键调控细胞 | CellChat 显示该细胞为强 sender,目标细胞沿拟时序变化 |
| 候选 ligand | sender 表达 ligand,receiver 有 receptor 且下游基因随 pseudotime 变化 |
| 关键基因 | 是动态基因、velocity gene,并出现在通路或通讯下游 |
示例结论:
Monocle3 显示 monocyte 向 macrophage 状态连续过渡,scVelo 箭头方向与该轨迹一致。
CellChat 进一步提示 fibroblast 到 macrophage 的 CSF1-CSF1R 通讯增强。
因此可以假设 fibroblast-derived CSF1 参与推动 macrophage 状态转换。
九、常见问题
| 问题 | 可能原因 | 建议 |
|---|---|---|
| 拟时序方向不合理 | root 选择错误或细胞群不连续 | 根据 marker 和时间点重新选择 root |
| 通讯结果过多 | 数据库互作多、阈值太宽 | 关注显著通路和组间变化 |
| RNA velocity 箭头混乱 | unspliced 信号弱、细胞周期影响 | 过滤低质量基因,分细胞群分析 |
| 三种结果不一致 | 方法假设不同 | 优先解释多证据支持的机制 |
十、主要交付物
- 目标细胞群重新聚类图
- pseudotime UMAP
- 分支和动态基因表
- ligand-receptor 通讯表
- 通讯 circle plot / bubble plot
- velocity stream plot
- latent time 图
- 多证据整合候选机制表
- 可验证候选 ligand、receptor、target gene 清单