2.5 GTF Format
GTF (Gene Transfer Format) is a widely-used file format for gene annotations. It’s a refinement of GFF version 2 and is particularly popular for RNA-seq analysis.
Overview
GTF files describe:
- Gene structures
- Transcript isoforms
- Exon positions
- Coding sequences (CDS)
- Start and stop codons
GTF Format Structure
GTF files are tab-delimited text files with 9 columns, similar to GFF but with specific attribute requirements.
Basic Structure
chr1 HAVANA gene 11869 14409 . + . gene_id "ENSG00000223972"; gene_name "DDX11L1";
chr1 HAVANA transcript 11869 14409 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; gene_name "DDX11L1";
chr1 HAVANA exon 11869 12227 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "1";
chr1 HAVANA exon 12613 12721 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "2";
chr1 HAVANA exon 13221 14409 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "3";
GTF Columns
| Column | Name | Description |
|---|---|---|
| 1 | seqname | Chromosome or scaffold name |
| 2 | source | Source of annotation (Ensembl, HAVANA, etc.) |
| 3 | feature | Feature type (gene, transcript, exon, CDS, etc.) |
| 4 | start | Start position (1-based, inclusive) |
| 5 | end | End position (1-based, inclusive) |
| 6 | score | Confidence score (usually .) |
| 7 | strand | + (forward), - (reverse) |
| 8 | frame | For CDS: 0, 1, or 2 (reading frame) |
| 9 | attribute | Semicolon-separated key “value” pairs |
Standard feature types:
gene- Genetranscript- Transcript (mRNA, lncRNA, etc.)exon- ExonCDS- Coding sequencestart_codon- Translation startstop_codon- Translation stopUTR- Untranslated region5UTR- 5’ UTR3UTR- 3’ UTR
Reading frame
For CDS features - reading frame:
0- First nucleotide is first position of codon1- Second nucleotide is first position of codon2- Third nucleotide is first position of codon.- Not applicable (for non-CDS features)
Attributes
Required attributes:
gene_id- Unique gene identifier (REQUIRED for all features)transcript_id- Unique transcript identifier (REQUIRED for transcript-level features)
Attribute format:
key "value"; key2 "value2";
Note: Values are quoted, statements end with semicolon
Example: Complete Gene Structure
# Transcript level
chr11 refGene transcript 32233672 32234486 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; gene_name "Hba-a1";
# Exons
chr11 refGene exon 32233672 32233801 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "1"; exon_id "NM_008218.1"; gene_name "Hba-a1";
chr11 refGene exon 32233924 32234128 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "2"; exon_id "NM_008218.2"; gene_name "Hba-a1";
chr11 refGene exon 32234263 32234486 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "3"; exon_id "NM_008218.3"; gene_name "Hba-a1";
Example: Protein-Coding Gene (Hba-a1)
chr11 refGene transcript 32233672 32234486 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; gene_name "Hba-a1";
chr11 refGene exon 32233672 32233801 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "1"; exon_id "NM_008218.1"; gene_name "Hba-a1";
chr11 refGene 5UTR 32233672 32233706 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "1"; exon_id "NM_008218.1"; gene_name "Hba-a1";
chr11 refGene CDS 32233707 32233801 . + 0 gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "1"; exon_id "NM_008218.1"; gene_name "Hba-a1";
chr11 refGene exon 32233924 32234128 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "2"; exon_id "NM_008218.2"; gene_name "Hba-a1";
chr11 refGene CDS 32233924 32234128 . + 1 gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "2"; exon_id "NM_008218.2"; gene_name "Hba-a1";
chr11 refGene exon 32234263 32234486 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "3"; exon_id "NM_008218.3"; gene_name "Hba-a1";
chr11 refGene CDS 32234263 32234388 . + 0 gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "3"; exon_id "NM_008218.3"; gene_name "Hba-a1";
chr11 refGene 3UTR 32234392 32234486 . + . gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "3"; exon_id "NM_008218.3"; gene_name "Hba-a1";
chr11 refGene start_codon 32233707 32233709 . + 0 gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "1"; exon_id "NM_008218.1"; gene_name "Hba-a1";
chr11 refGene stop_codon 32234389 32234391 . + 0 gene_id "Hba-a1"; transcript_id "NM_008218"; exon_number "3"; exon_id "NM_008218.3"; gene_name "Hba-a1";
Working with GTF Files
View GTF file
less annotation.gtf
head -n 20 annotation.gtfCount features by type
cut -f3 annotation.gtf | sort | uniq -cExtract all 5’UTRs
awk '$3 == "5UTR"' annotation.gtfExtract specific gene
grep 'gene_name "ACTB"' annotation.gtfGet unique gene list
grep -P '\tgene\t' annotation.gtf | \
grep -oP 'gene_name "\K[^"]+' | \
sort -uExtract transcripts on specific chromosome
awk '$1 == "chr1" && $3 == "transcript"' annotation.gtfConvert GTF to BED
# Extract exons as BED
awk '$3 == "exon" {print $1"\t"$4-1"\t"$5"\t"$10"\t"$6"\t"$7}' annotation.gtf | \
tr -d '";'Gene GTF Sources
Internal to the CCB:
/databank/igenomes/Mus_musculus/UCSC/mm39/Annotation/Genes/refGene.gtf
/databank/igenomes/Homo_sapiens/UCSC/hg38/Annotation/Genes/genes.gtf