Wytamma / snk

Snakemake workflow management system and CLI generation tool
https://snk.wytamma.com
MIT License
31 stars 2 forks source link

Snk

PyPI - Version PyPI - Python Version write-the - docs Hits status


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.

Installation

From bioconda:

conda create -n snk bioconda::snk

From PyPI:

pip install snk

Basic Use

Install a workflow as a CLI

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)!

Manage Installed Workflows

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!

Inspect the CLI

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
cli help

View run options

Workflow configuration options are automatically generated from the snakemake config file.

variant-calling run --help
run cli help

Create a DAG

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
run cli help

Configure

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 

Documentation

Read the documentation for more information.

License

snk is distributed under the terms of the MIT license.