代码之家  ›  专栏  ›  技术社区  ›  Parsa

仅在输出中使用Snakemake通配符

  •  1
  • Parsa  · 技术社区  · 8 年前

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

    然后,下面的脚本将迭代地处理每个块。

    如何创建一个snakemake规则,该规则本质上说明输出文件将从1到n存在,并且以下脚本应该为1到n个输入文件中的每个文件运行一次。

    谢谢

    2 回复  |  直到 8 年前
        1
  •  1
  •   Dr. Timofey Prodanov    8 年前

    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'
    
        2
  •  0
  •   gminer23543    8 年前

    您是否尝试设置通配符?例如,如果要对文件1到22迭代规则,可以在snakemake文件的顶部设置通配符:

    num=range(1,23)
    

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