2017-05-07 13 views
1

はconfig.yamlの簡単な例である:あなたが見るようSnakemake:サブアイテムのサンプル、どのようにそれらをキャッチしますか?ここ

samples: 
    sample1: 
    stranded: True 
    sample2: 
    stranded: False 

、各サンプルは、サブアイテム(実際には倍数)を有しています。しかし、私はそれらを捕まえる方法がわかりません。 マイSnakefile:あなたの助けを事前に

configfile: "config.yaml" 

rule all: 
    input: 
    expand("output/{sample}.bam", sample=config['samples']), 

rule one: 
    input: 
    "input/{sample}.bam", 
    output: 
    "output/{sample}.bam", 
    run: 
    if config['samples']["{sample}"]['stranded']: # How catch stranded value ? 
     option = "--stranded", 
    shell(
     'some_command ' 
     ' {option}' 
     ' {input} > {output}' 
    ) 

感謝。

Hetica

答えて

2

は最終的に、私はのparams命令にラムダ関数を使用して、応答を発見し、実行中の条件:

configfile: "config.yaml" 

rule all: 
    input: 
    expand("output/{sample}.bam", sample=config['samples']), 

rule one: 
    input: 
    "input/{sample}.bam", 
    output: 
    "output/{sample}.bam", 
    params: 
    stranded = lambda wildcards: config['samples'][wildcards.sample]['stranded'], 
    run: 
    stranded = "--stranded" if params.stranded else '' 
    shell(
     'echo ' 
     + stranded + 
     ' {input} > {output};\n' 
     'touch {output}' 
    ) 

この缶が誰かを助けている場合...

関連する問題