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}. Это решает проблему