Snakemake:使用群集时丢失文件操作数

时间:2018-03-22 18:10:15

标签: python shell cluster-computing pbs snakemake

我正在PBS集群(PBSpro)上部署snakemake工作流程。我遇到了一个问题,即由于缺少shell命令的参数/操作数,在集群节点上运行的shell命令失败。下面是一个可以重现我所看到的行为的最小例子:

rule all:
    input: 'foo.txt'

rule run_foo:
    output: 'foo.txt'
    shell: 'touch {output}'

从命令行运行:

snakemake all

工作流程运行完成,没有任何错误。但是,从命令行运行:

snakemake all --jobs 1 --cluster "qsub -l select=1:ncpus=1 -l walltime=00:05:00 -A $PROJECT -q share -j oe"

工作流程失败,并生成一个群集日志,如下所示:

Error: Image not found
Error in job run_foo while creating output file foo.txt.
RuleException:
CalledProcessError in line 7 of /glade2/scratch2/jhamman/Snakefile:
Command 'touch foo.txt' returned non-zero exit status 1.
  File "/glade2/scratch2/jhamman/Snakefile", line 7, in __rule_run_foo
  File "/glade/u/home/jhamman/anaconda/envs/storylines/lib/python3.6/concurrent/futures/thread.py", line 56, in run
Exiting because a job execution failed. Look above for error message

似乎正在发生的事情是该命令的参数(在这种情况下为touch)未应用,尽管列出了回溯。

有没有通过我发现的snakemake将shell命令传递给集群的技巧?

1 个答案:

答案 0 :(得分:0)

事实证明,我使用的是相当旧版本的snakemake。出于某种原因,康达已经固定了我的版本。无论如何,手动升级到最新稳定版本的snakemake似乎已经解决了这个问题。