funannotate: A Fungus-First Genome Annotation Pipeline with Docker and Bioconda Paths
Eukaryotic Genome Annotation Pipeline. Caveats are that GeneMark is not included in the docker image (see licensing below and you can complain to the developers for making it difficult to distribute/use).
At a glance
- What is it?
- funannotate is a Python-based pipeline for eukaryotic genome annotation, built specifically for fungi but applicable to higher eukaryotes. This review covers its mechanisms, setup routes, licensing caveats, and where it fits among alternatives.
- Who is it for?
- Adopt funannotate if you work primarily on fungal genomes and need a pipeline that integrates multiple annotation steps with a single command, especially if you can use Docker or Bioconda. Avoid it if you require GeneMark-ES/ET without manual installation, or if you need a pipeline that handles non-fungal eukaryotes with equal specificity.
- Can I use it commercially?
- Yes. BSD-2-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What funannotate Solves and Who It Serves
The pipeline is distributed as a Python package, with installation routes through Docker, Bioconda, or pip. The quickest start is Docker, where you pull the image and optionally use a wrapper script. The Bioconda route creates a dedicated environment with pinned Python versions. The pip route installs only the Python package, leaving you to handle dependencies yourself. The README explicitly notes that the Docker image is built from master, so it may be ahead of tagged releases, which is a practical detail for reproducibility: a tagged release like v1.8.17 is stable, but the Docker image might include unreleased changes. That matters if you need to cite a specific version in a paper.
How the Pipeline Works: From Assembly to Annotated Genome
The mechanism is not a single algorithm but a coordination layer. You give it a genome assembly, and it produces GFF3 or similar annotation files. The pipeline is designed to be run from the command line, with options for CPU count, as seen in the test command. The use of a wrapper script for Docker suggests that the pipeline needs to access user files and write output with correct permissions, which is a common pain point with containers. The pipeline's design choice to include databases in the full Docker image, while also offering a slim variant without them, gives users flexibility: you can use the full image for convenience or the slim image if you prefer to manage databases yourself.
Getting It Running: Docker, Bioconda, and pip
The GeneMark installation is a separate manual step. The README says you need to install GeneMark-ES/ET yourself following the developers' instructions, and then modify the shebang line of all Perl scripts to use /usr/bin/env perl. You also need to add gmes_petap.pl to your PATH or set the GENEMARK_PATH environmental variable. This is a significant hurdle because GeneMark is not freely redistributable, and the README even says you can complain to the developers for making it difficult to distribute. This means that out of the box, the pipeline works without GeneMark, but you miss a key prediction tool unless you invest time in licensing and installation.
The GeneMark Licensing Caveat and Its Impact
The README suggests that the developers are aware of the frustration and even invites complaints, which is a sign that this is a known pain point. The impact is that funannotate is not a fully turnkey solution for every user. It is a pipeline that assumes you are willing to manage some dependencies yourself. For a lab that annotates many genomes, this is a one-time setup cost. For a casual user, it might be a barrier to adoption.
Alternatives and How They Differ
The README does not mention these alternatives, but they are well-known in the field. The practical difference is that funannotate is built for fungi first, so it may have fungal-specific repeat libraries or training parameters. MAKER is more agnostic but requires you to provide repeat libraries and evidence files. BRAKER is faster for gene prediction but stops at that stage. Your choice depends on whether you want a one-stop pipeline or a toolkit.
Maintenance, Licensing, and Upgrade Considerations
The documentation is hosted on Read the Docs, which suggests a commitment to user guides. The README is sparse, but the full documentation likely covers configuration and usage in more detail. The project has a Zenodo citation, which is good for academic credit. Overall, the project appears healthy, but the GeneMark licensing issue is a recurring cost that you must manage.
Where funannotate Fits and Where It Falls Short
The README's candid note about GeneMark is refreshing, but it also signals that the pipeline is not fully self-contained. If you are evaluating funannotate, first check whether you can obtain a GeneMark license, and then test the Docker image with the provided test command. That will tell you if the pipeline works in your environment. The version control is clear, and the recent release indicates active development, so you can expect bug fixes and improvements. The BSD-2-Clause license is permissive, which is a plus for both academic and commercial use.
Editorial conclusion
Adopt funannotate if you work primarily on fungal genomes and need a pipeline that integrates multiple annotation steps with a single command, especially if you can use Docker or Bioconda. Avoid it if you require GeneMark-ES/ET without manual installation, or if you need a pipeline that handles non-fungal eukaryotes with equal specificity. Before adopting, verify that the GeneMark licensing requirement is acceptable for your environment, and check the latest version on the GitHub repository, as the Docker image tracks master and may differ from tagged releases.
Community notes