189_全基因组倍性分析¶
一句话概述¶
全基因组倍性分析通过K-mer频谱分析(GenomeScope2/Smudgeplot)、流式细胞术、等位基因频率分布(nQuire/ploidyNGS)等方法确定物种的染色体倍性水平,是基因组组装和进化研究的前置关键步骤。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| 倍性定义 | 细胞中染色体组数(n=单倍体, 2n=二倍体, 3n=三倍体…) |
| K-mer分析 | 通过K-mer频率分布形状判断倍性 |
| GenomeScope2 | 支持多倍体的K-mer频谱分析工具 |
| Smudgeplot | K-mer对比率分析估计倍性 |
| nQuire | 基于BAF的NGS倍性估计 |
| 流式细胞术 | 实验方法直接测量DNA含量 |
| 同源vs异源多倍体 | AAAA vs AABB,分析策略不同 |
| 应用场景 | 基因组组装前评估、物种进化研究、农业育种 |
步骤详解¶
第一步:K-mer频谱倍性判断¶
白话解释:K-mer是DNA序列中长度为K的连续片段。不同倍性的基因组,K-mer频率图的形状不同。二倍体有两个峰,三倍体有三个峰,四倍体有四个峰。
技术细节:杂合位点会产生频率为覆盖度一半的K-mer(因为只出现在一个拷贝上),纯合位点产生全覆盖度的K-mer。多倍体的多个拷贝组合产生多个频率峰。
# 计算K-mer频率
jellyfish count -C -m 21 -s 10G -t 32 reads_R1.fq.gz reads_R2.fq.gz -o counts.jf
jellyfish histo -t 8 counts.jf > kmer_histo.txt
# 用GenomeScope2自动尝试不同倍性
for p in 1 2 3 4 6; do
genomescope2 \
-i kmer_histo.txt \
-o genomescope_p${p} \
-k 21 \
-p ${p} \
--testing
done
# 比较不同倍性模型的拟合优度
for p in 1 2 3 4 6; do
echo "Ploidy ${p}:"
grep "GenomeScope" genomescope_p${p}/summary.txt
done
# Smudgeplot验证
# 提取杂合K-mer对
jellyfish dump -c -L 2 counts.jf > kmer_dump.txt
smudgeplot.py hetkmers -o pairs kmer_dump.txt
smudgeplot.py plot pairs_coverages.tsv -o smudgeplot_result
# Smudgeplot会显示最可能的倍性和预测置信度
第二步:基于测序数据的倍性估计¶
白话解释:如果已经有比对好的BAM文件,可以直接分析SNP位点的等位基因频率来判断倍性。
# nQuire基于BAF分析
nQuire create -b sample.bam -o sample
nQuire denoise sample.bin -o sample_dn
nQuire lrdmodel sample_dn.bin
# ploidyNGS
ploidyNGS --bam sample.bam --out ploidy_result
# ConPADE(基于等位基因计数的倍性估计)
python conpade.py -b sample.bam -r reference.fa -o conpade_result
第三步:流式细胞术倍性验证¶
白话解释:流式细胞术是实验方法,用荧光染料标记DNA,通过测量每个细胞的荧光强度来推算DNA含量。与已知倍性的对照物种比较就能确定倍性。
技术细节:常用DAPI或PI(碘化丙啶)染色。DNA含量与荧光强度成正比。2C峰(G1期)和4C峰(G2期)之间的比例也可以提供信息。
# 流式数据分析(R)
library(flowCore)
# 读取FCS文件
fcs <- read.FCS("ploidy_analysis.fcs")
# 提取PI/DAPI荧光通道
dna_signal <- exprs(fcs)[, "FL2-A"] # 根据具体通道调整
# 绘制直方图
hist(dna_signal, breaks = 200, main = "DNA Content Distribution",
xlab = "Fluorescence Intensity", col = "steelblue", border = NA)
# 与对照比较
# 如果样品的G1峰是对照(2n)的1.5倍 → 三倍体
# 如果样品的G1峰是对照(2n)的2倍 → 四倍体
第四步:可视化与报告¶
import matplotlib.pyplot as plt
import numpy as np
# 不同倍性的K-mer频谱模拟
fig, axes = plt.subplots(1, 4, figsize=(20, 4))
x = np.linspace(0, 200, 1000)
cov = 50
titles = ['Haploid (1n)', 'Diploid (2n)', 'Triploid (3n)', 'Tetraploid (4n)']
for idx, (ploidy, ax, title) in enumerate(zip([1, 2, 3, 4], axes, titles)):
y = np.zeros_like(x)
for k in range(1, ploidy + 1):
peak = cov * k / ploidy
y += np.exp(-(x - peak)**2 / (2 * (peak * 0.15)**2)) * (ploidy - k + 1)
ax.plot(x, y, 'b-', linewidth=2)
ax.fill_between(x, y, alpha=0.3)
ax.set_title(title)
ax.set_xlabel('K-mer Coverage')
ax.set_ylabel('Frequency')
for k in range(1, ploidy + 1):
peak = cov * k / ploidy
ax.axvline(x=peak, color='red', linestyle='--', alpha=0.5)
plt.tight_layout()
plt.savefig('ploidy_kmer_patterns.png', dpi=300)
实战命令速查¶
# 完整倍性检测流程
jellyfish count -C -m 21 -s 5G -t 16 reads.fq.gz -o counts.jf
jellyfish histo counts.jf > histo.txt
genomescope2 -i histo.txt -o gs_out -k 21 -p 2 # 测试二倍体
genomescope2 -i histo.txt -o gs_out3 -k 21 -p 3 # 测试三倍体
smudgeplot.py hetkmers -o pairs kmer_dump.txt
smudgeplot.py plot pairs_coverages.tsv -o smudge
# 基于BAM的快速检测
nQuire create -b aligned.bam -o sample; nQuire lrdmodel sample.bin
面试常问点¶
Q1: 如何从K-mer频谱图判断倍性? A: 观察峰的数量和位置。二倍体有两个峰(杂合峰在1/2覆盖度,纯合峰在全覆盖度)。三倍体有三个峰(1/3, 2/3, 3/3),四倍体有四个峰。GenomeScope2通过拟合不同倍性模型并比较AIC/BIC来自动判断最佳倍性。
Q2: 同源多倍体和异源多倍体在分析上有什么区别? A: 同源多倍体(如AAAA)的染色体完全同源,杂合度均匀分布。异源多倍体(如AABB)不同亚基因组间差异大,K-mer频谱更复杂。异源多倍体的subgenome可能需要分别组装。
Q3: 为什么倍性分析是基因组组装的前置步骤? A: 组装工具需要知道倍性来正确处理单倍型。hifiasm用--n-hap参数指定倍性,Canu用-p参数。错误的倍性假设会导致组装不完整或重复。
Q4: Smudgeplot的原理是什么? A: Smudgeplot分析杂合K-mer对的覆盖度比率。在二倍体中,杂合K-mer对的两个K-mer覆盖度比率接近1:1。在三倍体中,比率可能是1:2或2:1。不同比率的分布模式指示倍性。
Q5: 倍性分析需要多少测序数据量? A: K-mer分析建议至少30-50x覆盖度以获得清晰的频谱峰。低覆盖度时峰重叠严重,难以区分。对于大基因组多倍体物种,可能需要更高覆盖度。
易错点¶
- K值选择不当:K太小产生太多重复K-mer,K太大增加错误率。通常用21或31
- 测序数据质量差:接头序列和低质量碱基会干扰K-mer分析,应先质控
- 混淆倍性和重复含量:高重复含量的二倍体基因组可能被误判为多倍体
- 忽略杂合度影响:纯合物种(近交系)的K-mer频谱缺少杂合峰
- GenomeScope拟合失败:非常高倍性(>6n)或复杂杂合模式可能导致模型不收敛
补充知识¶
倍性分析工具对比¶
| 工具 | 输入 | 方法 | 支持倍性 |
|---|---|---|---|
| GenomeScope2 | K-mer频谱 | 模型拟合 | 1-6n |
| Smudgeplot | K-mer对 | 比率分析 | 2-12n |
| nQuire | BAM | BAF分布 | 2-4n |
| ploidyNGS | BAM | 深度分析 | 任意 |
| 流式细胞术 | 组织 | DNA含量 | 任意 |
常见物种倍性¶
| 物种 | 倍性 | 基因组大小 |
|---|---|---|
| 人类 | 2n | 3.2Gb |
| 小麦 | 6n | 16Gb |
| 棉花 | 4n | 2.5Gb |
| 甘蔗 | 8-12n | ~10Gb |
| 草莓(栽培) | 8n | 810Mb |
| 拟南芥 | 2n | 135Mb |