【发布时间】:2021-02-19 22:21:26
【问题描述】:
我正在尝试从snakemake 运行一个docker 容器。作业运行并产生正确的输出,但是当它们完成时,我得到了
(one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!)
snakemake 会尝试删除文件。
我尝试调试的内容:
-
在规则中的shell命令中添加
|| true、set +u或exit 0 -
运行
--printshellcmds中显示的命令(它们运行良好) -
在“严格”模式下将 docker 命令放入 bash 脚本中以查看 如果有任何问题(没有)
-
打印实际出口 规则的
shell:命令中的代码并打印 0 -
运行直接在容器中调用的 R 脚本 从snakemake(它工作正常)
-
将
--user $(id -u):$(id -g)添加到此处建议的 docker run 命令:Snakemake claims rule exits with non-zero exit code, even with "|| true"?。这 失败,因为容器中的 R 脚本无处可写 中间文件,因为我当前的用户在容器中不正确存在
这是蛇文件规则:
rule run_biospyder:
input:
counts = "{dir}/{name}_counts.csv",
metadata = "{dir}/{name}_metadata.csv",
output: directory("{dir}/{name}_output")
params:
dockervol = "/usr/src/data"
shell:
"""
docker run \
-v $PWD:{params.dockervol} biospyderpipeline \
--config-file {params.dockervol}/config.yml \
--counts {params.dockervol}/{input.counts} \
--samples {params.dockervol}/{input.metadata} \
--output {params.dockervol}/{output} \
--name {wildcards.name}
"""
【问题讨论】: