Snakemake workflow: megadudes-evaluation

Snakemake Build Status

This is the template for a new Snakemake workflow. Replace this text with a comprehensive description covering the purpose and domain. Insert your code into the respective folders, i.e. scripts, rules, and envs. Define the entry point of the workflow in the Snakefile and the main configuration in the config.yaml file.

Authors

  • Henning Schiebenhoefer (@rababerladuseladim)

Usage

If you use this workflow in a paper, don't forget to give credits to the authors by citing the URL of this (original) repository and, if available, its DOI (see above).

Step 1: Obtain a copy of this workflow

  1. Create a new github repository using this workflow as a template.
  2. Clone the newly created repository to your local system, into the place where you want to perform the data analysis.

Step 2: Install Snakemake

Install Snakemake using conda:

conda env create -f env.yaml

Install pre-commit by running

pre-commit install

For installation details, see the instructions in the Snakemake documentation.

Step 3: Download Resources

Download resources by executing:

./download_resources.sh

Step 4: Configure workflow

Configure the workflow according to your needs via editing the files in the config/ folder. Adjust config.yaml to configure the workflow execution, and samples.tsv to specify your sample setup.

Step 5: Execute workflow

Activate the conda environment:

conda activate snakemake

Test your configuration by performing a dry-run via

snakemake --use-conda -n

Execute the workflow locally via

snakemake --use-conda --cores $N --resources mem_gb=21

using $N cores or run it in a cluster environment via

snakemake --use-conda --cluster qsub --jobs 100

or

snakemake --use-conda --drmaa --jobs 100

If you not only want to fix the software stack but also the underlying OS, use

snakemake --use-conda --use-singularity

in combination with any of the modes above. See the Snakemake documentation for further details.

Step 6: Investigate results

After successful execution, you can create a self-contained interactive HTML report with all results via:

snakemake --report report.html

This report can, e.g., be forwarded to your collaborators. An example (using some trivial test data) can be seen here.

Step 7: Commit changes

Whenever you change something, don't forget to commit the changes back to your github copy of the repository:

git commit -a
git push

Updating

  • update the local environment: conda update -n snakemake --all
  • update env file: conda env export -n snakemake > env.yaml
  • update lock-file: conda list --explicit -n snakemake > spec-file.txt
  • update pre-commit hooks: pre-commit autoupdate

Testing

Test cases are in the subfolder test. They are automatically executed via continuous integration with GitHub Actions.