正在运行带有蛇make的metabat2和checkM

问题描述 投票:0回答:2

嗨,我一直在尝试将metabat2和checkm放入管道中,以查看样本中存在哪些细菌,但是我一直遇到蛇虫错误。我的snakemake代码是

rule all:
    input:
        [f"nanoplot_out/" for sample in samples],
    [f"zipped/zipped.gz" for sample in samples],    
    [f"filtered/nanofilt_out.gz" for sample in samples],
    [f"unzipped/read.fastq" for sample in samples],
    [f"assembled/" for sample in samples],
    [f"nanopolish/assembly.fasta" for sample in samples],
[f"medaka_consensus/" for sample in samples],
    [f"input/consensus.fasta" for sample in samples],
    [f"output_antismash/" for sample in samples],
    [f"metabat2/bin" for sample in samples],
    [f"metabat2/CheckM.txt" for sample in samples]
rule metabat2:
    input:
        "medaka_consensus/consensus.fasta"
    output:
        directory("metabat2/")
    conda:
        "envs/metabat2.yaml"
    shell:
        "metabat2 -i {input} -o {output} -v"

rule checkM:
    input:
        "metabat2/"
    output:
        "metabat2/CheckM.txt"
    conda:
        "envs/metabat2.yaml"
    shell:
        "checkm lineage_wf -f {output} -t 30 -x fa {input}"

我的错误消息是MissingInputException in line 4 of /home/ec2-user/snakemake_JHB-2-14-20_uncor_polish_anti5_meta/Snakefile: Missing input files for rule all: metabat2/bin

有没有人可以帮助我使其正常工作?

snakemake
2个回答
0
投票

错误消息指出,snakemake找不到任何可以创建文件(或目录?)metabat2/bin的规则。假设它是由规则metabat2创建的,则需要将其添加为output的一部分。

rule metabat2:
    input:
        "medaka_consensus/consensus.fasta"
    output:
        a = metabat2/bin
        b = directory("metabat2/")
    conda:
        "envs/metabat2.yaml"
    shell:
        "metabat2 -i {input} -o {output.b} -v"

0
投票

我按照Manavalan Gajapathy的描述更改了代码后,遇到另一个错误。最后,我将其与以下代码一起使用。

rule metabat2:
    input:
        "input/consensus.fasta"
    output:
        a = "metabat2/bin",  
    conda:
        "envs/metabat2.yaml"
    shell:
        "metabat2 -i {input} -o {output.a} -v"


rule checkM:
    input:
        "metabat2/bin"
    output:
        c = "bacteria/CheckM.txt",
    d = directory("checkm/")
    conda:
        "envs/metabat2.yaml"
    shell:
        "checkm lineage_wf -f {output.c} -t 10 -x fa {input} {output.d}"
© www.soinside.com 2019 - 2024. All rights reserved.