假设我创建了以下snakemake设置:
rule all_a:
input:
'a.txt',
'output.txt'
rule all_b:
input:
'b.txt',
'output.txt'
rule gen_a:
input:
'input.txt'
output:
'a.txt'
rule gen_b:
input:
'input.txt'
output:
'b.txt'
rule process_a:
input:
'a.txt'
output:
'output.txt'
rule process_b:
input:
'b.txt'
output:
'output.txt'
如果我尝试运行snakemake all_a
,我会收到一个模糊的规则错误,因为有两个规则可以产生output.txt
。但是,我认为因为all_a
明确指定a.txt
,所以snakemake应该能够找出哪个"分支"我想要的DAG。但实际上它原则上抱怨bc,它有足够的信息来执行DAG的两个分支。有没有办法让我明确指定要采用的路径?
答案 0 :(得分:0)
通配符是单独评估的,输入通常可以来自不同的来源,所以这不是Snakemake天生试图限制的。
我会在Snakemake中使用ruleorder限制。
Snakemake在这方面是混杂的。如果Snakemake可以,而且它没有被告知,它会。我们通过限制所涉及的规则的范围(能够生成output.txt的1个规则的限制),或者通过提供Snakemake解决歧义(规则顺序)的方法来改进这一点。