Awesome
<img alt="docker_agat" src="https://img.shields.io/badge/container-Docker-blue"> <img alt="singularity_agat" src="https://img.shields.io/badge/container-Singularity-orange"> <img alt="doi_zenodo" src="https://img.shields.io/badge/DOI-10.5281/zenodo.3552717-blue">
AGAT
<img align="right" src="docs/img/NBIS.png" width="200" height="100" />
<h2><em>A</em>nother <em>G</em>tf/Gff <em>A</em>nalysis <i>T</i>oolkit</h2>Suite of tools to handle gene annotations in any GTF/GFF format.
Documentation >>here<<
Previous documentation until v1.4.0 (readthedocs) here
Table of Contents
- What can AGAT do for you?
- Installation
- Usage
- List of tools
- More about the tools
- The AGAT parser - Standardisation to create GXF files compliant to any tool
- How to cite?
- Publication using AGAT
- Troubleshooting
What can AGAT do for you?
AGAT has the power to check, fix, pad missing information (features/attributes) of any kind of GTF and GFF to create complete, sorted and standardised gff3 format. Over the years it has been enriched by many many tools to perform just about any tasks that is possible related to GTF/GFF format files (sanitizing, conversions, merging, modifying, filtering, FASTA sequence extraction, adding information, etc). Comparing to other methods AGAT is robust to even the most despicable GTF/GFF files.
-
Standardize/sanitize any GTF/GFF file into a comprehensive GFF3 format (script with
<details> <summary>See standardization/sanitization tool</summary>_sp_
prefix)task tool check, fix, pad missing information into sorted and standardised gff3 agat_convert_sp_gxf2gxf.pl
- add missing parent features (e.g. gene and mRNA if only CDS/exon exists).
- add missing features (e.g. exon and UTR).
- add missing mandatory attributes (i.e. ID, Parent).
- fix identifiers to be uniq.
- fix feature locations.
- remove duplicated features.
- group related features (if spread in different places in the file).
- sort features (tabix optional).
- merge overlapping loci into one single locus (only if option activated).
-
Convert many formats
<details> <summary>See conversion tools</summary>
</details>task tool convert any GTF/GFF into BED format agat_convert_sp_gff2bed.pl
convert any GTF/GFF into GTF format agat_convert_sp_gff2gtf.pl
convert any GTF/GFF into tabulated format agat_sp_gff2tsv.pl
convert any BAM from minimap2 into GFF format agat_convert_sp_minimap2_bam2gff.pl
convert any GTF/GFF into ZFF format agat_sp_gff2zff.pl
convert any GTF/GFF into any GTF/GFF (bioperl) format agat_convert_sp_gxf2gxf.pl
convert BED format into GFF3 format agat_convert_bed2gff.pl
convert EMBL format into GFF3 format agat_convert_embl2gff.pl
convert genscan format into GFF3 format agat_convert_genscan2gff.pl
convert mfannot format into GFF3 format agat_convert_mfannot2gff.pl
-
Perform numerous tasks (Just about anything that is possible)
<details> <summary>See tools</summary>
</details>task tool make feature statistics agat_sp_statistics.pl
make function statistics agat_sp_functional_statistics.pl
extract any type of sequence agat_sp_extract_sequences.pl
extract attributes agat_sp_extract_attributes.pl
complement annotations (non-overlapping loci) agat_sp_complement_annotations.pl
merge annotations agat_sp_merge_annotations.pl
filter gene models by ORF size agat_sp_filter_by_ORF_size.pl
filter to keep only longest isoforms agat_sp_keep_longest_isoform.pl
create introns features agat_sp_add_introns.pl
fix cds phases agat_sp_fix_cds_phases.pl
manage IDs agat_sp_manage_IDs.pl
manage UTRs agat_sp_manage_UTRs.pl
manage introns agat_sp_manage_introns.pl
manage functional annotation agat_sp_manage_functional_annotation.pl
specificity sensitivity agat_sp_sensitivity_specificity.pl
fusion / split analysis between two annotations agat_sp_compare_two_annotations.pl
analyze differences between BUSCO results agat_sp_compare_two_BUSCOs.pl
... and much more ... ... see here ...
About the GTF/GFF fromat
The GTF/GFF formats are 9-column text formats used to describe and represent genomic features.
The formats have quite evolved since 1997, and despite well-defined specifications existing nowadays they have a great flexibility allowing holding wide variety of information.
This flexibility has a drawback aspect, there is an incredible amount of flavour of the formats, that can result in problems when using downstream programs.
For a complete overview of the GTF/GFF formats have a look here.
Installation
Using Docker
<details> <summary>See details</summary>First you must have Docker installed and running.
Secondly have look at the availabe AGAT biocontainers at quay.io.
Then:
# get the chosen AGAT container version
docker pull quay.io/biocontainers/agat:0.8.0--pl5262hdfd78af_0
# use an AGAT's tool e.g. agat_convert_sp_gxf2gxf.pl
docker run quay.io/biocontainers/agat:0.8.0--pl5262hdfd78af_0 agat_convert_sp_gxf2gxf.pl --help
</details>
Using Singularity
<details> <summary>See details</summary>First you must have Singularity installed and running.
Secondly have look at the availabe AGAT biocontainers at quay.io.
Then:
# get the chosen AGAT container version
singularity pull docker://quay.io/biocontainers/agat:1.0.0--pl5321hdfd78af_0
# run the container
singularity run agat_1.0.0--pl5321hdfd78af_0.sif
You are now in the container. You can use an AGAT's tool e.g. agat_convert_sp_gxf2gxf.pl doing
agat_convert_sp_gxf2gxf.pl --help
</details>
Using Bioconda
<details> <summary>See details</summary>Install AGAT
conda install -c bioconda agat
Update AGAT
conda update agat
Uninstall AGAT
conda uninstall agat
</details>
Old school - Manually
<details> <summary>See details</summary> You will have to install all prerequisites and AGAT manually.Install prerequisites
-
R (optional)
You can install it by conda (conda install r-base
), through CRAN (See here for a nice tutorial) or using your package management tool (e.g apt for Debian, Ubuntu, and related Linux distributions). R is optional and can be used to perform some plots. You will need to install the perl depency Statistics::R -
Perl >= 5.8
It should already be available on your computer. If you are unlucky perl.org is the place to go. -
Perl modules
They can be installed in different ways:- using cpan or cpanm
cpanm install bioperl Clone Graph::Directed LWP::UserAgent Carp Sort::Naturally File::Share File::ShareDir::Install Moose YAML LWP::Protocol::https Term::ProgressBar
-
using conda
- using the provided yaml file
conda env create -f conda_environment_AGAT.yml conda activate agat
- manually
conda install perl-bioperl perl-clone perl-graph perl-lwp-simple perl-carp perl-sort-naturally perl-file-share perl-file-sharedir-install perl-moose perl-yaml perl-lwp-protocol-https perl-term-progressbar
-
using your package management tool (e.g apt for Debian, Ubuntu, and related Linux distributions)
apt install libbio-perl-perl libclone-perl libgraph-perl liblwp-useragent-determined-perl libstatistics-r-perl libcarp-clan-perl libsort-naturally-perl libfile-share-perl libfile-sharedir-perl libfile-sharedir-install-perl libyaml-perl liblwp-protocol-https-perl libterm-progressbar-perl
-
Optional Some scripts offer the possibility to perform plots. You will need R and Statistics::R which are not included by default.
-
R
You can install it by conda (conda install r-base
), through CRAN (See here for a nice tutorial) or using your package management tool (e.g apt for Debian, Ubuntu, and related Linux distributions). -
Statistics::R You can install it through conda (
conda install perl-statistics-r
), using cpan/cpanm (cpanm install Statistics::R
), or your package management tool (apt install libstatistics-r-perl
)
-
Install AGAT
git clone https://github.com/NBISweden/AGAT.git # Clone AGAT
cd AGAT # move into AGAT folder
perl Makefile.PL # Check all the dependencies*
make # Compile
make test # Test
make install # Install
<sup>*</sup>If dependencies are missing you will be warn. Please refer to the Install prerequisites section.
Remark: On MS Windows, instead of make you'd probably have to use dmake or nmake depending the toolchain you have.
Update AGAT
From the folder where the repository is located.
git pull # Update to last AGAT
perl Makefile.PL # Check all the dependencies*
make # Compile
make test # Test
make install # Install
<sup>*</sup>If dependencies are missing you will be warn. Please refer to the Install prerequisites section.
Change to a specific version
From the folder where the repository is located.
git pull # Update the code
git checkout v0.1 # use version v0.1 (See releases tab for a list of available versions)
perl Makefile.PL # Check all the dependencies*
make # Compile
make test # Test
make install # Install
<sup>*</sup>If dependencies are missing you will be warn. Please refer to the Install prerequisites section.
Uninstall AGAT
perl uninstall_AGAT
</details>
Usage
script_name.pl -h
List of tools
As AGAT is a toolkit, it contains a lot of tools. The main one is agat_convert_sp_gxf2gxf.pl
that allows to check, fix, pad missing information (features/attributes) of any kind of gtf and gff to create complete, sorted and standardised gff3 format.
All the installed scripts have the agat_
prefix.
To have a look to the available tools you have several approaches:
agat --tools
- Typing
agat_
in your terminal followed by the <TAB> key to activate the autocompletion will display the complete list of available tools. - The documentation.
More about the tools
with _sp_ prefix => Means SLURP
The gff file will be charged in memory in a specific data structure facilitating the access to desired features at any time. It has a memory cost but make life smoother. Indeed, it allows to perform complicated tasks in a more time efficient way. Moreover, it allows to fix all potential errors in the limit of the possibilities given by the format itself. See the AGAT parser section for more information about it.
with _sq_ prefix => Means SEQUENTIAL
The gff file is read and processed from its top to the end line by line without sanity check (e.g. relationship between the features). This is memory efficient.
The AGAT parser - Standardisation to create GXF files compliant to any tool
All tools with agat_sp_
prefix will parse and slurps the entire data into a specific data structure.
Below you will find more information about peculiarity of the data structure,
and the parsing approach used.
the data structure
<details> <summary>See data structure details</summary>The method create a hash structure containing all the data in memory. We can call it OMNISCIENT. The OMNISCIENT hold the GFF/GTF header information in that structure:
$omniscient{other}{header} = header information from the beginning of the file starting by #
The OMNISCIENT hold the GFF/GTF feature information in that structure:
$omniscient{level1}{tag_l1}{level1_id} = feature <= tag could be gene, match
$omniscient{level2}{tag_l2}{idY} = @featureListL2 <= tag could be mRNA,rRNA,tRNA,etc. idY is a level1_id (know as Parent attribute within the level2 feature). The @featureListL2 is a list to be able to manage isoform cases.
$omniscient{level3}{tag_l3}{idZ} = @featureListL3 <= tag could be exon,cds,utr3,utr5,etc. idZ is the ID of a level2 feature (know as Parent attribute within the level3 feature). The @featureListL3 is a list to be able to put all the feature of a same tag together.
The OMNISCIENT hold the agat_config.yml
information in that structure:
$omniscient{config}{parameter1} = value parameter1
$omniscient{config}{parameter2} = value parameter2
The OMNISCIENT hold the feature_levels.yaml
information in that structure:
$omniscient{other}{level}{level1}{featureTypeX} = value featureTypeX (standalone, topfeature)
$omniscient{other}{level}{level2}{featureTypeY} = value featureTypeY
$omniscient{other}{level}{level2}{featureTypeZ} = value featureTypeZ
</details>
How does the AGAT parser work
<img align="right" src="docs/img/agat_parsing_overview.jpg" width="500" height="250" />
The AGAT parser phylosophy:
-
- Parse by Parent/child relationship or gene_id/transcript_id relationship.
-
- ELSE Parse by a common tag (an attribute value shared by feature that must be grouped together. By default we are using locus_tag but can be set by parameter).
-
- ELSE Parse sequentially (mean group features in a bucket, and the bucket change at each level2 feature, and bucket are join in a common tag at each new L1 feature).
/!\ Cases with only level3 features (i.e rast or some prokka files), sequential parsing may not work as expected if Parent/ID gene_id/transcript_id attributes are missing. Indeed all features will be the child of only one newly created Parent. To create a parent per feature or group of features, a common tag must be used to group them correctly (by default gene_id
and locus_tag
but you can set up the ones of your choice)
To resume by priority of way to parse: Parent/child relationship > locus_tag > sequential.
The parser may used only one or a mix of these approaches according of the peculiarity of the gtf/gff file you provide.
What can the AGAT parser do for you
- It creates missing parental features. (e.g if a level2 or level3 feature do not have parental feature(s) we create the missing level2 and/or level1 feature(s)).
- It creates missing mandatory attributes (ID and/or Parent).
- It fixes identifier to be uniq.
- It removes duplicated features (same position, same ID, same Parent).
- It expands level3 features sharing multiple parents (e.g if one exon has list of multiple parent mRNA in its Parent attribute, one exon per parent with uniq ID will be created.
- It fixes feature location errors (e.g an mRNA spanning over its gene location, we fix the gene location).
- It adds UTR if possible (CDS and exon present).
- It adds exon if possible (CDS has to be present).
- It groups features together (if related features are spread at different places in the file).
examples
AGAT was tested on 42 different types of GTF/GFF of different flavours or/and containing errors.
Below few are listed but you can find the full list of them into the t/gff_syntax
directory.
example 8 - only CDS defined
<details> <summary>See example</summary>##gff-version 3
Tob1_contig1 Prodigal:2.60 CDS 476 670 . - 0 ID=Tob1_00001;locus_tag=Tob1_00001;product=hypothetical protein
Tob1_contig1 Prodigal:2.60 CDS 34266 35222 . + 0 ID=Tob1_00024;locus_tag=Tob1_00024;product=hypothetical protein
Tob1_contig1 SignalP:4.1 sig_peptide 34266 34298 . + 0 inference=ab initio prediction:SignalP:4.1;note=predicted cleavage at residue 33;product=putative signal peptide
Tob1_contig1 Prodigal:2.60 CDS 35267 37444 . - 0 ID=Tob1_00025;locus_tag=Tob1_00025;
Tob1_contig1 SignalP:4.1 sig_peptide 37420 37444 . - 0 inference=ab initio prediction:SignalP:4.1;note=predicted cleavage at residue 25;product=putative signal peptide
Tob1_contig1 Prodigal:2.60 CDS 38304 39338 . - 0 ID=Tob1_00026;locus_tag=Tob1_00026;
</details>
agat_convert_sp_gxf2gxf.pl --gff 8_test.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
Tob1_contig1 Prodigal:2.60 gene 34266 35222 . + 0 ID=nbis_NEW-gene-2;locus_tag=Tob1_00024;product=hypothetical protein
Tob1_contig1 Prodigal:2.60 mRNA 34266 35222 . + 0 ID=nbis_nol2id-cds-2;Parent=nbis_NEW-gene-2;locus_tag=Tob1_00024;product=hypothetical protein
Tob1_contig1 Prodigal:2.60 exon 34266 35222 . + . ID=nbis_NEW-exon-2;Parent=nbis_nol2id-cds-2;locus_tag=Tob1_00024;product=hypothetical protein
Tob1_contig1 Prodigal:2.60 CDS 34266 35222 . + 0 ID=Tob1_00024;Parent=nbis_nol2id-cds-2;locus_tag=Tob1_00024;product=hypothetical protein
Tob1_contig1 SignalP:4.1 sig_peptide 34266 34298 . + 0 ID=sig_peptide-1;Parent=nbis_nol2id-cds-2;inference=ab initio prediction:SignalP:4.1;note=predicted cleavage at residue 33;product=putative signal peptide
Tob1_contig1 Prodigal:2.60 gene 35267 37444 . - 0 ID=nbis_NEW-gene-3;locus_tag=Tob1_00025
Tob1_contig1 Prodigal:2.60 mRNA 35267 37444 . - 0 ID=nbis_nol2id-cds-3;Parent=nbis_NEW-gene-3;locus_tag=Tob1_00025
Tob1_contig1 Prodigal:2.60 exon 35267 37444 . - . ID=nbis_NEW-exon-3;Parent=nbis_nol2id-cds-3;locus_tag=Tob1_00025
Tob1_contig1 Prodigal:2.60 CDS 35267 37444 . - 0 ID=Tob1_00025;Parent=nbis_nol2id-cds-3;locus_tag=Tob1_00025
Tob1_contig1 SignalP:4.1 sig_peptide 37420 37444 . - 0 ID=sig_peptide-2;Parent=nbis_nol2id-cds-3;inference=ab initio prediction:SignalP:4.1;note=predicted cleavage at residue 25;product=putative signal peptide
Tob1_contig1 Prodigal:2.60 gene 38304 39338 . - 0 ID=nbis_NEW-gene-4;locus_tag=Tob1_00026
Tob1_contig1 Prodigal:2.60 mRNA 38304 39338 . - 0 ID=nbis_nol2id-cds-4;Parent=nbis_NEW-gene-4;locus_tag=Tob1_00026
Tob1_contig1 Prodigal:2.60 exon 38304 39338 . - . ID=nbis_NEW-exon-4;Parent=nbis_nol2id-cds-4;locus_tag=Tob1_00026
Tob1_contig1 Prodigal:2.60 CDS 38304 39338 . - 0 ID=Tob1_00026;Parent=nbis_nol2id-cds-4;locus_tag=Tob1_00026
</details>
example 9 - level2 feature missing (mRNA) and level3 features missing (UTRs)
<details> <summary>See example</summary>##gff-version 3
#!gff-spec-version 1.14
#!source-version NCBI C++ formatter 0.2
##Type DNA NC_003070.9
NC_003070.9 RefSeq source 1 30427671 . + . organism=Arabidopsis thaliana;mol_type=genomic DNA;db_xref=taxon:3702;chromosome=1;ecotype=Columbia
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;gbkey=mRNA;locus_tag=AT1G01010;
NC_003070.9 RefSeq exon 3996 4276 . + . ID=NM_099983.2;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010;
NC_003070.9 RefSeq exon 4486 4605 . + . ID=NM_099983.2;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010;
NC_003070.9 RefSeq exon 4706 5095 . + . ID=NM_099983.2;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010;
NC_003070.9 RefSeq exon 5174 5326 . + . ID=NM_099983.2;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010;
NC_003070.9 RefSeq exon 5439 5899 . + . ID=NM_099983.2;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010;
NC_003070.9 RefSeq CDS 3760 3913 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq CDS 3996 4276 . + 2 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq CDS 4486 4605 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq CDS 4706 5095 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq CDS 5174 5326 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq CDS 5439 5627 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq start_codon 3760 3762 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
NC_003070.9 RefSeq stop_codon 5628 5630 . + 0 ID=NM_099983.2;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010;
</details>
agat_convert_sp_gxf2gxf.pl --gff 8_test.gff
##gff-version 3
#!gff-spec-version 1.14
#!source-version NCBI C++ formatter 0.2
##Type DNA NC_003070.9
NC_003070.9 RefSeq source 1 30427671 . + . ID=source-1;chromosome=1;db_xref=taxon:3702;ecotype=Columbia;mol_type=genomic DNA;organism=Arabidopsis thaliana
NC_003070.9 RefSeq gene 3631 5899 . + . ID=nbis_NEW-gene-1;locus_tag=AT1G01010
NC_003070.9 RefSeq mRNA 3631 5899 . + . ID=NC_003070.9:NAC001;Parent=nbis_NEW-gene-1;locus_tag=AT1G01010
NC_003070.9 RefSeq exon 3631 3913 . + . ID=NM_099983.2;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
NC_003070.9 RefSeq exon 3996 4276 . + . ID=nbis_NEW-exon-1;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
NC_003070.9 RefSeq exon 4486 4605 . + . ID=nbis_NEW-exon-2;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
NC_003070.9 RefSeq exon 4706 5095 . + . ID=nbis_NEW-exon-3;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
NC_003070.9 RefSeq exon 5174 5326 . + . ID=nbis_NEW-exon-4;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
NC_003070.9 RefSeq exon 5439 5899 . + . ID=nbis_NEW-exon-5;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
NC_003070.9 RefSeq CDS 3760 3913 . + 0 ID=nbis_NEW-cds-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq CDS 3996 4276 . + 2 ID=nbis_NEW-cds-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq CDS 4486 4605 . + 0 ID=nbis_NEW-cds-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq CDS 4706 5095 . + 0 ID=nbis_NEW-cds-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq CDS 5174 5326 . + 0 ID=nbis_NEW-cds-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq CDS 5439 5627 . + 0 ID=nbis_NEW-cds-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq five_prime_UTR 3631 3759 . + . ID=nbis_NEW-five_prime_utr-1;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
NC_003070.9 RefSeq start_codon 3760 3762 . + 0 ID=nbis_NEW-start_codon-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq stop_codon 5628 5630 . + 0 ID=nbis_NEW-stop_codon-1;Parent=NC_003070.9:NAC001;locus_tag=AT1G01010
NC_003070.9 RefSeq three_prime_UTR 5628 5899 . + . ID=nbis_NEW-three_prime_utr-1;Parent=NC_003070.9:NAC001;gbkey=mRNA;locus_tag=AT1G01010
</details>
example 18 - related features spread within the file
<details> <summary>See example</summary>##gff-version 3
scaffold625 maker gene 337818 343277 . + . ID=CLUHARG00000005458;Name=TUBB3_2
scaffold625 maker mRNA 337818 343277 . + . ID=CLUHART00000008717;Parent=CLUHARG00000005458
scaffold625 maker exon 337818 337971 . + . ID=CLUHART00000008717:exon:1404;Parent=CLUHART00000008717
scaffold625 maker exon 340733 340841 . + . ID=CLUHART00000008717:exon:1405;Parent=CLUHART00000008717
scaffold789 maker three_prime_UTR 564589 564780 . + . ID=CLUHART00000006146:three_prime_utr;Parent=CLUHART00000006146
scaffold789 maker mRNA 558184 564780 . + . ID=CLUHART00000006147;Parent=CLUHARG00000003852
scaffold625 maker CDS 337915 337971 . + 0 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 340733 340841 . + 0 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 341518 341628 . + 2 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 341964 343033 . + 2 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker five_prime_UTR 337818 337914 . + . ID=CLUHART00000008717:five_prime_utr;Parent=CLUHART00000008717
scaffold625 maker three_prime_UTR 343034 343277 . + . ID=CLUHART00000008717:three_prime_utr;Parent=CLUHART00000008717
scaffold789 maker gene 558184 564780 . + . ID=CLUHARG00000003852;Name=PF11_0240
scaffold789 maker mRNA 558184 564780 . + . ID=CLUHART00000006146;Parent=CLUHARG00000003852
scaffold789 maker exon 558184 560123 . + . ID=CLUHART00000006146:exon:995;Parent=CLUHART00000006146
scaffold789 maker exon 561401 561519 . + . ID=CLUHART00000006146:exon:996;Parent=CLUHART00000006146
scaffold789 maker exon 564171 564235 . + . ID=CLUHART00000006146:exon:997;Parent=CLUHART00000006146
scaffold789 maker exon 564372 564780 . + . ID=CLUHART00000006146:exon:998;Parent=CLUHART00000006146
scaffold789 maker CDS 558191 560123 . + 0 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold789 maker CDS 561401 561519 . + 2 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold625 maker exon 341518 341628 . + . ID=CLUHART00000008717:exon:1406;Parent=CLUHART00000008717
scaffold625 maker exon 341964 343277 . + . ID=CLUHART00000008717:exon:1407;Parent=CLUHART00000008717
scaffold789 maker CDS 564171 564235 . + 0 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold789 maker CDS 564372 564588 . + 1 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold789 maker five_prime_UTR 558184 558190 . + . ID=CLUHART00000006146:five_prime_utr;Parent=CLUHART00000006146
scaffold789 maker exon 558184 560123 . + . ID=CLUHART00000006147:exon:997;Parent=CLUHART00000006147
scaffold789 maker exon 561401 561519 . + . ID=CLUHART00000006147:exon:998;Parent=CLUHART00000006147
scaffold789 maker exon 562057 562121 . + . ID=CLUHART00000006147:exon:999;Parent=CLUHART00000006147
scaffold789 maker exon 564372 564780 . + . ID=CLUHART00000006147:exon:1000;Parent=CLUHART00000006147
scaffold789 maker CDS 558191 560123 . + 0 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker CDS 561401 561519 . + 2 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker CDS 562057 562121 . + 0 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker CDS 564372 564588 . + 1 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker five_prime_UTR 558184 558190 . + . ID=CLUHART00000006147:five_prime_utr;Parent=CLUHART00000006147
scaffold789 maker three_prime_UTR 564589 564780 . + . ID=CLUHART00000006147:three_prime_utr;Parent=CLUHART00000006147
</details>
agat_convert_sp_gxf2gxf.pl --gff 18_test.gff
##gff-version 3
scaffold625 maker gene 337818 343277 . + . ID=CLUHARG00000005458;Name=TUBB3_2
scaffold625 maker mRNA 337818 343277 . + . ID=CLUHART00000008717;Parent=CLUHARG00000005458
scaffold625 maker exon 337818 337971 . + . ID=CLUHART00000008717:exon:1404;Parent=CLUHART00000008717
scaffold625 maker exon 340733 340841 . + . ID=CLUHART00000008717:exon:1405;Parent=CLUHART00000008717
scaffold625 maker exon 341518 341628 . + . ID=CLUHART00000008717:exon:1406;Parent=CLUHART00000008717
scaffold625 maker exon 341964 343277 . + . ID=CLUHART00000008717:exon:1407;Parent=CLUHART00000008717
scaffold625 maker CDS 337915 337971 . + 0 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 340733 340841 . + 0 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 341518 341628 . + 2 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker CDS 341964 343033 . + 2 ID=CLUHART00000008717:cds;Parent=CLUHART00000008717
scaffold625 maker five_prime_UTR 337818 337914 . + . ID=CLUHART00000008717:five_prime_utr;Parent=CLUHART00000008717
scaffold625 maker three_prime_UTR 343034 343277 . + . ID=CLUHART00000008717:three_prime_utr;Parent=CLUHART00000008717
scaffold789 maker gene 558184 564780 . + . ID=CLUHARG00000003852;Name=PF11_0240
scaffold789 maker mRNA 558184 564780 . + . ID=CLUHART00000006146;Parent=CLUHARG00000003852
scaffold789 maker exon 558184 560123 . + . ID=CLUHART00000006146:exon:995;Parent=CLUHART00000006146
scaffold789 maker exon 561401 561519 . + . ID=CLUHART00000006146:exon:996;Parent=CLUHART00000006146
scaffold789 maker exon 564171 564235 . + . ID=CLUHART00000006146:exon:997;Parent=CLUHART00000006146
scaffold789 maker exon 564372 564780 . + . ID=CLUHART00000006146:exon:998;Parent=CLUHART00000006146
scaffold789 maker CDS 558191 560123 . + 0 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold789 maker CDS 561401 561519 . + 2 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold789 maker CDS 564171 564235 . + 0 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold789 maker CDS 564372 564588 . + 1 ID=CLUHART00000006146:cds;Parent=CLUHART00000006146
scaffold789 maker five_prime_UTR 558184 558190 . + . ID=CLUHART00000006146:five_prime_utr;Parent=CLUHART00000006146
scaffold789 maker three_prime_UTR 564589 564780 . + . ID=CLUHART00000006146:three_prime_utr;Parent=CLUHART00000006146
scaffold789 maker mRNA 558184 564780 . + . ID=CLUHART00000006147;Parent=CLUHARG00000003852
scaffold789 maker exon 558184 560123 . + . ID=CLUHART00000006147:exon:997;Parent=CLUHART00000006147
scaffold789 maker exon 561401 561519 . + . ID=CLUHART00000006147:exon:998;Parent=CLUHART00000006147
scaffold789 maker exon 562057 562121 . + . ID=CLUHART00000006147:exon:999;Parent=CLUHART00000006147
scaffold789 maker exon 564372 564780 . + . ID=CLUHART00000006147:exon:1000;Parent=CLUHART00000006147
scaffold789 maker CDS 558191 560123 . + 0 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker CDS 561401 561519 . + 2 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker CDS 562057 562121 . + 0 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker CDS 564372 564588 . + 1 ID=CLUHART00000006147:cds;Parent=CLUHART00000006147
scaffold789 maker five_prime_UTR 558184 558190 . + . ID=CLUHART00000006147:five_prime_utr;Parent=CLUHART00000006147
scaffold789 maker three_prime_UTR 564589 564780 . + . ID=CLUHART00000006147:three_prime_utr;Parent=CLUHART00000006147
</details>
How to cite?
This work has not been published (I will think about it) but you can cite it as follow:
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.
or/and (Adapt the AGAT version to the one you used):
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
Publication using AGAT
See here for examples of publications using AGAT.
Troubleshooting
See Troubleshooting section form the doc here.