task spades { String outputDir String? preCommand File read1 File? read2 File? interlacedReads File? sangerReads File? pacbioReads File? nanoporeReads File? tslrContigs File? trustedContigs File? untrustedContigs Boolean? singleCell Boolean? metagenomic Boolean? rna Boolean? plasmid Boolean? ionTorrent Boolean? onlyErrorCorrection Boolean? onlyAssembler Boolean? careful Boolean? disableGzipOutput Boolean? disableRepeatResolution File? dataset Int? threads Float? memoryGb File? tmpDir String? k Float? covCutoff Int? phredOffset Int finalThreads = select_first([threads,1]) Float totalMemory = select_first([memoryGb, finalThreads * 16]) Int clusterMemory = ceil(totalMemory / finalThreads) command { set -e -o pipefail ${preCommand} spades.py \ ${"-o " + outputDir} \ ${true="--sc" false="" singleCell} \ ${true="--meta" false="" metagenomic} \ ${true="--rna" false="" rna} \ ${true="--plasmid" false="" plasmid} \ ${true="--iontorrent" false="" ionTorrent} \ ${"--12 " + interlacedReads } \ ${true="-1" false="-s" defined(read2)} ${read1} \ ${"-2 " + read2 } \ ${"--sanger " + sangerReads } \ ${"--pacbio " + pacbioReads } \ ${"--nanopore " + nanoporeReads } \ ${"--tslr " + tslrContigs } \ ${"--trusted-contigs " + trustedContigs } \ ${"--untrusted-contigs " + untrustedContigs } \ ${true="--only-error-correction" false="" onlyErrorCorrection } \ ${true="--only-assembler" false="" onlyAssembler } \ ${true="--careful" false="" careful } \ ${true="--disable-gzip-output" false="" disableGzipOutput} \ ${true="--disable-rr" false="" disableRepeatResolution } \ ${"--dataset " + dataset } \ ${"--threads " + finalThreads} \ ${"--memory " + ceil(totalMemory) } \ ${"-k " + k } \ ${"--cov-cutoff " + covCutoff } \ ${"--phred-offset " + phredOffset } } output { Array[File] correctedReads = glob(outputDir + "/corrected/*.fastq*") File scaffolds = outputDir + "/scaffolds.fasta" File contigs = outputDir + "/contigs.fasta" File assemblyGraphWithScaffoldsGfa = outputDir + "/assembly_graph_with_scaffolds.gfa" File assemblyGraphFastg = outputDir + "/assembly_graph.fastg" File contigsPaths = outputDir + "/contigs.paths" File scaffoldsPaths = outputDir + "/scaffolds.paths" File params = outputDir + "/params.txt" File log = outputDir + "/spades.log" } runtime { cpu: finalThreads memory: clusterMemory } }