Quick answer: A genome assembly is only a long sequence of letters; annotation is the layer that says which stretches are genes, what they do, and where regulatory regions sit. Annotation has two parts: structural annotation (where are the genes, exons, and repeats) and functional annotation (what do those parts do). Prokaryotic genomes are annotated quickly with self-contained pipelines such as Prokka or its maintained successor Bakta; eukaryotic genomes need gene predictors such as AUGUSTUS plus evidence from RNA-seq and protein databases.
Natural next step after the NGS workflow overview and the FASTA format guides on this blog: the assembly you get from sequencing is the input, annotation is the layer that makes it usable.
Table of Contents
Where annotation sits in the pipeline
Sequencing produces reads, assembly stitches them into contigs, and at that point the product is a draft genome: a very long FASTA file with no meaning attached. Annotation is the act of decorating that sequence with coordinates and names:
- This 1,234 bp region starting at position 45,096 is a protein-coding gene.
- Its product matches an ABC transporter; give it locus tag and name.
- These 40% or so letters of the genome are repeats, not genes.
Without that layer, a genome cannot be searched, compared, or deposited usefully. Annotation is why genomes in NCBI’s RefSeq have gene lists while the raw assemblies of many private analyses do not.
Structural annotation: where are the genes
Structural annotation is gene finding: for every region of the genome, decide whether it is a gene, and if so, mark its exact boundaries — start codon, exons, introns, stop. Two strategy families exist, and real projects blend them:
- Ab initio prediction. A statistical model scans the sequence and predicts genes from composition signals alone (coding potential, start/stop signals, splice signals in eukaryotes). Tools: Prodigal for bacteria, AUGUSTUS and GeneMark for eukaryotes. Fast and self-contained, but blind to anything not in the training signal, and in eukaryotes notoriously unsure about exon borders.
- Evidence-based prediction. Align real-world evidence to the genome and let the alignments vote on gene structure: transcriptome assemblies from RNA-seq (the strongest source for exon borders), protein sequences from related species, and EST libraries. Prediction + evidence joined is the MAKER-style approach.
What makes eukaryotic annotation harder than bacterial annotation is concentrated in three features:
- Introns. Bacterial genes appear as one uninterrupted coding block; eukaryotic genes are fragmented by often huge introns, so tools must splice-map short signals across gaps.
- Repeats. In many plant and animal genomes, repeats consume more space than genes. Every unmasked repeat is a trap where a predictor confidently invents a gene. RepeatMasker-style masking is therefore a pre-step in eukaryotic pipelines.
- Genes without expression evidence (rare tissues or stages) rely entirely on ab initio models, and those are the regions annotation most often gets wrong.
Bacterial annotation is simpler for concrete reasons: genes are dense, introns are (almost always) absent, and gene models have clean start/stop codon evidence. This is why a single freely runnable tool can deliver a usable bacterial annotation in minutes.
Function follows structure: the functional annotation pass
Once gene models exist, the second pass asks what each one is. Standard evidence sources, in the order most pipelines consult them:
- BLAST searches of predicted proteins against curated databases (UniProt, RefSeq) to transfer names from relatives.
- Protein domain searches with HMM-based libraries such as Pfam/InterPro, which recognize conserved domains even when sequence identity is low — often where the real biochemical function surfaces.
- GO terms and pathway mapping (evidence-tagged function ontology, e.g. by eggNOG-mapper), which generalize beyond a single gene name.
- rRNA, tRNA, and ncRNA detection with dedicated tools, because these genes do not look like protein-coding genes and ab initio tools commonly miss them.
A useful habit: keep how each functional claim was derived. A gene whose transcript has BLAST hits and Pfam domains with consistent function is a defensible annotation; a gene named only by a weak BLAST hit is an inference that may be inherited from other unverified annotations — a cascade known for propagating wrong names from database to database.
The tool pipelines worth knowing by name
- Prokka (prokaryotes): a single command producing a standards-compliant bacterial annotation (GFF3 + gene products + summary stats). Fast, reliable, still widely used — currently flagged by maintainers as legacy, with Bakta the actively maintained successor in the same spirit.
- Bakta (prokaryotes): similar one-command workflow with an updated curated database and better handling of current RefSeq conventions.
- MAKER-style frameworks (eukaryotes): combine ab initio predictors (AUGUSTUS, SNAP, GeneMark) with RNA-seq and protein evidence, letting evidence correct the models.
- NCBI’s prokaryotic Genome Annotation Pipeline (PGAP): the pipeline that annotates submitted bacterial genomes in RefSeq; reported outputs like its one are the benchmark everyone else is compared against.
- BUSCO, which is not an annotator but the standard completeness check: sets of near-universal single-copy genes score how full (or fragmented) your annotation-and-assembly is. A BUSCO number is the quickest honesty metric for any genome draft.
Reading an annotation: the file formats
The two files you will meet are:
- GFF/GFF3: a tab-separated text of features, each with sequence ID, type, start, end, strand, and attributes. This is structural annotation plus function fields, and it is the interchange format for all downstream tools.
- GenBank flat files (.gbk): the annotated record with features, translations, and references combined, as you see them on NCBI. Useful for reading by hand or submitting.
Learning to parse a GFF3 with a one-line Python or shell loop is the fastest way to stop treating annotation as a black box: each line is a claim about coordinates, and the gene models are the list of claims you can audit.
Common failure modes in annotation
- Annotating raw assembly before it is complete enough. BUSCO first, annotation second; a fragmented assembly yields fragmented gene models.
- Inheriting names from upstream annotation files without evidence checks. Names often transfer from annotation to annotation, and a single early mistag can appear in hundreds of downstream references.
- Treating predicted gene counts as biology. Gene counts are a function of assembly quality, masking, predictors, and tools. Two well-run annotations of the same genome reasonably differ by hundreds of genes.
- Using a bacterial pipeline on a eukaryotic genome. Prokka-class tools assume gene-dense, intron-free DNA — on a eukaryote they miss almost everything and annotate the repeats as genes.
- Skipping RNA-seq evidence in eukaryotes. Without transcript evidence, exon boundaries in novel genomes are mostly predicted guesses. If transcript data exist, use them before accepting the model.
Key takeaways
- Genome annotation has two independent layers: structural annotation finds the genes; functional annotation names them from evidence.
- Bacterial annotation is a solved one-command workflow (Prokka/Bakta); eukaryotic annotation needs ab initio prediction corrected with RNA-seq and protein evidence.
- Introns, repeats, and unexpressed genes are why eukaryotic annotation is harder, not because the tools are weaker.
- Evidence check every inherited gene name: annotation errors propagate through databases more than assemblies do.
- Report BUSCO completeness alongside any new annotation, because annotation quality tracks assembly quality.
Challenge
Pick any annotated genome from NCBI, download a tiny region from its GFF3 file, and manually cross-check one gene model: where the exons start and stop, whether predictions agree with any transcript evidence, and which database entries support the product name. Tight scope on one gene reveals more about how annotation works than reading any number of explanations.
Need help annotating a genome for a course or lab project? Ampersand Academy offers one-to-one mentoring in bioinformatics and analysis — part of Mahadhi, a development and digital marketing company.
—
FAQ
Structural annotation locates features: gene coordinates, exon borders, and repeat regions. Functional annotation attaches meaning: product names, domains, GO terms. You do structure first; function lives on top of it.
- What is the difference between structural and functional annotation?
Bacterial genes are dense, essentially intron-free, and possess plain start/stop coding signals, so one tool with statistical models spans almost everything. Eukaryotic genes include introns and are surrounded by repeats, making evidence binding a requirement rather than a bonus.
- Why is bacterial annotation so much easier than eukaryotic annotation?
BUSCO checks a curated set of broadly single-copy genes and reports how many of them are complete in your assembly, which is the standard sanity check the assembly is complete enough that annotation can be meaningful.
- What does BUSCO tell me about my annotation?
No. They assume gene-dense, intron-free prokaryotic DNA. For a eukaryote you need different prediction plus RNA-seq and protein evidence, and repeat masking first.
- Can I run Prokka or Bakta on a eukaryotic genome?
Differences in assembly quality, repeat masking, prediction software, and evidence used. Predicted gene counts are pipeline outputs, not biological constants; two careful annotations of the same genome differ by hundreds in reported numbers.
- Why does my genome have fewer genes than the published one for the same species?
GFF3, the interchange standard with one feature per line, and GenBank flat files that combine features and sequence for reading in NCBI. Learning to parse GFF3 directly is the cleanest way to inspect any annotation claim.
- What file formats hold annotation?
A name transferred by a weak BLAST hit gets published, enters a database, and the database entry is later cited as evidence by other annotations. Checking the original evidence behind a name is the defense.
- How do wrong gene names propagate?
What is the difference between structural and functional annotation?
Structural annotation locates features: gene coordinates, exon borders, and repeat regions. Functional annotation attaches meaning: product names, domains, GO terms. You do structure first; function lives on top of it.
Why is bacterial annotation so much easier than eukaryotic annotation?
Bacterial genes are dense, essentially intron-free, and possess plain start/stop coding signals, so one tool with statistical models spans almost everything. Eukaryotic genes include introns and are surrounded by repeats, making evidence binding a requirement rather than a bonus.
What does BUSCO tell me about my annotation?
BUSCO checks a curated set of broadly single-copy genes and reports how many of them are complete in your assembly, which is the standard sanity check the assembly is complete enough that annotation can be meaningful.
Can I run Prokka or Bakta on a eukaryotic genome?
No. They assume gene-dense, intron-free prokaryotic DNA. For a eukaryote you need different prediction plus RNA-seq and protein evidence, and repeat masking first.
Why does my genome have fewer genes than the published one for the same species?
Differences in assembly quality, repeat masking, prediction software, and evidence used. Predicted gene counts are pipeline outputs, not biological constants; two careful annotations of the same genome differ by hundreds in reported numbers.
What file formats hold annotation?
GFF3, the interchange standard with one feature per line, and GenBank flat files that combine features and sequence for reading in NCBI. Learning to parse GFF3 directly is the cleanest way to inspect any annotation claim.
How do wrong gene names propagate?
A name transferred by a weak BLAST hit gets published, enters a database, and the database entry is later cited as evidence by other annotations. Checking the original evidence behind a name is the defense.

