我不确定是否正在保存-N参数。 SGE集群。除了-N参数外,一切都有效。
它始终恢复为默认名称。这是我的调用,它有相同的结果,有或没有-N参数。
snakemake --jobs 100 --drmaa "-V -S /bin/bash -o log/mpileup/mpileupSPLIT -e log/mpileup/mpileupSPLIT -l h_vmem=10G -pe ncpus 1 -N {rule}.{wildcards}.varScan"
我发现影响作业名称的 方式是使用--jobname。
snakemake --jobs 100 --drmaa "-V -S /bin/bash -o log/mpileup/mpileupSPLIT -e log/mpileup/mpileupSPLIT -l h_vmem=10G -pe ncpus 1 -N {rule}.{wildcards}.varScan" --jobname "{rule}.{wildcards}.{jobid}"
我尝试过各种各样的事情。通常我实际上只是使用一个集群配置文件,但这也不起作用,所以这就是为什么在上面的代码中,我抛弃了文件系统以确保它是'-N'命令,它没有被保存。
我通常的电话是:
snakemake --drmaa "{cluster.clusterSpec}" --jobs 10 --cluster-config input/config.json
1)如果我使用'-n'而不是'-N',我收到工作流程错误:
drmaa.errors.DeniedByDrmException: code 17: ERROR! invalid option argument "-n"
2)如果我使用'-N',但给它一个不正确的通配符,请说{rule.name}:
AttributeError: 'str' object has no attribute 'name'
3)我不能同时使用--drmaa和--cluster:
snakemake: error: argument --cluster/-c: not allowed with argument --drmaa
4)如果我在config.json文件中指定{jobid},那么Snakemake不知道如何处理它。
RuleException in line 13 of /extscratch/clc/projects/tboyarski/gitRepo-LCR-BCCRC/Snakemake/modules/mpileup/mpileupSPLIT:
NameError: The name 'jobid' is unknown in this context. Please make sure that you defined that variable. Also note that braces not used for variable access have to be escaped by repeating them, i.e. {{print $1}}
EDIT已添加#5 w /解决方案
5)我可以使用config.json设置作业名称,然后在我的snakemake调用中连接jobid。这样我就有一个通用的snakemake调用(--jobname“{cluster.jobName}。{jobid}”),以及一个高度可配置和特定的工作名称({rule} - {wildcards.sampleMPUS} _chr {wildcards.chrMPUS})结果是:
mpileupSPLIT-Pfeiffer_chr19.1.e7152298
根据DAG,1是Snakemake jobid。 7152298是我的集群的工作号码。
第二次编辑 - 刚试过v3.12,同样的事情。连接必须在snakemake调用中发生。
我也可以这样做:
snakemake --drmaa "{cluster.clusterSpec}" --jobname "{cluster.jobName}" --jobs 10 --cluster-config input/config.json
使用我的群集文件:
"mpileupSPLIT": {
"clusterSpec": "-V -S /bin/bash -o log/mpileup/mpileupSPLIT -e log/mpileup/mpileupSPLIT -l h_vmem=10G -pe ncpus 1 -n {rule}.{wildcards}.varScan",
"jobName": "{rule}-{wildcards.sampleMPUS}_chr{wildcards.chrMPUS}.{jobid}"
}
我已阅读文档,但我无法弄明白。
http://snakemake.readthedocs.io/en/latest/executable.html?-highlight=job_name#cluster-execution
Snakemake v3.10.2(将在明天尝试最新的conda版本) 红帽企业Linux服务器版本5.4 SGE集群
答案 0 :(得分:0)
在你的qsub参数提交中,在你的snakemake调用中使用'--jobname'而不是'-N'
将群集配置文件设置为具有作业名称后缀的可定位参数。在这种情况下,这些是我的Snakemake规则的替代名为“mpileupSPLIT”:
"mpileupSPLIT": {
"clusterSpec": "-V -S /bin/bash -o log/mpileup/mpileupSPLIT -e log/mpileup/mpileupSPLIT -l h_vmem=10G -pe ncpus 1",
"jobName": "{rule}-{wildcards.sampleMPUS}_chr{wildcards.chrMPUS}"
}
利用包含{jobid}的通用Snakemake调用。在集群(SGE)上,'jobid'变量包含Snakemake Job#和Cluster Job#,两者都很有价值,因为第一个对应于Snakemake DAG,后者用于集群日志记录。 (例如--jobname“{cluster.jobName}。{jobid}”)
编辑添加了解决帖子的解决方案。