有没有可能在输出文件中有一个可以为空的通配符,同时,通过调用规则名称可以运行规则?通过调用规则名称,通配符应该自动设置为空。这是我试图实现的。
规则的简化示例:
rule a:
input: "csv.file"
output: "output{kw,.*}.png"
params:
kwargs = lambda wc: f'--{wc.kw.strip("_")}' if wc.kw.strip("_") \
else ""
shell: "example.py {input} {output} {params.kwargs}"
我可以调用rule a来生成output.png吗?
1条答案
按热度按时间vltsax251#
不,不使用任何标准方法。如果规则包含通配符,则必须通过命令行指定,并且不能再通过名称调用。(AFAIK也无法通过CLI将通配符值传递给
snakemake
)。我个人认为这是一个很好的设计选择:这样,任何执行(例如
rule a
)都是相同的、可区分的和有意的。默认值可能会使区分执行是打算在没有通配符(即默认值)的情况下运行工作流还是打算在使用空通配符(等于但不等于默认值)的情况下运行工作流变得更加困难。根据您的用例,您可以实现一个
rule all
来调用您的规则并指定通配符,或者您可以使用规则继承来创建一个rule a_default
,它创建一个具有通配符默认值的并行规则: