我有一个脚本,它接受一个大的输入文件,然后使用不可预测的算法将其分解为从1到n的多个块。
然后,下面的脚本将迭代地处理每个块。
如何创建一个snakemake规则,该规则基本上表明输出文件将从1到n存在,并且对于1到n个输入文件中的每一个,应该运行以下脚本。
谢谢!
答案 0 :(得分:1)
有dynamic
keyword。可以这样使用:
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'
答案 1 :(得分:0)
您是否尝试过设置通配符?例如,如果要在文件1到22上迭代规则,则可以在snakemake文件的顶部设置通配符:
num=range(1,23)
然后在您的snakemake文件名中使用该通配符或在{wildcard.num}中引用它