跳转至

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: 细胞类型注释告诉你"这个细胞是什么",谱系追踪告诉你"这个细胞从哪里来"。整合两者可以回答"某种细胞类型是由哪个祖先细胞分化而来"和"同一祖先的后代是否总分化为相同的细胞类型"等问题。

易错点

  1. 条码dropout严重:CRISPR条码的dropout(丢失)导致信息缺失,影响树的准确性
  2. 突变饱和:条码位点全部被编辑后失去区分能力
  3. 混淆收敛进化:不同谱系独立产生相同突变,被错误地归为同一谱系
  4. 忽略细胞死亡:谱系树只显示存活细胞,死亡的分支不可见
  5. 采样偏差:仅捕获一小部分细胞可能遗漏重要谱系

补充知识

主要谱系追踪技术

技术类型标记时间分辨率物种限制
scGESTALTCRISPR合成条码前瞻斑马鱼等
CARLINCRISPR诱导性前瞻小鼠
LINNAEUSCRISPR合成条码前瞻斑马鱼
mtDNA突变天然线粒体突变回溯任何物种
核突变天然体细胞SNV回溯任何物种
V(D)J天然重排序列回溯免疫细胞