0

我有一个与drmma 和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 文件结合起来?

4

1 回答 1

1

集群配置文件只允许您--cluster/--cluster-sync/--drmaa根据定义的占位符定义稍后使用的变量。这里没有涉及 DRMAA 特定的魔法。再次查看文档中的相应部分。

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

集群配置:

{
    "__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.time并将cluster.mem根据规则相应地替换。

安德烈亚斯

于 2016-11-29T01:59:21.490 回答