在没有Snakefile的情况下执行snakemake工作流程

时间:2019-08-22 18:12:13

标签: python r snakemake

我正在使用R和网状库在主要是R项目中运行一些python代码。我的目标是以某种方式在R脚本中包装snakemake工作流程,以便Snakefile使用与其余R代码相同的环境。如果它是常规脚本而不是Snakefile,则可以使用网状结构来实现,但是我尚未成功将Snakefile转换为python脚本。我知道使用snakemake'--print-compilation'选项可以将Snakefile编译为python脚本,但是即使使用最少的示例,我也无法成功运行它。

有人能从纯python环境中运行snakemake吗?

1 个答案:

答案 0 :(得分: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被设计为作为命令行程序运行,而不是作为另一个脚本中的库运行。

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