AGAT v1.6.0 安装与使用--生信工具72

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 解析器按优先级处理特征间的关系,确保兼容性:

  1. 优先:通过 Parent/ID 或 gene_id/transcript_id 关联特征;
  2. 其次:通过共同标签(默认 locus_tag,可自定义)分组特征;
  3. 最后:顺序解析(按文件行顺序分组,适用于无明确关联信息的文件)。

这种设计让 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
相关推荐
TeDi TIVE3 小时前
开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)
人工智能·spring·开源
2301_803875613 小时前
PHP 中处理会话数组时的类型错误解析与修复指南
jvm·数据库·python
m0_743623923 小时前
c++如何批量修改文件后缀名_std--filesystem--replace_extension【实战】
jvm·数据库·python
MY_TEUCK3 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
三毛的二哥3 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
j_xxx404_3 小时前
大语言模型 (LLM) 零基础入门:核心原理、训练机制与能力全解
人工智能·ai·transformer
飞哥数智坊3 小时前
全新 SOLO 在日常办公中的实际体验
人工智能·solo
2501_914245933 小时前
CSS如何处理CSS变量作用域冲突_利用特定类名重写变量值
jvm·数据库·python
菜鸟学Python3 小时前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
南宫萧幕4 小时前
自控PID+MATLAB仿真+混动P0/P1/P2/P3/P4构型
算法·机器学习·matlab·simulink·控制·pid