Zubair Khalid

Virologist/Molecular Biologist | Veterinarian | Bioinformatician

Conventional & Molecular Virology • Vaccine Development • Computational Biology

Dr. Zubair Khalid is a veterinarian and virologist specializing in conventional and molecular virology, vaccine development, and computational biology. Dedicated to advancing animal health through innovative research and multi-omics approaches.

Dr. Zubair Khalid - Veterinarian, Virologist, and Vaccine Development Researcher specializing in Computational Biology, Multi-omics, Animal Health, and Infectious Disease Research

Blog · Guides · Published 2026-07-12

Bacterial Genome Annotation: A Practical Quality Checklist

If you have assembled a bacterial genome from short or long reads and now need to annotate its genes, functions, and mobile elements, this guide is for you. Bacterial genome annotation is the process of identifying coding sequences (CDS), noncoding RNAs, and other genomic features, then assigning biological meaning to them through database comparisons. Here you will find a practical quality checklist that covers gene calling, functional annotation, database version control, and cautious biological interpretation. Use this checklist to avoid common pitfalls and produce annotations that are reproducible and defensible for publication or downstream analysis.


At a Glance

Checklist Item Key Action Common Pitfall
Structural annotation (gene calling) Use a prokaryote trained ab initio caller plus evidence from RNA seq or protein databases Overpredicting pseudogenes or missing small ORFs
Functional annotation Assign gene product names, EC numbers, and GO terms with curated resources Relying solely on automated BLAST without filtering
Database version control Record exact release dates for RefSeq, Uniprot, CARD, etc. Using old or unversioned databases in a published analysis
Quality metrics Compute BUSCO scores, check assembly completeness, and examine annotation statistics Ignoring fragmented assemblies that bias gene counts
Biological interpretation Validate surprising annotations with literature and independent methods Claiming a novel function without experimental evidence

Each row corresponds to a core step. Use this table as a quick reference before submitting your genome note or comparative study.


Gene Calling: Structural Annotation

Structural annotation identifies the coordinates of genes on the assembled contigs. For bacterial genomes, the workflow typically combines an ab initio gene finder (e.g., Prodigal, GeneMarkS) with evidence from protein alignments or transcriptomic data. The Galaxy Training Network provides accessible workflows for bacterial genome annotation that wrap Prodigal and other tools [3]. You can run these workflows on a public server without installing software.

Always check the following:

  • Training of the gene finder. Tools like Prodigal can self train on the input genome. If you supply a very fragmented assembly (N50 below 5 kb), the training may be poor. Consider filtering contigs shorter than 200 500 bp before gene calling, but document this step.
  • Start and stop codon usage. Some bacteria use alternate start codons (GTG, TTG). Verify that your gene caller recognizes them. A mismatch can lead to truncated or missed genes.
  • Identification of pseudogenes. Annotators often mark frameshifted or truncated CDS as “pseudogene.” Use a tool like Pseudofinder or manually check ribosomal slippage sites if your organism is known for phase variation.
  • Noncoding RNAs. Add tRNAscan SE for tRNAs and Infernal (with Rfam) for rRNAs and other ncRNAs. Do not rely solely on the gene caller for RNA genes.

The NCBI Prokaryotic Genome Annotation Pipeline (PGAP) is a gold standard for official submissions [1]. If you are not submitting to GenBank, you can still run PGAP locally or via a web service to obtain a high quality structural annotation.


Functional Annotation: Assigning Biology to Genes

After you have predicted protein sequences, you need to infer their functions. Functional annotation is the step where most errors enter the pipeline. The EMBL EBI Training materials emphasize using multiple evidence sources and curating top hits [2].

Follow a hierarchical strategy:

  1. Domain and family assignment. Run InterProScan (via InterPro) to get Pfam, TIGRFAM, and SUPERFAMILY matches. These are more conserved than full length BLAST hits.
  2. Database searches with controlled thresholds. Use BLASTP or Diamond against Swiss Prot and RefSeq (non redundant) with an e value cutoff of 1e 5 or stricter. Retain only hits with at least 50% coverage and 30% identity for reliable function transfer.
  3. Gene product naming. Use a standardized nomenclature. The NCBI Bookshelf describes how to write gene product names that comply with RefSeq conventions [1]. Avoid vague names like “hypothetical protein” unless no domain is found.
  4. Enzyme and pathway annotation. Map EC numbers and KEGG Orthology terms if your organism is of biotechnological interest. For antibiotic resistance genes, use CARD or ResFinder. For virulence factors, use VFDB.

Two recent studies illustrate the need for caution. In Stenotrophomonas sepilia SMBL8, phenotypic assays confirmed metabolic versatility predicted by the genome but also revealed that some resistance genes were silent [7]. Conversely, Enterococcus faecalis genomes from a food processing environment contained multiple virulence factors and disinfectant resistance genes that were transcriptionally active [8]. Annotation alone does not prove expression or function.


Quality Checks and Database Versions

