2016-11-23 24 views
0

我有一个与drmma和snakemake中的集群配置文件相关的问题。Snakemake集群配置与DRMMA结合使用

目前,我有一个管道,我使用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和作业2)与默认选项,而不是与自定义的提交:

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

我在做什么错误?是否我无法将drmaa选项与cluster-config文件结合?

回答

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将根据规则进行相应更换。

安德烈亚斯

+1

参见西蒙在您crossposting答案:https://groups.google.com/forum/#!topic/snakemake/D4enw1jt7iQ – Andreas