snakemake 在 snakemake 中用于多输入和单输出的多个参数。 ConbineGVCFs gatk问题

snakemake multiple parameters for multiple input and single output in snakemake. ConbineGVCFs gatk problem

我已经在gatk4 中为CombineGVCFs 写了一个规则。规则如下

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 给我输入文件未找到的问题。

找到问题了。结果我可以写一个 lambda 函数如下

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

并在 {params.extra} 前添加“-V”。那解决了问题