diff --git a/bowtie.wdl b/bowtie.wdl new file mode 100644 index 0000000000000000000000000000000000000000..6aa886da52c5c088f7b831b5077af82d22bc777c --- /dev/null +++ b/bowtie.wdl @@ -0,0 +1,85 @@ +version 1.0 + +# MIT License +# +# Copyright (c) 2018 Leiden University Medical Center +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +task Bowtie { + input { + Array[File]+ readsUpstream + Array[File]+? readsDownstream + String outputPath = "mapped.bam" + Array[File]+ indexFiles + Int? seedmms + Int? seedlen + Int? k + Boolean best = false + Boolean strata = false + String? samRG + Int threads = 1 + Int memory = 8 + Int picardMemory = 4 + # Image contains bowtie=1.2.2 and picard=2.9.2 + String dockerImage = "quay.io/biocontainers/mulled-v2-bfe71839265127576d3cd749c056e7b168308d56:1d8bec77b352cdcf3e9ff3d20af238b33ed96eae-0" + } + + # Assume fastq input with -q flag. + # The output always needs to be SAM as it is piped into Picard SortSam + # Hence, the --sam flag is used. + + command { + set -e -o pipefail + mkdir -p $(dirname ~{outputPath}) + bowtie -q \ + --sam \ + ~{"--seedmms " + seedmms} \ + ~{"--seedlen " + seedlen} \ + ~{"-k " + k} \ + ~{true="--best" false="" best} \ + ~{true="--strata" false="" strata} \ + ~{"--threads " + threads} \ + ~{"--sam-RG '" + samRG}~{true="'" false="" defined(samRG)} \ + ~{sub(indexFiles[0], "(\.rev)?\.[0-9]\.ebwt$", "")} \ + ~{true="-1" false="" defined(readsDownstream)} ~{sep="," readsUpstream} \ + ~{true="-2" false="" defined(readsDownstream)} ~{sep="," readsDownstream} \ + | picard -Xmx~{picardMemory}G SortSam \ + INPUT=/dev/stdin \ + OUTPUT=~{outputPath} \ + SORT_ORDER=coordinate \ + CREATE_INDEX=true + } + + output { + File outputBam = outputPath + File outputBamIndex = sub(outputPath, "\.bam$", ".bai") + } + + runtime { + cpu: threads + memory: memory + picardMemory + picardMemory + docker: dockerImage + } +} + +struct BowtieIndex { + File fasta + Array[File] indexFiles +} \ No newline at end of file diff --git a/htseq.wdl b/htseq.wdl index b08470934ade2cca91c081a28ffc49b033fd73c4..a687a8a6242b4ec0a8b1dd2b3b46b5a2c49d3923 100644 --- a/htseq.wdl +++ b/htseq.wdl @@ -5,7 +5,7 @@ task HTSeqCount { Array[File]+ inputBams Array[File]+ inputBamsIndex File gtfFile - String outputTable + String outputTable = "output.tsv" String format = "bam" String order = "pos" String stranded = "no" diff --git a/multiqc.wdl b/multiqc.wdl index ec2f4a5a622ed8f2a7755be121b6865d7e278bfc..76563a494f1998eab5b2f83ac42e5bf7e81a47fe 100644 --- a/multiqc.wdl +++ b/multiqc.wdl @@ -5,7 +5,7 @@ task MultiQC { String dockerTag = "1.7--py_1" # Use a string here so cromwell does not relocate an entire analysis directory String analysisDirectory - Array[File] dependencies # This must be used in order to run multiqc after these tasks. + Array[File] dependencies = [] # This must be used in order to run multiqc after these tasks. Boolean force = false Boolean dirs = false Int? dirsDepth @@ -37,6 +37,7 @@ task MultiQC { String? clConfig Boolean verbose = false Boolean quiet = false + Array[Boolean] finished = [] # An array of booleans that can be used to let multiqc wait on stuff. } command {