diff --git a/samtools.wdl b/samtools.wdl index 249143ffa7d4215650b6b8dce6d0b2b216548d2b..f425d2e6d7806bc60c5e89d28fb0eaff3db5bce8 100644 --- a/samtools.wdl +++ b/samtools.wdl @@ -65,3 +65,50 @@ task Flagstat { File flagstat = outputPath } } + +task fastq { + String? preCommand + File inputBam + String outputRead1 + String? outputRead2 + String? outputRead0 + Int? includeFilter + Int? excludeFilter + Int? excludeSpecificFilter + Boolean? appendReadNumber + Boolean? outputQuality + Int? compressionLevel + Int? threads + Int? memory + Int totalThreads = select_first([threads, 1]) + + command { + ${preCommand} + samtools fastq \ + ${true="-1" false="-s" defined(outputRead2)} ${outputRead1} \ + ${"-2 " + outputRead2} \ + ${"-0 " + outputRead0} \ + ${"-f " + includeFilter} \ + ${"-F " + excludeFilter} \ + ${"-G " + excludeSpecificFilter} \ + ${true="-N" false="-n" appendReadNumber} \ + ${true="-O" false="" outputQuality} \ + ${"-c " + compressionLevel} \ + ${"--threads " + totalThreads} \ + + } + runtime { + cpu: totalThreads + memory: select_first([memory, 1]) + } + parameter_meta { + preCommand: "A command that is run before the task. Can be used to activate environments" + inputBam: "The bam file to process." + outputRead1: "If only outputRead1 is given '-s' flag is assumed. Else '-1'." + includeFilter: "Include reads with ALL of these flags. Corresponds to '-f'" + excludeFilter: "Exclude reads with ONE OR MORE of these flags. Corresponds to '-F'" + excludeSpecificFilter: "Exclude reads with ALL of these flags. Corresponds to '-G'" + appendReadNumber: "Append /1 and /2 to the read name, or don't. Corresponds to '-n/N" + + } +}