首页 > 解决方案 > 使用蛇形运行 metabat2 和 checkM

问题描述

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

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

解决方案


错误消息指出,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"

推荐阅读