跳转至

178_全基因组三倍体分析

一句话概述

全基因组三倍体分析通过流式细胞术、测序深度分布、SNP等位基因频率模式和k-mer频谱等方法鉴定和分析三倍体(3n)基因组,广泛应用于农业物种(香蕉、西瓜)和进化生物学研究。

核心知识点表格

知识点说明
三倍体定义含有三套同源染色体(3n)的生物体
形成机制未减数配子融合、种间杂交后加倍、体细胞突变
鉴定方法流式细胞术、k-mer分析、等位基因频率、测序深度
常见三倍体物种香蕉(AAA/AAB/ABB)、无籽西瓜、部分鱼类
分析挑战单倍型拆分困难、基因组组装复杂、SNP calling参数调整
k-mer特征三倍体k-mer频谱呈三峰分布
等位基因频率三倍体SNP位点BAF呈1/3和2/3分布
工具GenomeScope2、Smudgeplot、nQuire、ploidyNGS

步骤详解

第一步:理解多倍体与三倍体

白话解释:人类是二倍体(2n=46条染色体),每条染色体有2个拷贝。三倍体就是有3个拷贝(3n)。自然界中很多植物是多倍体。三倍体的特点是无法正常减数分裂,所以通常不育(如无籽西瓜)。

技术细节:三倍体在基因组分析中带来独特的技术挑战。传统的二倍体工具假设每个位点最多两个等位基因,但三倍体可能有三个(如AAB、ABC)。这影响了变异检测、基因组组装和单倍型分析的方方面面。

第二步:K-mer频谱估计倍性

白话解释:K-mer分析是最常用的倍性估计方法。二倍体的k-mer频率图有一个主峰(杂合)和一个高峰(纯合),而三倍体会出现三个峰。

技术细节:使用GenomeScope2可以拟合不同倍性模型。三倍体的k-mer频谱中,杂合位点的k-mer出现在1/3×覆盖度、2/3×覆盖度和全覆盖度处,形成特征性的三峰模式。

# 1. 计算k-mer频率(使用jellyfish)
jellyfish count -C -m 21 -s 5G -t 16 -o kmer_counts.jf reads_R1.fq.gz reads_R2.fq.gz
jellyfish histo -t 16 kmer_counts.jf > kmer_histo.txt

# 2. 使用GenomeScope2估计倍性和基因组大小
# 安装:https://github.com/tbenavi1/genomescope2.0
genomescope2 -i kmer_histo.txt -o genomescope_output -k 21 -p 3
# -p 3 指定三倍体模型

# 也可以自动尝试不同倍性
for ploidy in 2 3 4 6; do
    genomescope2 -i kmer_histo.txt -o genomescope_p${ploidy} -k 21 -p ${ploidy}
done

# 3. 使用Smudgeplot进一步验证倍性
# Smudgeplot通过k-mer对的频率比来估计倍性
# 提取k-mer pairs
jellyfish count -C -m 21 -s 5G -t 16 -o kmer_21.jf reads_*.fq.gz
jellyfish dump -c -L 2 kmer_21.jf | sort -k2,2nr > kmer_dump.txt

# 计算smudgeplot
smudgeplot.py hetkmers -o kmer_pairs kmer_dump.txt
smudgeplot.py plot kmer_pairs_coverages.tsv -o smudgeplot -t "Sample Smudgeplot"

第三步:使用nQuire基于BAF估计倍性

白话解释:nQuire直接分析测序reads中的等位基因频率分布来判断倍性。二倍体杂合位点的BAF集中在0.5,三倍体则在0.33和0.67处有峰。

技术细节:nQuire使用高斯混合模型拟合BAF分布,计算不同倍性模型的似然比。方法简单快速,但对测序深度和mapping质量有要求。

# 安装nQuire
git clone https://github.com/clwgg/nQuire.git
cd nQuire && make

# 1. 将BAM文件转换为nQuire输入
./nQuire create -b sample.bam -o sample

# 2. 去噪
./nQuire denoise sample.bin -o sample_denoised

# 3. 运行倍性估计
./nQuire lrdmodel sample_denoised.bin
# 输出各倍性模型的delta log-likelihood
# diploid, triploid, tetraploid

# 4. 查看BAF分布
./nQuire histo sample_denoised.bin > baf_histo.txt

# 可视化BAF分布
python3 << 'EOF'
import matplotlib.pyplot as plt
import numpy as np

data = np.loadtxt("baf_histo.txt")
plt.figure(figsize=(8, 5))
plt.bar(data[:, 0], data[:, 1], width=0.01, alpha=0.7)
plt.xlabel("B-Allele Frequency")
plt.ylabel("Count")
plt.title("BAF Distribution")
# 三倍体应该在0.33和0.67处有峰
plt.axvline(x=0.33, color='r', linestyle='--', label='1/3')
plt.axvline(x=0.67, color='r', linestyle='--', label='2/3')
plt.legend()
plt.savefig("baf_distribution.png", dpi=300)
EOF

第四步:三倍体基因组组装

白话解释:三倍体基因组组装比二倍体困难得多,因为有三套染色体需要区分。现代组装工具如hifiasm已经支持多倍体模式。

技术细节:三倍体组装的核心挑战是区分三个单倍型。hifiasm的-l参数控制清除阈值,对三倍体需要调低。也可以使用purge_dups去除多余的单倍型序列。

# 使用hifiasm组装三倍体基因组
hifiasm -o output \
    -t 32 \
    --n-hap 3 \
    hifi_reads.fq.gz

