Snakemake群集配置与DRMMA结合使用

时间:2016-11-23 16:43:28

标签: cluster-computing snakemake drmaa

我有一个与drma和snakemake中的群集配置文件相关的问题。

目前我有一个管道,我使用drmma使用以下命令将作业提交到集群:

snakemake --drmaa " -q short.q -pe smp 8 -l membycore=4G" --jobs 100 -p file1/out file2/out file3/out

问题是某些规则/作业需要更少或更多的资源。我虽然如果我使用json群集文件,我将能够提交具有不同资源的作业。我的json文件如下所示:

{
    "__default__":
    {
        "-q":"short.q",
        "-pe":"smp 1",
        "-l":"membycore=4G"
    },
    "job1":
    {
        "-q":"short.q",
        "-pe":"smp 8",
        "-l":"membycore=4G"
    },
    "job2":
    {
        "-q":"short.q",
        "-pe":"smp 8",
        "-l":"membycore=4G"
    }
}

当我运行以下命令时,我的作业(job1和job2)将使用默认选项提交,而不是使用自定义选项提交:

snakemake --jobs 100 --cluster-config cluster.json --drmaa -p file1/out file2/out file3/out

我做错了什么?是不是我不能将drmaa选项与cluster-config文件结合起来?

1 个答案:

答案 0 :(得分:1)

群集配置文件只允许您定义稍后在--cluster/--cluster-sync/--drmaa中使用的变量,具体取决于定义的占位符。这里没有涉及DRMAA特定的魔法。再看看the corresponding section in the documentation

也许一个例子让事情更清楚:

群集配置:

{
    "__default__":
    {
      "time" : "02:00:00",
      "mem" : 1G,
    },
    # more rule specific definitions here...
}

使用上述内容的示例snakemake参数:

 --drmaa " -pe OpenMP {threads} -l mem_free={cluster.mem} -l h_rt={cluster.time}"

--cluster-sync "qsub -sync y -pe OpenMP {threads} -l mem_free={cluster.mem} -l h_rt={cluster.time}"

cluster.timecluster.mem将根据规则进行相应更换。

安德烈亚斯