我正在尝试将snakemake与docker映像一起使用,但是在docker卷上遇到麻烦。不幸的是,没有关于如何使用'singularity-args'做到这一点的详细信息。
我的snakemake文件是:
rule all:
input:
'a/file3.txt'
rule step1:
output:
touch('a/file1.txt')
rule step2:
input:
rules.step1.output[0]
output:
'a/file2.txt'
params:
text = 'this is a test',
path = '/data/file2.txt'
singularity:
"docker://XXX/test"
shell:
"python test.py {params.text} {params.path}"
rule step3:
input:
rules.step2.output[0]
output:
touch('a/file3.txt')
泊坞窗映像基本上是一个python文件,该文件将字符串写入文件(出于测试目的)。我正在尝试将主目录挂载到docker / data目录。使用docker,我能够使用'-v'挂载卷。
使用snakemake进行此操作的正确方法是什么?
我尝试了以下命令(在MacOS和Ubuntu 18.04上),但都失败了。
snakemake -s pipeline.py --use-singularity --singularity-args “-B /home/XXX/snakemake/a:/data”
snakemake -s pipeline.py --use-singularity --singularity-args “-B /home/XXX/snakemake/a”
错误消息是:
No rule to produce /home/XXX/snakemake/a:/data” (if you use input functions make sure that they don't raise unexpected exceptions).
我错过了一步吗?
谢谢!
答案 0 :(得分:1)
只是简单的检查...在命令行中,您使用双引号(“
)而不是使用直引号("
),例如:
snakemake -s pipeline.py --use-singularity --singularity-args “-B /home/XXX/snakemake/a”
也许您正在从使用倾斜引号的文本编辑器复制和粘贴?我会使用直引号,因为其他类型可能会以错误的方式解释。
答案 1 :(得分:0)
我能够使用以下命令在Ubuntu 18.04上运行它:
SINGULARITY_BINDPATH=“/home/XXX/snakemake/a:/data”; snakemake -s pipeline.py --latency-wait 10 --use-singularity
很遗憾,我无法使标志“ --singularity-args”正常工作。不管使用“ --bind”还是“ -B”,我都会收到错误消息“无规则生成/ Users / XXX / Devel / snakemake / a:/ data”。
我正在Python3虚拟环境中使用Snakemake 5.6.0。 另外,从侧面说,我认为MacOS奇异二进制不起作用。它与Snakemake有关。
此变通办法目前已经足够。
更新
尽管此解决方案有效,但实际解决方案(typo)由@dariober提供。