跳转至

189_全基因组倍性分析

一句话概述

全基因组倍性分析通过K-mer频谱分析(GenomeScope2/Smudgeplot)、流式细胞术、等位基因频率分布(nQuire/ploidyNGS)等方法确定物种的染色体倍性水平,是基因组组装和进化研究的前置关键步骤。

核心知识点表格

知识点说明
倍性定义细胞中染色体组数(n=单倍体, 2n=二倍体, 3n=三倍体…)
K-mer分析通过K-mer频率分布形状判断倍性
GenomeScope2支持多倍体的K-mer频谱分析工具
SmudgeplotK-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覆盖度以获得清晰的频谱峰。低覆盖度时峰重叠严重,难以区分。对于大基因组多倍体物种,可能需要更高覆盖度。

易错点

  1. K值选择不当:K太小产生太多重复K-mer,K太大增加错误率。通常用21或31
  2. 测序数据质量差:接头序列和低质量碱基会干扰K-mer分析,应先质控
  3. 混淆倍性和重复含量:高重复含量的二倍体基因组可能被误判为多倍体
  4. 忽略杂合度影响:纯合物种(近交系)的K-mer频谱缺少杂合峰
  5. GenomeScope拟合失败:非常高倍性(>6n)或复杂杂合模式可能导致模型不收敛

补充知识

倍性分析工具对比

工具输入方法支持倍性
GenomeScope2K-mer频谱模型拟合1-6n
SmudgeplotK-mer对比率分析2-12n
nQuireBAMBAF分布2-4n
ploidyNGSBAM深度分析任意
流式细胞术组织DNA含量任意

常见物种倍性

物种倍性基因组大小
人类2n3.2Gb
小麦6n16Gb
棉花4n2.5Gb
甘蔗8-12n~10Gb
草莓(栽培)8n810Mb
拟南芥2n135Mb