我正在使用R和网状库在主要是R项目中运行一些python代码。我的目标是以某种方式在R脚本中包装snakemake工作流程,以便Snakefile使用与其余R代码相同的环境。如果它是常规脚本而不是Snakefile,则可以使用网状结构来实现,但是我尚未成功将Snakefile转换为python脚本。我知道使用snakemake'--print-compilation'选项可以将Snakefile编译为python脚本,但是即使使用最少的示例,我也无法成功运行它。
有人能从纯python环境中运行snakemake吗?
答案 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被设计为作为命令行程序运行,而不是作为另一个脚本中的库运行。
(如果您发布问题的简短示例,可能会得到更好的答案)