# 如果有Hi-C数据辅助分型
hifiasm -o output \
    -t 32 \
    --n-hap 3 \
    --h1 hic_R1.fq.gz \
    --h2 hic_R2.fq.gz \
    hifi_reads.fq.gz

# 提取contigs
awk '/^S/{print ">"$2; print $3}' output.p_ctg.gfa > primary.fa
awk '/^S/{print ">"$2; print $3}' output.hap1.p_ctg.gfa > hap1.fa
awk '/^S/{print ">"$2; print $3}' output.hap2.p_ctg.gfa > hap2.fa

# 使用purge_dups去冗余
minimap2 -xmap-hifi primary.fa hifi_reads.fq.gz | gzip > aligned.paf.gz
pbcstat aligned.paf.gz
calcuts PB.stat > cutoffs
purge_dups -2 -T cutoffs -c PB.base.cov primary.fa > purged.fa

# 评估组装质量
quast purged.fa -o quast_output -t 16
busco -i purged.fa -l embryophyta_odb10 -m genome -c 16

第五步:三倍体SNP calling与基因分型

# GATK HaplotypeCaller设置三倍体
gatk HaplotypeCaller \
    -R reference.fa \
    -I sample.bam \
    -O sample.g.vcf.gz \
    -ERC GVCF \
    --sample-ploidy 3

# GenotypeGVCFs
gatk GenotypeGVCFs \
    -R reference.fa \
    -V sample.g.vcf.gz \
    -O genotyped.vcf.gz \
    --sample-ploidy 3

# 过滤变异
gatk VariantFiltration \
    -R reference.fa \
    -V genotyped.vcf.gz \
    -O filtered.vcf.gz \
    --filter-expression "QD < 2.0" --filter-name "LowQD" \
    --filter-expression "FS > 60.0" --filter-name "HighFS"

# 查看三倍体基因型格式
# 三倍体SNP示例:0/0/1 (AAB), 0/1/1 (ABB), 0/1/2 (ABC)
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT[\t%GT]\n' filtered.vcf.gz | head

实战命令速查

# 完整倍性鉴定流程
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 3

# nQuire快速倍性检测
nQuire create -b sample.bam -o sample
nQuire denoise sample.bin -o sample_dn
nQuire lrdmodel sample_dn.bin

# ploidyNGS基于BAM的倍性估计
ploidyNGS --bam sample.bam --out ploidy_result

# 三倍体GATK流程
gatk HaplotypeCaller -R ref.fa -I sample.bam -O out.g.vcf.gz -ERC GVCF --sample-ploidy 3

面试常问点

Q1: 如何从k-mer频谱判断一个物种是二倍体还是三倍体? A: 二倍体k-mer频谱通常有两个峰:低覆盖度的杂合峰和高覆盖度(约2倍)的纯合峰。三倍体会出现三个峰,分别对应1/3、2/3和3/3覆盖度的k-mer。GenomeScope2可以拟合不同倍性模型,通过似然值比较确定最佳倍性。

Q2: 三倍体基因组组装的主要挑战是什么? A: 主要挑战包括:(1)三个单倍型难以区分导致嵌合组装;(2)组装软件多假设二倍体,三倍体模式支持有限;(3)杂合度不均匀,部分区域可能是AAA(纯合),部分是AAB或ABC;(4)组装后难以正确分配contig到三个单倍型。

Q3: 自然界中三倍体通常如何形成? A: 三种主要机制:(1)未减数配子(2n配子)与正常配子(n)融合,如2n+n=3n;(2)种间杂交产生的杂种经过部分基因组加倍;(3)胚乳发育中的异常(多精受精等)。人工可通过秋水仙素处理或杂交获得三倍体。

Q4: 三倍体变异检测需要注意什么参数设置? A: GATK需要设置--sample-ploidy 3以正确调用三倍体基因型。FreeBayes可以用--ploidy 3。基因型格式变为三元组(如0/0/1, 0/1/2)。过滤参数也需要相应调整,因为三倍体的等位基因深度分布与二倍体不同。

Q5: 三倍体物种的遗传图谱构建有什么特殊之处? A: 三倍体通常不育,不能直接构建遗传图谱。可以利用其与二倍体亲本的杂交后代(如果能产生部分后代),或使用基于辐射杂种体或基于LD的物理图谱方法。

易错点

  1. 倍性估计时覆盖度不足:k-mer分析需要至少30x覆盖度才能可靠区分峰
  2. nQuire受mapping质量影响:使用前应过滤低质量比对(MAPQ<30)
  3. GATK忘记设置ploidy参数:默认ploidy=2会导致三倍体基因型错误
  4. Smudgeplot的k-mer长度选择:应与GenomeScope使用相同k值
  5. 混淆同源多倍体与异源多倍体:同源三倍体(AAA)和异源三倍体(ABx)的分析策略不同

补充知识

常见多倍体物种

物种倍性基因组组成基因组大小
香蕉(栽培)3nAAA/AAB/ABB~500Mb
无籽西瓜3n人工培育~425Mb
虹鳟4n(古多倍体)AABB~2.4Gb
小麦6nAABBDD~16Gb
甘蔗8-12n复杂~10Gb

三倍体分析工具总结

工具方法用途输入
GenomeScope2K-mer频谱拟合倍性+基因组大小K-mer频率直方图
SmudgeplotK-mer对分析倍性验证K-mer数据
nQuireBAF分布倍性估计BAM文件
ploidyNGS深度分布倍性估计BAM文件
hifiasm图组装多倍体组装HiFi reads