Snakemake要求规则退出使用非零退出代码,即使使用“ || true”?

时间:2019-06-20 20:50:11

标签: python bash snakemake

我的snakemake管道断言,只要我运行任何规则,我的代码都会引发一个非零的退出代码,即使如果我手动运行相同的确切代码,我的代码将返回错误代码0,并且在运行时它也可以正常工作蛇行。

根据this question的建议,我尝试将|| true附加到snakemake规则中的shell命令中,将规则从原来的样子更改为

rule rulename:
    input:
        "input/file"
    output:
        "output/file"
    shell:
        "python3.7 scripts/script.py {input} {output}"

rule rulename:
    input:
        "input/file"
    output:
        "output/file"
    shell:
        "python3.7 scripts/script.py {input} {output} || true"

但是,当我重新运行管道时,snakemake仍然会出错并说(exited with non-zero exit code),尽管最后的|| true将确保此命令始终返回退出代码0。 / p>

snakemake在做什么导致这种情况?作为参考,我在使用python 3.7.0和snakemake 5.5.0,并且如果相关,我使用的服务器具有Ubuntu 16.04.5。

1 个答案:

答案 0 :(得分:0)

在Snakemake中运行docker而不将我的userid传播到容器时,我遇到了这个问题。该脚本可以运行,但是如果Snakemake无法以您的用户身份触摸输出,它将返回此隐式错误。

rule helloworld:
    output: "output_10/test"
    shell:
        """
        docker  run -v $PWD:/work -w /work someimage somecommand > output_10/test'
        """

(exited with non-zero exit code)

rule helloworld:
    output: "output_10/test"
    shell:
        """
        docker  run --user $(id -u):$(id -g) -v $PWD:/work -w /work someimage somecommand > output_10/test'
        """

有效