跳转至

190_单细胞线粒体突变追踪

一句话概述

利用单细胞RNA-seq或ATAC-seq数据中线粒体reads的体细胞突变作为天然的细胞"条形码",追踪细胞谱系和克隆关系,无需额外实验标记即可重建克隆进化树。

核心知识点表格

知识点说明
线粒体突变特点高突变率、母系遗传、多拷贝、不重组
异质性(heteroplasmy)同一细胞中线粒体DNA存在多种变体的比例
自然条码体细胞mtDNA突变可作为谱系追踪标记
MAEGATK/mgatk专用的单细胞线粒体突变检测工具
谱系追踪根据共享的突变构建细胞谱系树
适用数据scRNA-seq和scATAC-seq中的线粒体reads
质控要求需要足够的线粒体reads覆盖度
分析工具mgatk、MAEGATK、Signac(mtDNA模块)、MQuad

步骤详解

第一步:理解线粒体突变追踪原理

白话解释:每个细胞有成百上千个线粒体,每个线粒体有自己的DNA(~16.5kb)。线粒体DNA突变率很高,随细胞分裂积累突变。同一个祖先细胞的后代会共享相同的线粒体突变,就像家族姓氏一样,可以用来追踪"家族关系"。

技术细节:线粒体DNA(mtDNA)的突变率是核DNA的10-20倍,主要因为缺乏高效的修复机制。异质性(heteroplasmy)表示一个细胞中某个mtDNA位点突变和野生型的比例。当母细胞分裂时,mtDNA随机分配到子细胞(遗传瓶颈效应),导致子细胞的异质性水平可能不同,形成独特的"突变指纹"。

第二步:使用mgatk提取线粒体突变

# 安装mgatk
pip install mgatk

# 从10x CellRanger BAM文件提取线粒体变异
mgatk tenx \
    -i possorted_genome_bam.bam \
    -o mgatk_output \
    -c filtered_barcodes.tsv \
    -bt CB \
    -b chrM \
    --nsamples 1000 \
    --ncores 16

# 输出文件
# mgatk_output/
#   final/
#     chrM.variant_stats.tsv.gz     # 变异统计
#     chrM.coverage.txt.gz           # 覆盖度
#     mgatk.rds                       # R对象

第三步:R中分析线粒体变异

library(Signac)
library(Seurat)
library(ggplot2)

# 加载mgatk结果
mgatk <- ReadMGATK("mgatk_output/final/")

# 创建Assay
seurat_obj[["mito"]] <- CreateAssayObject(counts = mgatk$counts)
seurat_obj <- AddMetaData(seurat_obj, metadata = mgatk$depth, col.name = "mtDNA_depth")

# 质控:过滤低覆盖度细胞
VlnPlot(seurat_obj, features = "mtDNA_depth", pt.size = 0)
seurat_obj <- subset(seurat_obj, mtDNA_depth > 10)  # 最低10x线粒体覆盖度

# 识别信息性变异位点(高变异、真实的体细胞突变)
# 使用变异等位基因频率(VAF)
variable_sites <- IdentifyVariants(seurat_obj, assay = "mito", refallele = mgatk$refallele)

# 过滤信息性位点
# strand_correlation > 0.65: 正负链一致性
# vmr > 0.01: 变异足够大
# mean_coverage > 2: 足够的覆盖度
high_conf <- subset(variable_sites,
                     subset = n_cells_conf_detected >= 5 &
                       strand_correlation >= 0.65 &
                       vmr > 0.01)

informative_variants <- high_conf$variant
cat("信息性变异位点数:", length(informative_variants), "\n")

第四步:构建克隆树

# 提取变异等位基因频率矩阵
DefaultAssay(seurat_obj) <- "mito"
vaf_matrix <- GetAssayData(seurat_obj, slot = "data")[informative_variants, ]

# 基于VAF进行聚类
# 方法1:简单层次聚类
library(pheatmap)
pheatmap(as.matrix(vaf_matrix),
         show_colnames = FALSE,
         clustering_distance_rows = "correlation",
         clustering_distance_cols = "correlation",
         main = "Mitochondrial Mutation VAF")

# 方法2:使用Seurat标准流程
seurat_obj <- ScaleData(seurat_obj, features = informative_variants)
seurat_obj <- RunPCA(seurat_obj, features = informative_variants, reduction.name = "mito_pca")
seurat_obj <- RunUMAP(seurat_obj, reduction = "mito_pca", dims = 1:10,
                       reduction.name = "mito_umap")
seurat_obj <- FindNeighbors(seurat_obj, reduction = "mito_pca", dims = 1:10)
seurat_obj <- FindClusters(seurat_obj, resolution = 0.5)

