我有一个与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文件结合起来?
答案 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.time
和cluster.mem
将根据规则进行相应更换。
安德烈亚斯