基因组完整性BUSCO评估
一句话概述:BUSCO(Benchmarking Universal Single-Copy Orthologs)通过搜索进化保守的单拷贝直系同源基因来评估基因组组装、基因注释或转录组的完整性,是基因组质量控制的金标准。
核心知识点速查表
| 概念 | 说明 |
|---|
| BUSCO | 用保守单拷贝基因评估基因组完整性 |
| Complete(C) | 完整找到的基因(越高越好,>95%优秀) |
| Single-copy(S) | 单拷贝完整基因(正常基因组应占主导) |
| Duplicated(D) | 重复的完整基因(高比例可能是杂合/多倍体) |
| Fragmented(F) | 片段化基因(部分找到,组装可能不完整) |
| Missing(M) | 完全缺失的基因(越少越好) |
| Lineage dataset | 谱系特异的基因集(白话:不同物种有不同的"标准考题") |
| odb10/odb11 | OrthoDB第10/11版数据库 |
一、安装与配置
# === Conda安装(推荐) ===
conda create -n busco -c conda-forge -c bioconda busco=5 # 创建环境
conda activate busco # 激活
# === 查看版本和可用谱系 ===
busco --version # 查看版本
busco --list-datasets # 列出所有可用谱系数据集
# === 常用谱系数据集 ===
# eukaryota_odb10 - 真核生物通用(255个基因)
# bacteria_odb10 - 细菌通用(124个基因)
# fungi_odb10 - 真菌(758个基因)
# viridiplantae_odb10 - 植物(425个基因)
# mammalia_odb10 - 哺乳动物(9226个基因)
# vertebrata_odb10 - 脊椎动物(3354个基因)
# embryophyta_odb10 - 陆地植物(1614个基因)
# metazoa_odb10 - 后生动物(954个基因)
二、运行BUSCO
2.1 基因组模式
# === 评估基因组组装质量 ===
busco \
-i genome_assembly.fasta \ # 输入:组装的基因组
-o busco_genome \ # 输出目录名
-m genome \ # 模式:genome(基因组)
-l eukaryota_odb10 \ # 谱系数据集(根据物种选)
-c 16 \ # CPU线程数
--augustus # 使用AUGUSTUS进行基因预测
2.2 蛋白质模式
# === 评估基因注释的蛋白质集质量 ===
busco \
-i predicted_proteins.fasta \ # 输入:预测的蛋白质序列
-o busco_proteins \ # 输出目录名
-m proteins \ # 模式:proteins(蛋白质)
-l mammalia_odb10 \ # 谱系数据集
-c 16 # CPU线程数
2.3 转录组模式
# === 评估转录组组装质量 ===
busco \
-i transcriptome_assembly.fasta \ # 输入:组装的转录组
-o busco_transcriptome \ # 输出目录名
-m transcriptome \ # 模式:transcriptome
-l vertebrata_odb10 \ # 谱系数据集
-c 16 # CPU线程数
2.4 自动谱系选择
# === 不确定该用哪个谱系?让BUSCO自动选 ===
busco \
-i assembly.fasta \
-o busco_auto \
-m genome \
--auto-lineage \ # 自动检测最佳谱系(较慢)
-c 16
# 或分步自动选择
# --auto-lineage-prok 仅细菌/古菌
# --auto-lineage-euk 仅真核
三、结果解读
# === 查看BUSCO结果摘要 ===
cat busco_genome/short_summary.specific.eukaryota_odb10.busco_genome.txt
# 输出示例:
# ***** Results: *****
#
# C:95.3%[S:93.1%,D:2.2%],F:2.0%,M:2.7%,n:255
#
# 243 Complete BUSCOs (C) # 完整找到243个
# 237 Complete and single-copy (S) # 其中237个是单拷贝
# 6 Complete and duplicated (D) # 6个是重复的
# 5 Fragmented BUSCOs (F) # 5个是片段化的
# 7 Missing BUSCOs (M) # 7个完全缺失
# 255 Total BUSCO groups searched # 总共搜索255个基因
质量标准解读
| 指标 | 优秀 | 良好 | 一般 | 差 |
|---|
| Complete(C) | >95% | 90-95% | 80-90% | <80% |
| Duplicated(D) | <5% | 5-15% | 15-30% | >30% |
| Missing(M) | <5% | 5-10% | 10-20% | >20% |
特殊情况解读
| 结果模式 | 可能原因 |
|---|
| C高, D低, M低 | 正常二倍体基因组,组装质量好 |
| C高, D高 | 杂合基因组未purge / 多倍体 / 近期WGD |
| C低, F高 | 组装碎片化,需改进组装策略 |
| C低, M高 | 测序深度不足 / 基因组区域丢失 |
| 转录组D高 | 正常,转录本有多个亚型 |
四、多个样本对比
# === 批量运行BUSCO ===
for fasta in assemblies/*.fasta; do
name=$(basename "$fasta" .fasta) # 提取文件名
busco \
-i "$fasta" \ # 输入
-o "busco_${name}" \ # 输出
-m genome \ # 基因组模式
-l eukaryota_odb10 \ # 谱系
-c 16 # 线程
done
# === 生成对比图 ===
# 收集所有short_summary文件
mkdir busco_summaries/
cp busco_*/short_summary.*.txt busco_summaries/
# 使用BUSCO内置脚本生成对比图
generate_plot.py \
-wd busco_summaries/ # 包含所有summary的目录
# 输出: busco_figure.png(条形图对比各样本BUSCO结果)
# === Python自定义可视化 ===
import matplotlib.pyplot as plt
import numpy as np
# 数据示例
samples = ['Assembly_v1', 'Assembly_v2', 'Assembly_v3'] # 样本名
complete = [90.2, 95.3, 97.1] # Complete百分比
fragmented = [5.1, 2.0, 1.2] # Fragmented百分比
missing = [4.7, 2.7, 1.7] # Missing百分比
fig, ax = plt.subplots(figsize=(10, 4)) # 创建画布
x = np.arange(len(samples)) # x轴位置
# 堆叠条形图
ax.barh(x, complete, color='#2196F3', label='Complete') # 蓝色=完整
ax.barh(x, fragmented, left=complete, color='#FFC107', label='Fragmented') # 黄色=片段
ax.barh(x, missing, left=[c+f for c,f in zip(complete,fragmented)],
color='#F44336', label='Missing') # 红色=缺失
ax.set_yticks(x) # 设置y轴刻度
ax.set_yticklabels(samples) # 设置y轴标签
ax.set_xlabel('Percentage (%)') # x轴标题
ax.legend() # 图例
plt.tight_layout() # 紧凑布局
plt.savefig('busco_comparison.png', dpi=300) # 保存高分辨率图
五、面试高频考点
Q1: BUSCO结果怎么看?什么标准算合格?
- Complete >90% 基本合格,>95% 优秀
- Duplicated 高不一定是坏事(多倍体/杂合基因组是正常的)
- Missing <5% 最好,>20% 说明基因组不完整
- 白话:BUSCO就像期末考试,考255道题,答对多少就是完整度
Q2: BUSCO和N50哪个更重要?
- N50衡量的是序列连续性(拼图拼得长不长)
- BUSCO衡量的是基因完整性(关键基因找到了多少)
- 两者互补,都要看。有时候N50很高但BUSCO差(组装错误),反之亦然
- 发表文章两个指标都要报告
Q3: 如何选择合适的谱系数据集?
- 越接近你的物种越好:蘑菇用fungi,水稻用embryophyta
- 不确定就用
--auto-lineage自动选 - 同一项目中不同样本必须用同一个谱系才能比较
常见报错与解决
| 报错 | 原因 | 解决方案 |
|---|
Lineage dataset not found | 谱系数据未下载 | BUSCO会自动下载,检查网络 |
Augustus error | Augustus配置问题 | 设置AUGUSTUS_CONFIG_PATH |
No genes predicted | 输入序列太短或不是基因组 | 检查输入文件 |
tblastn error | BLAST+未安装 | conda install blast |
Permission denied | config目录无写权限 | 复制config到有权限的位置 |
速查表
# === BUSCO 速查 ===
# 基因组评估
busco -i genome.fa -o out -m genome -l lineage_odb10 -c 16
# 蛋白质评估
busco -i proteins.fa -o out -m proteins -l lineage_odb10 -c 16
# 转录组评估
busco -i transcripts.fa -o out -m transcriptome -l lineage_odb10 -c 16
# 自动谱系
busco -i genome.fa -o out -m genome --auto-lineage -c 16
# 常用谱系: eukaryota/bacteria/fungi/viridiplantae/mammalia/metazoa
# 质量标准: C>95%优秀 | C>90%合格 | D<5%正常 | M<5%良好