bheimbu/annoSnake

Snakemake workflow for taxonomic and functional annotation of metagenomes and metagenome-assembled genomes

Overview

Latest release: v2.0.0, Last update: 2026-09-17

Share link: https://snakemake.github.io/snakemake-workflow-catalog?wf=bheimbu/annoSnake

Quality control: linting: failed formatting: failed

Deployment

Step 1: Install Snakemake and Snakedeploy

Snakemake and Snakedeploy are best installed via the Conda package manager. It is recommended to install conda via Miniforge. Run

conda create -c conda-forge -c bioconda -c nodefaults --name snakemake snakemake snakedeploy

to install both Snakemake and Snakedeploy in an isolated environment. For all following commands ensure that this environment is activated via

conda activate snakemake

For other installation methods, refer to the Snakemake and Snakedeploy documentation.

Step 2: Deploy workflow

With Snakemake and Snakedeploy installed, the workflow can be deployed as follows. First, create an appropriate project working directory on your system and enter it:

mkdir -p path/to/project-workdir
cd path/to/project-workdir

In all following steps, we will assume that you are inside of that directory. Then run

snakedeploy deploy-workflow https://github.com/bheimbu/annoSnake . --tag v2.0.0

Snakedeploy will create two folders, workflow and config. The former contains the deployment of the chosen workflow as a Snakemake module, the latter contains configuration files which will be modified in the next step in order to configure the workflow to your needs.

Step 3: Configure workflow

To configure the workflow, adapt config/config.yml to your needs following the instructions below.

Step 4: Run workflow

The deployment method is controlled using the --software-deployment-method (short --sdm) argument.

To run the workflow with automatic deployment of all required software via conda/mamba, use

snakemake --cores all --sdm conda

Snakemake will automatically detect the main Snakefile in the workflow subfolder and execute the workflow module that has been defined by the deployment in step 2.

For further options such as cluster and cloud execution, see the docs.

Step 5: Generate report

After finalizing your data analysis, you can automatically generate an interactive visual HTML report for inspection of results together with parameters and code inside of the browser using

snakemake --report report.zip

Configuration

The following section is imported from the workflow’s config/README.md.

Configuration

annoSnake’s configuration is documented in full at https://annosnake.readthedocs.io/en/latest/step_by_step.html.

Quick reference

  • config/params.yaml – workflow parameters: input/output directories, library type (paired-end or interleaved), MAG assembly toggle and completeness/contamination thresholds, which functional annotation databases to run (PFAM, COG, KEGG, CAZYMES), and per-database E-value cutoffs.

  • config/config.yaml – SLURM/cluster execution settings (partition, memory, time limits, job concurrency). Adjust to match your own HPC environment.

Run the workflow from the repository root:

snakemake –profile config/ -n

Input data

Place gzipped FASTQ files in the directory specified by inputdir in config/params.yaml (relative to the repository root). Sample names are inferred automatically from filenames – no sample sheet is required.

Paired-end: Interleaved: {inputdir}/ {inputdir}/ sample1_R1.fastq.gz sample1.fastq.gz sample1_R2.fastq.gz sample2.fastq.gz … …

Reads do not need to be pre-trimmed or filtered.

