This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Looking for messy GFF3 examples to test a Rust AGAT-compatible gxf2gxf beta

I am testing gxfkit, a Rust implementation of selected AGAT-compatible GFF/GTF workflows.

The production-supported path is gff2gtf, using AGAT 1.7.0 as the correctness oracle. On the gated core corpus (human_chr1, human_chr21, yeast), the output is 100% normalize-identical after documented order-only normalization.

The current main branch also has a gxf2gxf standardization beta. It is fixture-gated against AGAT and has a public residual ledger, but it is not a full AGAT replacement yet.

I am looking for real GFF3 files that stress AGAT hierarchy standardization: missing parents, direct CDS/exon/UTR children, transposable-element loci, or unusual RefSeq/FlyBase-style structures.

Useful feedback would include:

  • AGAT version.
  • gxfkit version or commit.
  • Original command lines.
  • Minimal input snippet if possible.
  • The smallest AGAT-vs-gxfkit output difference.

Feedback thread: https://github.com/benngaihk/gxfkit/issues/7

Parity ledgers: https://github.com/benngaihk/gxfkit/blob/main/docs/PARITY.md https://github.com/benngaihk/gxfkit/blob/main/docs/GXF2GXF-PARITY.md

gtf agat genome-annotation gff3

2 answers

Three sources that reliably break things:

NCBI RefSeq GCF_*_genomic.gff.gz - multi-parent exons with comma-separated Parent=, pseudogene records whose transcript children carry no CDS, immunoglobulin V_gene_segment/C_gene_segment, and cDNA_match/match alignment features mixed into the same file. The multi-parent exons are usually the first thing to diverge.

FlyBase dmel-all-*.gff - the TE insertion features you mentioned, plus mod(mdg4), which is trans-spliced and has transcripts on opposite strands under one gene. That one breaks parsers outright rather than subtly.

Raw BRAKER/Augustus output - uses transcript rather than mRNA, which exercises the missing-parent inference path hard.

Also worth pulling AGAT's own test fixtures out of the repo if you haven't - the deliberately malformed files in there are effectively a spec for what it tolerates.

The AGAT code source contains many examples (> 40 cases), GTF and GFF with errors and the expected result.

Log in to answer this question.