在不太可能的情况下,我理解您的问题,解决方案可能是在一个蛇形规则和另一个保存为图像的 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 旨在作为命令行程序运行,而不是作为另一个脚本中的库。
(如果您发布问题的简短示例,您可能会得到更好的答案)