python - Snakemake 中用于多输入和单输出的多个参数。 ConbineGVCFs gatk 问题

标签 python snakemake gatk

我在gatk4中为CombineGVCF编写了一条规则。规则如下

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”。这样问题就解决了

关于python - Snakemake 中用于多输入和单输出的多个参数。 ConbineGVCFs gatk 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69209459/

相关文章:

java - MuTect安装: GATK-protected: maven: Java-compile-error

python - Django - 用户在 View 中上传 S3 文件

python - 将 pandas 数据框中列中的 # 值替换为按行自动递增的值

python - web2py:一个 View 中的多个表单

python - 使用 try- except-finally 和上下文管理器增加覆盖范围

snakemake - 在参数中使用通配符

snakemake - 通过蛇形中的规则限制作业数量

python - 访问规则中的嵌套配置变量