首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用snakemake创建具有bwa和gatk的参考基因组索引

用snakemake创建具有bwa和gatk的参考基因组索引
EN

Stack Overflow用户
提问于 2020-10-23 11:51:00
回答 1查看 429关注 0票数 0

我用bwa对齐读取,用gatk调用变体。gatk需要为参考基因组创建一个dictbwa需要创建索引。当我对它们都使用触摸时,我会得到以下错误:

代码语言:javascript
运行
复制
AmbiguousRuleException:
Rules bwa_index and gatk_refdict are ambiguous for the file ref.
Expected input files:
        bwa_index: ref.fasta
        gatk_refdict: ref.fasta

这是代码:

代码语言:javascript
运行
复制
rule bwa_index:
    input:
        database="ref.fasta"
    output:
        done =touch("ref")
    shell:
        """
        bwa index -p ref {input.database}
        """
rule bwa_mem:
    input:
        bwa_index_done = "ref",
        fastq1="{sample}_R1.trimmed.fastq.gz",
        fastq2="{sample}_R2.trimmed.fastq.gz"
    output:
        bam = temp("{sample}.bam")
    shell:
        """
        bwa mem ref {input.fastq1} {input.fastq2} -o {output.bam}
        """
rule_gatk_refdict:
    input:
        ref="ref.fasta"
    output:
        done =touch("ref")
    shell:
        """
        java -jar gatk-package-4.1.9.0-local.jar CreateSequenceDictionary -R {input.ref} -O {output.done}
        """
rule gatk:
    input:
        gatk_refdict_done = "ref",
        bam="bam_list"
    output:
        outf ="{chr}.vcf"
    shell:
        """
        java -jar gatk-package-4.1.9.0-local.jar HaplotypeCaller -L {wildcards.chr} -R ref -I {input.bam} --min-base-quality-score 20 -O {output.outf}
        """

或者,我指定索引.dict,但这两者都不起作用,因为gatk在创建dict之前调用变量,因此我得到一个错误,即没有dict文件:

代码语言:javascript
运行
复制
rule_gatk_refdict:
    input:
        ref="ref.fasta"
    output:
        outf ="ref.dict"
    shell:
        """
        java -jar gatk-package-4.1.9.0-local.jar CreateSequenceDictionary -R {input.ref} -O {output.outf}
        """
rule gatk:
    input:
        ref = "ref.fasta",
        bam="bam_list"
    output:
        outf ="{chr}.vcf"
    shell:
        """
        java -jar gatk-package-4.1.9.0-local.jar HaplotypeCaller -L {wildcards.chr} -R {input.ref} -I {input.bam} --min-base-quality-score 20 -O {output.outf}
        """

如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 11:58:20

为什么不简单地将dict文件定义为gatk规则的输入,将μndex定义为bwa规则的输入?

代码语言:javascript
运行
复制
rule bwa_index:
    input:
        database="ref.fasta"
    output:
        done =touch("ref")
    shell:
        """
        bwa index -p ref {input.database}
        """
rule bwa_mem:
    input:
        bwa_index_done = "ref",
        fastq1="{sample}_R1.trimmed.fastq.gz",
        fastq2="{sample}_R2.trimmed.fastq.gz"
    output:
        bam = temp("{sample}.bam")
    shell:
        """
        bwa mem ref {input.fastq1} {input.fastq2} -o {output.bam}
        """
rule gatk_refdict:
    input:
        ref="ref.fasta"
    output:
        done = "ref.dict"
    shell:
        """
        java -jar gatk-package-4.1.9.0-local.jar CreateSequenceDictionary -R {input.ref} -O {output.done}
        """
rule gatk:
    input:
        ref = "ref.fasta",
        dict = "ref.dict",
        bam="bam_list"
    output:
        outf ="{chr}.vcf"
    shell:
        """
        java -jar gatk-package-4.1.9.0-local.jar HaplotypeCaller -L {wildcards.chr} -R {input.ref} -I {input.bam} --min-base-quality-score 20 -O {output.outf}
        """

您得到的AmbiguousRuleException是因为snakemake不知道要运行哪条规则,因为两个规则具有相同的输出。不要忘记,snakemake试图从所有规则开始构建DAG。当涉及到运行rule gatk时,您可以将"ref"定义为输入。因为有两个规则可以生成这个文件,所以snakemake不知道它必须使用rule gatk_refdictrule bwa_index

在那里有一个错误("_“不应该在那里):

代码语言:javascript
运行
复制
----v
rule_gatk_refdict:
    input:
        ref="ref.fasta"
    ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64499458

复制
相关文章

相似问题

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