首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在snakemake中的多个输入之前添加标志-I

在snakemake中的多个输入之前添加标志-I
EN

Stack Overflow用户
提问于 2021-06-02 06:06:03
回答 1查看 69关注 0票数 1

我用snakemake来描述GATK管道。我需要运行以下命令:

代码语言:javascript
复制
./../gatk-4.1.3.0/gatk --java-options ""-Xmx7680m""  GatherBQSRReports  -I file1 -I file2 -I file3 -O output

相反,我得到了以下结果:

代码语言:javascript
复制
./../gatk-4.1.3.0/gatk --java-options ""-Xmx7680m""  GatherBQSRReports  -I file1 file2 file3 -O output

现在我的代码如下所示:

代码语言:javascript
复制
import glob
SAMPLES = glob_wildcards("input_bam/{sample}.bam")
INTERVALS = glob_wildcards("../intervals/{interval}.bed")

rule all:
        input: expand("out/{sample}.AddOrReplaceReadGroups.bam", sample = SAMPLES.sample), expand("out/{sample}.MarkDuplicates.bam", sample=SAMPLES.sample),,expand("out_BaseRecalibrator/{sample}.BaseRecalibrator.{interval}.txt", interval=INTERVALS.interval, sample=SAMPLES.sample), expand("out_BaseRecalibrator/{sample}.GatherBQSRReports.txt", sample=SAMPLES.sample)

rule gatk_AddOrReplaceReadGroups:
        input: "input_bam/{sample}.bam"
        output: "out/{sample}.AddOrReplaceReadGroups.bam"
        shell: "./../gatk-4.1.3.0/gatk --java-options ""-Xmx30g"" AddOrReplaceReadGroups -I {input}  -O {output} -ID group1 -SM TUMOR -PL illumina -LB lib1 -PU unit1"

rule gatk_MarkDuplicates:
        input: rules.gatk_AddOrReplaceReadGroups.output
        output: output1="out/{sample}.MarkDuplicates.bam", output2="out/{sample}.MarkDuplicates.txt"
        shell: "./../gatk-4.1.3.0/gatk --java-options ""-Xmx4g""  MarkDuplicates -I {input} -O {output.output1} -M {output.output2} --CREATE_INDEX true"

rule gatk_BaseRecalibrator:
    input: input1="../intervals/{interval}.bed", input2="out/{sample}.MarkDuplicates.bam", input3='../ref/ref.fa', input4="../dbsnp/dbsnp_150.hg38.vcf.gz"
    output: "out_BaseRecalibrator/{sample}.BaseRecalibrator.{interval}.txt"
    shell: "./../gatk-4.1.3.0/gatk --java-options ""-Xmx7680m""  BaseRecalibrator -L {input.input1} -I {input.input2} -O {output} -R {input.input3} --known-sites {input.input4}"

rule gatk_GatherBQSRReports:
        input: expand("out_BaseRecalibrator/{sample}.BaseRecalibrator.{interval}.txt", interval=INTERVALS.interval, sample=SAMPLES.sample)
        output: "out_BaseRecalibrator/{sample}.GatherBQSRReports.txt"
        shell: "./../gatk-4.1.3.0/gatk --java-options ""-Xmx7680m""  GatherBQSRReports  -I {input}  -O {output}"

我是新的程序,不能写所需的param。我很乐意为你提供任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-02 08:13:34

你可以这样做:

代码语言:javascript
复制
reports = expand("out_BaseRecalibrator/{sample}.BaseRecalibrator.{interval}.txt", interval=INTERVALS.interval, sample=SAMPLES.sample)

rule gatk_GatherBQSRReports:
        input:
            reports,
        params:
            reports= '-I ' + ' -I '.join(reports),
        output:
            ...
        shell: 
            r"""
            ./../gatk-4.1.3.0/gatk --java-options -Xmx7680m  GatherBQSRReports {params.reports}  -O {output}
            """
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67799734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档