1

我正在使用 R 和 reticulate 库在主要是 R 项目中运行一些 python 代码。我的目标是以某种方式将蛇制作工作流程包装在 R 脚本中,以便 Snakefile 使用与其余 R 代码相同的环境。如果它是常规脚本而不是 Snakefile,则可以使用 reticulate 执行此操作,但是我还没有成功地将 Snakefile 转换为 python 脚本。我知道 snakemake '--print-compilation' 的选项,它将 Snakefile 编译为 python 脚本,但即使使用最小的示例,我也无法成功运行它。

有没有人纯粹从 python 环境运行snakemake?

4

1 回答 1

3

在不太可能的情况下,我理解您的问题,解决方案可能是在一个蛇形规则和另一个保存为图像的 R 会话之间传递。这样,不同的规则将共享相同的环境。例如:

rule all:
    input:
        'stuff.txt',
        'plot.pdf',

rule one:
    input:
        rdata= config['rdata'], # This may come from outside snakemake
    output:
        rdata= 'step2.Rdata',
    run:
        R(r"""
        load('{input.rdata}')
        x <- 1:10
        # More stuff in R...
        save.image('{output.rdata}')
        """)

rule two:
    input:
        rdata= 'step2.Rdata',
    output:
        stuff= 'stuff.txt',
        plot= 'plot.pdf',
    shell:
        R(r"""
        load('{input.rdata}')
        # ...
        write.table('{output.stuff}')
        """)

执行为snakemake ... --config rdata=my_input.Rdata。有关该R()功能,请参阅scripting-with-r。请注意,据我所知,snakemake 旨在作为命令行程序运行,而不是作为另一个脚本中的库。

(如果您发布问题的简短示例,您可能会得到更好的答案)

于 2019-08-24T16:25:25.990 回答