ChildIOException:运行flye后,蛇形错误

时间:2019-11-11 20:35:00

标签: snakemake

因此,当我在snakemake管道中运行flye之后,我在运行其他程序时遇到问题。这是因为flye的输出是一个目录。我的规则如下:

samples, = glob_wildcards("data/samples/{sample}.fastq")

rule all:
    input:
    [f"assembled/" for sample in samples],
    [f"nanopolish/draft.fa" for sample in samples],
    [f"nanopolish/reads.sorted.bam" for sample in samples],
    [f"nanopolish/reads.indexed.sorted.bam" for sample in samples]


rule fly:
    input:
        "unzipped/read.fastq"
    output:
        directory("assembled/")
    conda:
        "envs/flye.yaml"
    shell:
        "flye --nano-corr {input} --genome-size 5m --out-dir {output}"


rule bwa:
    input:
        "assembled/assembly.fasta"
    output:
        "nanopolish/draft.fa"
    conda:
        "nanopolish.yaml"
    shell:
        "bwa index {input} {output}"

rule nanopolish:
    input:
        "nanopolish/draft.fa",
        "zipped/zipped.gz"
    output:
        "nanopolish/reads.sorted.bam"
    conda:
        "nanopolish.yaml"
    shell:
        "bwa mem -x ont2d -t 8 {input} | samtools sort -o {output}"

在此之前有几个步骤,但是它们工作正常。当我运行它时,它给出以下错误:

ChildIOException:
File/directory is a child to another output:
/home/fronglesquad/snakemake_poging_1/assembled
/home/fronglesquad/snakemake_poging_1/assembled/assembly.fasta

我已经搜索了该错误。我在那里只能找到它,因为snakemake在输出目录中无法很好地工作。但是此工具需要一个输出目录才能工作。有人知道如何绕过这个吗?

1 个答案:

答案 0 :(得分:0)

(我认为)问题出在代码的其他地方。

您已经定义了两个规则,第一个规则输出目录assembled,第二个规则输出assembled/assembly.fasta。由于第二条规则的输出始终至少是目录assembled,因此Snakemake抱怨。您可以通过使用目录作为输入来解决它:

rule second:
    input:
        "assembled"
    output:
        ...
    shell:
        cat {input}/assembly.fasta > {output}