You will be able to submit to journals like JOSS in about an hour
You get these pretty badges!
Why follow this guide/advice in particular?
These recommendations are my attempt at a unified collection of standards suggested by the Snakemake developers
(And while this is not a recommendation the creator did star the repo)
Making a documented workflow
Documenting: required files
├── README.md # Must contain keywords snakemake and workflow
├── config
│ ├── README.md # a complete description of configuration options
│ ├── config.yaml
│ └── manifest.tsv
├── _config.yml # A file that tells github to make a website
└── .snakemake-workflow-catalog.yml # Specify required flags and options
README.md: A standard description of your tool
config/config.yaml: A yaml file that has all options and inputs for your workflow
config/README.md: A description all options and inputs for your workflow
_config.yml: This file tells GitHub what theme to use when making your website
usage:# definition of software deployment method:# at least conda, singularity, or bothsoftware-stack-deployment:conda:true
This file tells your users that they must use --use-conda in order to run your workflow. This will allow conda to handle all dependencies.
Making a tested workflow
Testing: required files
├── .github/workflows # yaml(s) for github actions (Continuous integration)
│ ├── main.yml
│ ├── lint.yml
│ └── black.yml
├── .test# a small test case that runs all rules in your workflow
│ ├── config.yaml
│ └── <test data file>
The <>.ymls under .github/workflow specify actions GitHub should take every time a change is made to your repo
Basically GitHub will test your workflow on AWS or equivalent.
This is totally free for open source software!
The .test/ directory contains all data and configuration info needed to run a test of your code, and GitHub will run this test when you push changes
Testing: setting up continuous integration
Enter the following into .github/workflows/main.yaml
name:CI# Controls when the action will run.on:# Triggers the workflow on push or pull request events but only for the main branchpush:branches: [main, master]
pull_request:branches: [main, master]
# Allows you to run this workflow manually from the Actions tabworkflow_dispatch:# A workflow run is made up of one or more jobs that can run sequentially or in paralleljobs:Testing:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v2-name:Checkoutsubmodulesuses:textbook/git-checkout-submodule-action@2.0.0-name:Testworkflowuses:snakemake/snakemake-github-action@v1.18.0with:directory:.snakefile:workflow/Snakefileargs:"--use-conda --cores 1 --configfile .test/config.yaml"