Documentation: https://snk.wytamma.com
Source Code: https://github.com/Wytamma/snk
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::snk
From PyPI:
pip install snk
The 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-pipeline
Successfully 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-pipeline
Successfully 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.tsv
You 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.