Merqury — 基于 k-mer 的无参考组装评估工具¶
一句话说明¶
Merqury 是一个不需要参考基因组的组装质量评估工具,通过比较组装序列和原始读段中的 k-mer 分布来计算 QV(质量值)、完整性和错误率,是 T2T 时代评估基因组组装精度的金标准。
安装与配置¶
# 方法1:conda 安装(推荐)
conda install -c bioconda merqury # 从 bioconda 安装
# merqury 依赖 meryl(k-mer 计数工具),会自动安装
# 方法2:源码安装
git clone https://github.com/marbl/merqury.git # 克隆源码
export MERQURY=$(pwd)/merqury # 设置环境变量
export PATH=$MERQURY:$PATH # 加入 PATH
# 验证安装
merqury.sh 2>&1 | head -5 # 查看用法信息
# 还需要安装 meryl
conda install -c bioconda meryl # k-mer 数据库构建工具
核心概念¶
- QV(Quality Value):组装质量值,QV50 表示每 10 万个碱基约有 1 个错误
- Completeness:原始读段中的 k-mer 有多少在组装中能找到
- 不需要参考基因组,用读段自身评估组装质量
核心用法¶
第一步:构建 k-mer 数据库¶
# 用 meryl 从原始读段构建 k-mer 数据库
meryl count \
k=21 \ # k-mer 大小(21 是默认推荐值)
threads=16 \ # 线程数
memory=32 \ # 内存上限(GB)
output reads.meryl \ # 输出的 k-mer 数据库
reads_R1.fq.gz reads_R2.fq.gz # 原始读段
第二步:运行 Merqury 评估¶
# 基本评估(无 phasing)
merqury.sh \
reads.meryl \ # k-mer 数据库
assembly.fasta \ # 组装序列
output_prefix # 输出文件前缀
# 评估分型组装(有两套单倍型)
merqury.sh \
reads.meryl \ # k-mer 数据库
hap1.fasta \ # 单倍型 1
hap2.fasta \ # 单倍型 2
phased_output # 输出前缀
进阶用法¶
# 使用亲本数据评估 phasing 质量(trio-binning)
# 先构建亲本 k-mer 数据库
meryl count k=21 threads=16 output maternal.meryl maternal_reads.fq.gz
meryl count k=21 threads=16 output paternal.meryl paternal_reads.fq.gz
# 提取亲本特有 k-mer
$MERQURY/trio/hapmers.sh \
maternal.meryl \ # 母本 k-mer
paternal.meryl \ # 父本 k-mer
child.meryl # 子代 k-mer(可选)
# 用亲本 k-mer 评估
merqury.sh \
child.meryl \
maternal.inherited.meryl \ # 母本遗传的 k-mer
paternal.inherited.meryl \ # 父本遗传的 k-mer
hap1.fasta hap2.fasta \
trio_output
# 单独计算 QV 值
$MERQURY/eval/qv.sh \
reads.meryl \
assembly.fasta \
qv_output
# 生成 k-mer 频谱图(评估杂合度和组装完整性)
$MERQURY/plot/spectra-cn.sh \
reads.meryl \
assembly.fasta \
spectra_output
结果解读¶
# 关键输出文件:
# output_prefix.qv — QV 质量值(每条 contig + 整体)
# output_prefix.completeness — 完整性(k-mer 覆盖率)
# output_prefix.spectra-cn.fl.png — k-mer 频谱图
# QV 解读:
# QV30 = 每 1000 个碱基 1 个错误(99.9% 准确)
# QV40 = 每 10000 个碱基 1 个错误(99.99% 准确)
# QV50 = 每 100000 个碱基 1 个错误(99.999% 准确,T2T 级别)
# Completeness 解读:
# >95% = 组装非常完整
# 90-95% = 不错
# <90% = 可能有区域缺失
常见问题与踩坑¶
问题1:k-mer 大小选多少¶
建议:默认 k=21 适合大多数情况;大基因组(>1Gb)可用 k=31 减少随机匹配
问题2:QV 值异常低¶
可能原因:组装有较多错误、原始数据质量差、或 k-mer 数据库构建有误
解决:确认读段质控充分;检查 k-mer 频谱图是否正常
问题3:meryl 构建速度慢¶
解决:增加线程数和内存;HiFi 数据量大时可能需要 1-2 小时
问题4:Merqury vs QUAST vs BUSCO 的区别¶
QUAST:评估连续性(N50 等),有参考时评估结构准确性
BUSCO:评估基因完整性(找到了多少标配基因)
Merqury:评估碱基准确性(QV)和 k-mer 完整性
建议:三个工具互补,发表论文时通常都要用
速查卡片¶
| 命令/参数 | 用途 |
|---|---|
meryl count k=21 output db reads.fq | 构建 k-mer 数据库 |
merqury.sh db asm.fa prefix | 基本评估 |
merqury.sh db hap1.fa hap2.fa prefix | 分型组装评估 |
hapmers.sh mat.meryl pat.meryl | 提取亲本特有 k-mer |
*.qv | QV 质量值文件 |
*.completeness | 完整性结果 |
*.spectra-cn.fl.png | k-mer 频谱图 |
k=21 | 推荐 k-mer 大小 |
threads=16 memory=32 | 资源设置 |
spectra-cn.sh | 单独生成频谱图 |