Genome-wide Electronic Tool for Annotation
One command from genome + RNA-Seq + homologous proteins to an accurate GFF3 gene annotation.
- Introduction
- Key Features
- Workflow
- Installation
- Quick Start
- Usage of the Main Script
geta.pl - Typical Command Lines
- Configuration File (
config.txt) - Output Files
- Temporary Directory and Resuming a Run
- Sub-programs
- Tips and Best Practices
- Troubleshooting / FAQ
- Testing and Accuracy
- Contributing
- Authors
- License
GETA (Genome-wide Electronic Tool for Annotation) is a pipeline for predicting gene models in eukaryotic genome sequences. Provide the genome sequence, RNA-Seq data and/or the whole-genome protein sequences of closely related species, and GETA produces a ready-to-use annotation in GFF3 format with a single command.
GETA integrates three independent lines of evidence — homologous proteins, RNA-Seq transcripts and ab initio prediction by AUGUSTUS trained on the evidence — and then curates the merged result (repeat filtering, HMM/BLASTP validation, alternative splicing, ORF analysis and integrity checks) to obtain the final gene models.
- Accurate prediction – the number of predicted genes is realistic, BUSCO completeness is high and exon boundaries are accurate.
- Simple to run – one command runs the whole pipeline automatically; an interrupted run is resumed by simply re-running the same command.
- Multiple lines of evidence – homologous proteins (up to five methods), RNA-Seq (FASTQ / SAM / BAM / CRAM, paired-end and/or single-end, optional strand-specific), and AUGUSTUS with hints.
- Five homology-based methods –
miniprot(default),spaln,exonerate,genewise,gth, usable alone or in any combination. Results of all methods are merged, classified (A/B/C/D) and filtered bySupported_times. - Repeat handling built in – RepeatMasker (Dfam and/or RepBase), RepeatModeler, or a user-supplied repeat library, with a built-in fork-based parallel RepeatMasker worker pool.
- Gene-model validation – Pfam-like HMM databases (
hmmscan) and/or diamond protein databases are used to validate unreliable gene models. - Alternative splicing – isoforms are added from RNA-Seq intron and base-depth information, followed by ORF analysis.
- Rich statistics – a
*.gene_prediction.summaryfile traces the reliability of every step; optional BUSCO assessment of the final result and of every raw prediction, so the methods can be compared. - Genetic code support – NCBI genetic code tables 1–6, 9–16 and 21–33.
- Fully configurable – parameters of every sub-program can be tuned in a well-commented configuration file.
- Bilingual help –
--help(English) and--chinese_help(中文).
flowchart TD
G[/genome.fasta/] --> S0
R[/RNA-Seq reads or alignments/] --> S0
P[/homologous proteins/] --> S0
S0["Step 0: check parameters & dependencies,<br/>tidy genome and protein FASTA, read config"] --> S1
S1["Step 1: repeat analysis<br/>RepeatMasker / RepeatModeler"] --> S2
S1 --> S3
S1 --> S4
S2["Step 2: homology-based prediction<br/>miniprot / spaln / mmseqs+exonerate/genewise/gth"] --> S4
S3["Step 3: RNA-Seq-based prediction<br/>aligner + Sam2Transfrag + StringTie + ORF"] --> S4
S4["Step 4: AUGUSTUS training and prediction with hints"] --> S5
S2 --> S5
S3 --> S5
S5["Step 5: curate gene models<br/>merge, remove repeat genes, validate, alternative splicing, ORF, integrity"] --> S6
S6["Step 6: output GFF3 / GTF / sequences,<br/>low-quality models, statistics, BUSCO"] --> O[/final annotation/]
| Step | Program | What it does |
|---|---|---|
| 0 | geta.pl |
Checks parameters, dependent software and sub-programs; tidies the genome (genome_seq_clear.pl) and protein (fasta_format_revising.pl) FASTA files; reads the configuration file. |
| 1 | runRepeatMaskerModeler |
RepeatMasker (Dfam / RepBase / --RM_lib) and RepeatModeler; produces the repeat annotation and the repeat-masked genome. Skipped when only --no_RepeatModeler is set. |
| 2 | homolog_prediction |
Predicts gene models from homologous proteins; classifies them into A/B/C/D and filters low-confidence ones. |
| 3 | NGSReads_prediction |
Aligns RNA-Seq reads, assembles transcripts (Sam2Transfrag + StringTie), predicts ORFs (TIdeS or TransDecoder); also outputs reliable introns and base depth. |
| 4 | runAugustus |
Trains AUGUSTUS with the evidence gene models, generates hints and predicts genes genome-wide. |
| 5 | curateGeneModels |
Merges the three predictions, removes genes in transposable elements, validates unreliable genes (HMM/BLASTP), adds alternative splicing, performs ORF analysis, removes incomplete transcripts. |
| 6 | outputResults |
Writes GFF3/GTF/sequence files, low-quality models, repeat annotation, raw predictions, optional BUSCO results and the summary statistics. |
GETA was tested on Rocky Linux 9.2. Perl (≥ 5.10) with the core modules Getopt::Long, File::Basename, File::Path, File::Spec, File::Copy, Cwd, POSIX, Digest::MD5 and Fcntl is required (all are part of a standard Perl installation). ParaFly and GNU parallel are no longer required: parallelisation is implemented inside the Perl scripts.
The dependent software are listed in the order in which the pipeline calls them. Most of them are needed only if the corresponding option is used — geta.pl checks everything it needs once at start-up and lists all missing items before any computation begins.
| # | Software | Tested version | Required when |
|---|---|---|---|
| 01 | RepeatMasker | 4.1.6 | Repeat analysis (Step 1) |
| 02 | HMMER (nhmmer, hmmscan) |
3.3.2 | nhmmer: --RM_species_Dfam; hmmscan: --HMM_db |
| 03 | makeblastdb / rmblastn | 2.14.0 | --RM_species_RepBase, --RM_lib, or RepeatModeler |
| 04 | RepeatModeler | 2.0.5 | Neither --RM_lib nor --no_RepeatModeler is set |
| 05 | MMseqs2 | 15-6f452 | --homolog_prediction_method includes gth, exonerate or genewise |
| 06 | GenomeThreader (gth) |
1.7.3 | method gth |
| 07 | exonerate | 2.2.0 | method exonerate |
| 08 | GeneWise | 2.4.1 | method genewise |
| 09 | miniprot | 0.18 | method miniprot (default) |
| 10 | spaln | 3.0.9 | method spaln |
| 11 | Java | jdk-20.0.1 | FASTQ input (runs the bundled Trimmomatic-0.38) |
| 12 | STAR | 2.7.11b | FASTQ input with the default aligner |
| 13 | HISAT2 | 2.1.0 | FASTQ input with --aligner hisat2 (hisat2 and hisat2-build) |
| 14 | SAMtools | 1.17 | Any RNA-Seq input |
| 15 | StringTie | 2.1.3 | Any RNA-Seq input |
| 16 | TIdeS (tides.py / tides) |
1.0.0 | RNA-Seq input and --protein (ORF prediction); otherwise the bundled TransDecoder-v5.5.0 is used |
| 17 | DIAMOND | 2.1.8 | Always (picking evidence gene models, BLASTP validation, TIdeS) |
| 18 | CD-HIT | 4.8.1 | TIdeS dependency |
| 19 | Barrnap | 1.10.5 | TIdeS dependency |
| 20 | AUGUSTUS (augustus, etraining, optimize_augustus.pl, new_species.pl, gff2gbSmallDNA.pl, filterGenes.pl, randomSplit.pl) |
3.5.0 | Always (Step 4) |
| 21 | BUSCO | 5.4.7 | --BUSCO_lineage_dataset |
Bundled with GETA (placed in the installation directory, no separate installation needed): Trimmomatic-0.38, TransDecoder-v5.5.0 (modified version), RepeatMasker_lineage.txt and BUSCO_lineages_list.2021-12-14.txt.
Note on Dfam: RepeatMasker ships only partition 0 (root) of the Dfam database, which suits mammals and fungi. For plants, install partition 5 (Viridiplantae); for Hymenoptera, partition 7. Install the partition that matches your species when using
--RM_species_Dfam.
# 1. Unpack (or clone) GETA into the installation directory, e.g. /opt/biosoft/geta
git clone https://github.com/chenlianfu/geta.git /opt/biosoft/geta
# or: tar -zxf geta.tar.gz -C /opt/biosoft/
# 2. Make sure the programs in bin/ are executable
chmod +x /opt/biosoft/geta/bin/*
# 3. Install the dependent software (see the table above and the INSTALL file),
# and add their directories to PATHDetailed command lines for installing all dependent software and GETA are given in the INSTALL file.
# Add GETA to PATH (optional – geta.pl can also be called with its full path)
export PATH=/opt/biosoft/geta/bin:$PATH
# AUGUSTUS needs its configuration directory (must contain a "species" sub-directory)
export AUGUSTUS_CONFIG_PATH=/opt/biosoft/augustus/configImportant: the sub-programs in
bin/(runRepeatMaskerModeler,homolog_prediction,NGSReads_prediction,runAugustus,curateGeneModels,outputResults,GFF3Clear,genome_seq_clear.pl,fasta_format_revising.pl,gff3_to_sequences.pl,gff3ToGtf.pl,check_gene_model_integrity.pl, …) must stay in the same directory asgeta.pl.
Check that the installation works:
perl /opt/biosoft/geta/bin/geta.pl --help # English help
perl /opt/biosoft/geta/bin/geta.pl --chinese_help # 中文帮助perl /opt/biosoft/geta/bin/geta.pl \
--genome genome.fasta \
--RM_species_Dfam Embryophyta \
--RM_species_RepBase Embryophyta \
--pe1 libA.1.fq.gz,libB.1.fq.gz \
--pe2 libA.2.fq.gz,libB.2.fq.gz \
--protein homolog.fasta \
--augustus_species GETA_genus_species \
--HMM_db /opt/biosoft/bioinfomatics_databases/Pfam/PfamA,/opt/biosoft/bioinfomatics_databases/Pfam/PfamB \
--config /opt/biosoft/geta/config.txt \
--out_prefix out \
--gene_prefix GS01Gene \
--cpu 120The final annotation is out.geneModels.gff3; the run statistics are in out.gene_prediction.summary.
Minimum requirements for a run:
--genome;- at least one of homologous proteins (
--protein) or RNA-Seq data (--pe1/--pe2,--se,--sam); - at least one of
--HMM_db,--BLASTP_dband--protein(used to validate unreliable gene models).
perl /path/to/geta/bin/geta.pl [options]
| Option | Default | Description |
|---|---|---|
--genome <file> |
required | Genome sequence in FASTA format. If it is already repeat-masked, omit the --RM_* options and add --no_RepeatModeler to skip repeat analysis. In this case hard-mask transposable elements with N and soft-mask simple/tandem repeats with lowercase letters (note: with no repeat annotation, genes inside transposable elements cannot be removed). |
--pe1 <files> --pe2 <files> |
– | Paired-end FASTQ files (.gz accepted). Several libraries are separated by commas; the order in --pe1 and --pe2 must correspond. |
--se <files> |
– | Single-end FASTQ files (.gz accepted), comma-separated. |
--sam <files> |
– | Aligned reads in .sam, .bam or .cram format, comma-separated. Without --strand_specific the XS tag must be present (HISAT2 --dta, or STAR --outSAMstrandField intronMotif), and the reference names must match the genome FASTA. |
--strand_specific |
off | All RNA-Seq data are strand-specific. Only the standard RF (dUTP) library type is supported (read1 maps to the minus strand of the transcript, e.g. Illumina TruSeq Stranded). All input data must share the same strandedness. Helps to define the borders of overlapping neighbouring genes. |
--protein <file> |
– | Whole-genome protein sequences of 3–10 closely related species in one FASTA file. Appending the species to each name (e.g. XP_002436309_2_SpeciesSorghumBicolor) is strongly recommended (see Tips). |
--pe1/--pe2, --se and --sam may be used in any combination; all data are combined.
| Option | Default | Description |
|---|---|---|
--RM_species_Dfam <taxon> |
– | Taxon name for RepeatMasker with the Dfam database (HMM, nhmmer), e.g. Eukaryota, Viridiplantae, Metazoa, Fungi. Valid names are listed in RepeatMasker_lineage.txt. |
--RM_species_RepBase <taxon> |
– | Taxon name for RepeatMasker with the RepBase database (RepBase is no longer freely available; its last version is 20181026). Independent of --RM_species_Dfam; the two may take different values. |
--RM_lib <file> |
– | FASTA repeat library (typically a RepeatModeler result). RepeatModeler is then skipped, which saves a lot of time. |
--no_RepeatModeler |
off | Do not run RepeatModeler. If none of --RM_species_Dfam, --RM_species_RepBase, --RM_lib is given either, the genome is regarded as repeat-masked and the whole repeat step is skipped. |
--gene_predicted_by_masked_genome |
off | Use the repeat-masked genome for the homolog, RNA-Seq and AUGUSTUS predictions. Faster, but fewer gene models are obtained, because no gene is predicted in transposable-element regions. By default the unmasked genome is used and genes overlapping transposable elements are removed later in Step 5. |
--RM_species_Dfam, --RM_species_RepBase and --RM_lib can be combined; a repeat found by any of the methods is accepted.
| Option | Default | Description |
|---|---|---|
--homolog_prediction_method <list> |
miniprot |
Method(s) for homology-based prediction: miniprot, spaln, exonerate, genewise, gth, or all. Separate several methods with commas, e.g. exonerate,miniprot,spaln. More methods cost more time but usually give better results. See the table below. |
--aligner <star|hisat2> |
star |
RNA-Seq aligner. Ignored when only --sam data are given. |
--max_used_read_num <int> |
auto | Maximum number of read pairs (PE) / reads (SE) used. By default: 2 ** (log10(genome_size / 1,000,000) - 1) * 50 M (at least 50 M). |
--augustus_species <name> |
auto | AUGUSTUS species name (letters, digits, _, ., -). An existing model is optimised further; otherwise a new model is trained. The trained model is written to <out_prefix>.tmp/4.augustus/config/species/ and copied to $AUGUSTUS_CONFIG_PATH/species/ when that directory is writable. If omitted, it is set to GETA + genome file prefix + date + process ID (stored in augustus_species.txt and reused on re-runs). |
--genetic_code <int> |
1 |
NCBI genetic code table, passed to all sub-programs. Supported: 1–6, 9–16, 21–33. See NCBI Genetic Codes. |
Homology-based methods
| Method | Source | Principle | Needs |
|---|---|---|---|
miniprot |
miniprot | Aligns proteins directly to the genome and predicts gene models | miniprot |
spaln |
spaln | Aligns proteins directly to the genome and predicts gene models | spaln |
exonerate / genewise / gth |
mmseqs | MMseqs2 locates gene regions, then the chosen software predicts exon–intron structure; the three are already integrated region by region and count as one source | mmseqs + the chosen tool |
The raw models of all sources are merged and de-redundancised, divided into classes A (excellent), B (good), C (fair) and D (poor) according to coverage of the homologous protein, frameshifts and internal stop codons, and class C/D models with low Supported_times are filtered. Models with insufficient support are tagged Low_support=<reason> in column 9 of the gene line.
| Option | Default | Description |
|---|---|---|
--HMM_db <paths> |
– | One or more HMM databases processed by hmmpress (e.g. Pfam-A), comma-separated. With several databases, models matching none of them are filtered. |
--BLASTP_db <paths> |
– | One or more diamond databases (e.g. eggNOG), comma-separated. If neither --HMM_db nor --BLASTP_db is set, --protein is used as the diamond database. |
--no_alternative_splicing_analysis |
off | Skip the alternative splicing analysis (by default it is performed whenever RNA-Seq data are given). |
--config <file> |
<install_dir>/config.txt |
Configuration file with detailed parameters for the sub-programs (see below). Command-line options always override the same options in the file. |
At least one of
--HMM_db,--BLASTP_dband--proteinmust be provided.
| Option | Default | Description |
|---|---|---|
--out_prefix <string> |
out |
Prefix of output files; the temporary directory is <out_prefix>.tmp. |
--gene_prefix <string> |
gene |
Prefix of gene IDs: prefix + 6 digits (e.g. GS01Gene000001). Low-quality genes use the prefix with gene removed plus LqGene (e.g. GS01LqGene000001). |
--BUSCO_lineage_dataset <paths> |
– | One or more BUSCO lineage dataset directories (comma-separated). BUSCO runs in offline mode, so download the datasets first (see BUSCO_lineages_list.2021-12-14.txt). The final proteins and every raw prediction are assessed so the methods can be compared. |
--delete_unimportant_intermediate_files |
off | After a successful run, delete large intermediate files (BAM, RepeatMasker/RepeatModeler, MMseqs2, miniprot, spaln, AUGUSTUS, validation and alternative splicing temporary directories). |
| Option | Default | Description |
|---|---|---|
--cpu <int> |
4 |
Number of CPU threads, passed to all sub-programs. |
--help / -h |
– | Show the English usage. |
--chinese_help |
– | Show the Chinese usage (显示中文用法说明). |
1. Full evidence (RNA-Seq + proteins), plant genome, with BUSCO
perl geta.pl --genome genome.fasta \
--RM_species_Dfam Viridiplantae \
--pe1 rna.1.fq.gz --pe2 rna.2.fq.gz \
--protein homologs.fasta \
--homolog_prediction_method miniprot,spaln \
--HMM_db /db/Pfam/Pfam-A.hmm --BLASTP_db /db/eggnog/eggnog_proteins.dmnd \
--BUSCO_lineage_dataset /db/busco/embryophyta_odb10 \
--augustus_species my_species --out_prefix my_sp --gene_prefix MySpGene --cpu 642. Strand-specific RNA-Seq, using HISAT2
perl geta.pl --genome genome.fasta --no_RepeatModeler --RM_lib species.repeat.lib \
--pe1 rna.1.fq.gz --pe2 rna.2.fq.gz --strand_specific --aligner hisat2 \
--protein homologs.fasta --HMM_db /db/Pfam/Pfam-A.hmm --cpu 323. Pre-aligned RNA-Seq (BAM) and a genome that is already repeat-masked
perl geta.pl --genome masked_genome.fasta --no_RepeatModeler \
--sam sample1.bam,sample2.bam --protein homologs.fasta \
--HMM_db /db/Pfam/Pfam-A.hmm --cpu 324. Homologous proteins only (no RNA-Seq; alternative splicing is not analysed)
perl geta.pl --genome genome.fasta --RM_species_Dfam Metazoa \
--protein homologs.fasta --homolog_prediction_method all \
--HMM_db /db/Pfam/Pfam-A.hmm --cpu 325. RNA-Seq only (no homologous proteins; TransDecoder is used for ORF prediction)
perl geta.pl --genome genome.fasta --RM_species_Dfam Fungi \
--pe1 rna.1.fq.gz --pe2 rna.2.fq.gz \
--HMM_db /db/Pfam/Pfam-A.hmm --cpu 326. Non-standard genetic code
perl geta.pl ... --genetic_code 4 ... # Mold/Protozoan/Coelenterate mitochondrial code, Mycoplasmaconfig.txt in the installation directory sets the detailed parameters of the sub-programs and is read automatically when --config is not given.
- To change parameters, copy
config.txt, edit the copy and pass it with--config. Then only that file is read; sections or parameters it does not mention use the defaults of the sub-programs. - A line
[program]starts a section; every following line is appended as-is to the command line of that program. Supported sections:[runRepeatMaskerModeler],[homolog_prediction],[NGSReads_prediction],[runAugustus],[curateGeneModels],[outputResults]. #starts a comment (so values must not contain#). Switches are written as--nameonly and are commented out by default. Values with spaces must be quoted on one line, e.g.--miniprot_options="--outs=0.95 -N 20".- Options on the
geta.plcommand line have priority over the same options in the file. - Options that
geta.plsets itself (--cpu,--genetic_code,--tmp_dir, input/output files,--method, …) must not be written in the file. - GETA no longer switches configuration files according to genome size. For very large (> 1 Gb) or very small (< 50 Mb) genomes, adjust e.g.
--max_intron_size,--batch_sizeand the Sam2Transfrag depth thresholds.
Frequently adjusted parameters:
| Section | Parameters | Purpose |
|---|---|---|
[homolog_prediction] |
--max_intron_size, --miniprot_options, --spaln_species, --spaln_options, --threshold_homolog_coverage_good/fair, --threshold_ratio_of_gene/intron_Supported_times |
Intron length limit, extra tool options, classification and filtering of homology models |
[NGSReads_prediction] |
--min_fragment_count_per_transfrag, --min_protein_length, --cds_*, --quantile_*, --trimmomatic_opts, --star_opts, --hisat2_opts |
Transcript support, ORF length, classification, QC/alignment settings |
[runAugustus] |
--flanking_length, --min_intron_len |
Training flank length (set ≈100 for dense-gene species such as fungi) |
[curateGeneModels] |
--repeat_ratio, --validate_options, --alt_splicing_options |
Transposable-element filtering, HMM/BLASTP thresholds, alternative splicing |
If the number of genes is clearly too high or too low, the filtering thresholds usually need to be adjusted:
- Copy
config.txt, modify e.g.--threshold_ratio_of_*_Supported_times/--threshold_homolog_coverage_*([homolog_prediction]),--min_fragment_count_per_transfrag/--cds_*/--quantile_*([NGSReads_prediction]),--repeat_ratio([curateGeneModels]), or the--hmm_*/--blast_*thresholds inside--validate_options. - Delete the
.okfiles of the affected step and all following steps in<out_prefix>.tmp/. - Re-run the same
geta.plcommand with--config my_config.txt.
All files are written with the prefix given by --out_prefix (shown as ${out_prefix}).
| File | Description |
|---|---|
${out_prefix}.geneModels.gff3 / .gtf |
Final gene models, including alternative-splicing transcripts. |
${out_prefix}.bestGeneModels.gff3 / .gtf |
Final gene models with only one transcript kept per gene. |
${out_prefix}.protein.fasta (and other ${out_prefix}.*.fasta) |
Gene sequence files (e.g. protein, coding sequence, gene sequence), extracted by gff3_to_sequences.pl. |
${out_prefix}.geneModels_lowQuality.gff3 |
Low-quality gene models: failed HMM/BLASTP validation, located in transposable elements, 5'/3' incomplete, or without CDS. |
${out_prefix}.repeat.gff3 / .repeat.stats |
Repeat annotation and its statistics. |
${out_prefix}.repeat.lib |
Repeat library built by RepeatModeler. |
${out_prefix}.maskedGenome.fasta |
Repeat-masked genome. |
${out_prefix}.homolog_prediction.gff3, .homolog_miniprot.gff3, .homolog_spaln.gff3, .homolog_mmseqs.gff3, .homolog_alignment.gff3 |
Raw homology-based predictions per source and the protein-to-genome alignments. |
${out_prefix}.NGSReads_prediction.gff3, .NGSReads_Sam2Transfrag.gff3, .NGSReads_stringtie.gff3, .NGSReads_alignment.gff3 |
Raw RNA-Seq-based predictions and transcript alignments. |
${out_prefix}.augustus_prediction.gff3 |
Raw AUGUSTUS predictions. |
${out_prefix}.evidence_prediction.gff3 |
Merged evidence gene models (NGSReads + homolog). |
${out_prefix}.All_prediction.gff3 |
All integrated gene models before repeat filtering and validation. |
${out_prefix}.gene_prediction.summary |
Statistics of every step (also printed to standard output) used to trace reliability: repeat content, RNA-Seq mapping rate, AUGUSTUS training accuracy, BUSCO results, number of gene models at each step, filling, repeat removal, validation, alternative splicing, ORF analysis and final integrity. |
${out_prefix}.tmp/ |
Temporary directory with all intermediate results; BUSCO results are in 6.output_gene_models/. |
Files for which the corresponding input does not exist (e.g. no RNA-Seq data) are simply not produced.
| Attribute | Where | Meaning |
|---|---|---|
Type= |
gene / mRNA (homolog, RNA-Seq models) | Accuracy class: excellent_… (A), good_… (B), fair_… (C), poor_… (D). |
Low_support= |
gene | Insufficient Supported_times support (gene, intron, gene_intron, no_info); these models need further validation. |
Supported_times= |
gene / intron | How many times the gene model / intron is supported by all sources and all homologous proteins. |
Integrity= |
gene / mRNA | complete, 5prime_partial, 3prime_partial, internal; internal_stop / frameshift are appended when present. |
Transcript_Ratio= |
mRNA | Relative abundance of an alternative-splicing transcript. |
Original_source= / Original_ID= |
gene / mRNA | Prediction source (e.g. miniprot, Sam2Transfrag, augustus) and ID before renaming. |
GETA runs in ${out_prefix}.tmp/. Each finished step creates an .ok file; re-running the identical command skips finished steps, so an interrupted job continues where it stopped.
${out_prefix}.tmp/
├── genome.fasta # tidied genome
├── homolog.fasta # tidied proteins
├── config.txt # configuration actually used in this run
├── augustus_species.txt # AUGUSTUS species name used
├── 1.RepeatMasker/ # Step 1
├── 2.homolog_prediction/ # Step 2
├── 3.NGSReads_prediction/ # Step 3
├── 4.augustus/ # Step 4 (training in training/, species in config/species/)
├── 5.curate_gene_models/ # Step 5 (geneModels.a … m.gff3, geneModels.gff3, ...)
├── 6.output_gene_models/ # Step 6 (BUSCO, summary parts, integrity checks)
└── *.ok # progress markers
| To redo… | Delete (and every later one) |
|---|---|
| Step 1 | 1.RepeatMasker.ok |
| Step 2 | 2.homolog_prediction.ok |
| Step 3 | 3.NGSReads_prediction.ok |
| Step 4 | 4.augustus.ok |
| Step 5 | 5.curate_gene_models.ok |
| Step 6 | 6.output_gene_models.ok |
Sub-programs additionally keep their own checkpoints. For example, homolog_prediction and NGSReads_prediction record signatures of inputs and parameters, so changing --method or a threshold only recomputes the affected parts.
All sub-programs are in bin/, can be run on their own, and print an English usage with --help (a Chinese usage with --chinese_help).
| Program | Purpose | Example |
|---|---|---|
runRepeatMaskerModeler |
Parallel RepeatMasker + RepeatModeler, result merging and masking | runRepeatMaskerModeler --RM_species_Dfam Fungi --cpu 16 --tmp_dir rm genome.fasta |
homolog_prediction |
Homology-based gene prediction with five methods | homolog_prediction --method miniprot,spaln --cpu 16 --tmp_dir hp homolog.fasta genome.fasta > homolog.gff3 |
NGSReads_prediction |
RNA-Seq QC, alignment, Sam2Transfrag/StringTie assembly and ORF prediction | NGSReads_prediction --pe1 a_1.fq.gz --pe2 a_2.fq.gz --homolog_protein homolog.fasta --cpu 16 genome.fasta > ngs.gff3 |
runAugustus |
Train AUGUSTUS with evidence and predict with hints | runAugustus --input_evidence_gff3 ngs.gff3,homolog.gff3 --augustus_species my_sp --cpu 16 genome.fasta > augustus.gff3 |
curateGeneModels |
Merge, filter, validate, alternative splicing, ORF analysis | curateGeneModels --repeat repeat.gff3 --HMM_db Pfam-A.hmm --intron intron.txt --base_depth base_depth.txt genome.fasta ngs.gff3 homolog.gff3 augustus.gff3 > geneModels.gff3 |
outputResults |
Write final files and statistics | outputResults --genome genome.fasta --out_prefix out --gene_prefix gene GETA_out.tmp |
GFF3Clear |
Check/repair GFF3, sort, rename, detect integrity | – |
GFF3_merging_and_removing_redundancy, GFF3_filling_gene_models, fillingEndsOfGeneModels |
Merge, fill and extend gene models | – |
genome_seq_clear.pl, fasta_format_revising.pl |
Tidy genome / protein FASTA | – |
gff3_to_sequences.pl, gff3ToGtf.pl, check_gene_model_integrity.pl |
Extract sequences, convert to GTF, check integrity | – |
- Use 3–10 related species for
--protein. More species give more accurate gene models but need more time. Usefasta_remove_redundancy.pl(included) to merge several proteomes and append species information. - Add species information to protein names, starting with the keyword
Species, e.g.XP_002436309.2→XP_002436309_2_SpeciesSorghumBicolor. This lets GETA keep matches from several species in one gene region (--max_hit_num_per_single_species). - Provide RNA-Seq whenever possible. It enables transcript-based models, reliable intron information, base depth, alternative splicing and, with TIdeS, ORF prediction informed by homologs.
- Save time with
--RM_libif you already have a RepeatModeler library; RepeatModeler is by far the slowest part of Step 1. - Strand-specific data (
--strand_specific, RF/dUTP only) improve the boundaries of overlapping genes. - Paths must be simple. Inputs, databases and output paths may contain only letters, digits and
_ - . / + : @ , =. No spaces or shell special characters. - Choose the right genetic code with
--genetic_code; it affects start/stop codon recognition in every step. - Compare the methods with BUSCO. Using
--BUSCO_lineage_datasetassesses the raw predictions of each source, which tells you which evidence works best for your species. - Check
${out_prefix}.gene_prediction.summaryfirst after a run to see where gene models are gained or lost. - Use enough memory for STAR. Each alignment process loads one genome index; the number of chunks is
min(--cpu, 10)by default (adjustable by--chunk_numinconfig.txt).
The program stops immediately and lists missing software.
geta.pl checks everything required by your options at start-up. Install the listed programs and make sure they can be run directly in the terminal (i.e. they are in PATH). $AUGUSTUS_CONFIG_PATH must point to a directory containing species/.
Error about "path contains spaces or special characters".
Rename or move the file/directory. Only letters, digits and _ - . / + : @ , = are allowed.
A step failed. How do I continue?
Fix the cause (see the log files in the corresponding sub-directory of ${out_prefix}.tmp/) and run exactly the same command again; finished steps are skipped.
Too many / too few genes are predicted.
Adjust filtering thresholds as described in When the number of predicted genes is abnormal.
I only have homologous proteins (or only RNA-Seq).
Both are supported. Without RNA-Seq no alternative splicing is analysed; without proteins the homology step is skipped, TransDecoder is used for ORF prediction, and --HMM_db or --BLASTP_db is required to validate gene models.
My genome is already repeat-masked.
Do not set any --RM_* option and add --no_RepeatModeler. The repeat step is skipped; genes in transposable elements cannot be removed because there is no repeat annotation.
Can I reuse a trained AUGUSTUS model?
Yes. Give an existing species name to --augustus_species; its parameters are used as the starting point and then optimised.
Where is the AUGUSTUS species model after the run?
In ${out_prefix}.tmp/4.augustus/config/species/<name>; it is also copied to $AUGUSTUS_CONFIG_PATH/species/ if that directory is writable.
GETA was compared with other annotation methods on several species. The command lines and output GFF3 files of these tests are available at http://122.205.95.116/geta/.
For reference, the following table (from the Oryza sativa test of the original homology step, compared with 28,736 NCBI gene models) illustrates why GETA combines several methods and filters the merged results:
| Method | Gene number | Gene sensitivity | Gene specificity | Exon sensitivity | Exon specificity |
|---|---|---|---|---|---|
| exonerate | 38537 | 47.05% | 35.09% | 58.90% | 73.55% |
| genewise | 40455 | 47.32% | 33.61% | 62.08% | 71.27% |
| gth | 8888 | 19.80% | 64.02% | 30.43% | 90.54% |
| all | 40538 | 48.54% | 34.41% | 63.85% | 71.86% |
| filtered | 28184 | 45.62% | 46.51% | 61.26% | 79.59% |
Bug reports, feature requests and pull requests are welcome.
- Check the existing issues first.
- For a bug report, please include the GETA version, the full command line, the relevant log files from
${out_prefix}.tmp/and the versions of the dependent software. - For code contributions, fork the repository, create a topic branch and open a pull request.
GETA was written in Perl by Lianfu Chen, Hansheng Zhao, Congcong Liu and Lei Deng.
Please also cite the dependent software (RepeatMasker, RepeatModeler, miniprot, spaln, MMseqs2, STAR, HISAT2, StringTie, TIdeS, DIAMOND, AUGUSTUS, HMMER, BUSCO, …) when you publish results obtained with GETA.
GETA is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
GETA is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A copy of the license is provided in the LICENSE file.
GETA - Genome-wide Electronic Tool for Annotation
Copyright (C) Lianfu Chen, Hansheng Zhao, Congcong Liu, Lei Deng
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Note that the third-party software bundled with or called by GETA (e.g. Trimmomatic, TransDecoder, RepeatMasker, AUGUSTUS) are distributed under their own licenses.