Snakemake:使用群集时缺少文件操作数



我正在PBS集群(PBSpro(上部署一个蛇形工作流程。我遇到了一个问题,即由于缺少 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 命令传递给集群?

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

最新更新