seq2science command line interface

Start on seq2science migration with CLI. I decided to make a seq2science branch to keep the migration separate from the normal development.
@siebrenf can you take a look if this is what you had in mind for a cli? I implemented three subcommands: init, run and docs.
usage: seq2science [-h] [-v] {init,run,docs} ...

positional arguments:
  {init,run,docs}
    init           Initialise a workflow with an example config and samples
                   file.
    run            Run a complete workflow.
    docs           Take me to the docs!

optional arguments:
  -h, --help       show this help message and exit
  -v, --version    show program's version number and exit

init
Makes a config.yaml and samples.tsv for a specific workflow:
usage: seq2science init [-h] [-c FILE]
                        {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

Each workflow requires a configuration and samples file to run. Running
"seq2science init {workflow}" initialises a default configuration and samples
file for the specific workflow.

positional arguments:
  {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

optional arguments:
  -h, --help            show this help message and exit
  -c FILE, --config FILE
                        The path to the config file.

run
Run a workflow:
usage: seq2science run [-h] [-c FILE] --cores N
                       [--kwargs KEY=VAL [KEY=VAL ...]]
                       {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

Run a complete workflow. This requires that a config and samples file are
present. These files can be

positional arguments:
  {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

optional arguments:
  -h, --help            show this help message and exit
  -c FILE, --config FILE
                        The path to the config file.
  --cores N             Use at most N cores in parallel.
  --kwargs KEY=VAL [KEY=VAL ...]
                        Extra arguments to pass along to snakemake. An example
                        could be seq2science run {workflow} --cores 10
                        --kwargs dryrun=True. Take a look at the snakemake API
                        for a list of all possible options: https://snakemake.
                        readthedocs.io/en/latest/api_reference/snakemake.html

docs
Just some fluff, open a link to the docs, if that doesn't work print the url.

@Maarten-vd-Sande

change kwargs into human readable name
--config for init should have different descriptor
--cores, require minimum since pipeline does not like a low value with alignment.

maarten@lap-maarten:~/Dropbox/Studie/PhD/snakemake-workflows$ ./bin/seq2science --help
usage: seq2science [-h] [-v] {init,run,docs} ...

positional arguments:
  {init,run,docs}
    init           Initialise a workflow with an example config and samples
                   file.
    run            Run a complete workflow.
    docs           Take me to the docs!

optional arguments:
  -h, --help       show this help message and exit
  -v, --version    show program's version number and exit

maarten@lap-maarten:~/Dropbox/Studie/PhD/snakemake-workflows$ ./bin/seq2science init --help
usage: seq2science init [-h] [--dir PATH]
                        {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

Each workflow requires a configuration and samples file to run. Running
"seq2science init {workflow}" initialises a default configuration and samples
file for the specific workflow.

positional arguments:
  {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

optional arguments:
  -h, --help            show this help message and exit
  --dir PATH            The path to the directory where to initialise the
                        config and samples files.

maarten@lap-maarten:~/Dropbox/Studie/PhD/snakemake-workflows$ ./bin/seq2science run --help
usage: seq2science run [-h] [-c FILE] --cores N [-n] [--unlock]
                       [--snakemakeOptions KEY=VAL [KEY=VAL ...]]
                       {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

Run a complete workflow. This requires that a config and samples file are
present. These files can be

positional arguments:
  {chip_seq,alignment,scATAC_seq,download_fastq,rna_seq,scRNA_seq,atac_seq}

optional arguments:
  -h, --help            show this help message and exit
  -c FILE, --config FILE
                        The path to the config file.
  --cores N             Use at most N cores in parallel.
  -n, --dryrun          Do not execute anything, and display what would be
                        done.
  --unlock              Remove a lock on the working directory.
  --snakemakeOptions KEY=VAL [KEY=VAL ...]
                        Extra arguments to pass along to snakemake. An example
                        could be seq2science run {workflow} --cores 10
                        --snakemakeOptions resources={mem_gb:100}
                        local_cores=3. Take a look at the snakemake API for a
                        list of all possible options: https://snakemake.readth
                        edocs.io/en/latest/api_reference/snakemake.html

p.s. a nice side-effect of this approach is that we are now sharing environments between workflows! :tada: