我的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。
答案 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'
"""
有效