See the full documentation for details on each configuration option, the annotation databases used (https://annosnake.readthedocs.io/en/latest/databases.html), and expected output structure (https://annosnake.readthedocs.io/en/latest/output_overview.html).

Linting and formatting

Linting results
  1/home/runner/work/snakemake-workflow-catalog/snakemake-workflow-catalog/.pixi/envs/default/lib/python3.13/site-packages/google/auth/transport/grpc.py:44: FutureWarning: grpcio < 1.83.0 does not support Post-Quantum Cryptography (PQC). Support for non-PQC environments is deprecated. In October 2026, google-auth will raise its minimum requirements to enforce grpcio >= 1.83.0. For more details on Google Cloud's post-quantum security migration, visit: https://cloud.google.com/security/resources/post-quantum-cryptography
  2  warnings.warn(
  3Lints for snakefile /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_assembly_paired_end.smk:
  4    * Absolute path "/"$new_name" in line 157:
  5      Do not define absolute paths inside of the workflow, since this renders
  6      your workflow irreproducible on other machines. Use path relative to the
  7      working directory instead, or make the path configurable via a config
  8      file.
  9      Also see:
 10      https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
 11
 12Lints for snakefile /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/cogs.smk:
 13    * Absolute path "/" $3 ".ids")}}" in line 28:
 14      Do not define absolute paths inside of the workflow, since this renders
 15      your workflow irreproducible on other machines. Use path relative to the
 16      working directory instead, or make the path configurable via a config
 17      file.
 18      Also see:
 19      https://snakemake.readthedocs.io/en/latest/snakefiles/configuration.html#configuration
 20
 21Lints for snakefile /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/report.smk:
 22    * Mixed rules and functions in same snakefile.:
 23      Small one-liner functions used only once should be defined as lambda
 24      expressions. Other functions should be collected in a common module, e.g.
 25      'rules/common.smk'. This makes the workflow steps more readable.
 26      Also see:
 27      https://snakemake.readthedocs.io/en/latest/snakefiles/modularization.html#includes
 28
 29Lints for rule check_input (line 3, /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/megahit_paired_end.smk):
 30    * No log directive defined:
 31      Without a log directive, all output will be printed to the terminal. In
 32      distributed environments, this means that errors are harder to discover.
 33      In local environments, output of concurrent jobs will be mixed and become
 34      unreadable.
 35      Also see:
 36      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#log-files
 37    * Specify a conda environment or container for each rule.:
 38      This way, the used software for each specific step is documented, and the
 39      workflow can be executed on any machine without prerequisites.
 40      Also see:
 41      https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html#integrated-package-management
 42      https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html#running-jobs-in-containers
 43    * Shell command directly uses variable INPUTDIR from outside of the rule:
 44      It is recommended to pass all files as input and output, and non-file
 45      parameters via the params directive. Otherwise, provenance tracking is
 46      less accurate.
 47      Also see:
 48      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 49    * Shell command directly uses variable INPUTDIR from outside of the rule:
 50      It is recommended to pass all files as input and output, and non-file
 51      parameters via the params directive. Otherwise, provenance tracking is
 52      less accurate.
 53      Also see:
 54      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 55    * Shell command directly uses variable INPUTDIR from outside of the rule:
 56      It is recommended to pass all files as input and output, and non-file
 57      parameters via the params directive. Otherwise, provenance tracking is
 58      less accurate.
 59      Also see:
 60      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 61    * Shell command directly uses variable INPUTDIR from outside of the rule:
 62      It is recommended to pass all files as input and output, and non-file
 63      parameters via the params directive. Otherwise, provenance tracking is
 64      less accurate.
 65      Also see:
 66      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 67
 68Lints for rule megahit (line 19, /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/megahit_paired_end.smk):
 69    * No log directive defined:
 70      Without a log directive, all output will be printed to the terminal. In
 71      distributed environments, this means that errors are harder to discover.
 72      In local environments, output of concurrent jobs will be mixed and become
 73      unreadable.
 74      Also see:
 75      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#log-files
 76    * Shell command directly uses variable OUTDIR from outside of the rule:
 77      It is recommended to pass all files as input and output, and non-file
 78      parameters via the params directive. Otherwise, provenance tracking is
 79      less accurate.
 80      Also see:
 81      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 82    * Shell command directly uses variable INPUTDIR from outside of the rule:
 83      It is recommended to pass all files as input and output, and non-file
 84      parameters via the params directive. Otherwise, provenance tracking is
 85      less accurate.
 86      Also see:
 87      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 88    * Shell command directly uses variable INPUTDIR from outside of the rule:
 89      It is recommended to pass all files as input and output, and non-file
 90      parameters via the params directive. Otherwise, provenance tracking is
 91      less accurate.
 92      Also see:
 93      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 94    * Shell command directly uses variable OUTDIR from outside of the rule:
 95      It is recommended to pass all files as input and output, and non-file
 96      parameters via the params directive. Otherwise, provenance tracking is
 97      less accurate.
 98      Also see:
 99      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
