# AGAT 各种功能总览
AGAT,全称 **Another GTF/GFF Analysis Toolkit**,是一个用于处理基因组注释文件的工具集,主要面向 **GTF / GFF / GFF3** 文件。
它主要用于:
- 清洗和标准化 GFF/GTF 注释文件
- 修复不规范的注释结构
- 补充缺失的 feature
- 补充或修复 `ID` / `Parent` 等 attributes
- 注释格式转换
- 注释统计
- 注释过滤
- 注释合并
- 注释比较
- 序列提取
- 批量管理 ID 和 attributes
- 生成适合下游软件使用的注释文件
---
# 1. AGAT 脚本命名规则
AGAT 的脚本基本都以 `agat_` 开头。
常见两类脚本:
| 类型 | 含义 | 特点 |
|---|---|---|
| `_sp_` | slurp 模式 | 会把整个 GFF/GTF 文件读入内存,解析完整的 gene-transcript-exon-CDS 层级关系,功能更强,但更占内存 |
| `_sq_` | sequential 模式 | 逐行处理文件,更省内存,但不会完整解析复杂的 feature 层级关系 |
---
# 2. 核心标准化 / 清洗功能
## `agat_convert_sp_gxf2gxf.pl`
这是 AGAT 最核心、最常用的工具。
它可以把不规范的 GTF/GFF/GFF3 文件清洗、修复、排序并标准化。
## 主要功能
- 读取 GTF / GFF / GFF3 文件
- 清洗不规范的注释格式
- 修复 gene / transcript / exon / CDS 层级关系
- 补充缺失的 `gene`
- 补充缺失的 `mRNA` / `transcript`
- 补充缺失的 `exon`
- 补充缺失的 `UTR`
- 补充或修复 `ID`
- 补充或修复 `Parent`
- 修复重复 ID
- 修复重复 feature
- 修复坐标异常
- 修复 feature 分组问题
- 重新排序 feature
- 输出标准化的 GFF3 或 GXF 文件
## 示例
```bash
agat_convert_sp_gxf2gxf.pl \
-g input.gff3 \
-o output.cleaned.gff3
3. 格式转换功能 Convert
AGAT 可以在多种注释格式之间转换。
| 脚本 | 功能 |
|---|---|
agat_convert_bed2gff.pl |
BED 转 GFF3 |
agat_convert_embl2gff.pl |
EMBL 转 GFF3 |
agat_convert_genscan2gff.pl |
GENSCAN 输出转 GFF3 |
agat_convert_mfannot2gff.pl |
mfannot 输出转 GFF3 |
agat_convert_minimap2_bam2gff.pl |
minimap2 BAM 比对结果转 GFF |
agat_convert_sp_gff2bed.pl |
GTF / GFF / GFF3 转 BED |
agat_convert_sp_gff2gtf.pl |
GTF / GFF / GFF3 转 GTF |
agat_convert_sp_gff2tsv.pl |
GFF / GTF 转 TSV 表格 |
agat_convert_sp_gff2zff.pl |
GFF / GTF 转 ZFF,常用于 SNAP 等流程 |
agat_sp_to_tabulated.pl |
注释文件转制表格式 |
agat_sp_alignment_output_style.pl |
调整 alignment 类型 GFF 的输出风格 |
示例
# GFF3 转 BED
agat_convert_sp_gff2bed.pl \
-g annotation.gff3 \
-o annotation.bed
# GFF3 转 GTF
agat_convert_sp_gff2gtf.pl \
-g annotation.gff3 \
-o annotation.gtf
# GFF/GTF 转 TSV
agat_convert_sp_gff2tsv.pl \
-g annotation.gff3 \
-o annotation.tsv
4. 添加 feature 功能 Add
这类工具用于根据已有注释推断并添加新的 feature。
| 脚本 | 功能 |
|---|---|
agat_sp_add_intergenic_regions.pl |
根据基因注释添加 intergenic region 区域 |
agat_sp_add_introns.pl |
根据 exon / CDS 结构推断并添加 intron |
agat_sp_add_splice_sites.pl |
添加 splice site 信息 |
agat_sp_add_start_and_stop.pl.pl |
添加 start codon 和 stop codon feature |
示例
# 添加 intron
agat_sp_add_introns.pl \
-g annotation.gff3 \
-o annotation.with_introns.gff3
适用场景
- 注释文件中缺少 intron feature
- 需要生成 intergenic region 区域
- 需要给 CDS 添加 start / stop codon 标记
- 需要补充剪接位点信息
5. 注释整合功能 Aggregate
这类工具用于合并或互补多个注释文件。
| 脚本 | 功能 |
|---|---|
agat_sp_complement_annotations.pl |
用一个注释文件补充另一个注释文件中的非重叠 loci |
agat_sp_merge_annotations.pl |
合并多个注释文件 |
适用场景
- 合并 BRAKER 和 MAKER 注释
- 合并 ab initio 预测和同源预测结果
- 合并转录组辅助注释和已有基因注释
- 用一个注释文件补充另一个注释文件缺失的基因区域
- 整合多个来源的 GFF/GTF 文件
6. 注释比较与评估功能 Compare
这类工具用于比较两个注释版本或评估注释质量。
| 脚本 | 功能 |
|---|---|
agat_sp_compare_two_BUSCOs.pl |
比较两个 BUSCO 结果 |
agat_sp_compare_two_annotations.pl |
比较同一基因组上的两个注释版本 |
agat_sp_sensitivity_specificity.pl |
计算两个注释之间的 sensitivity / specificity |
agat_sp_compare_two_annotations.pl 可以分析
- file1 中独有的 gene
- file2 中独有的 gene
- 两个注释中一对一对应的 gene
- gene split 情况
- gene fusion 情况
- gene overlap 情况
- 注释版本之间的结构差异
适用场景
- 比较旧版和新版基因组注释
- 比较不同注释流程的结果
- 检查新注释是否产生 gene split
- 检查新注释是否产生 gene fusion
- 评估预测注释与参考注释的一致性
- 分析注释版本升级前后的变化
7. 信息提取功能 Extract
这类工具用于从 GFF/GTF 中提取 attributes 或序列。
| 脚本 | 功能 |
|---|---|
agat_sp_extract_attributes.pl |
从 GFF/GTF 第 9 列提取指定 attributes |
agat_sp_extract_sequences.pl |
根据注释文件和基因组 FASTA 提取序列 |
agat_sp_extract_attributes.pl 可提取的常见字段
IDParentNamegene_idtranscript_idproductDbxrefOntology_termNote
agat_sp_extract_sequences.pl 可提取的常见序列
- gene sequence
- transcript sequence
- mRNA sequence
- CDS sequence
- protein sequence
- exon sequence
- UTR sequence
示例
# 提取序列
agat_sp_extract_sequences.pl \
-g annotation.gff3 \
-f genome.fa \
-o output.fa
# 提取蛋白序列
agat_sp_extract_sequences.pl \
-g annotation.gff3 \
-f genome.fa \
-p \
-o proteins.fa
8. 注释过滤功能 Filter
这类工具用于按长度、ID、属性、坐标、ORF、intron 数量等条件过滤注释。
| 脚本 | 功能 |
|---|---|
agat_sp_filter_by_ORF_size.pl |
按 ORF / CDS 长度过滤基因模型 |
agat_sp_filter_by_locus_distance.pl |
按 locus 间距离过滤或筛选记录 |
agat_sp_filter_by_mrnaBlastValue.pl |
根据 mRNA BLAST 结果分值过滤 |
agat_spfilter_feature_by_attribute_presence.pl |
根据某个 attribute 是否存在来过滤 feature |
agat_sp_filter_feature_by_attribute_value.pl |
根据 attribute 的值过滤 feature |
agat_sp_filter_feature_from_keep_list.pl |
根据保留列表保留指定 feature / record |
agat_sp_filter_feature_from_kill_list.pl |
根据删除列表移除指定 feature / record |
agat_sp_filter_gene_by_intron_numbers.pl |
按 intron 数量过滤 gene |
agat_sp_filter_gene_by_length.pl |
按 gene 长度过滤 |
agat_sp_filter_incomplete_gene_coding_models.pl |
删除缺少 start / stop codon 的不完整 coding gene model |
agat_sp_filter_record_by_coordinates.pl |
按坐标区间过滤 record |
agat_sp_keep_longest_isoform.pl |
每个 gene 只保留最长 isoform / transcript |
示例
# 每个基因只保留最长转录本
agat_sp_keep_longest_isoform.pl \
-g annotation.gff3 \
-o annotation.longest_isoform.gff3
# 根据 ID 列表保留指定基因或转录本
agat_sp_filter_feature_from_keep_list.pl \
-g annotation.gff3 \
-l keep_ids.txt \
-o annotation.keep.gff3
# 根据 ID 列表删除指定基因或转录本
agat_sp_filter_feature_from_kill_list.pl \
-g annotation.gff3 \
-l remove_ids.txt \
-o annotation.filtered.gff3
适用场景
- 去除过短的基因模型
- 去除不完整的 CDS 模型
- 去除低质量预测基因
- 只保留目标基因列表
- 删除污染序列上的基因
- 只保留每个基因的代表转录本
- 按坐标区间截取注释
- 根据第 9 列 attribute 进行筛选
- 根据 ORF 长度筛选 coding gene
9. 标记功能 Flag
这类工具不会直接删除记录,而是给可疑记录添加标记,方便后续检查或过滤。
| 脚本 | 功能 |
|---|---|
agat_sp_flag_premature_stop_codons.pl |
标记 CDS / 蛋白中存在 premature stop codon 的模型 |
agat_sp_flag_short_introns.pl |
标记短 intron |
适用场景
- 检查异常 CDS
- 发现可能的假基因
- 发现可能错误预测的基因模型
- 标记异常短 intron
- 辅助后续过滤低质量注释
10. 修复功能 Fix
这类工具用于修复注释结构、CDS phase、重叠基因、fusion gene、最长 ORF 等问题。
| 脚本 | 功能 |
|---|---|
agat_sp_fix_cds_phases.pl |
修复 CDS phase |
agat_sp_fix_features_locations_duplicated.pl |
修复重复 feature 或 feature 坐标问题 |
agat_sp_fix_fusion.pl |
修复或处理 fusion gene 情况 |
agat_sp_fix_longest_ORF.pl |
在 transcript 内重新寻找最长 ORF,并替换原 CDS 结构 |
agat_sp_fix_overlaping_genes.pl |
修复重叠基因问题 |
agat_fix_small_exon_from_extremities.pl |
修复位于端部的小 exon 问题 |
示例
# 修复 CDS phase
agat_sp_fix_cds_phases.pl \
-g annotation.gff3 \
-f genome.fa \
-o annotation.fixed_phase.gff3
适用场景
- CDS phase 不正确
- gene model 中 CDS 翻译异常
- transcript 内 ORF 不合理
- gene 之间异常重叠
- 存在 fusion gene 问题
- 注释文件中存在重复 feature
- exon 或 CDS 坐标存在问题
11. ID 和 attributes 管理功能 Manage
这类工具用于批量管理 GFF/GTF 第 9 列信息,包括 ID、attributes、UTR、intron、功能注释等。
| 脚本 | 功能 |
|---|---|
agat_sp_manage_IDs.pl |
管理、重命名、规范化 feature ID |
agat_sp_manage_UTRs.pl |
管理 UTR,例如添加、调整、删除或规范化 UTR |
agat_sp_manage_attributes.pl |
管理第 9 列 attributes,例如添加、删除、重命名、移动 attribute |
agat_sp_manage_functional_annotation.pl |
管理功能注释信息 |
agat_sp_manage_introns.pl |
管理 intron feature |
常见用途
- 批量重命名 gene ID
- 批量重命名 transcript ID
- 统一 ID 命名规则
- 删除不需要的 attribute
- 添加新的 attribute
- 重命名 attribute
- 复制 attribute
- 整理
gene_id - 整理
transcript_id - 整理
Name - 整理
product - 整理
Dbxref - 整理 UTR feature
- 整理 intron feature
- 添加功能注释字段
12. 统计功能 Statistics
这类工具用于统计注释文件的结构和功能注释信息。
| 脚本 | 功能 |
|---|---|
agat_sp_statistics.pl |
统计注释结构,例如 gene、transcript、exon、CDS 数量和长度分布 |
agat_sp_functional_statistics.pl |
统计功能注释相关信息 |
示例
agat_sp_statistics.pl \
-g annotation.gff3 \
-o annotation.stats.txt
常见统计内容
- gene 数量
- transcript 数量
- exon 数量
- CDS 数量
- UTR 数量
- intron 数量
- gene 长度分布
- transcript 长度分布
- exon 长度分布
- intron 长度分布
- CDS 长度分布
- 每个 gene 的 isoform 数量
- 每个 transcript 的 exon 数量
- mono-exonic gene 数量
- multi-exonic gene 数量
- coding gene 数量
- non-coding gene 数量
13. 其他 GFF/GTF 处理功能 Other
| 脚本 | 功能 |
|---|---|
agat_sp_kraken_assess_lift_coverage.pl |
评估 Kraken / lift 相关覆盖情况 |
agat_sp_list_short_introns.pl |
列出短 intron |
agat_sp_load_function_from_protein_align.pl |
从蛋白比对结果加载功能注释 |
agat_sp_move_attributes_within_records.pl |
在同一 record 内移动 attributes |
agat_sp_prokka_fragmented_gene_annotations.pl |
处理 Prokka 产生的 fragmented gene annotations |
agat_sp_separate_by_record_type.pl |
按 record 类型拆分注释 |
agat_sp_split_by_level2_feature.pl |
按 level2 feature 拆分注释,例如按 mRNA / transcript 拆分 |
agat_sp_clipN_seqExtremities_and_fixCoordinates.pl |
裁剪序列两端的 N,并同步修正注释坐标 |
agat_sp_ensembl_output_style.pl |
调整为 Ensembl 风格输出 |
agat_sp_webApollo_compliant.pl |
生成更适合 WebApollo / JBrowse / Apollo 使用的注释格式 |
适用场景
- 按基因或转录本拆分 GFF
- 让 GFF 更适合 Apollo / WebApollo
- 让 GFF 更接近 Ensembl 输出风格
- 处理 Prokka 注释中的 fragmented gene
- 根据蛋白比对结果补充 gene function
- 裁剪 assembly 两端 N 后同步修正 GFF 坐标
- 列出并检查短 intron
14. Sequential / _sq_ 逐行处理功能
_sq_ 工具逐行处理文件,通常更省内存,适合大文件的简单处理。
| 脚本 | 功能 |
|---|---|
agat_sq_add_attributes_from_tsv.pl |
从 TSV 表格向 GFF/GTF 添加 attributes |
agat_sq_add_hash_tag.pl |
添加 hash tag |
agat_sq_add_locus_tag.pl |
添加 locus_tag |
agat_sq_filter_feature_from_fasta.pl |
根据 FASTA 中的序列 ID 过滤 feature |
agat_sq_list_attributes.pl |
列出注释文件中出现的 attributes |
agat_sq_manage_ID.pl |
逐行管理 ID |
agat_sq_manage_attributes.pl |
逐行管理 attributes |
agat_sq_mask.pl |
根据注释区域 mask 序列 |
agat_sq_remove_redundant_entries.pl |
删除冗余条目 |
agat_sq_repeats_analyzer.pl |
分析 repeats 注释 |
agat_sq_reverse_complement.pl |
对注释 / 序列相关内容做反向互补处理 |
agat_sq_rfam_analyzer.pl |
分析 Rfam 相关结果 |
agat_sq_split.pl |
拆分 GFF/GTF 文件 |
agat_sq_stat_basic.pl |
基础统计 |
适用场景
- 文件特别大
- 不需要完整解析 gene-transcript-exon-CDS 层级关系
- 只需要简单修改 attributes
- 只需要添加标签
- 只需要按序列 ID 过滤
- 只需要基础统计
- 只需要拆分文件
- 希望降低内存使用
15. 按需求快速选择工具
| 需求 | 推荐工具 |
|---|---|
| GFF/GTF 格式不规范,下游软件报错 | agat_convert_sp_gxf2gxf.pl |
| 清洗和标准化注释文件 | agat_convert_sp_gxf2gxf.pl |
| 补充缺失的 gene / mRNA / exon / UTR | agat_convert_sp_gxf2gxf.pl |
| 修复 ID / Parent 混乱 | agat_convert_sp_gxf2gxf.pl |
| GFF3 转 GTF | agat_convert_sp_gff2gtf.pl |
| GFF/GTF 转 BED | agat_convert_sp_gff2bed.pl |
| GFF/GTF 转 TSV 表格 | agat_convert_sp_gff2tsv.pl |
| GFF/GTF 转 ZFF | agat_convert_sp_gff2zff.pl |
| 添加 intron | agat_sp_add_introns.pl |
| 添加 intergenic region | agat_sp_add_intergenic_regions.pl |
| 添加 splice site | agat_sp_add_splice_sites.pl |
| 添加 start / stop codon | agat_sp_add_start_and_stop.pl.pl |
| 合并多个注释文件 | agat_sp_merge_annotations.pl |
| 用一个注释补充另一个注释 | agat_sp_complement_annotations.pl |
| 比较两个注释版本 | agat_sp_compare_two_annotations.pl |
| 比较两个 BUSCO 结果 | agat_sp_compare_two_BUSCOs.pl |
| 计算 sensitivity / specificity | agat_sp_sensitivity_specificity.pl |
| 提取第 9 列 attributes | agat_sp_extract_attributes.pl |
| 提取 CDS / protein / mRNA 序列 | agat_sp_extract_sequences.pl |
| 每个基因只保留最长转录本 | agat_sp_keep_longest_isoform.pl |
| 根据 ID 列表保留基因 | agat_sp_filter_feature_from_keep_list.pl |
| 根据 ID 列表删除基因 | agat_sp_filter_feature_from_kill_list.pl |
| 按 gene 长度过滤 | agat_sp_filter_gene_by_length.pl |
| 按 ORF 长度过滤 | agat_sp_filter_by_ORF_size.pl |
| 按 intron 数量过滤 gene | agat_sp_filter_gene_by_intron_numbers.pl |
| 按坐标过滤注释 | agat_sp_filter_record_by_coordinates.pl |
| 删除不完整 coding gene model | agat_sp_filter_incomplete_gene_coding_models.pl |
| 标记 premature stop codon | agat_sp_flag_premature_stop_codons.pl |
| 标记短 intron | agat_sp_flag_short_introns.pl |
| 修复 CDS phase | agat_sp_fix_cds_phases.pl |
| 修复 fusion gene | agat_sp_fix_fusion.pl |
| 重新寻找最长 ORF | agat_sp_fix_longest_ORF.pl |
| 修复重叠基因 | agat_sp_fix_overlaping_genes.pl |
| 批量修改 ID | agat_sp_manage_IDs.pl |
| 批量修改 attributes | agat_sp_manage_attributes.pl |
| 管理 UTR | agat_sp_manage_UTRs.pl |
| 管理 intron | agat_sp_manage_introns.pl |
| 统计注释结构 | agat_sp_statistics.pl |
| 统计功能注释 | agat_sp_functional_statistics.pl |
| 按 record 类型拆分 GFF | agat_sp_separate_by_record_type.pl |
| 按 transcript 拆分 GFF | agat_sp_split_by_level2_feature.pl |
| 生成 WebApollo 兼容 GFF | agat_sp_webApollo_compliant.pl |
| 生成 Ensembl 风格 GFF | agat_sp_ensembl_output_style.pl |
| 大文件简单处理、省内存 | 优先考虑 _sq_ 系列工具 |
16. 常见工作流示例
16.1 清洗注释并统计
# 清洗并标准化 GFF/GTF
agat_convert_sp_gxf2gxf.pl \
-g raw_annotation.gff3 \
-o annotation.cleaned.gff3
# 统计注释信息
agat_sp_statistics.pl \
-g annotation.cleaned.gff3 \
-o annotation.stats.txt
16.2 清洗后提取蛋白序列
# 清洗注释
agat_convert_sp_gxf2gxf.pl \
-g raw_annotation.gff3 \
-o annotation.cleaned.gff3
# 提取蛋白序列
agat_sp_extract_sequences.pl \
-g annotation.cleaned.gff3 \
-f genome.fa \
-p \
-o proteins.fa
16.3 每个基因只保留最长转录本
agat_sp_keep_longest_isoform.pl \
-g annotation.cleaned.gff3 \
-o annotation.longest_isoform.gff3
16.4 GFF3 转 GTF 给下游软件使用
agat_convert_sp_gff2gtf.pl \
-g annotation.cleaned.gff3 \
-o annotation.cleaned.gtf
16.5 根据列表保留指定基因
agat_sp_filter_feature_from_keep_list.pl \
-g annotation.gff3 \
-l keep_gene_ids.txt \
-o annotation.filtered.gff3
16.6 根据列表删除指定基因
agat_sp_filter_feature_from_kill_list.pl \
-g annotation.gff3 \
-l remove_gene_ids.txt \
-o annotation.filtered.gff3
16.7 修复 CDS phase
agat_sp_fix_cds_phases.pl \
-g annotation.gff3 \
-f genome.fa \
-o annotation.fixed_phase.gff3
16.8 添加 intron feature
agat_sp_add_introns.pl \
-g annotation.gff3 \
-o annotation.with_introns.gff3
16.9 比较两个注释版本
agat_sp_compare_two_annotations.pl \
-gff1 old_annotation.gff3 \
-gff2 new_annotation.gff3 \
-o comparison_result
17. 总结
AGAT 可以理解为 GFF/GTF 注释文件处理的 Swiss army knife。
它不是基因预测工具,而是用于处理已有注释文件或预测结果的工具集。
主要功能包括:
- 注释文件清洗
- 注释结构修复
- 格式转换
- feature 添加
- 注释过滤
- 注释统计
- 序列提取
- 注释合并
- 注释比较
- ID 和 attributes 批量管理
- GFF/GTF 文件拆分
- 生成适合下游软件使用的标准注释文件
最常用的入口工具是:
agat_convert_sp_gxf2gxf.pl
如果 GFF/GTF 文件不规范、下游软件无法识别、ID/Parent 混乱,通常可以先用这个工具进行标准化处理。