A reproducible annotation requires that you track the exact version of every database used. The NCBI Sequence Read Archive stores raw sequencing data, but the annotation databases themselves change with each release [5]. A common mistake is to run an analysis in 2023 and compare it to a 2021 database without noting the difference.

Create a file (e.g., db_versions.txt) that lists:

  • RefSeq release number (e.g., 220)
  • Swiss Prot release (e.g., 2024_01)
  • Pfam version (e.g., 36.0)
  • CARD version (e.g., 3.2.9)
  • Date of download

Then run these quality metrics:

  • BUSCO (Benchmarking Universal Single Copy Orthologs). For bacteria, use the bacteria_odb10 lineage dataset. A score above 90% complete BUSCOs indicates a reasonably complete genome. Fragmented or missing BUSCOs suggest assembly gaps that affect gene counts.
  • Annotation statistics. Report number of CDS, pseudogenes, rRNA operons, and tRNAs. Compare these numbers to closely related type strains. A huge discrepancy (e.g., 2,000 CDS more than a congener) may indicate overprediction or contamination.
  • Check for contamination. Use a tool like CheckM or GTDB TK to ensure your assembly is not a mix of two organisms. Contamination leads to inflated gene counts and false functional claims.

The Bioconductor package GenomicFeatures can help you create transcript aware annotations if you have RNA seq data [4]. Although designed for eukaryotes, it can be adapted for bacterial operon validation.


Cautious Biological Interpretation

Annotated genomes are hypotheses about gene function, not proven facts. Even carefully curated annotations can mislead when you draw biological conclusions.

Take antibiotic resistance (AMR) genes as an example. A genomic framework for tracking cfr family genes recently revealed that some cfr variants are present in diverse bacterial hosts but confer resistance only under specific conditions [9]. Finding a gene in silico is not equivalent to phenotypic resistance. Always validate key AMR findings with minimum inhibitory concentration (MIC) assays.

Likewise, virulence factor annotation should be contextual. The KG Microbe knowledge graph project emphasizes that microbial functions are modular and context dependent [10]. A virulence gene in a harmless environmental bacterium may be a pseudogene or may require a host environment to be expressed.

When annotating a novel species, be especially conservative. The description of Mycobacterium cavoris used multilocus sequence analysis and careful genome comparison to the M. terrae complex, not just automated annotation [6]. For new isolates, include average nucleotide identity (ANI) and digital DNA DNA hybridization (dDDH) values.


Common Mistakes

Even experienced annotators fall into these traps:

  • Blindly accepting the top BLAST hit. The top hit may be to a poorly annotated sequence. Use reciprocal best hits or phylogenetic profile analysis for critical functions.
  • Ignoring frame shifts. If your assembly contains many frameshifted CDS, do not simply force them to be intact. They may be pseudogenes or sequencing errors. Realign reads to verify.
  • Assuming one gene, one function. Many bacterial genes are multifunctional or pleiotropic. Be careful with terms like “sole” or “primary” in your manuscript.
  • Forgetting to update database versions during revision. If a journal reviewer asks for an additional analysis months later, use the same database versions or document the change.

Limits and Uncertainty

Annotation is only as good as the assembly. If your genome is highly fragmented (e.g., hundreds of contigs), many genes will be split across contig boundaries. Long read technologies (PacBio, ONT) can overcome this, but they introduce higher error rates that may produce artefactual pseudogenes. Use a polishing step with short reads if possible.

Additionally, current automatic annotation pipelines miss many small open reading frames (sORFs) encoding peptides of fewer than 50 amino acids. These microproteins can be biologically important but are routinely ignored. Consider using a dedicated sORF finder if your organism has a small genome or is known for secreted peptides.

Finally, functional annotation databases are biased toward well studied organisms. For a deep branching bacterial lineage, you may have many “hypothetical proteins” despite real biological significance. Annotations are provisional and should be updated as more genomes are characterized.


Frequently Asked Questions

1. Which gene caller should I use for bacterial genomes?
Prodigal is widely used and works well for most finished or high quality draft bacterial genomes. For metagenome assembled genomes (MAGs), consider using METABOLIC or Prokka, which wraps Prodigal. If you plan to submit to NCBI, use PGAP.

2. How do I handle annotations for a genus with no close sequenced relatives?
Rely on domain based methods like InterProScan rather than BLAST against Swiss Prot, because Swiss Prot coverage of novel lineages is sparse. Check Pfam and TIGRFAMs for conserved families. Report the number of hypothetical proteins honestly.

3. What does a good BUSCO score look like for a bacterial genome?
A complete genome should show >95% complete BUSCOs. Draft genomes with >90% are acceptable for most comparative analyses. If your score is below 70%, improve the assembly before investing time in annotation.

4. Can I trust automated annotation of antibiotic resistance genes?
Only as a screening tool. Use conservative identity cutoffs (e.g., >80% amino acid identity over >70% of query length) and check for promoter regions and ribosome binding sites. Validate with phenotypic assays before making strong claims.


References and Further Reading


Related Articles