0
votes

I started to reading about snakemake. I will like to use it with cluster.

I would like to put all/most the parameters sent snakemake command in the Snakemake file and make the command line shorter. instead of running :

snakemake -j 2  --cluster ...

I would like to run just :

snakemake

I want have the parameters of the cluster to be in file. I create the file config.yaml, put it it:

cluster: bsub
jobs: 5

__default__ :
        job-name      : "{rule}"
        output        : "logs/{rule}/{wildcards}.out"
        ntasks        : 1
        cpus-per-task : 1
        mem           : "200M"
        time          : "00-00:05:00"
        queue         : "myqueue1"
        account       : "my_account"
        partition     : "my_partition"

# Override the above defaults, with job specific values
a :
        cpus-per-task : 16
        queue         : "myqueue2"
        mem           : "10000M"
        time          : "00-01:00:00"

When I run:

snakemake -j 1 --profile aa

I get:

usage: snakemake [-h] [--dry-run] [--profile PROFILE]
[--cache [RULE [RULE ...]]] [--snakefile FILE] [--cores [N]]
[--local-cores N] [--resources [NAME=INT [NAME=INT ...]]] ...
[target [target ...]] snakemake: error: ambiguous option: --a={'cpus-per-task': 16, 'queue': 'myqueue2', 'mem':
'10000M', 'time': '00-01:00:00'} could match --archive,
--allow-ambiguity, --allowed-rules, --attempt

Also where I can find full examples for snakemake with cluster?

Thanks.

1

1 Answers

0
votes

I guess you could add to your bash profile an alias for snakemake like:

alias snakemake='snakemake -j 2  --cluster ...' 

maybe better to call the alias something different from snakemake, say my_snakemake.

But in my opinion it's not a good idea since someone, even yourself, later reading the code doesn't know what exactly my_snakemake does.