609_宏基因组组装评估QUAST¶
一句话概述: QUAST/MetaQUAST是评估基因组/宏基因组组装质量的标准工具,通过N50、错配率、基因预测等指标量化组装好坏,是组装流程的"质检站"。
核心知识点速查表¶
| 概念 | 白话解释 |
|---|---|
| QUAST | Quality ASsessment Tool,基因组组装质量评估工具 |
| MetaQUAST | QUAST的宏基因组版本,能处理多物种混合组装 |
| N50 | 把contig从长到短排列,累计长度达总长50%时的那个contig长度(越大越好) |
| L50 | 达到N50时用了多少条contig(越少越好) |
| Genome fraction | 参考基因组被组装覆盖的比例(越高越好) |
| Misassembly | 组装错误,包括倒位、易位、重排等 |
| Duplication ratio | 组装中重复区域与参考基因组的比值 |
| GC content | 碱基组成中G和C的比例 |
| Icarus | QUAST自带的交互式可视化工具 |
一、安装配置¶
1.1 conda安装(推荐)¶
# 创建新环境(避免依赖冲突)
conda create -n quast_env python=3.8 # 创建Python3.8环境
conda activate quast_env # 激活环境
# 安装QUAST(包含MetaQUAST)
conda install -c bioconda quast # 从bioconda频道安装
# 验证安装
quast --version # 查看版本号,当前最新5.3.0
metaquast.py --help # 查看MetaQUAST帮助信息
1.2 pip安装¶
1.3 源码安装¶
二、QUAST基本用法(单基因组)¶
2.1 最简单的用法——无参考基因组¶
2.2 有参考基因组的完整评估¶
# 有参考基因组时,能计算错配率、基因覆盖率等
quast contigs.fasta \
-r reference.fasta \ # 参考基因组
-g genes.gff \ # 参考基因组的基因注释(可选)
-o quast_with_ref \ # 输出目录
-t 8 \ # 线程数
--min-contig 500 # 最短contig长度过滤(默认500bp)
2.3 比较多个组装结果¶
# 同时比较不同组装器的结果
quast megahit_contigs.fasta \
spades_contigs.fasta \
idba_contigs.fasta \
-r reference.fasta \ # 参考基因组
-l "MEGAHIT,SPAdes,IDBA" \ # 给每个组装起标签
-o compare_assemblers \ # 输出目录
-t 16 # 线程数
三、MetaQUAST用法(宏基因组)¶
3.1 有参考基因组的宏基因组评估¶
# 提供已知参考基因组
metaquast.py metagenome_contigs.fasta \
-R ref_genome1.fasta,ref_genome2.fasta \ # 多个参考基因组
-o metaquast_output \ # 输出目录
-t 16 \ # 线程数
--max-ref-number 50 # 最多使用50个参考基因组
3.2 无参考基因组(自动搜索)¶
# MetaQUAST自动用BLAST搜索SILVA数据库找参考
metaquast.py metagenome_contigs.fasta \
-o metaquast_auto \ # 输出目录
-t 16 \ # 线程数
--max-ref-number 50 # 最多下载50个参考基因组
白话解释:没有参考基因组时,MetaQUAST会把你的contig去SILVA 16S数据库里比对,找到最可能的物种,然后从NCBI自动下载这些物种的基因组作为参考。
3.3 比较多个宏基因组组装¶
# 比较MEGAHIT和metaSPAdes的组装结果
metaquast.py megahit_contigs.fa spades_contigs.fa \
-l "MEGAHIT,metaSPAdes" \ # 标签
-R references/ \ # 参考基因组目录
-o meta_compare \ # 输出目录
-t 16 \ # 线程数
--min-identity 90 # 最低比对一致性(默认90%)
四、解读输出报告¶
4.1 关键指标解读¶
核心指标解读表:
| 指标 | 含义 | 好的标准 |
|---|---|---|
| # contigs | contig总数 | 越少越好(说明组装连续) |
| Total length | 组装总长度 | 应接近预期基因组大小 |
| N50 | 连续性指标 | 越大越好,细菌通常>50kb |
| N75 | 类似N50但用75%的阈值 | 越大越好 |
| L50 | 达到N50需要的contig数 | 越少越好 |
| GC (%) | GC含量 | 应与物种已知GC一致 |
| Misassemblies | 组装错误数 | 越少越好 |
| Genome fraction (%) | 参考基因组覆盖率 | 越高越好,>90%为佳 |
| Duplication ratio | 重复比率 | 接近1.0最好 |
| # mismatches per 100 kbp | 每100kb错配数 | 越少越好 |
| # predicted genes | 预测基因数 | 应与预期基因数一致 |
4.2 用Icarus查看交互式报告¶
4.3 用Python脚本提取关键指标¶
import pandas as pd # 导入pandas
# 读取QUAST的TSV报告
df = pd.read_csv("quast_output/report.tsv", sep="\t") # 读取报告
print(df.head(20)) # 打印前20行
# 提取关键指标
n50 = df[df["Assembly"] == "N50"].iloc[0, 1] # 获取N50值
total_len = df[df["Assembly"] == "Total length"].iloc[0, 1] # 获取总长度
print(f"N50: {n50}") # 打印N50
print(f"Total length: {total_len}") # 打印总长度
五、实战案例:宏基因组组装质量评估流程¶
#!/bin/bash
# 完整的宏基因组组装评估流程
# === 第1步:组装(用MEGAHIT和metaSPAdes分别组装)===
megahit -1 reads_R1.fq.gz -2 reads_R2.fq.gz \
-o megahit_out \ # MEGAHIT输出目录
-t 16 # 16线程
metaspades.py -1 reads_R1.fq.gz -2 reads_R2.fq.gz \
-o spades_out \ # SPAdes输出目录
-t 16 # 16线程
# === 第2步:用MetaQUAST评估 ===
metaquast.py \
megahit_out/final.contigs.fa \ # MEGAHIT组装结果
spades_out/contigs.fasta \ # SPAdes组装结果
-l "MEGAHIT,metaSPAdes" \ # 标签
-o assembly_evaluation \ # 输出目录
-t 16 \ # 线程数
--min-contig 1000 \ # 只评估>1kb的contig
--gene-finding # 启用基因预测
# === 第3步:查看结果 ===
echo "=== 组装评估报告 ==="
cat assembly_evaluation/report.txt # 打印文本报告
六、常用参数速查¶
# QUAST常用参数
--min-contig 500 # 最短contig过滤长度(默认500)
--threads / -t # 线程数
--gene-finding # 启用基因预测(GeneMark/MetaGeneMark)
--large # 大基因组模式(QUAST-LG)
--fragmented # 参考基因组不完整时使用
--no-plots # 不生成图片(节省时间)
--split-scaffolds # 在N处断开scaffold再评估
--fast # 快速模式(跳过部分分析)
# MetaQUAST特有参数
--max-ref-number 50 # 最多参考基因组数
--min-identity 90 # 最低比对一致性(默认90%)
--references-list # 参考基因组列表文件
--unique-mapping # 每个contig只比对到最佳参考
七、常见报错与解决¶
| 报错信息 | 原因 | 解决方案 |
|---|---|---|
ERROR: Can't find GeneMark | 未安装GeneMark | conda install -c bioconda genemark-es |
ERROR: Python package is not found | Python依赖缺失 | pip install matplotlib joblib |
No references downloaded | NCBI连接超时 | 使用--references-list手动提供参考 |
Memory error | 内存不足 | 减少--max-ref-number或增加内存 |
Permission denied | 权限问题 | chmod +x quast.py |
Empty file | 输入文件为空 | 检查组装是否成功完成 |
八、面试高频题¶
Q1:N50和L50分别是什么意思?¶
答: N50是连续性指标——把所有contig从长到短排列,累加长度达到总长50%时的那条contig的长度。N50越大说明组装越连续。L50是达到N50时需要多少条contig,L50越小越好。打比方:N50像是"平均水平的优秀选手身高",L50是"凑够半支队伍需要多少人"。
Q2:MetaQUAST相比QUAST有什么特殊处理?¶
答: MetaQUAST针对宏基因组做了三个优化:(1) 支持多参考基因组,因为宏基因组包含多个物种;(2) 能自动从NCBI下载参考基因组;(3) 能检测嵌合contig(chimeric contigs),即来自不同物种的序列被错误拼接在一起。另外MetaQUAST的默认比对一致性阈值是90%(QUAST是95%),因为宏基因组的参考基因组通常与样品中的菌株有差异。
Q3:如何判断宏基因组组装质量好不好?¶
答: 看几个关键指标:(1) N50越大越好,宏基因组通常在几千到几万bp;(2) 总长度应合理,不能远超预期;(3) 如果有参考,Genome fraction应>80%;(4) Misassembly数越少越好;(5) Duplication ratio接近1.0;(6) 预测基因数合理(细菌约1000基因/Mb)。
Q4:为什么组装评估时N50不是唯一标准?¶
答: N50高不等于组装好。一个组装可能N50很高但错误组装也多(错误地把不相关序列拼在一起会虚假增大N50)。所以必须综合看:N50(连续性)+ Misassembly(准确性)+ Genome fraction(完整性)+ Duplication ratio(重复性)。好比考试成绩不能只看总分,还要看是否有作弊。
Q5:在宏基因组项目中,你用什么工具评估组装质量?¶
答: 主要用MetaQUAST评估组装连续性和完整性(N50、misassembly等),配合CheckM/CheckM2评估分箱(bin)的完整性和污染度,用BUSCO评估核心基因的完整性。这三个工具从不同角度评估质量:MetaQUAST看整体组装,CheckM看单个bin,BUSCO看进化保守基因。
参考资料:QUAST 5.3.0 官方手册 (quast.sourceforge.net) | MetaQUAST: Mikheenko et al., Bioinformatics 2016 | GitHub: github.com/ablab/quast