Chudar
Chudar

Reputation: 394

ImproperOutputException in snakemake 5.5.4

I am new to snakemake and recently I encountered a new error which I get only from very recent version of snakemake. This my snakemake rule

rule fastqc_raw:
    input:
        expand(directory("{fastqc_dir}/{samples}_fastqc/"),fastqc_dir = FASTQC_DIR, samples = SAMPLES_wo_extension)

rule do_fastqc_raw:
    input:
        expand("{fastq_dir}/{{samples}}.fastq.gz", fastq_dir =  inputDir)
    output:
        expand(directory("{fastqc_dir}/{{samples}}_fastqc/"),fastqc_dir = FASTQC_DIR)
    log:
        expand("{fastqc_dir}/{{samples}}.log", fastqc_dir = FASTQC_DIR)
    threads:
        10
    message:
        "performing fastQC of the sample : {wildcards.samples}"
    shell:
        """mkdir -p {output} && fastqc -q -t {threads} --outdir {output} --contaminants /home/Contaminants/idot.txt {input} 2> {log}"""

I get the following error which i didn't receive when I use snakemake version lower than 5.2.0

ImproperOutputException in line 10 of /home/FASTQC.snakefile: Outputs of incorrect type (directories when expecting files or vice versa). Output directories must be flagged with directory(). for rule do_fastqc_raw:

Upvotes: 3

Views: 1820

Answers (1)

dariober
dariober

Reputation: 9062

I think you have directory in the wrong place in rule do_fastqc_raw.

This:

output:
    expand(directory("{fastqc_dir}/{{samples}}_fastqc/"),fastqc_dir = FASTQC_DIR)

should be:

output:
    directory(expand("{fastqc_dir}/{{samples}}_fastqc/", fastqc_dir = FASTQC_DIR))

Upvotes: 3

Related Questions