Python 蛇人:Tranverse DAG深度优先?

Python 蛇人:Tranverse DAG深度优先?,python,snakemake,Python,Snakemake,Snakemake似乎以宽度优先的方式穿过DAG。是否可能(例如通过选项/标志等)强制snakemake首先穿过DAG深度?我可以想到的一种方法是为每个规则设置优先级: rule all: input: ["third_a.txt", "third_b.txt", "third_c.txt"] rule first: output: touch("first_{sample}.

Snakemake似乎以宽度优先的方式穿过DAG。是否可能(例如通过选项/标志等)强制snakemake首先穿过DAG深度?

我可以想到的一种方法是为每个规则设置优先级:

rule all:
    input:
        ["third_a.txt", "third_b.txt", "third_c.txt"]

rule first:
    output:
        touch("first_{sample}.txt")
    priority: 1

rule second:
    input:
        rules.first.output
    output:
        touch("second_{sample}.txt")
    priority: 2

rule third:
    input:
        rules.second.output
    output:
        touch("third_{sample}.txt")
    priority: 3

如果您现在使用
snakemake-j1
运行它,它将首先执行深度

当依赖项尚未生成时,如何生成文件?总的来说,你想解决什么问题?@DmitryKuzminov说我有输入文件A、B和C。规则1生成相应的文件A\u preproc、B\u preproc和C\u preproc。规则2使用每个*_预处理文件生成一个_final、B_final和C_final。现在有两个选项可以遍历生成的DAG:(1)首先生成所有*_预处理文件,然后生成所有*_最终文件,或者(2)生成一个_预处理文件,然后生成一个_最终文件,然后生成B_预处理文件和B_最终文件,等等。我将第一个遍历顺序称为宽度优先,而第二个是深度优先。我希望这能把事情弄清楚:)