问题
我不确定是否保存了-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"我发现影响职务名称的only方式是使用-职务名称。
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和--集群:
snakemake: error: argument --cluster/-c: not allowed with argument --drmaa4)如果我在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}}编辑添加了#5w/解决方案
5)我可以使用config.json设置职务名称,然后在我的snakemake调用中将该职位连接起来。这样,我就有了一个通用的snakemake调用(
mpileupSPLIT-Pfeiffer_chr19.1.e7152298根据DAG的说法,1是Snakemake的工作人员。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}"
}审查的文件
我已经看过文件了,但我想不出来。
系统
Snakemakev3.10.2(明天将尝试最新的conda版本)发布5.4SGE集群
发布于 2017-05-25 07:52:34
解决方案
在你的snakemake调用中使用‘
设置群集配置文件,使其具有职务名称后缀的目标参数。在本例中,这些是对名为“mpileupSPLIT”的Snakemake规则的重写:
"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}"
}利用一个通用的Snakemake调用,该调用包括{jobid}。在集群(SGE)上,“jobid”变量同时包含Snakemake Job#和Job#,这两个变量都很有价值,因为第一个对应于Snakemake,而后者则用于集群日志记录。(例如
编辑添加了解决方案来解析post。
https://stackoverflow.com/questions/44171082
复制相似问题