AGAT 注释文件

# 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 可提取的常见字段

  • ID
  • Parent
  • Name
  • gene_id
  • transcript_id
  • product
  • Dbxref
  • Ontology_term
  • Note

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 混乱,通常可以先用这个工具进行标准化处理。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容