在没有蛇人的情况下执行蛇人工作流

2024-04-28 12:09:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用R和网状库在一个以R为主的项目中运行一些python代码。我的目标是以某种方式将snakemake工作流包装到R脚本中,以便Snakefile使用与R代码其余部分相同的环境。如果它是一个正则脚本而不是一个蛇形文件,那么可以用neticulate来实现,但是我还没有成功地将蛇形文件转换成python脚本。我知道snakemake的选项--print compilation将Snakefile编译成python脚本,但是即使只有一个很小的示例,我也无法成功地运行它。你知道吗

有人纯粹从python环境运行snakemake吗?你知道吗


Tags: 文件项目代码脚本目标环境选项方式
1条回答
网友
1楼 · 发布于 2024-04-28 12:09:56

在不太可能的情况下,我理解了您的问题,解决方案可能是在一个蛇规则和另一个蛇规则之间传递一个保存为图像的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设计为作为命令行程序运行,而不是作为另一个脚本中的库运行。你知道吗

(如果你发布一个简单的问题示例,你可能会得到更好的答案)

相关问题 更多 >