# 可视化
DimPlot(seurat_obj, reduction = "mito_umap", label = TRUE) +
  ggtitle("Clonal Structure (mtDNA mutations)")

# 方法3:构建系统发育树
library(ape)
dist_matrix <- dist(t(as.matrix(vaf_matrix)))
tree <- nj(dist_matrix)
plot(tree, type = "unrooted", show.tip.label = FALSE,
     main = "Cell Lineage Tree (mtDNA)")

第五步:整合scRNA-seq和线粒体谱系信息

# 将线粒体克隆信息与细胞类型注释整合
# 检查不同克隆中的细胞类型分布
table(seurat_obj$mito_clusters, seurat_obj$cell_type)

# 可视化特定突变在UMAP上的分布
FeaturePlot(seurat_obj, features = c("3243A>G", "8344A>G"),
            reduction = "umap", min.cutoff = 0.01)

# 克隆-细胞类型桑基图
library(ggalluvial)
clone_celltype <- as.data.frame(table(
  Clone = seurat_obj$mito_clusters,
  CellType = seurat_obj$cell_type
))

ggplot(clone_celltype, aes(axis1 = Clone, axis2 = CellType, y = Freq)) +
  geom_alluvium(aes(fill = Clone), width = 0.3) +
  geom_stratum(width = 0.3) +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)), size = 3) +
  theme_minimal() +
  ggtitle("Clone-CellType Relationship")

实战命令速查

# mgatk从10x BAM提取
mgatk tenx -i possorted.bam -o output/ -c barcodes.tsv -bt CB -b chrM --ncores 16

# 检查BAM中线粒体reads
samtools view -c -F 4 possorted.bam chrM

# 每个细胞的线粒体覆盖度
samtools view -F 4 possorted.bam chrM | grep -oP 'CB:Z:\K[^ ]+' | sort | uniq -c | sort -rn

面试常问点

Q1: 为什么线粒体突变适合做谱系追踪? A: (1)高突变率(核DNA的10-20倍)产生足够的信息性位点;(2)多拷贝(每个细胞100-10000个mtDNA)保证覆盖度;(3)母系遗传无重组,突变谱稳定传递;(4)scRNA-seq/scATAC-seq数据中已包含大量线粒体reads,无需额外实验。

Q2: 异质性水平在谱系追踪中有什么意义? A: 异质性水平(VAF)反映突变在细胞中的比例。高VAF突变可能是早期突变(更多mtDNA拷贝携带),低VAF是晚期突变。共享相同异质性模式的细胞可能来自同一谱系。

Q3: 这个方法的主要局限是什么? A: (1)分辨率有限,mtDNA只有~16.5kb,能提供的变异位点有限;(2)mtDNA覆盖度不均匀,某些细胞太低无法使用;(3)同型突变(homoplasmy=100%)缺乏信息性;(4)需要区分体细胞突变和RNA编辑/测序错误。

Q4: 如何区分真实的mtDNA突变和测序错误? A: (1)正负链一致性检查(strand_correlation>0.65);(2)变异在多个细胞中共现;(3)足够的覆盖深度支持;(4)排除已知的RNA编辑位点;(5)利用核基因组中的线粒体假基因(NUMTs)过滤。

Q5: 除了线粒体突变,还有什么方法可以做单细胞谱系追踪? A: (1)CRISPR barcode(工程化方法,如scGESTALT);(2)体细胞核突变(需要深度测序);(3)转座子插入位点;(4)表观遗传标记(如DNA甲基化模式);(5)V(D)J重排(免疫细胞特异)。

易错点

  1. NUMTs干扰:核基因组中有线粒体假基因片段,会产生假突变信号
  2. RNA编辑混淆:线粒体转录本存在RNA编辑,不应被当作DNA突变
  3. 覆盖度太低:线粒体覆盖度<5x的细胞不适合做变异检测
  4. 均质突变无信息:VAF=0或100%的位点没有谱系追踪价值
  5. 批次效应:不同实验批次的mtDNA覆盖度和error profile可能不同

补充知识

线粒体基因组基本信息

  • 长度:约16,569bp(人类)
  • 编码基因:37个(13个蛋白、22个tRNA、2个rRNA)
  • 拷贝数:每个细胞100-10,000个
  • 突变率:核DNA的10-17倍
  • 遗传方式:母系遗传,无重组

工具对比

工具输入特点适用数据
mgatkBAM标准工具,Signac兼容scRNA/scATAC
MQuadBAM贝叶斯方法scRNA-seq
mitoVerseBAM综合分析框架scRNA/scATAC
MAEGATKBAMmgatk前身scRNA-seq