AGAT:基因组注释处理的全能工具箱,轻松搞定 GTF/GFF 格式难题
在基因组学研究中,GTF(Gene Transfer Format)和 GFF(General Feature Format)是描述基因注释信息的核心格式,广泛应用于基因结构预测、功能注释、比较基因组学等多个研究场景。然而,这两种格式自 1997 年问世以来不断演化,虽然灵活性极高,能容纳丰富的基因组特征信息,但也导致了 "格式变体繁多" 的问题 ------ 不同工具输出的 GTF/GFF 文件在结构、属性定义、特征命名上往往存在差异,给下游分析的兼容性带来了巨大挑战。
面对这一痛点,来自瑞典国家生物信息学基础设施(NBIS Sweden)的科研团队开发了 AGAT(Another Gtf/Gff Analysis Toolkit)------ 一款功能全面、兼容性极强的基因组注释处理工具箱。它不仅能解决 GTF/GFF 文件的标准化问题,更整合了格式转换、注释修正、特征提取、统计分析等一系列实用功能,成为基因组学研究者的 "必备利器"。
https://github.com/NBISweden/AGAT
https://agat.readthedocs.io/en/latest/
01 功能及应用
AGAT 的核心优势在于 "全能性" 和 "鲁棒性",即使是格式混乱、存在错误的 GTF/GFF 文件,它也能高效处理。其核心功能可分为三大类:
1. 标准化与清洗:让注释文件 "合规"
AGAT 能将任意类型的 GTF/GFF 文件标准化为完整、排序规范的 GFF3 格式,同时自动修复文件中的常见问题:
- 补充缺失的父级特征(如仅存在 CDS / 外显子时,自动添加基因和 mRNA 特征);
- 补全必填属性(ID 和 Parent),确保特征间的层级关系清晰;
- 修复重复标识符、修正特征位置错误、移除重复特征;
- 对分散在文件中的相关特征进行分组,按顺序排序(支持 tabix 索引优化);
- 可选合并重叠的基因位点。
核心工具:agat_convert_sp_gxf2gxf.pl(所有带_sp_前缀的脚本均支持该类功能)。
2. 多格式转换:打破数据互通壁垒
AGAT 支持多种基因组数据格式的双向转换,覆盖科研中常见的需求场景:
| 转换需求 | 对应工具 |
|---|---|
| GTF/GFF → BED | agat_convert_sp_gff2bed.pl |
| GTF/GFF → GTF | agat_convert_sp_gff2gtf.pl |
| GTF/GFF → 表格格式(TSV) | agat_sp_gff2tsv.pl |
| minimap2 输出的 BAM → GFF | agat_convert_sp_minimap2_bam2gff.pl |
| GTF/GFF → ZFF | agat_sp_gff2zff.pl |
| BED → GFF3 | agat_convert_bed2gff.pl |
| EMBL → GFF3 | agat_convert_embl2gff.pl |
3. 多样化注释处理:满足个性化分析需求
除了基础的标准化和转换,AGAT 还提供了数十种实用工具,覆盖注释分析的全流程:
- 特征提取:提取任意类型的序列(如 CDS、外显子、UTR 序列)、提取特定属性信息;
- 注释筛选:按 ORF 长度筛选基因模型、保留最长转录本、按基因长度 / 内含子数量筛选;
- 注释修正:修复 CDS 相位、添加内含子特征、管理 UTR 区域、修正融合基因;
- 统计分析:生成特征统计报告(如基因 / 转录本数量)、功能注释统计、BUSCO 结果对比、两个注释文件的差异分析;
- 其他功能:添加启动子 / 终止子特征、互补链注释、合并多个注释文件等。
完整工具列表可通过agat --tools命令查看,或参考官方文档。
02 快速安装 AGAT
AGAT 支持多种安装方式,适配不同操作系统和用户习惯,推荐优先使用 Bioconda 或 Docker(简单高效):
1. 推荐方式:Bioconda 安装(最便捷)
# 安装
conda install -c bioconda agat
# 更新
conda update agat
# 卸载
conda uninstall agat
2. Docker/Singularity 安装(适合环境隔离需求)
Docker:
# 拉取镜像(以1.4.2版本为例)
docker pull quay.io/biocontainers/agat:1.4.2--pl5321hdfd78af_0
# 测试工具使用
docker run quay.io/biocontainers/agat:1.4.2--pl5321hdfd78af_0 agat_convert_sp_gxf2gxf.pl --help
Singularity:
# 拉取镜像
singularity pull docker://quay.io/biocontainers/agat:1.4.2--pl5321hdfd78af_0
# 启动容器并使用工具
singularity run agat_1.4.2--pl5321hdfd78af_0.sif
agat_convert_sp_gxf2gxf.pl --help
3. 手动安装(适合高级用户)
需先安装依赖(Perl ≥5.8、Perl 模块如 Bioperl、Clone 等,可选 R 用于绘图),再执行以下命令:
# 克隆仓库
git clone https://github.com/NBISweden/AGAT.git
cd AGAT
# 检查依赖、编译、测试、安装
perl Makefile.PL
make
make test
make install
# 卸载
perl uninstall_AGAT
依赖安装可参考官方文档的 "Install prerequisites" 部分,支持 cpanm、conda 或系统包管理器(如 apt)。
03 AGAT 核心:强大的解析器与数据结构
AGAT 的高效性源于其独特的解析器设计,尤其是带_sp_前缀的工具("SLURP 模式"),会将整个 GFF 文件加载到内存中的专用数据结构(称为 "OMNISCIENT"),便于快速访问和处理特征关系。
1. 数据结构设计
OMNISCIENT 结构按 "层级" 组织基因组特征,清晰区分不同级别(level1:基因;level2:mRNA、rRNA 等;level3:外显子、CDS、UTR 等),同时存储文件头信息、配置参数等:
# 文件头信息
$omniscient{other}{header} = 以#开头的文件头内容
# 特征信息(按层级存储)
$omniscient{level1}{tag_l1}{level1_id} = 基因等level1特征
$omniscient{level2}{tag_l2}{idY} = mRNA等level2特征列表(idY为父级ID)
$omniscient{level3}{tag_l3}{idZ} = 外显子等level3特征列表(idZ为父级ID)
# 配置信息
$omniscient{config}{parameter1} = 配置参数值
2. 解析逻辑:智能适配任意文件
AGAT 解析器按优先级处理特征间的关系,确保兼容性:
- 优先:通过 Parent/ID 或 gene_id/transcript_id 关联特征;
- 其次:通过共同标签(默认 locus_tag,可自定义)分组特征;
- 最后:顺序解析(按文件行顺序分组,适用于无明确关联信息的文件)。
这种设计让 AGAT 能适配 42 种以上不同格式或存在错误的 GTF/GFF 文件,甚至能处理仅含 level3 特征(如部分 Prokka 输出)的特殊情况。
3. 解析器的核心能力
除了标准化和清洗,解析器还能:
- 为多父级特征创建独立副本(如一个外显子对应多个 mRNA 时,自动生成多个独立外显子);
- 自动添加 UTR(当 CDS 和外显子存在时);
- 修复基因位置(如 mRNA 超出基因范围时,自动调整基因边界)。
04 实用示例:AGAT 如何解决实际问题?
以下 3 个典型示例,展示 AGAT 在实际研究中的应用:
示例 1:补全仅含 CDS 的注释文件
若输入文件仅定义了 CDS 特征(无基因、mRNA、外显子):
gff
##gff-version 3
Tob1_contig1 Prodigal:2.60 CDS 476 670 . - 0 ID=Tob1_00001;locus_tag=Tob1_00001;product=hypothetical protein
运行命令:
agat_convert_sp_gxf2gxf.pl --gff 8_test.gff
输出结果会自动补全基因、mRNA、外显子特征,层级关系清晰:
gff
##gff-version 3
Tob1_contig1 Prodigal:2.60 gene 476 670 . - 0 ID=nbis_NEW-gene-1;locus_tag=Tob1_00001;product=hypothetical protein
Tob1_contig1 Prodigal:2.60 mRNA 476 670 . - 0 ID=nbis_nol2id-cds-1;Parent=nbis_NEW-gene-1;locus_tag=Tob1_00001;product=hypothetical protein
Tob1_contig1 Prodigal:2.60 exon 476 670 . - . ID=nbis_NEW-exon-1;Parent=nbis_nol2id-cds-1;locus_tag=Tob1_00001;product=hypothetical protein
Tob1_contig1 Prodigal:2.60 CDS 476 670 . - 0 ID=Tob1_00001;Parent=nbis_nol2id-cds-1;locus_tag=Tob1_00001;product=hypothetical protein
示例 2:补全缺失的 mRNA 和 UTR 特征
若输入文件缺少 mRNA(level2)和 UTR(level3)特征:
gff
##gff-version 3
NC_003070.9 RefSeq gene 3631 5899 . + . ID=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq exon 3631 3913 . + . ID=NM_099983.2;Parent=NC_003070.9:NAC001;
NC_003070.9 RefSeq CDS 3760 3913 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;
运行 AGAT 后,会自动添加 mRNA、5'UTR 和 3'UTR 特征,修正 ID 唯一性:
gff
NC_003070.9 RefSeq mRNA 3631 5899 . + . ID=NC_003070.9:NAC001;Parent=nbis_NEW-gene-1;locus_tag=AT1G01010
NC_003070.9 RefSeq five_prime_UTR 3631 3759 . + . ID=nbis_NEW-five_prime_utr-1;Parent=NC_003070.9:NAC001;
NC_003070.9 RefSeq three_prime_UTR 5628 5899 . + . ID=nbis_NEW-three_prime_utr-1;Parent=NC_003070.9:NAC001;
示例 3:整理分散的相关特征
若输入文件中同一基因的特征分散在不同位置(如 exon、CDS、UTR 交叉排列),AGAT 会自动分组并按层级排序,让文件结构更清晰。
05 参考文献
Dainat J. 2022. Another Gtf/Gff Analysis Toolkit (AGAT): Resolve interoperability issues and accomplish more with your annotations. Plant and Animal Genome XXIX Conference. https://github.com/NBISweden/AGAT.
Dainat J. AGAT: Another Gff Analysis Toolkit to handle annotations in any GTF/GFF format. (Version v1.4.1). Zenodo. https://www.doi.org/10.5281/zenodo.3552717