Python 在没有蛇形文件的情况下执行蛇形制作工作流

Python 在没有蛇形文件的情况下执行蛇形制作工作流,python,r,snakemake,Python,R,Snakemake,我正在使用R和网状库在一个主要是R的项目中运行一些python代码。我的目标是以某种方式将snakemake工作流包装到R脚本中,以便Snakefile使用与R代码其余部分相同的环境。如果它是一个常规脚本而不是一个蛇文件,那么可以用networkite来实现,但是我还没有成功地将蛇文件转换成python脚本。我知道snakemake的选项--print compilation将Snake文件编译成python脚本,但即使是一个很小的示例,我也无法成功运行它 有没有人能够完全从python环境中运

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


有没有人能够完全从python环境中运行snakemake

在不太可能的情况下,我理解了您的问题,解决方案可能是在一条蛇规则和另一条蛇规则之间传递一个保存为映像的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}')
        """)
规则所有:
输入:
'stuff.txt',
"plot.pdf",,
规则一:
输入:
rdata=config['rdata'],#这可能来自外部snakemake
输出:
rdata='step2.rdata',
运行:
R(R)
加载(“{input.rdata}”)

我从来没有使用过R,所以我不完全确定使用R的环境是如何工作的,但我猜如果您调用系统命令(snakemake)通过R,它在与R当前相同的环境中执行。如果您尝试这样做会发生什么?@Maarten vd Sande我的情况相当复杂。snakefile也会执行R代码,因此R代码需要在与调用snakemake的代码相同的R环境中运行。目前,我的snakefile对Rscript进行多次调用,这会创建许多se分离环境。是的,在这种情况下,一个简单的例子似乎是不可能的,所以很抱歉含糊不清。然而,你的建议真的很有意义,可能会解决我的问题。将整个环境保存到Rdata文件只是没有在我的脑海中出现,而这似乎是一个近乎理想的解决方案。谢谢。