首页 > 解决方案 > 带集群的snakemake,如何使命令行更短

问题描述

我开始阅读有关蛇形的东西。我想将它与集群一起使用。

我想将所有/大部分发送的snakemake命令的参数放在Snakemake文件中,并使命令行更短。而不是运行:

snakemake -j 2  --cluster ...

我只想运行:

snakemake

我希望将集群的参数保存在文件中。我创建文件 config.yaml,把它:

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"

当我运行时:

snakemake -j 1 --profile aa

我得到:

用法:snakemake [-h] [--dry-run] [--profile PROFILE]
[--cache [RULE [RULE ...]]] [--snakefile FILE] [--cores [N]]
[- -local-cores N] [--resources [NAME=INT [NAME=INT ...]]] ...
[target [target ...]] snakemake:错误:不明确的选项:--a={'cpus -per-task': 16, 'queue': 'myqueue2', 'mem':
'10000M', 'time': '00-01:00:00'} 可以匹配 --archive,
--allow-ambiguity, --allowed-rules, --attempt

另外,我在哪里可以找到带有集群的蛇形制作的完整示例?

谢谢。

标签: snakemakelsf

解决方案


我想你可以在你的 bash 配置文件中添加一个snakemake 的别名,例如:

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

也许更好地将别名称为与snakemake不同的东西,比如my_snakemake

但在我看来,这不是一个好主意,因为有人,甚至你自己,后来阅读代码并不知道究竟是什么my_snakemake


推荐阅读