Documentation: https://snk.wytamma.com
Source Code: https://github.com/Wytamma/snk
Paper: https://joss.theoj.org/papers/10.21105/joss.07410
Snk (pronounced snek) is a Snakemake workflow management system. Snk allows you to install Snakemake workflows as dynamically generated Command Line Interfaces (via snk-cli). Using a workflow as a CLI increases its interoperability and allows complex workflows to be used as modular components in a larger system.
From bioconda:
conda create -n snk bioconda::snkFrom PyPI:
pip install snkThe snk install command can be use to install Snakemake workflows as CLIs. Snk can install Snakemake workflows from GitHub repos or local paths.
snk install wytamma/snk-basic-pipelineSuccessfully installed snk-basic-pipeline (ff034f1b)!
The snk install command is flexible and can be used to install diverse workflows. For example, the dna-seq-gatk-variant-calling workflow (v2.1.1) as variant-calling with Snakemake v8.10.8 and Pandas and NumPy dependency. An index of publicly available Snakemake workflows can be found on the snakemake workflow catalog.
snk install \
snakemake-workflows/dna-seq-gatk-variant-calling \
--name variant-calling \
--snakemake 8.10.8 \
-d pandas==1.5.3 \
-d numpy==1.26.4 \
-t v2.1.1
Successfully installed variant-calling (v2.1.1)!
You can list installed workflows with snk list and uninstall them with snk uninstall.
snk list| Workflow | Version |
|---|---|
| snk-basic-pipeline | ff034f1b |
| variant-calling | v2.1.1 |
snk uninstall snk-basic-pipelineSuccessfully uninstalled snk-basic-pipeline!
Snk will automatically create a fully featured CLI for the Snakemake workflow using snk-cli.
Note
For more details on the CLI created by snk read the snk-cli docs
variant-calling --help
Workflow configuration options are automatically generated from the snakemake config file.
variant-calling run --help
Here we use the .test resources included in the workflow to create the DAG (requires graphviz).
variant-calling run -r .test/config -r .test/data --dag dag.pdf
Snk will dynamically generate config options for the CLI. For example if the config.yaml file has the option samples: config/samples.tsv you can set this option with the --samples flag.
variant-calling run --samples new.tsvYou can also configure the workflow using a config file.
variant-calling config --pretty # print the config
variant-calling config > config.yml # save the config
variant-calling run --config config.yml # run with config Read the documentation for more information.
snk is distributed under the terms of the MIT license.
If you use snk in an academic setting then please cite the following article:
- Wirth, Wytamma, Simon Mutch, and Robert Turnbull. “Snk: A Snakemake CLI and Workflow Management System.” Journal of Open Source Software 9, no. 103 (2024): 7410. DOI: 10.21105/joss.07410.
In BibTeX format:
@article{Wirth2024,
doi = {10.21105/joss.07410},
year = {2024},
publisher = {The Open Journal},
volume = {9},
number = {103},
pages = {7410},
author = {Wytamma Wirth and Simon Mutch and Robert Turnbull},
title = {Snk: A Snakemake CLI and Workflow Management System},
journal = {Journal of Open Source Software}
}