🛤️ 轨迹

轨迹分析教程

Monocle3 + ScVelo 发育轨迹推断

📖 18分钟💻 12+代码

🎯 主流工具

Monocle 3
主流轨迹分析
ScVelo
RNA速率分析
PAGA
分区图抽象

💻 Monocle 3 安装

# 安装Monocle3
devtools::install_github("cole-trapnell-lab/monocle3")

library(monocle3)
library(Seurat)

# Seurat转Monocle
cds <- as.cell_data_set(seurat_object)
cds <- cluster_cells(cds, resolution=1e-5)
cds <- learn_graph(cds)
cds <- order_cells(cds)

🛤️ 轨迹推断

# 基本流程
cds <- preprocess_cds(cds, num_dim = 50)
cds <- reduce_dimension(cds)
cds <- cluster_cells(cds)

# 学习轨迹图
cds <- learn_graph(cds)

# 选择根节点(起始点)
cds <- order_cells(cds, root_pr_nodes = "Y_1")

# 可视化
plot_cells(cds, color_cells_by = "pseudotime")
plot_cells(cds, label_groups_by_cluster = FALSE)

🔄 ScVelo RNA速率

# 安装
pip install scvelo

# 基本用法
import scvelo as scv

# 加载数据
adata = scv.read('data.h5ad', cache=True)

# 预处理
scv.pp.filter_genes(adata)
scv.pp.filter_cells(adata)
scv.pp.moments(adata, n_pcs=30, n_neighbors=30)

# 计算RNA速率
scv.tl.velocity(adata, mode='stochastic')
scv.tl.velocity_graph(adata)

# 可视化
scv.pl.velocity_embedding_stream(adata, basis='umap')

📈 差异表达分析

# 沿着轨迹差异表达
cds_vert <- graph_test(cds, neighbor_graph = "principal_graph", k = 25)

# 找关键基因
genes_to_label <- cds_vert %>%
  filter(q_value < 0.01) %>%
  group_by(partition) %>%
  top_n(10, morans_test_statistic)

# 可视化
plot_genes_in_pseudotime(cds[genes_to_label$gene_short_name,])

❓ 常见问题

Q: 轨迹不连续?

A: 调整resolution或使用PAGA预处理

Q: 如何选根节点?

A: 选择最早分化的细胞类型或已知起点