Skip to content

About

Eukaryotic Genome Annotation Pipeline

Topics

Resources

Stars

401 stars

Watchers

15 watching

Forks

Latest commit

 

History

2,052 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Latest Github release DOI Conda Docker Image Size (tag) Docker Pulls install with bioconda European Galaxy server

Alt text

funannotate is a pipeline for genome annotation (built specifically for fungi, but will also work with higher eukaryotes). Installation, usage, and more information can be found at http://funannotate.readthedocs.io

funannotate v1 and funannotate2

There are two versions of funannotate. This repository is funannotate v1. funannotate2 is a complete rewrite. One goal of the rewrite was to reduce dependencies. funannotate2 is released and works. Its documentation is at funannotate2.readthedocs.io. The two programs are not drop-in replacements for each other. Their commands and databases are different. For example, funannotate2 uses the funannotate2 command and the FUNANNOTATE2_DB variable. It does not have the v1 update or compare commands. funannotate v1 is still developed and maintained. Release 1.9.0 is the current release. See issue #1187 for the discussion.

Quickest start Docker:

You can use docker to run funannotate. The image is published on the GitHub Container Registry and is rebuilt for each release: ghcr.io/nextgenusfs/funannotate:v1.9.0 (the tags 1.9.0 and latest point to the same release). It contains funannotate, the Rust-optimized EVM, PASA and Trinity, and MariaDB for PASA. It does not contain the funannotate databases, the eggNOG database, GeneMark or SignalP (see licensing below). Download the databases once with funannotate setup and mount that folder into the container. I've also written a bash script that runs the image and detects the user and volume bindings; it uses the image above and mounts $FUNANNOTATE_DB when that variable is set. This route can be achieved with:

# download/pull the release image from the GitHub Container Registry
$ docker pull ghcr.io/nextgenusfs/funannotate:v1.9.0

# Apptainer/Singularity
$ apptainer pull funannotate-1.9.0.sif docker://ghcr.io/nextgenusfs/funannotate:v1.9.0

# download bash wrapper script (optional)
$ wget -O funannotate-docker https://raw.githubusercontent.com/nextgenusfs/funannotate/master/funannotate-docker

# might need to make this executable on your system
$ chmod +x /path/to/funannotate-docker

# assuming it is in your PATH, now you can run this script as if it were the funannotate executable script
$ export FUNANNOTATE_DB=/path/to/funannotate_db   # made with `funannotate setup`
$ funannotate-docker test -t predict --cpus 12

Funannotate containers (this fork's rust-optimized build):

This section covers building the release image yourself. The published image (ghcr.io/nextgenusfs/funannotate:v1.9.0, above) is built from the same Dockerfile; it replaces the older nextgenusfs/funannotate Docker Hub image (1.8.x). It packages the rust_EVM_trinity_PASA branch (Rust-optimized PASA/EVidenceModeler/ Trinity forks) via Dockerfile (release) / Dockerfile.dev (iterative dev builds), installed through conda-pack into /venv. Build it locally:

docker build -t funannotate-live -f Dockerfile .

or convert to a Singularity/Apptainer image for HPC use:

singularity build funannotate-live.sif docker-daemon://funannotate-live:latest

Environment variables baked into the image (all overridable at container-runtime, either via docker run -e VAR=.../--env VAR=... or by exporting on the host before singularity exec -- Singularity passes host env through by default). FUNANNOTATE_DB and EGGNOG_DATA_DIR are both placeholder subpaths under a common /opt/databases parent -- bind your own data onto each subpath, or override the variables individually:

Variable Image default Purpose
FUNANNOTATE_DB /opt/databases/funannotate_db funannotate's core reference DBs. Bind your own onto this path, or override the variable to point elsewhere.
EGGNOG_DATA_DIR /opt/databases/eggnog_db EggNOG-mapper DB (~50GB, not baked into the image -- same reason the upstream Docker image omits it, see docs/docker.rst). Bind your own copy onto this path. Without a real DB bound here, funannotate annotate's auto-run of emapper.py crashes rather than skipping cleanly (see docs/containers.rst).
PASAHOME /venv/opt/pasa/src PASA install root.
PERL5LIB includes PASA's SAMPLE_HOOKS + PerlLib Required for PASA's hook loader to resolve GFF3::GFF3_annot_retriever during funannotate update's annotation-comparison step -- without it, that step crashes with Error, couldn't resolve path for GFF3::GFF3_annot_retriever.
EVM_HOME /venv/opt/evm EVidenceModeler install root.

See docs/containers.rst for a full worked example (build, bind mounts, Singularity usage on shared HPC storage, and known gotchas).

Quickstart Bioconda install:

funannotate 1.9.0: the bioconda package is built separately and may be an older release than this one. For 1.9.0 follow docs/conda.rst (a conda environment for the external tools, pip install funannotate, and scripts that build the Rust-optimized EVM, PASA and Trinity), or use the container image. The commands below install whatever version bioconda currently has.

The pipeline can be installed with conda (via bioconda):

#add appropriate channels
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge

#then create environment
conda create -n funannotate "python>=3.6,<3.9" funannotate

If conda is taking forever to solve the environment, I would recommend giving mamba a try:

#install mamba into base environment
conda install -n base mamba

#then use mamba as drop in replacmeent
mamba create -n funannotate funannotate

If you want to use GeneMark-ES/ET you will need to install that manually following developers instructions: http://topaz.gatech.edu/GeneMark/license_download.cgi

Note that you will need to change the shebang line for all perl scripts in GeneMark to use /usr/bin/env perl. You will then also need to add gmes_petap.pl to the $PATH or set the environmental variable $GENEMARK_PATH to the gmes_petap directory.

To install just the python funannotate package, you can do this with pip:

python -m pip install funannotate

To install the most updated code in master you can run:

python -m pip install git+https://github.com/nextgenusfs/funannotate.git

Citation

Jonathan M. Palmer, & Jason E. Stajich. (2020). Funannotate v1.8.1: Eukaryotic genome annotation (v1.8). Zenodo. https://doi.org/10.5281/zenodo.1134477

About

Eukaryotic Genome Annotation Pipeline

Topics

Resources

Stars

401 stars

Watchers

15 watching

Forks

Releases

Packages

Used by

Contributors

Languages