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重排(免疫细胞特异)。
易错点¶
- NUMTs干扰:核基因组中有线粒体假基因片段,会产生假突变信号
- RNA编辑混淆:线粒体转录本存在RNA编辑,不应被当作DNA突变
- 覆盖度太低:线粒体覆盖度<5x的细胞不适合做变异检测
- 均质突变无信息:VAF=0或100%的位点没有谱系追踪价值
- 批次效应:不同实验批次的mtDNA覆盖度和error profile可能不同
补充知识¶
线粒体基因组基本信息¶
- 长度:约16,569bp(人类)
- 编码基因:37个(13个蛋白、22个tRNA、2个rRNA)
- 拷贝数:每个细胞100-10,000个
- 突变率:核DNA的10-17倍
- 遗传方式:母系遗传,无重组
工具对比¶
| 工具 | 输入 | 特点 | 适用数据 |
|---|---|---|---|
| mgatk | BAM | 标准工具,Signac兼容 | scRNA/scATAC |
| MQuad | BAM | 贝叶斯方法 | scRNA-seq |
| mitoVerse | BAM | 综合分析框架 | scRNA/scATAC |
| MAEGATK | BAM | mgatk前身 | scRNA-seq |