【问题标题】:snakemake: handle rule connect on wrong mode on another rulesnakemake:在另一个规则上以错误模式处理规则连接
【发布时间】:2018-04-23 01:17:36
【问题描述】:

我需要在同一个蛇文件中运行两条规则(gatk_Mutect2gatk_IndelRealigner)。

如果将这些规则放在不同的蛇文件中,我可以毫无错误地运行它们。

我使用两个输入函数(get_files_somaticget_files)。两者都使用案例名称作为字典键。 (每个案例都有一个正常的)。 当我将这些规则放在同一个蛇文件中时,snakemake 会尝试在gatk_IndelRealigner 的输入上查找法线的 id。

我的问题是:如何管理两条规则的歧义?我的意思是我希望蛇类不要尝试连接这两条规则。

def get_files_somatic(wildcards):
    case = wildcards.case
    control = aCondition[case][0]
    return ["{}.sorted.dup.reca.cleaned.bam".format(case),"{}.sorted.dup.reca.cleaned.bam".format(control)]

rule all:
    input: expand("{sample}.sorted.dup.reca.cleaned.bam",sample=create_tumor()),
           expand("Results/vcf/{case}.vcf",case=create_tumor()),

include_prefix="rules"

include:
    include_prefix + "/gatk2.rules"
include:
    include_prefix + "/mutec2.rules"


rule gatk_Mutect2:
    input: get_files_somatic,
    output: "Results/vcf/{case}.vcf",
    params:
    log: "logs/{case}.mutect2.log"
    threads: 8
    shell:

rule gatk_IndelRealigner:
    input:
        get_files,
    output:
       "{case}.sorted.dup.reca.cleaned.bam",
       "{case}.sorted.dup.reca.cleaned.bai",
    params:
    log:
        "mapped_reads/merged_samples/logs/{case}_indel_realign_2.log"
    threads: 8
    shell:

def get_files(wildcards):
    case = wildcards.case
    control = aCondition[case][0]
    wildcards.control = control
    return ["mapped_reads/merged_samples/{}.sorted.dup.reca.bam".format(case), "mapped_reads/merged_samples/{}.sorted.dup.reca.bam".format(control),"mapped_reads/merged_samples/operation/{}_{}.realign.intervals".format(case,control)]

【问题讨论】:

  • 请尝试更详细、更清楚地解释您的问题。
  • @bli 我在snakemake管道上遇到问题,因为在这种情况下,我需要在两个不同的snakemake文件中深入管道:一个用于执行gat_Indellrealign,另一个用于Mutect2。如何阻止 snakemake 尝试连接这两个特定规则?

标签: bioinformatics snakemake vcf-variant-call-format bam


【解决方案1】:

我不确定我是否真的理解您的问题。例如,我不明白您所说的“每个案例都有一个正常”。

但是我可以看到gatk_IndelRealigner ("{case}.sorted.dup.reca.cleaned.bam") 的输出恰好与get_files_somatic ("{}.sorted.dup.reca.cleaned.bam".format(case), 其中casewildcards.case) 的结果之一相同。

这就是gatk_Mutect2 被“连接”到gatk_IndelRealigner 的原因。

snakemake的本质是根据输入输出匹配文件名来连接规则。

如果您不想将这两个规则链接起来,则需要有不同的文件名。

【讨论】:

  • 感谢您的帮助。我不明白如何不连接这两个文件。如果我尝试提供另一个名称(添加更改名称的步骤)但尝试连接。
  • @snake3354898 我认为如果文件名匹配,不连接规则是不可能的。这就是snakemake的工作原理。
  • 非常感谢..唯一的方法是在不同的步骤中挖掘蛇形文件。 ..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
相关资源
最近更新 更多