Snakemake + Docker卷-“缺少规则异常”

时间:2019-09-16 23:49:17

标签: docker snakemake

我正在尝试将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).

我错过了一步吗?

谢谢!

2 个答案:

答案 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提供。