仅在输出中使用 Snakemake 通配符

Snakemake wildcard in output only

我有一个脚本,它接受一个大的输入文件,然后使用不可预测的算法将其分解为从 1 到 n 的多个块。

然后下面的脚本将迭代处理这些块中的每一个。

我如何创建一个 snakemake 规则,该规则基本上声明输出文件将存在于 1 到 n,并且以下脚本应该 运行 对 1 到 n 个输入文件中的每一个都存在一次。

谢谢!

您尝试过设置通配符吗?例如,如果你在文件 1 到 22 上迭代一个规则,你可以在你的 snakemake 文件的顶部设置一个通配符:

num=range(1,23)

然后在您的 snakemake 文件名中使用该通配符或在 {wildcard.num}

中引用它

dynamickeyword。可以这样使用:

rule all:
    input:
        dynamic('{id}.png')


rule draw:
    input:
        '{id}.txt'
    output:
        '{id}.png'
    shell:
        'cp {input} {output}'


rule cluster:
    input:
        'input.csv'
    output:
        dynamic('{id}.txt')
    shell:
        'touch 1.txt 2.txt'