A comprehensive automated bacterial genome analysis pipeline that performs quality assessment, phylogenetic analysis, functional annotation, and comparative genomics with publication-ready results.
- BUSCO - Genome quality assessment
- Prokka - Genome annotation
- FastANI - Average nucleotide identity analysis
- Snippy - SNP calling and phylogenetic analysis
- Panaroo - Pan-genome analysis (Roary-compatible output)
- EggNOG-mapper - Functional annotation (optional; needs
make eggnog-db)
- PCoA - Principal Coordinates Analysis
- Core/Accessory Genome - Comparative genome analysis
- Jaccard Distance - Gene presence/absence analysis
- Enhanced Phylogeny - ML phylogenetic trees with bootstrap support
- Automatic strain name extraction from FASTA headers
- Organized output structure by analysis type and strain
- Publication-ready plots with proper strain naming
- Comprehensive reporting in multiple formats
- macOS or Linux
- Conda/Miniconda
- 8+ GB RAM
- 10+ GB disk space
git clone https://github.com/ceydaakin/genomics-pipeline.git
cd genomics-pipeline
cp your_genomes/*.fna data/fe_cs_genomics/ # add your genomes
make run # runs the whole pipelinemake run discovers the genomes, runs every analysis end-to-end in the correct
conda environment, skips steps whose output already exists (resume), and writes
the organized results β non-interactively.
| Command | What it does |
|---|---|
make run |
Full pipeline, resume-aware, non-interactive |
make check |
Verify conda envs, tools and input data |
make dry-run |
Discover genomes and preview the plan (no tools needed) |
make eggnog-db |
Download the (large) EggNOG database to enable functional annotation |
make test |
Run unit tests |
make clean |
Remove results and logs |
make help |
List targets |
Override defaults with variables, e.g. make run INPUT=path/to/genomes THREADS=8.
Tools run in their own conda environments (mapped in tool_envs, see
configs/example_config.json): BUSCO / FastANI / EggNOG in genomics, prokka,
snippy/snippy-core in snippy-env, and pan-genome (panaroo) + iqtree in
pangenome. The orchestrator runs with the genomics env's Python and invokes
each tool via conda run -n <env>. Run make check to confirm everything is in
place.
Results are automatically organized into a clear directory structure:
automated_genomics_results/
βββ 01_BUSCO_Quality_Assessment/ # Genome quality metrics
βββ 02_Prokka_Annotation/ # Gene annotations by strain
βββ 03_ANI_Analysis/ # Phylogenetic relationships
βββ 04_Snippy_SNP_Analysis/ # SNP-based phylogeny
βββ 05_Roary_Pangenome/ # Pan-genome analysis
βββ 06_EggNOG_Functional/ # Functional annotations
βββ 07_Comparative_Analysis/ # Cross-analysis comparisons
βββ 08_Plots_and_Figures/ # Publication-ready figures
βββ 09_Final_Reports/ # Summary reports and tables
βββ 10_Advanced_Analysis/ # PCoA, Jaccard, etc.
# Basic usage
python src/automated_genomics_pipeline.py --input data/fe_cs_genomics/
# Custom parameters
python src/automated_genomics_pipeline.py \
--input /path/to/genomes \
--output custom_results/ \
--threads 8 \
--busco-db lactobacillales_odb10
# Dry run (preview only)
python src/automated_genomics_pipeline.py --input data/ --dry-run# Save settings
python src/automated_genomics_pipeline.py \
--input data/ \
--config configs/my_settings.json
# Reuse settings
python src/automated_genomics_pipeline.py --config configs/my_settings.json.fna- FASTA Nucleic Acid.fasta- Standard FASTA format.fa- FASTA short extension.fna.gz- Compressed FASTA
| Strain Name | Species | Type | Quality Score |
|---|---|---|---|
| L. senmaizukei DSM 21775 | Levilactobacillus senmaizukei | Reference | 95.2% |
| L. senmaizukei OPSG_3_2_4 | Levilactobacillus senmaizukei | Local isolate | 94.8% |
- β BUSCO: Completed (15 genomes)
- β Prokka: Completed (15 genomes)
- β ANI: Completed (105 comparisons)
- β Snippy: Completed (SNP phylogeny)
- β Roary: Completed (pan-genome)
- β EggNOG: Completed (functional annotation)
Not sure if envs/tools/data are ready
make checkTools not found
# Confirm which conda env each tool lives in
make check
# tool->env mapping is in configs/example_config.json (tool_envs)Memory errors
# Reduce thread count
--threads 2Large dataset issues
# Use custom output location
--output /path/to/large/disk/results/# Run unit tests (no conda required)
make test
# Preview the plan without running tools
make dry-run- Installation Guide - Detailed setup instructions
- Examples - Usage examples and tutorials
This project is licensed under the MIT License - see the LICENSE file for details.