snakemake несколько параметров для нескольких входов и одного выхода в snakemake. ConbineGVCFs проблема gatk

Я написал правило для CombineGVCF в gatk4. Правило следующее

      all_gvcf = get_all_gvcf_list()

rule cohort:
  input:
    all_gvcf_list = all_gvcf,
    ref="/data/refgenome/hg38.fa",
    interval_list = prefix+"/bedfiles/hg38.interval_list",
  params:
    extra = "--variant",
  output:
    prefix+"/vcf/cohort.g.vcf",
  shell:
    "gatk CombineGVCFs -R {input.ref} {params.extra} {input.all_gvcf_list} -O {output} --tmp-dir=/data/tmp -L {input.interval_list}"

all_gvcf - это набор данных для всех файлов gvcf, которые будут объединены. Но проблема в том, что мне нужно добавлять параметр --variant перед каждым вводом. Команда, которую я получаю прямо сейчас, выглядит следующим образом

      gatk CombineGVCFs -R /data/refgenome/hg38.fa --variant /data/prjna644607/vcf/SRR12165216_HC.g.vcf /data/prjna644607/vcf/SRR12165217_HC.g.vcf /data/prjna644607/vcf/SRR12165218_HC.g.vcf /data/prjna644607/vcf/SRR12165219_HC.g.vcf -O /data/prjna644607/vcf/cohort.g.vcf --tmp-dir=/data/tmp -L /data/prjna644607/bedfiles/hg38.interval_list

Команда, которую я хочу достичь, выглядит следующим образом

      gatk CombineGVCFs -R /data/refgenome/hg38.fa --variant /data/prjna644607/vcf/SRR12165216_HC.g.vcf --variant /data/prjna644607/vcf/SRR12165217_HC.g.vcf --variant /data/prjna644607/vcf/SRR12165218_HC.g.vcf --variant /data/prjna644607/vcf/SRR12165219_HC.g.vcf -O /data/prjna644607/vcf/cohort.g.vcf --tmp-dir=/data/tmp -L /data/prjna644607/bedfiles/hg38.interval_list

Как я могу добавить этот дополнительный тег "--variant" перед каждым вводом? Я добавил его в функцию get_all_gvcf_list(). Но затем snakmake дает мне проблему с не найденными входными файлами.

1 ответ

Обнаружил проблему. Оказывается, я могу написать лямбда-функцию следующим образом

      params:
        extra=lambda wildcards, input: ' -V '.join(input.all_gvcf_list)

и добавьте '-V' перед {params.extra}. Это решает проблему

Другие вопросы по тегам