100
101Lints for rule preprocess (line 38, /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/megahit_paired_end.smk):
102    * No log directive defined:
103      Without a log directive, all output will be printed to the terminal. In
104      distributed environments, this means that errors are harder to discover.
105      In local environments, output of concurrent jobs will be mixed and become
106      unreadable.
107      Also see:
108      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#log-files
109    * Specify a conda environment or container for each rule.:
110      This way, the used software for each specific step is documented, and the
111      workflow can be executed on any machine without prerequisites.
112      Also see:
113      https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html#integrated-package-management
114      https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html#running-jobs-in-containers
115    * Shell command directly uses variable OUTDIR from outside of the rule:
116      It is recommended to pass all files as input and output, and non-file
117      parameters via the params directive. Otherwise, provenance tracking is
118      less accurate.
119      Also see:
120      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
121    * Shell command directly uses variable OUTDIR from outside of the rule:
122      It is recommended to pass all files as input and output, and non-file
123      parameters via the params directive. Otherwise, provenance tracking is
124      less accurate.
125      Also see:
126      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
127    * Shell command directly uses variable OUTDIR from outside of the rule:
128      It is recommended to pass all files as input and output, and non-file
129      parameters via the params directive. Otherwise, provenance tracking is
130      less accurate.
131      Also see:
132      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
133    * Shell command directly uses variable OUTDIR from outside of the rule:
134      It is recommended to pass all files as input and output, and non-file
135      parameters via the params directive. Otherwise, provenance tracking is
136      less accurate.
137      Also see:
138      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
139
140Lints for rule MAG_metabat2 (line 3, /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_assembly_paired_end.smk):
141    * No log directive defined:
142      Without a log directive, all output will be printed to the terminal. In
143      distributed environments, this means that errors are harder to discover.
144      In local environments, output of concurrent jobs will be mixed and become
145      unreadable.
146      Also see:
147      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#log-files
148    * Shell command directly uses variable INPUTDIR from outside of the rule:
149      It is recommended to pass all files as input and output, and non-file
150      parameters via the params directive. Otherwise, provenance tracking is
151      less accurate.
152      Also see:
153      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
154    * Shell command directly uses variable INPUTDIR from outside of the rule:
155      It is recommended to pass all files as input and output, and non-file
156      parameters via the params directive. Otherwise, provenance tracking is
157      less accurate.
158      Also see:
159      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
160
161Lints for rule MAG_metacoag (line 32, /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_assembly_paired_end.smk):
162    * Do not access input and output files individually by index in shell commands:
163      When individual access to input or output files is needed (i.e., just
164      writing '{input}' is impossible), use names ('{input.somename}') instead
165      of index based access.
166      Also see:
167      https://snakemake.readthedocs.io/en/latest/snakefiles/rules.html#rules
168    * No log directive defined:
169      Without a log directive, all output will be printed to the terminal. In
170      distributed environments, this means that errors are harder to discover.
171      In local environments, output of concurrent jobs will be mixed and become
172      unreadable.
173      Also see:
174      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#log-files
175    * Shell command directly uses variable INPUTDIR from outside of the rule:
176      It is recommended to pass all files as input and output, and non-file
177      parameters via the params directive. Otherwise, provenance tracking is
178      less accurate.
179      Also see:
180      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
181    * Shell command directly uses variable INPUTDIR from outside of the rule:
182      It is recommended to pass all files as input and output, and non-file
183      parameters via the params directive. Otherwise, provenance tracking is
184      less accurate.
185      Also see:
186      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
187
188Lints for rule MAG_maxbin2 (line 62, /tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_assembly_paired_end.smk):
189    * Do not access input and output files individually by index in shell commands:
190      When individual access to input or output files is needed (i.e., just
191      writing '{input}' is impossible), use names ('{input.somename}') instead
192      of index based access.
193      Also see:
194      https://snakemake.readthedocs.io/en/latest/snakefiles/rules.html#rules
195    * No log directive defined:
196      Without a log directive, all output will be printed to the terminal. In
197      distributed environments, this means that errors are harder to discover.
198      In local environments, output of concurrent jobs will be mixed and become
199      unreadable.
200      Also see:
201
202... (truncated)
Formatting results
 1[DEBUG] 
 2[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/megahit_interleaved.smk":  Formatted content is different from original
 3[DEBUG] 
 4[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/workflow.smk":  Formatted content is different from original
 5[DEBUG] 
 6[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/salmon_quant_cogs_paired_end.smk":  Formatted content is different from original
 7[DEBUG] 
 8[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/setup_databases.smk":  Formatted content is different from original
 9[DEBUG] 
10[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/pfam.smk":  Formatted content is different from original
11[DEBUG] 
12[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/salmon_quant_contigs_paired_end.smk":  Formatted content is different from original
13[DEBUG] 
14[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_prokka.smk":  Formatted content is different from original
15[DEBUG] 
16[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/combine.smk":  Formatted content is different from original
17[DEBUG] 
18[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/kegg.smk":  Formatted content is different from original
19[DEBUG] 
20[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/blastx.smk":  Formatted content is different from original
21[DEBUG] 
22[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/report.smk":  Formatted content is different from original
23[DEBUG] 
24[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/megahit_paired_end.smk":  Formatted content is different from original
25[DEBUG] 
26[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/visualization.smk":  Formatted content is different from original
27[DEBUG] 
28[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/fetchmg.smk":  Formatted content is different from original
29[DEBUG] 
30[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/Snakefile":  Formatted content is different from original
31[DEBUG] 
32[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_gtdbtk.smk":  Formatted content is different from original
33[DEBUG] 
34[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_microbeannotator.smk":  Formatted content is different from original
35[DEBUG] 
36[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/salmon_index_contigs.smk":  Formatted content is different from original
37[DEBUG] 
38[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/cazy.smk":  Formatted content is different from original
39[DEBUG] 
40[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/salmon_quant_cogs_interleaved.smk":  Formatted content is different from original
41[DEBUG] 
42[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_assembly_interleaved.smk":  Formatted content is different from original
43[DEBUG] 
44[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/salmon_quant_contigs_interleaved.smk":  Formatted content is different from original
45[DEBUG] 
46[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_checkm_interleaved.smk":  Formatted content is different from original
47[DEBUG] 
48[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_assembly_paired_end.smk":  Formatted content is different from original
49[DEBUG] 
50[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/prokka.smk":  Formatted content is different from original
51[DEBUG] 
52[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/cogs.smk":  Formatted content is different from original
53[DEBUG] 
54[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/metaquast.smk":  Formatted content is different from original
55[DEBUG] 
56[DEBUG] In file "/tmp/tmphj_b5p3f/bheimbu-annoSnake-1c1c42c/workflow/rules/mag_checkm_paired_end.smk":  Formatted content is different from original
57[INFO] 28 file(s) would be changed 😬
58
59snakefmt version: 0.11.5