---
name: "gffread"
section: "1"
platform: "linux"
package: "gffread"
version: "0.12.7-8"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gffread"
---

# gffread(1)

GFF/GTF utility providing format conversions, region filtering, FASTA sequence extraction

## NAME

gffread - GFF/GTF utility providing format conversions, region filtering, FASTA sequence extraction

## SYNOPSIS

**gffread** \<input\_gff\> \[-g \<genomic\_seqs\_fasta\> \| \<dir\>\]\[-s \<seq\_info.fsize\>\] \[-o \<outfile.gff\>\] \[-t \<tname\>\] \[-r \[\[\<strand\>\]\<chr\>:\]\<start\>..\<end\> \[-R\]\] \[-CTVNJMKQAFPGUBHZWTOLE\] \[-w \<exons.fa\>\] \[-x \<cds.fa\>\] \[-y \<tr\_cds.fa\>\] \[-i \<maxintron\>\] \[--sort-by \<refseq\_list.txt\>\]

## DESCRIPTION

-

  Filter and convert GFF3/GTF2 records, extract corresponding sequences etc. By default (i.e. without **-O**) only process transcripts, ignore other features.

-

  \<input\_gff\> is a GFF file, use '-' for stdin

## OPTIONS

- **-i**

  discard transcripts having an intron larger than \<maxintron\>

- **-l**

  discard transcripts shorter than \<minlen\> bases

- **-r**

  only show transcripts overlapping coordinate range \<start\>..\<end\> (on chromosome/contig \<chr\>, strand \<strand\> if provided)

- **-R**

  for **-r** option, discard all transcripts that are not fully contained within the given range

- **-U**

  discard single-exon transcripts

- **-C**

  coding only: discard mRNAs that have no CDS features

**--nc** non-coding only: discard mRNAs that have CDS features

**--ignore-locus** : discard locus features and attributes found in the input

- **-A**

  use the description field from \<seq\_info.fsize\> and add it as the value for a 'descr' attribute to the GFF record

- **-s**

  \<seq\_info.fsize\> is a tab-delimited file providing this info for each of the mapped sequences: \<seq-name\> \<seq-length\> \<seq-description\> (useful for **-A** option with mRNA/EST/protein mappings)

Sorting: (by default, chromosomes are kept in the order they were found)

**--sort-alpha** : chromosomes (reference sequences) are sorted alphabetically

**--sort-by** : sort the reference sequences by the order in which their

-

  names are given in the \<refseq.lst\> file

### Misc options:

- **-F**

  attempt to preserve all GFF attributes preservation

**--keep-exon-attrs** : for **-F** option, do not attempt to reduce redundant

-

  exon/CDS attributes

- **-G**

  do not keep exon attributes, move them to the transcript feature (for GFF3 output)

**--keep-genes** : in transcript-only mode (default), also preserve gene records

**--keep-comments**: for GFF3 input/output, try to preserve comments

- **-O**

  process other non-transcript GFF records (by default non-transcript records are ignored)

- **-V**

  discard any mRNAs with CDS having in-frame stop codons (requires **-g**)

- **-H**

  for **-V** option, check and adjust the starting CDS phase if the original phase leads to a translation with an in-frame stop codon

- **-B**

  for **-V** option, single-exon transcripts are also checked on the opposite strand (requires **-g**)

- **-P**

  add transcript level GFF attributes about the coding status of each transcript, including partialness or in-frame stop codons (requires **-g**)

**--add-hasCDS** : add a "hasCDS" attribute with value "true" for transcripts

-

  that have CDS features

**--adj-stop** stop codon adjustment: enables **-P** and performs automatic

-

  adjustment of the CDS stop coordinate if premature or downstream

- **-N**

  discard multi-exon mRNAs that have any intron with a non-canonical splice site consensus (i.e. not GT-AG, GC-AG or AT-AC)

- **-J**

  discard any mRNAs that either lack initial START codon or the terminal STOP codon, or have an in-frame stop codon (i.e. only print mRNAs with a complete CDS)

**--no-pseudo**: filter out records matching the 'pseudo' keyword

**--in-bed**: input should be parsed as BED format (automatic if the input

-

  filename ends with .bed\*)

**--in-tlf**: input GFF-like one-line-per-transcript format without exon/CDS

-

  features (see **--tlf** option below); automatic if the input filename ends with .tlf)

### Clustering:

**-M**/--merge : cluster the input transcripts into loci, discarding

-

  "duplicated" transcripts (those with the same exact introns and fully contained or equal boundaries)

**-d** \<dupinfo\> : for **-M** option, write duplication info to file \<dupinfo\>

**--cluster-only**: same as **-M**/--merge but without discarding any of the

-

  "duplicate" transcripts, only create "locus" features

- **-K**

  for **-M** option: also discard as redundant the shorter, fully contained

-

  transcripts (intron chains matching a part of the container)

- **-Q**

  for **-M** option, no longer require boundary containment when assessing redundancy (can be combined with **-K**); only introns have to match for multi-exon transcripts, and \>=80% overlap for single-exon transcripts

- **-Y**

  for **-M** option, enforce **-Q** but also discard overlapping single-exon transcripts, even on the opposite strand (can be combined with **-K**)

### Output options:

**--force-exons**: make sure that the lowest level GFF features are considered

-

  "exon" features

**--gene2exon**: for single-line genes not parenting any transcripts, add an

-

  exon feature spanning the entire gene (treat it as a transcript)

- **-D**

  decode url encoded characters within attributes

- **-Z**

  merge very close exons into a single exon (when intron size\<4)

- **-g**

  full path to a multi-fasta file with the genomic sequences for all input mappings, OR a directory with single-fasta files (one per genomic sequence, with file names matching sequence names)

- **-w**

  write a fasta file with spliced exons for each GFF transcript

- **-x**

  write a fasta file with spliced CDS for each GFF transcript

- **-y**

  write a protein fasta file with the translation of CDS for each record

- **-W**

  for **-w** and **-x** options, write in the FASTA defline the exon coordinates projected onto the spliced sequence; for **-y** option, write transcript attributes in the FASTA defline

- **-S**

  for **-y** option, use '\*' instead of '.' as stop codon translation

- **-L**

  Ensembl GTF to GFF3 conversion (implies **-F**; should be used with **-m**)

- **-m**

  \<chr\_replace\> is a name mapping table for converting reference sequence names, having this 2-column format: \<original\_ref\_ID\> \<new\_ref\_ID\> WARNING: all GFF records on reference sequences whose original IDs are not found in the 1st column of this table will be discarded!

- **-t**

  use \<trackname\> in the 2nd column of each GFF/GTF output line

- **-o**

  print the GFF records to \<outfile.gff\> (those that passed any given filters). Use **-o-** to enable printing of to stdout

- **-T**

  for **-o**, output will be GTF instead of GFF3

**--bed** for **-o**, output BED format instead of GFF3

**--tlf** for **-o**, output "transcript line format" which is like GFF

-

  but exons, CDS features and related data are stored as GFF attributes in the transcript feature line, like this:

-

  exoncount=N;exons=\<exons\>;CDSphase=\<N\>;CDS=\<CDScoords\>

-

  \<exons\> is a comma-delimited list of exon\_start-exon\_end coordinates; \<CDScoords\> is CDS\_start:CDS\_end coordinates or a list like \<exons\>;

**-v**,-E expose (warn about) duplicate transcript IDs and other potential

-

  problems with the given GFF/GTF records

## AUTHOR

This manpage was written by Andreas Tille for the Debian distribution and can be used for any other usage of the program.
