Barrnap is a Perl-based command-line tool for annotating RNA features in microbial genomes (bacteria, archaea, fungi). It integrates multiple bioinformatics tools (Infernal, Aragorn, Prodigal, etc.) to detect rRNA, tRNA, tmRNA, ncRNA, mRNA, and associated features like RBS, CDS, and terminators. The tool takes FASTA input and outputs GFF3 annotations. It is structured as a single executable script with modular subroutines for each analysis type, using temporary files for intermediate results. The code shows good organization, clear separation of concerns, and reusable components like the GFF handling and FASTA processing utilities.
EGAPx is NCBI's publicly accessible Eukaryotic Genome Annotation Pipeline, implemented as a Nextflow DSL2 workflow with a Python CLI entry point. The pipeline takes a genome assembly plus RNA-seq and/or protein evidence, aligns evidence with tools like STAR, minimap2, and miniprot, runs Gnomon gene model prediction and filtering, and produces ASN.1 annotation data, summary files, and MultiQC reports. The main entry point is ui/egapx.py, which validates inputs, resolves taxonomy IDs, fetches protein/HMM files, and orchestrates the Nextflow run. The workflow is organized into reusable subworkflows under nf/subworkflows/ncbi/, with checkpointing and parameter-merging patterns for reproducibility and environment flexibility across AWS, Slurm, SGE, and container runtimes.
Prokka is a Perl command-line tool for rapid annotation of prokaryotic genomes (bacteria, archaea, and viruses). It takes a FASTA genome assembly as input and produces GFF3, GenBank, and other standard annotation formats by running a pipeline of external tools: Prodigal for CDS prediction, Aragorn/Barrnap/RNAmmer for tRNA/rRNA, Infernal/Rfam for ncRNA, BLAST+ and HMMER3 for functional annotation against curated databases (Swiss-Prot, HAMAP, ISfinder, NCBI AMR). The architecture is a monolithic Perl script with helper scripts for database building and maintenance. While widely used and highly cited, the repository is explicitly unmaintained by the original author (who recommends migration to Bakta), dependencies are dated, and many internal scripts lack automated testing. Bundled components like the SwissKnife Perl modules for UniProt parsing are self-contained and potentially reusable in other bioinformatics pipelines.