$ show tseemann/prokka
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.
The LLM identified 4 files worth highlighting for reuse:
Object-oriented Perl module for parsing and writing UniProt GN (gene name) lines. Supports both old and new line formats with evidence tags, and provides methods to extract, modify, and serialize gene names. This module is self-contained, depends only on standard Perl, and can be reused in any project that needs to read or write Swiss-Prot flat files.
Perl module for parsing and manipulating UniProt DE (description) lines, handling both pre-2008 and modern structured formats, including 'Contains', 'Includes', and 'Flags' qualifiers. It provides a clean interface for extracting protein descriptions and reconstructing them. Isolated from the rest of Prokka, it can be extracted for other projects dealing with UniProt flat files.
The main Prokka script includes a robust, self-contained dependency verification system (the `%tools` hash with version-checking logic) that can be reused as a pattern for any CLI tool that needs to ensure external binaries meet minimum version requirements before execution.
A Makefile that automates downloading, processing, and indexing of reference databases (UniProt, HAMAP, AMR, ISfinder). It uses idempotent targets, conditional checks, and parallelizable recipes. This pattern of automating data pipeline steps with Make is reusable for any project that needs to manage periodically updated reference data.