194_单细胞谱系追踪¶
一句话概述¶
单细胞谱系追踪利用天然或工程化的遗传标记(线粒体突变、CRISPR条码、体细胞突变)记录细胞分裂历史,重建单细胞分辨率的克隆进化树,揭示发育、肿瘤进化和细胞命运决定的动态过程。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| 谱系追踪定义 | 记录细胞分裂历史并重建克隆关系 |
| 天然标记 | 线粒体突变、体细胞核突变、转座子插入 |
| 工程化标记 | CRISPR条码(scGESTALT, CARLIN, LINNAEUS) |
| 回溯追踪 | 从终态推断历史(体细胞突变方法) |
| 前瞻追踪 | 预先标记后追踪后代(CRISPR方法) |
| 系统发育树 | 基于共享突变构建细胞关系树 |
| 应用场景 | 发育生物学、肿瘤异质性、组织稳态、再生 |
| 分析工具 | Cassiopeia、LineageOT、CoSpar |
步骤详解¶
第一步:理解谱系追踪方法分类¶
白话解释:追踪细胞的"家谱"有两种策略。一种是提前给细胞贴标签(工程化标记),看标签怎么传给后代。另一种是事后分析细胞的天然"伤疤"(如DNA突变),推断亲缘关系。
技术细节:前瞻性方法(prospective)在实验开始前引入可遗传的条码,通过时间推移追踪。回溯性方法(retrospective)利用自然积累的体细胞突变作为谱系标记。两者各有优劣:工程化方法需要转基因但条码信息量大;天然标记不需要改造但信息量有限。
第二步:CRISPR条码谱系追踪¶
白话解释:在细胞中安装一段可以被CRISPR不断编辑的DNA"记录带"。Cas9在不同时间切割不同位置,产生不同的突变组合。同一谱系的细胞会有相似的突变模式。
# CRISPR条码数据分析(使用Cassiopeia)
# pip install cassiopeia-lineage
import cassiopeia as cas
import pandas as pd
import numpy as np
# 读取条码数据
# 格式:每行一个细胞,每列一个条码位点,值为等位基因状态
# 0=未编辑, 1,2,3...=不同编辑结果, -1=dropout
barcode_matrix = pd.read_csv("barcode_allele_table.csv", index_col=0)
# 创建CassiopeiaTree对象
tree = cas.data.CassiopeiaTree(
character_matrix=barcode_matrix,
cell_meta=cell_metadata # 可选的细胞注释
)
# 使用Cassiopeia-Greedy重建谱系树
greedy_solver = cas.solver.VanillaGreedySolver()
greedy_solver.solve(tree)
# 或使用更精确的ILP求解器
# ilp_solver = cas.solver.ILPSolver()
# ilp_solver.solve(tree)
# 或使用最大似然方法
# ml_solver = cas.solver.MaximumLikelihoodSolver()
# ml_solver.solve(tree)
# 可视化谱系树
cas.pl.plot_matplotlib(tree,
meta_data=["cell_type"],
clade_colors={"cell_type": color_map})
第三步:体细胞突变谱系追踪¶
# 基于体细胞SNV的谱系追踪
import numpy as np
from scipy.cluster.hierarchy import linkage, dendrogram
from scipy.spatial.distance import pdist
# 突变矩阵:行=细胞,列=突变位点,值=0/1
mutation_matrix = np.array([
[1, 1, 0, 0, 0, 1], # Cell1
[1, 1, 0, 0, 1, 0], # Cell2
[1, 1, 1, 0, 0, 0], # Cell3
[0, 0, 0, 1, 0, 0], # Cell4
[0, 0, 0, 1, 1, 0], # Cell5
])
cell_names = [f"Cell{i}" for i in range(1, 6)]
# 基于Hamming距离的层次聚类
dist = pdist(mutation_matrix, metric='hamming')
Z = linkage(dist, method='average')
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 5))
dendrogram(Z, labels=cell_names, ax=ax)
ax.set_title("Cell Lineage Tree (Somatic Mutations)")
ax.set_ylabel("Distance")
plt.tight_layout()
plt.savefig("lineage_tree.png", dpi=300)
第四步:线粒体突变谱系追踪¶
# 使用mgatk + Signac进行线粒体谱系分析
library(Signac)
library(Seurat)
# 加载mgatk结果
mgatk <- ReadMGATK("mgatk_output/final/")
seurat_obj[["mito"]] <- CreateAssayObject(counts = mgatk$counts)
# 识别信息性变异
variants <- IdentifyVariants(seurat_obj, assay = "mito", refallele = mgatk$refallele)
informative <- subset(variants, n_cells_conf_detected >= 5 & strand_correlation >= 0.65)
# 构建谱系树
library(ape)
vaf_matrix <- GetAssayData(seurat_obj, assay = "mito")[informative$variant, ]
dist_mat <- dist(t(as.matrix(vaf_matrix)))
tree <- nj(dist_mat)
# 将谱系与细胞类型关联
plot(tree, type = "fan", show.tip.label = FALSE)
tiplabels(pch = 19, col = cell_type_colors[seurat_obj$cell_type], cex = 0.5)
legend("topleft", legend = names(cell_type_colors), col = cell_type_colors, pch = 19)
第五步:整合转录组与谱系信息¶
# 使用LineageOT进行谱系感知的最优传输
# pip install lineageot
import lineageot as lot
# 构建时间点之间的细胞对应关系
# 输入:多个时间点的scRNA-seq数据 + 谱系树
coupling = lot.fit_lineage_coupling(
adata_early, # 早期时间点
adata_late, # 晚期时间点
lineage_tree, # 谱系树
alpha=0.5 # 谱系信息权重
)
# 使用CoSpar进行克隆动态推断
# pip install cospar
import cospar as cs
# 准备数据
adata_orig = cs.pp.initialize_adata_object(adata)
cs.tl.infer_Tmap(adata_orig, smooth_array=[15, 10, 5],
method='OT', OT_epsilon=0.02)
cs.pl.fate_map(adata_orig, selected_fates=['CellType_A', 'CellType_B'])
实战命令速查¶
# Cassiopeia谱系重建
import cassiopeia as cas
tree = cas.data.CassiopeiaTree(character_matrix=barcodes)
cas.solver.VanillaGreedySolver().solve(tree)
# R中构建谱系树
library(ape)
tree <- nj(dist(t(mutation_matrix)))
plot(tree, type = "fan")
面试常问点¶
Q1: 前瞻性和回溯性谱系追踪的优缺点? A: 前瞻性(CRISPR条码):可在任何模式生物中使用,信息量大(数百个独立条码位点),可控制实验时间。缺点是需要转基因、Cas9持续活性可能有毒性。回溯性(天然突变):无需基因改造,可用于人类样本。缺点是突变率有限、信息量少、树的分辨率低。
Q2: Cassiopeia使用什么算法重建谱系树? A: Cassiopeia提供三类算法:(1)贪心算法(Greedy):快速但可能不是最优解;(2)整数线性规划(ILP):理论最优但计算量大;(3)混合方法:先贪心分大组,再ILP精化。选择取决于细胞数量和计算资源。
Q3: 谱系追踪在肿瘤研究中的应用? A: (1)追踪肿瘤起始细胞和克隆扩张;(2)揭示耐药克隆的先验存在vs药物诱导;(3)分析转移过程中的克隆选择;(4)研究肿瘤微环境中免疫细胞的克隆动态。
Q4: 如何评估谱系树的可靠性? A: (1)Bootstrap支持值;(2)已知谱系关系的回收率(如果有ground truth);(3)不同算法结果的一致性;(4)Robinson-Foulds距离比较。
Q5: 谱系追踪和细胞类型注释如何互补? A: 细胞类型注释告诉你"这个细胞是什么",谱系追踪告诉你"这个细胞从哪里来"。整合两者可以回答"某种细胞类型是由哪个祖先细胞分化而来"和"同一祖先的后代是否总分化为相同的细胞类型"等问题。
易错点¶
- 条码dropout严重:CRISPR条码的dropout(丢失)导致信息缺失,影响树的准确性
- 突变饱和:条码位点全部被编辑后失去区分能力
- 混淆收敛进化:不同谱系独立产生相同突变,被错误地归为同一谱系
- 忽略细胞死亡:谱系树只显示存活细胞,死亡的分支不可见
- 采样偏差:仅捕获一小部分细胞可能遗漏重要谱系
补充知识¶
主要谱系追踪技术¶
| 技术 | 类型 | 标记 | 时间分辨率 | 物种限制 |
|---|---|---|---|---|
| scGESTALT | CRISPR | 合成条码 | 前瞻 | 斑马鱼等 |
| CARLIN | CRISPR | 诱导性 | 前瞻 | 小鼠 |
| LINNAEUS | CRISPR | 合成条码 | 前瞻 | 斑马鱼 |
| mtDNA突变 | 天然 | 线粒体突变 | 回溯 | 任何物种 |
| 核突变 | 天然 | 体细胞SNV | 回溯 | 任何物种 |
| V(D)J | 天然 | 重排序列 | 回溯 | 免疫细胞 |