Bakta Genome Annotation
If you work with bacterial genomes and need a fast, accurate, open source annotation tool, Bakta provides a practical framework for rapidly adding functional metadata to assembled sequences. This guide is written for bioinformaticians, microbiologists, and genomic researchers who have a genome assembly (draft or complete) and want to produce standards compliant annotations for submission, comparative genomics, or resistome screening. Bakta is not a tool for eukaryotic genomes, it is optimized for bacteria and archaea. The annotation process transforms raw nucleotide sequences into structured files that identify genes, predict proteins, detect non coding RNAs, and flag antimicrobial resistance or virulence determinants. For an authoritative overview of prokaryotic genome annotation principles, see the NCBI Prokaryotic Genome Annotation Guide within the NCBI Bookshelf [1]. Training materials for executing bacterial annotation pipelines are available from the EMBL EBI Training portal [2].
At a Glance
| Feature | Description |
|---|---|
| Purpose | Rapid, lightweight annotation of bacterial and archaeal genomes |
| Input | Assembled genome in FASTA format (single contig or multi contig) |
| Output | GFF3, GBK, FASTA files for proteins, CDS, RNAs, and feature tables |
| Key Databases | UniRef, Pfam, NCBI AMRFinder, ISFinder, tRNAscan SE, RNAmmer |
| Speed | Typically completes within minutes for a standard bacterial genome |
| Strengths | Built in AMR detection, protein clustering, full RNA annotation |
| Limitations | Not designed for eukaryotes, requires large database download, annotation quality depends on assembly completeness |
Core Concepts
Genome annotation in the Bakta framework involves three tasks: identifying genomic features (gene prediction), assigning functions to those features (functional annotation), and adding contextual layers such as antimicrobial resistance or insertion sequences. Bakta uses Prodigal for coding sequence (CDS) prediction, a step that has been benchmarked extensively against other tools as reviewed in recent bioinformatics advancement surveys [10]. For ribosomal and transfer RNAs, Bakta runs its own high confidence models derived from RNAmmer and tRNAscan SE.
Unlike earlier pipelines that required manual curation of database paths, Bakta bundles a downloadable reference database (bakta db download) containing clustered UniRef protein families, Pfam domains, and specialized resources for resistance and virulence. When Bakta annotates a genome, it first predicts all open reading frames, then searches the database with DIAMOND (accelerated BLAST like alignments). A built in “soft” clustering step groups similar hypothetical proteins to reduce redundancy in the output. Every CDS that does not receive a functional name is labeled “hypothetical protein” with a unique identifier. The use of curated, regularly updated source databases is crucial for reliable functional assignment. Galaxy Training Network provides step by step tutorials for running Bakta in a graphical workflow environment [3], which is especially helpful for users who prefer not to use the command line.
Decision Points
Choosing Bakta over alternative annotation tools such as Prokka, PGAP, or DFAST depends on your specific needs. Consider the following criteria.
- Assembly completeness. Bakta works with both complete circular genomes and draft assemblies composed of dozens of contigs. However, fragmented assemblies produce many partial genes and may require additional quality filtering. For clinical applications where completeness matters, first assess contig N50 and check for completeness with BUSCO or CheckM. Comparative studies of Illumina and Oxford Nanopore hybrid assemblies show that long reads improve gene recovery, which directly benefits annotation [9].
- Need for resistance screening. Bakta includes AMRFinderPlus, giving you resistance gene and point mutation detection out of the box. If you are characterizing a multidrug resistant isolate, such as the environmental Pseudomonas featured in recent genomic characterization reports [6], Bakta will flag resistance determinants automatically. Standalone tools like CARD or ResFinder require separate steps.
- Database sensitivity vs specificity. Bakta uses a clustered protein database that reduces search space. This speeds up annotation but may miss very rare or newly discovered families. For novel organisms, consider complementing Bakta with an independent search against the full NCBI nr database.
- User expertise and reproducibility. Bakta is designed for command line or Galaxy use, with a single command that includes all parameters. Prokka offers more flexibility but requires manual configuration. If you need a fully reproducible pipeline for submission to public repositories, Bakta’s GFF3 output complies with standards described in the NCBI Submission Guide [1].
- Computational resources. Bakta’s database is approximately 15 GB (compressed). Once downloaded, the tool runs on a standard laptop or server. No cloud computing is required. For high throughput environments, the Galaxy Project provides a maintained Bakta tool ready for queue based execution [3].
Workflow and Implementation Steps
The following sequence assumes you have a bacterial genome assembly (FASTA). All steps have been tested with Bakta version 1.9.x and later.
- Install Bakta and download the reference database. Use conda or mamba:
conda install -c conda-forge -c bioconda bakta. Then runbakta db downloadto fetch the light or full database. The full database includes AMRFinder and ISFinder. - Prepare your FASTA file. Remove any gaps, quality indicators, or terminal characters. Ensure the sequences use standard IUPAC nucleotides. Multiple records (contigs) are allowed.
- Run annotation. Execute
bakta --db /path/to/db --output /outputdir --genus Pseudomonas --species aeruginosa mygenome.fasta. The--genusand--speciesflags improve gene naming but are optional. Include the--plasmidflag if you know any contigs are extrachromosomal. - Inspect outputs. The main outputs are
mygenome.gff3,mygenome.gbk, andmygenome.faa(protein translations). A summary TSV file lists all annotated features with their confidence scores. For AMR hits, Bakta creates a separateamr.tsvtable. - Integrate into downstream analysis. Use the GFF3 file for genome browser visualization, the GenBank file for NCBI submission, and the protein FASTA file for comparative genomics with tools like Roary or orthofinder. The Bioconductor repository holds many R packages that can read these output formats for statistical analysis [4].
You can validate your workflow by running Bakta on a test genome downloaded from the NCBI Sequence Read Archive [5] and comparing the annotation to existing RefSeq records. Discrepancies often highlight differences in database versions or gene callers.
Quality Checks
After annotation, always verify the output before interpreting biology. Use the following checks.
- Check gene count. Typical free living bacteria report 2,000 to 6,000 CDS. Extremely low numbers (<1,500) suggest assembly fragmentation or database corruption. Extremely high numbers (>8,000) might indicate contamination or misassembly.
- Check hypothetical protein proportion. A high proportion (above 30%) of hypothetical proteins may indicate a poorly characterized organism or an incomplete database. Compare to closely related genomes in public databases. For example, the marine Exiguobacterium profundum SW22 genome had about 25% hypotheticals, consistent with environmental isolates [7].
- Validate known markers. Use BLAST to search for conserved single copy genes (e.g., recA, rpoB) that should be present and complete. If markers are missing or truncated, re evaluate assembly quality and rerun Bakta with the
--completeflag if you have a closed genome. - Inspect AMR results. Cross reference resistance hits with phenotypes. In a study on Burkholderia thailandensis, the authors used Bakta to confirm virulence signatures and then validated them with independent PCR [11]. Do not rely solely on computational predictions for clinical decisions.
Common Mistakes
Despite Bakta’s simplicity, users frequently encounter pitfalls.
- Using an incomplete database. Running
bakta db download --type lightexcludes AMR and IS databases. If you need those, use the full download. Update databases every six months. - Ignoring the genetic code flag. For bacteria, the default code (11) is correct. For certain archaea or mitochondria, you must use
--code 4or--code 15. A wrong code shifts reading frames and produces nonsense annotations. - Submitting partially annotated genomes to public repositories. Bakta assigns locus tags automatically. If you later want NCBI compliant tags, you may need to rename them. Plan your tag prefix and use the
--locusflag before annotation. - Overinterpreting hypothetical proteins. A hypothetical protein that is conserved across many species may have a real function waiting to be discovered, but Bakta cannot assign a name without database hits. Do not label them as “novel” without additional evidence.
- Assuming plasmid detection is perfect. Bakta’s plasmid detection is heuristic based on replication origin signatures. Confirm with read coverage or conjugation assays. For a detailed example of plasmid borne resistance detection, see the characterization of Pseudomonas aeruginosa ST1971 [6].
- Running Bakta on eukaryotes. The tool will produce output, but most gene models will be incorrect because Prodigal is trained for prokaryotic coding structure. For fungal or plant genomes, use dedicated eukaryote annotators.
Limits and Uncertainty
Bakta, like all annotation pipelines, has inherent limits. It cannot annotate genes that have no significant similarity to known sequences. Those genes remain hypothetical, and their biological reality can only be confirmed by transcriptomics or proteomics. The database dependance also means that novel families, especially from extreme environments or deeply branching phyla, may be missed. A case study on Propionibacterium freudenreichii J117 showed that Bakta correctly identified dairy relevant functions, but a few ribosomal proteins were missed because the assembly was incomplete [8].
Additionally, Bakta does not perform functional correction for frameshifts. If your assembly contains sequencing errors causing premature stop codons, Bakta splits the true CDS into two fragments. You may need to polish the genome with tools like Pilon before annotation. The quality of the input assembly remains the single largest source of uncertainty. Finally, Bakta’s AMR predictions are based on known reference families. A negative result does not prove the absence of resistance, it only means no known marker was found. Always validate with phenotypic testing.
Frequently Asked Questions
Can Bakta annotate plasmids separately from the chromosome?
Yes. Use the --plasmid flag followed by a list of contig IDs, or split your assembly into chromosomal and plasmid FASTA files. Bakta will mark those contigs with a “plasmid” tag in the output. However, plasmid annotation accuracy depends on their coverage and completeness. The NCBI Sequence Read Archive [5] contains many plasmid sequencing runs that can serve as reference.
What databases does Bakta include and how often are they updated?
Bakta bundles UniRef100, Pfam, NCBI AMRFinderPlus, ISFinder, tRNAscan SE, and RNAmmer. The full database is updated approximately every six months. You can check the current version by running bakta db info. For the latest resistance genes, supplement with a standalone AMRFinderPlus run from NCBI.
How does Bakta compare to Prokka in terms of accuracy and speed?
Both are fast, but Bakta tends to produce fewer false positive short ORFs because of its soft clustering step. Prokka relies on a static set of HMMER models, while Bakta uses DIAMOND against a broader protein set. For typical bacterial genomes, Bakta runs in 2 to 5 minutes versus 5 to 10 minutes for Prokka. For a benchmark on clinical genomes, see the comparison of annotation tools in the context of Illumina and ONT sequencing [9].
Do I need a closed genome to get reliable annotation?
No. Bakta performs well with draft assemblies if contig N50 exceeds 100 kb. However, features near contig ends may be incomplete. For comprehensive annotation, especially of repetitive elements or insertion sequences, a complete circular genome is recommended. Tools available through the Galaxy Training Network can help you close gaps [3].
References and Further Reading
- NCBI Prokaryotic Genome Annotation Guide: authoritative standards for feature tables and submission NCBI Bookshelf
- EMBL EBI Training: tutorials on genome annotation and database searching EMBL EBI Training
- Galaxy Training Network: hands on workflows for Bakta and other annotation tools Galaxy Training Network
- Bioconductor: R packages for reading and analyzing GFF and GenBank files Bioconductor
- NCBI Sequence Read Archive: raw sequencing data for quality control and benchmarking NCBI SRA
- Genomic characterization of Pseudomonas aeruginosa ST1971 with tmexCD2 toprJ2: example of resistome annotation using Bakta PubMed 41856474
- Comprehensive genomic characterization of Exiguobacterium profundum SW22: insights from marine isolate annotation PubMed 41779227
- Genome data of Propionibacterium freudenreichii J117: practical annotation of a dairy strain PubMed 41684885
- Benchmarking Illumina and Oxford Nanopore for bacterial genomics: impact on annotation quality PubMed 41540427
- Advancements in bioinformatics tools for microbial genomics: review covering annotation challenges PubMed 41297621
- Genomic characterization of Burkholderia thailandensis with virulence and resistance signatures PubMed 41291419