Snakemake первый генотип файла vcf как подстановочный знак в выводе

Во втором правиле я хотел бы выбрать из файла vcf, содержащего боба, клару и тима, только первый генотип словаря (т.е. боб) в родере, чтобы получить результат во втором правиле. bob.dn.vcf. Возможно ли это в snakemake?

          d = {"FAM1": ["bob.bam", "clara.bam", "tim.bam"]}
    FAMILIES = list(d)
    
    rule all:
        input:
            expand some outputs
            
    wildcard_constraints:
        family = "|".join(FAMILIES)
    
    rule somerulename:
        input:
            lambda w: d[w.family]
        output:
            vcf="{family}/{family}.vcf"
        shell:
            """
            some python command line which produces a single vcf file with bob, clara and tim
            """
    
    rule somerulename:
        input:
            invcf="{family}/{family}.vcf"
        params:
            ref="someref.fasta"
        output:
            out="{family}/{bob}.dn.vcf"
        shell:
            """
            gatk --java-options "-Xms2G -Xmx2g -XX:ParallelGCThreads=2" SelectVariants -R {params.ref} -V {input.invcf} -O {output.out}
            """

1 ответ

Есть как минимум два варианта:

  1. явно указать вывод:
      rule somerulename:
    output:
        out="FAM1/bob.dn.vcf"
  1. наложить ограничения на значения подстановочных знаков:
      rule somerulename:
    output:
        out="{family}/{bob}.dn.vcf"
    wildcard_constraints:
        family="FAM1",
        bob="bob",
  1. контролировать то, что производится, указывая соответствующие входные данные для правила all:
      rule all:
    input: "FAM1/bob.dn.vcf", "FAM2/alice.dn.vcf"
Другие вопросы по тегам