From d49aac173cac5ecdf3a721a1677f18b59217607c Mon Sep 17 00:00:00 2001 From: Date: Mon, 5 Mar 2018 16:13:46 +0100 Subject: [PATCH 01/31] added first draft for picard CollectMultipleMetrics --- ...nda-tool-picard-collectMultipleMetrics.cwl | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl diff --git a/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl b/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl new file mode 100644 index 0000000..acdb04d --- /dev/null +++ b/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl @@ -0,0 +1,146 @@ +#!/usr/bin/env cwl-runner + +class: CommandLineTool + +id: "Picard_CollectMultipleMetrics" +label: "Picard CollectMultipleMetrics + +cwlVersion: "v1.0" + +doc: | + A Docker container containing the Picard jar file. See the [Picard](http://broadinstitue.github.io/picard/) webpage for more information + +s:author: + -class: s:Person + s:identifier: https://orcid.org/0000-0001-6231-4417 + s:email: mailto:karl.nordstroem@uni-saarland.de + s:name: Karl Nordström + +requirements: + -class: InlineJavascriptRequirement + +hints: + -class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + -class: DockerRequirement + dockerPull: "quay.io/biocontainers/picard:2.17.2--py36_0" + +baseCommand: ["picard", "CollectMultipleMetrics"] + +outputs: + + OUTPUT_output: + type: File + outputBinding: + glob: $(inputs.OUTPUT) + + + +inputs: + + ASSUME_SORTED + inputBinding: + position: 5 + prefix: "ASSUME_SORTED" + separate: false + type: boolean? + doc: | + if true (default), then the sort order in the header file will be ignored. Default value: true. This option can be set to 'null' to clear the default value. Possible values: [true, false] + + STOP_AFTER + inputBinding: + position: 5 + prefix: "STOP_AFTER" + separate: false + type: int? + doc: | + Stop after processing N reads, mainly for debugging. Default value: 0. This option can be set to 'null' to clear the default value. + + METRIC_ACCUMULATION_LEVEL + inputBinding: + position: 5 + prefix "METRIC_ACCUMULATION_LEVEL" + separate: false + type: MetricAccumulationLevel?? + doc: | + The level(s) at wich to accumulate metrics. Default value: [ALL_READS]. This option can be set to 'null' to clear the default value. Possible values: [ALL_READS, SAMPLE, LIBRARY, READ_GROUP]. This option may be specified 0 or more times. This option can be set to 'null' to clear the default list. + + FILE_EXTENSION + inputBinding: + position: 5 + prefix "FILE_EXTENSION" + separate: false + type: string? + doc: | + Append the given file extension to all metric file names (ex. OUTPUT.insert_size_metrics.EXT). None if null. Default value: null + + PROGRAM + inputBinding: + position: 5 + prefix "PROGRAM" + separate: false + type: Program?? + doc: | + Set of metrics programs to apply during the pass through the SAM file. Default value: [CollectAlignmentSummaryMetrics, CollectSizeMetrics, MeanQualityByCycle, QualityScoreDistribution]. This option can be set to 'null' to clear the default value. Possible values: [CollectAlignmentSummaryMetrics, CollectInsertSizeMetrics, QualityScoreDistribution, MeanQualityByCycle, CollectBaseDistributionByCycle, CollectGcBiasMetrics, RnaSeqMetrics, CollectSequencingArtifactMetrics, CollectQualityYieldMetrics]. This option may be specified 0 or more times. This option can be set to 'null' to clear the default list. + + INTERVALS + inputBinding: + position: 5 + prefix "INTERVALS" + separate: false + type: File? + doc: | + An optional list of intervals to restrict analysis to. Only pertains to some of the PROGRAMs. Programs whose stand-alone CLP does not have an INTERVALS argument will silently ignore this argument. Default value: null + + DB_SNP + inputBinding: + position: 5 + prefix: "DB_SNP" + separate: false + type: File? + doc: | + VCF format dbSNP file, used to exclude regions around known polymorphisms from analysis by some PROGRAMs; PROGRAMs whose CLP doesn't alllow for this argument will quietly ignore it. Default value: null. + + INCLUDE_UNPAIRED + inputBinding: + position: 5 + prefix: "INCLUDE_UNPAIRED" + separate: false + type: boolean? + doc: | + Include unpaired reads in CollectSequencingArtifactMetrics. If set to true then all paired reads will be included as well - MINIMUM_INSERT_SIZE and MAXIMUM_INSERT_SIZE will be ignored in CollectSequencingArtifactMetrics. Default value: false. This option can be set to 'null' to clear the default value. Possible values: [true, false] + + #is this correct? Can there be more than one input file? + INPUT: + inputBinding: + position: 5 + prefix: "INPUT=" + separate: false + type: + - File + - type array + items: File + inputBinding: + itemSeparator: "INPUT=" + doc: | + Input SAM or BAM file. Required. + + #is this correct? + OUTPUT: + inputBinding: + position: 5 + prefix: "OUTPUT=" + separate: false + type: string + doc: | + Base name of output files. Required. + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - http://edamontology.org/EDAM_1.18.owl From d7bcac1e07b2f09009014904aac4568955279af5 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Wed, 7 Mar 2018 12:17:45 +0100 Subject: [PATCH 02/31] - copied samtools files from deepWGBS - adding picard collectMultipleMetrics --- CWL/tools/bioconda-tool-samtools-flagstat.cwl | 64 ++++ CWL/tools/bioconda-tool-samtools-view.cwl | 308 ++++++++++++++++++ 2 files changed, 372 insertions(+) create mode 100644 CWL/tools/bioconda-tool-samtools-flagstat.cwl create mode 100644 CWL/tools/bioconda-tool-samtools-view.cwl diff --git a/CWL/tools/bioconda-tool-samtools-flagstat.cwl b/CWL/tools/bioconda-tool-samtools-flagstat.cwl new file mode 100644 index 0000000..290d1a5 --- /dev/null +++ b/CWL/tools/bioconda-tool-samtools-flagstat.cwl @@ -0,0 +1,64 @@ +#!/usr/bin/env cwl-runner + +class: CommandLineTool + +id: "samtools_flagstat" +label: "samtools flagstat" + +cwlVersion: "v1.0" + +doc: | + A Docker container containing samtools flagstat. See the [htslib](http://www.htslib.org/) webpage for more information. + +s:author: + - class: s:Person + s:identifier: https://orcid.org/0000-0001-6231-4417 + s:email: mailto:karl.nordstroem@uni-saarland.de + s:name: Karl Nordström + + +requirements: + - class: InlineJavascriptRequirement + +hints: + - class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + - class: DockerRequirement + dockerPull: "quay.io/biocontainers/samtools:1.3.1--5" + +baseCommand: ["samtools", "flagstat"] + +stdout: $( inputs.outputName ) + +outputs: + flagstat: + type: stdout + +inputs: + + input: + type: File + inputBinding: + position: 10 + + outputName: + type: string + + inputFmtOption: + type: string? + inputBinding: + position: 5 + prefix: "--input-fmt-option" + doc: | + "--input-fmt-option OPT=VAL" + + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - http://edamontology.org/EDAM_1.18.owl diff --git a/CWL/tools/bioconda-tool-samtools-view.cwl b/CWL/tools/bioconda-tool-samtools-view.cwl new file mode 100644 index 0000000..d9b80ab --- /dev/null +++ b/CWL/tools/bioconda-tool-samtools-view.cwl @@ -0,0 +1,308 @@ +#!/usr/bin/env cwl-runner + +class: CommandLineTool + +id: "samtools_view" +label: "samtools view" + +cwlVersion: "v1.0" + +doc: | + A Docker container containing samtools index. See the [htslib](http://www.htslib.org/) webpage for more information. + +s:author: + - class: s:Person + s:identifier: https://orcid.org/0000-0001-6231-4417 + s:email: mailto:karl.nordstroem@uni-saarland.de + s:name: Karl Nordström + + +requirements: + - class: InlineJavascriptRequirement + +hints: + - class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + - class: DockerRequirement + dockerPull: "quay.io/biocontainers/samtools:1.3.1--5" + +baseCommand: ["samtools", "view"] + +stdout: $( inputs.outputFileName ) + +outputs: + + bamFile: + type: stdout + + complementBamFile: + type: File? + outputBinding: + glob: $( inputs.complementBamFilename) + +inputs: + + input: + type: File + inputBinding: + position: 10 + + outputFileName: + type: string + inputBinding: + position: 5 + doc: | + output file name + + region: + type: string? + inputBinding: + position: 15 + doc: | + limit the extraction to this region + + outBam: + type: boolean? + inputBinding: + position: 5 + prefix: -b + doc: | + output BAM + + outCram: + type: boolean? + inputBinding: + position: 5 + prefix: -C + doc: | + output CRAM (requires -T) + + useFastCompression: + type: boolean? + inputBinding: + position: 5 + prefix: "-1" + doc: | + use fast BAM compression (implies -b) + + useNoCompression: + type: boolean? + inputBinding: + position: 5 + prefix: -u + doc: | + uncompressed BAM output (implies -b) + + includeHeader: + type: boolean? + inputBinding: + position: 5 + prefix: -h + doc: | + include header in SAM output + + printOnlyHeader: + type: boolean? + inputBinding: + position: 5 + prefix: -H + doc: | + print SAM header only (no alignments) + + printCountMatchingLines: + type: boolean? + inputBinding: + position: 5 + prefix: -c + doc: | + print only the count of matching records + + complementBamFilename: + type: string? + inputBinding: + position: 5 + prefix: -U + doc: | + output reads not selected by filters to FILE [null] + + chromSizeFile: + type: File? + inputBinding: + position: 5 + prefix: -t + doc: | + FILE listing reference names and lengths (see long help) [null] + + overlapBedFile: + type: File? + inputBinding: + position: 5 + prefix: -L + doc: | + only include reads overlapping this BED FILE [null] + + selectReadGroup: + type: string? + inputBinding: + position: 5 + prefix: -r + doc: | + only include reads in read group STR [null] + + selectReadGroups: + type: File? + inputBinding: + position: 5 + prefix: -R + doc: | + only include reads with read group listed in FILE [null] + + qualityCutoff: + type: int? + inputBinding: + position: 5 + prefix: -q + doc: | + only include reads with mapping quality >= INT [0] + + selectLibrary: + type: string? + inputBinding: + position: 5 + prefix: -l + doc : | + only include reads in library STR [null] + + minimumCIGARoperations: + type: int? + inputBinding: + position: 5 + prefix: -m + doc: | + only include reads with number of CIGAR operations consuming + query sequence >= INT [0] + + selectFLAGall: + type: int? + inputBinding: + position: 5 + prefix: -f + doc: | + only include reads with all bits set in INT set in FLAG [0] + + selectFLAGnone: + type: int? + inputBinding: + position: 5 + prefix: -F + doc: | + only include reads with none of the bits set in INT set in FLAG [0] + + stripTag: + type: + - "null" + - type: array + items: string + inputBinding: + prefix: -x + inputBinding: + position: 5 + doc: | + read tag to strip (repeatable) [null] + + collapseBackwardCIGAR: + type: boolean? + inputBinding: + position: 5 + prefix: -B + doc: | + collapse the backward CIGAR operation + + randomSeed: + type: float? + inputBinding: + position: 5 + prefix: -s + doc: | + integer part sets seed of random number generator [0]; + rest sets fraction of templates to subsample [no subsampling] + + numberOfThreads: + type: int? + inputBinding: + position: 5 + prefix: --threads + doc: | + number of BAM/CRAM compression threads [0] + + outputFormat: + type: + - "null" + - type: enum + symbols: [SAM, BAM, CRAM] + inputBinding: + position: 5 + prefix: --output-fmt + doc: | + Specify output format (SAM, BAM, CRAM) + + referenceFasta: + type: File? + inputBinding: + position: 5 + prefix: --reference + doc: | + Reference sequence FASTA FILE [null] + + +doc: | + Usage: samtools view [options] || [region ...] + + Options: + -b output BAM + -C output CRAM (requires -T) + -1 use fast BAM compression (implies -b) + -u uncompressed BAM output (implies -b) + -h include header in SAM output + -H print SAM header only (no alignments) + -c print only the count of matching records + -o FILE output file name [stdout] + -U FILE output reads not selected by filters to FILE [null] + -t FILE FILE listing reference names and lengths (see long help) [null] + -L FILE only include reads overlapping this BED FILE [null] + -r STR only include reads in read group STR [null] + -R FILE only include reads with read group listed in FILE [null] + -q INT only include reads with mapping quality >= INT [0] + -l STR only include reads in library STR [null] + -m INT only include reads with number of CIGAR operations consuming + query sequence >= INT [0] + -f INT only include reads with all bits set in INT set in FLAG [0] + -F INT only include reads with none of the bits set in INT set in FLAG [0] + -x STR read tag to strip (repeatable) [null] + -B collapse the backward CIGAR operation + -s FLOAT integer part sets seed of random number generator [0]; + rest sets fraction of templates to subsample [no subsampling] + -@, --threads INT + number of BAM/CRAM compression threads [0] + -? print long help, including note about region specification + -S ignored (input format is auto-detected) + --input-fmt-option OPT[=VAL] + Specify a single input file format option in the form + of OPTION or OPTION=VALUE + -O, --output-fmt FORMAT[,OPT[=VAL]]... + Specify output format (SAM, BAM, CRAM) + --output-fmt-option OPT[=VAL] + Specify a single output file format option in the form + of OPTION or OPTION=VALUE + -T, --reference FILE + Reference sequence FASTA FILE [null] + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - http://edamontology.org/EDAM_1.18.owl From e21da919fbf7af6aeb7ace8e3c15bd63f1efd42e Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Wed, 7 Mar 2018 13:30:09 +0100 Subject: [PATCH 03/31] =?UTF-8?q?=C3=A1dded=20bwa=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CWL/tools/bioconda-tool-bwa-aln.yml | 179 ++++++++++++++++++++++++++ CWL/tools/bioconda-tool-bwa-index.cwl | 146 +++++++++++++++++++++ CWL/tools/bioconda-tool-bwa-sampe.yml | 134 +++++++++++++++++++ 3 files changed, 459 insertions(+) create mode 100755 CWL/tools/bioconda-tool-bwa-aln.yml create mode 100755 CWL/tools/bioconda-tool-bwa-index.cwl create mode 100644 CWL/tools/bioconda-tool-bwa-sampe.yml diff --git a/CWL/tools/bioconda-tool-bwa-aln.yml b/CWL/tools/bioconda-tool-bwa-aln.yml new file mode 100755 index 0000000..a018439 --- /dev/null +++ b/CWL/tools/bioconda-tool-bwa-aln.yml @@ -0,0 +1,179 @@ +#!/usr/bin/env cwl-runner + +cwlVersion: "v1.0" + +class: CommandLineTool + +s:author: + - class: s:Person + s:identifier: https://orcid.org/0000-0001-6231-4417 + s:email: mailto:karl.nordstroem@uni-saarland.de + s:name: Karl Nordström + +hints: + - class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + - class: DockerRequirement + dockerPull: "quay.io/biocontainers/bwa:0.6.2--1" + + +requirements: + - class: InlineJavascriptRequirement + +baseCommand: ["bwa", "aln"] + +stdout: $( inputs.outputName ) + +outputs: + alnFile: + type: stdout + +inputs: + + prefix: + type: string + doc: | + reference prefix + inputBinding: + position: 4 + + input: + type: File + streamable: true + doc: | + fastq file + inputBinding: + position: 5 + + outputName: + type: string + inputBinding: + position: 1 + prefix: "-f" + + threads: + type: int? + inputBinding: + position: 1 + prefix: "-t" + + maxErr: + type: float? + doc: | + max diff (int) or missing prob under 0.02 err rate (float) [0.04] + inputBinding: + position: 1 + prefix: "-n" + + maxFraction: + type: int? + doc: | + maximum number or fraction of gap opens [1] + inputBinding: + position: 1 + prefix: "-o" + + maxExtensions: + type: int? + doc: | + maximum number of gap extensions, -1 for disabling long gaps [-1] + inputBinding: + position: 1 + prefix: "-e" + + minIndelEndDist: + type: int?] + doc: | + do not put an indel within INT bp towards the ends [5] + inputBinding: + position: 1 + prefix: "-i" + + maxOccLongDel: + type: int? + doc: | + maximum occurrences for extending a long deletion [10] + inputBinding: + position: 1 + prefix: "-d" + + seedLength: + type: int? + doc: | + seed length [32] + inputBinding: + position: 1 + prefix: "-l" + + maxErrSeed: + type: int? + doc: | + maximum differences in the seed [2] + inputBinding: + position: 1 + prefix: "-k" + + queueSize: + type: int? + doc: | + maximum entries in the queue [2000000] + inputBinding: + position: 1 + prefix: "-m" + + useIllumina13qual: + type: boolean? + doc: | + the input is in the Illumina 1.3+ FASTQ-like format + inputBinding: + position: 1 + prefix: "-I" + + minQual: + type: int? + doc: | + quality threshold for read trimming down to 35bp [0] + inputBinding: + position: 1 + prefix: "-q" + + + +doc: | + Usage: bwa aln [options] + + Options: -n NUM max diff (int) or missing prob under 0.02 err rate (float) [0.04] + -o INT maximum number or fraction of gap opens [1] + -e INT maximum number of gap extensions, -1 for disabling long gaps [-1] + -i INT do not put an indel within INT bp towards the ends [5] + -d INT maximum occurrences for extending a long deletion [10] + -l INT seed length [32] + -k INT maximum differences in the seed [2] + -m INT maximum entries in the queue [2000000] + -t INT number of threads [1] + -M INT mismatch penalty [3] + -O INT gap open penalty [11] + -E INT gap extension penalty [4] + -R INT stop searching when there are >INT equally best hits [30] + -q INT quality threshold for read trimming down to 35bp [0] + -f FILE file to write output to instead of stdout + -B INT length of barcode + -c input sequences are in the color space + -L log-scaled gap penalty for long deletions + -N non-iterative mode: search for all n-difference hits (slooow) + -I the input is in the Illumina 1.3+ FASTQ-like format + -b the input read file is in the BAM format + -0 use single-end reads only (effective with -b) + -1 use the 1st read in a pair (effective with -b) + -2 use the 2nd read in a pair (effective with -b) + + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - http://edamontology.org/EDAM_1.18.owl diff --git a/CWL/tools/bioconda-tool-bwa-index.cwl b/CWL/tools/bioconda-tool-bwa-index.cwl new file mode 100755 index 0000000..9867fd2 --- /dev/null +++ b/CWL/tools/bioconda-tool-bwa-index.cwl @@ -0,0 +1,146 @@ +#!/usr/bin/env cwl-runner + +cwlVersion: "v1.0" + +class: CommandLineTool + +s:author: + - class: s:Person + s:identifier: https://orcid.org/0000-0001-6231-4417 + s:email: mailto:karl.nordstroem@uni-saarland.de + s:name: Karl Nordström + +hints: + - class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + - class: DockerRequirement + dockerPull: "quay.io/biocontainers/bwa:0.6.2--1" + +requirements: + - class: InlineJavascriptRequirement + +inputs: + input: + type: File + inputBinding: + position: 3 + + algorithm: + type: string? + description: | + BWT construction algorithm: bwtsw or is (Default: auto) + inputBinding: + position: 2 + prefix: "-a" + + outPrefix: + type: string? + description: | + Prefix of the index (Default: same as fasta name) + inputBinding: + position: 2 + prefix: "-p" + + blockSize: + type: int? + description: | + Block size for the bwtsw algorithm (effective with -a bwtsw) (Default: 10000000) + inputBinding: + position: 2 + prefix: "-b" + + altSuffix: + type: boolean? + description: | + Index files named as .64.* instead of .* + inputBinding: + position: 2 + prefix: "-6" + +outputs: + - id: output + type: { type: array, items: File } + outputBinding: + glob: + - ${ + if (inputs.p) { + return inputs.p + ".amb" + } else { + if (inputs._6 == true) { + return inputs.input.path + ".64.amb" + } else { + return inputs.input.path + ".amb" + } + } + } + - ${ + if (inputs.p) { + return inputs.p + ".ann" + } else { + if (inputs._6 == true) { + return inputs.input.path + ".64.ann" + } else { + return inputs.input.path + ".ann" + } + } + } + - ${ + if (inputs.p) { + return inputs.p + ".bwt" + } else { + if (inputs._6 == true) { + return inputs.input.path + ".64.bwt" + } else { + return inputs.input.path + ".bwt" + } + } + } + - ${ + if (inputs.p) { + return inputs.p + ".pac" + } else { + if (inputs._6 == true) { + return inputs.input.path + ".64.pac" + } else { + return inputs.input.path + ".pac" + } + } + } + - ${ + if (inputs.p) { + return inputs.p + ".sa" + } else { + if (inputs._6 == true) { + return inputs.input.path + ".64.sa" + } else { + return inputs.input.path + ".sa" + } + } + } + +baseCommand: + - bwa + - index + +description: | + Usage: bwa index [options] + + Options: -a STR BWT construction algorithm: bwtsw or is [auto] + -p STR prefix of the index [same as fasta name] + -b INT block size for the bwtsw algorithm (effective with -a bwtsw) [10000000] + -6 index files named as .64.* instead of .* + + Warning: `-a bwtsw' does not work for short genomes, while `-a is' and + `-a div' do not work not for long genomes. + + + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - http://edamontology.org/EDAM_1.18.owl diff --git a/CWL/tools/bioconda-tool-bwa-sampe.yml b/CWL/tools/bioconda-tool-bwa-sampe.yml new file mode 100644 index 0000000..e58bef8 --- /dev/null +++ b/CWL/tools/bioconda-tool-bwa-sampe.yml @@ -0,0 +1,134 @@ +#!/usr/bin/env cwl-runner + +cwlVersion: "v1.0" + +class: CommandLineTool + + +s:author: + - class: s:Person + s:identifier: https://orcid.org/0000-0001-6231-4417 + s:email: mailto:karl.nordstroem@uni-saarland.de + s:name: Karl Nordström + +hints: + - class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + - class: DockerRequirement + dockerPull: "quay.io/biocontainers/bwa:0.6.2--1" + +requirements: +- class: InlineJavascriptRequirement + +baseCommand: ["bwa", "sampe"] + + +stdout: $( inputs.outputName ) + +outputs: + sampeFile: + type: stdout + + +inputs: + + prefix: + type: string + doc: | + reference prefix + inputBinding: + position: 10 + + outputName: + type: string + doc: | + output file name + + aln1: + type: File + streamable: true + inputBinding: + position: 11 + + + aln2: + type: File + streamable: true + inputBinding: + position: 12 + + fq1: + type: File + streamable: true + inputBinding: + position: 13 + + fq2: + type: File + streamable: true + inputBinding: + position: 14 + + noSW: + type: boolean? + doc: | + disable Smith-Waterman for the unmapped mate + inputBinding: + position: 5 + prefix: "-s" + + preloadIndex: + type: boolean? + doc: | + preload index into memory (for base-space reads only) + inputBinding: + position: 5 + prefix: "-P" + + maxHitsPaired: + type: int? + doc: | + maximum hits to output for paired reads [3] + inputBinding: + position: 5 + prefix: "-n" + + maxHitsDiscordant: + type: int? + doc: | + maximum hits to output for discordant pairs [10] + inputBinding: + position: 5 + prefix: "-N" + + + +doc: | + Usage: bwa sampe [options] + + Options: -a INT maximum insert size [500] + -o INT maximum occurrences for one end [100000] + -n INT maximum hits to output for paired reads [3] + -N INT maximum hits to output for discordant pairs [10] + -c FLOAT prior of chimeric rate (lower bound) [1.0e-05] + -f FILE sam file to output results to [stdout] + -r STR read group header line such as `@RG\tID:foo\tSM:bar' [null] + -P preload index into memory (for base-space reads only) + -s disable Smith-Waterman for the unmapped mate + -A disable insert size estimate (force -s) + + Notes: 1. For SOLiD reads, corresponds R3 reads and to F3. + 2. For reads shorter than 30bp, applying a smaller -o is recommended to + to get a sensible speed at the cost of pairing accuracy. + + + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - http://edamontology.org/EDAM_1.18.owl From be3d04004eead17909b438a9a84b663a450f1c0b Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Wed, 7 Mar 2018 14:46:40 +0100 Subject: [PATCH 04/31] corrected bwa files --- CWL/tools/bioconda-tool-bwa-aln.yml | 2 +- CWL/tools/bioconda-tool-bwa-index.cwl | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/CWL/tools/bioconda-tool-bwa-aln.yml b/CWL/tools/bioconda-tool-bwa-aln.yml index a018439..1dab369 100755 --- a/CWL/tools/bioconda-tool-bwa-aln.yml +++ b/CWL/tools/bioconda-tool-bwa-aln.yml @@ -84,7 +84,7 @@ inputs: prefix: "-e" minIndelEndDist: - type: int?] + type: int? doc: | do not put an indel within INT bp towards the ends [5] inputBinding: diff --git a/CWL/tools/bioconda-tool-bwa-index.cwl b/CWL/tools/bioconda-tool-bwa-index.cwl index 9867fd2..140cebb 100755 --- a/CWL/tools/bioconda-tool-bwa-index.cwl +++ b/CWL/tools/bioconda-tool-bwa-index.cwl @@ -1,15 +1,18 @@ #!/usr/bin/env cwl-runner -cwlVersion: "v1.0" - class: CommandLineTool +cwlVersion: "v1.0" + s:author: - class: s:Person s:identifier: https://orcid.org/0000-0001-6231-4417 s:email: mailto:karl.nordstroem@uni-saarland.de s:name: Karl Nordström +requirements: + - class: InlineJavascriptRequirement + hints: - class: ResourceRequirement coresMin: 1 @@ -18,10 +21,8 @@ hints: - class: DockerRequirement dockerPull: "quay.io/biocontainers/bwa:0.6.2--1" -requirements: - - class: InlineJavascriptRequirement - inputs: + input: type: File inputBinding: @@ -29,7 +30,7 @@ inputs: algorithm: type: string? - description: | + doc: | BWT construction algorithm: bwtsw or is (Default: auto) inputBinding: position: 2 @@ -37,7 +38,7 @@ inputs: outPrefix: type: string? - description: | + doc: | Prefix of the index (Default: same as fasta name) inputBinding: position: 2 @@ -45,7 +46,7 @@ inputs: blockSize: type: int? - description: | + doc: | Block size for the bwtsw algorithm (effective with -a bwtsw) (Default: 10000000) inputBinding: position: 2 @@ -53,7 +54,7 @@ inputs: altSuffix: type: boolean? - description: | + doc: | Index files named as .64.* instead of .* inputBinding: position: 2 @@ -124,7 +125,7 @@ baseCommand: - bwa - index -description: | +doc: | Usage: bwa index [options] Options: -a STR BWT construction algorithm: bwtsw or is [auto] From 23adab9f4a81d23a5bb92aa3743efdfa7260122a Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Wed, 7 Mar 2018 16:47:15 +0100 Subject: [PATCH 05/31] started samtools-sort --- CWL/tools/bioconda-tool-samtools-sort.cwl | 77 +++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 CWL/tools/bioconda-tool-samtools-sort.cwl diff --git a/CWL/tools/bioconda-tool-samtools-sort.cwl b/CWL/tools/bioconda-tool-samtools-sort.cwl new file mode 100644 index 0000000..c239211 --- /dev/null +++ b/CWL/tools/bioconda-tool-samtools-sort.cwl @@ -0,0 +1,77 @@ +#!usr/bin/env cwl-runner + +class: CommandLineTool + +id: "samtools_sort" +label: "samtools sort" + +cwlVersion: "v1.0" + +doc: | + Sorts alignments by leftmost coordinates or by read name. Additionally, a sort order header tag will be added or an existing one updated if necessary. + +s:author: + - class: s:Person + s:identifier: https://orcid.org/0000-0002-7816-2363 + s:email: mailto:wiebkeschmitt@outlook.de + s:name: Wiebke Schmitt + +requirements: + - class: InlineJavascriptRequirement + +hints: + - class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + - class: DockerRequirement + dockerPull: "quay.io/biocontainers/samtools:1.3.1--5" + +baseCommand: ["samtools", "sort"] + +stdout: $( inputs.outputFileName ) + +outputs: + + bamFile: + type: stdout + + #is a complementBamFile needed here? + +inputs: + + input: + type: File + inputBinding: + position: 10 + #where does the position come from? + + outputFileName: + type: string + inputBinding: + position: 5 + doc: | + output file name + + + + + +doc: | + Usage: samtools sort [options] + + Options: + -n Sort by read name + -f use as full file name instead of prefix + -o final output to stdout + -l INT compression level, from 0 to 9 [-1] + -@ INT number of sorting and compression threads [1] + -m INT max memory per thread; suffix K/M/G recognized + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - https://edamontology.org/EDAM_1.18.owl From d6eb571845b09881c9ea045182ef631f2be81427 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Thu, 8 Mar 2018 14:12:45 +0100 Subject: [PATCH 06/31] samtools-sort now uses -o as default option --- CWL/tools/bioconda-tool-samtools-sort.cwl | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/CWL/tools/bioconda-tool-samtools-sort.cwl b/CWL/tools/bioconda-tool-samtools-sort.cwl index 1691050..fa29698 100644 --- a/CWL/tools/bioconda-tool-samtools-sort.cwl +++ b/CWL/tools/bioconda-tool-samtools-sort.cwl @@ -27,9 +27,9 @@ hints: - class: DockerRequirement dockerPull: "quay.io/biocontainers/samtools:1.3.1--5" -baseCommand: ["samtools", "sort"] +baseCommand: ["samtools", "sort", "-o"] -stdout: $( inputs.outputFileName ) +stdout: $( inputs.outputPrefix + ".bam" ) outputs: @@ -43,7 +43,7 @@ inputs: inputBinding: position: 10 - outputFileName: + outputPrefix: type: string inputBinding: position: 15 @@ -66,14 +66,6 @@ inputs: doc: | use as full file name instead of prefix - OutputToStdOut: - type: boolean? - inputBinding: - position: 5 - prefix: -o - doc: | - put final output to stdout - compressionLevel: type: int? inputBinding: From 69fdc60c87079d8ddab2baeb91d6b3025f66576c Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Thu, 8 Mar 2018 16:29:26 +0100 Subject: [PATCH 07/31] first draft for GAL workflow --- CWL/workflows/GAL.cwl | 94 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 CWL/workflows/GAL.cwl diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl new file mode 100644 index 0000000..03ad49e --- /dev/null +++ b/CWL/workflows/GAL.cwl @@ -0,0 +1,94 @@ +#!/usr/bin/env cwl-runner + +cwlVersion: v1.0 + +class: Workflow + +inputs: + inputSampleIDR1: File + ex: string + inputSampleIDR2: File + ex: string + inputReferenceGenome: File + ex: string + +outputs: + alignmentSummarymetrics: + type: File + outputSource: PicardCollectMultipleMetrics/alignmentSummarymetrics + + insertSizemetrics: + type: File + outputSource: PicardCollectMultipleMetrics/insertSizeMetrics + + qualityByCyclemetrics: + type: File + outputSource: PicardCollectMultipleMetrics/qualityByCyclemetrics + + qualityByDistributionmetrics: + type: File + outputSource: PicardCollectMultipleMetrics/qualityDistributionmetrics + + qualityByCyclemetricsTwo: + type: File + outputSource: PicardCollectMultipleMetrics/qualityByCyclemetricsTwo + + qualityByDistributionmetricsTwo: + type: File + outputSource: PicardCollectMultipleMetrics/qualityDistributionmetrics + +steps: + bwaAln: + run: bioconda-tool-bwa-aln.yml + in: + fastqfile: inputSampleIDR1 + fastqfile: inputSampleIDR2 + fastafile: inputReferenceGenome + out: + [saiFileReadOne] + # [saiFileReadTwo] + + bwaSampe: + run: bioconda-tool-bwa-sampe.yml + in: + src: bwaAln/saiFileReadOne + bwaAln/saiFileReadTwo + out: + [samFile] + + samtoolsView: + run: bioconda-tool-samtools-view.cwl + in: + src: bwaSampe/samFile + out: + [bamFile] + + samtoolsSort: + run: bioconda-tool-samtools-sort.cwl + in: + src: samtoolsView/bamFile + out: [bamFileSortedByCoordinates] + + picardMarkDuplicates: + run: bioconda-tool-picard-MarkDuplicates.cwl + in: + src: samtoolSort/bamFileSortedByCoordinates + out: [bamFileWithDuplicates] + + samtoolsFlagstat: + run: bioconda-tool-samtools-flagstat.cwl + in: + src: picardMarkDuplicates/bamFileWithDuplicates + out: [] + #output is here to stdout, is this correct then? + + picardCollectMultipleMetrics: + run: bioconda-tool-picard-collectMultipleMetrics.cwl + in: + src: picardMarkDuplicates/bamFileWithDuplicates + out: [alignmentSummarymetrics] + # [insertSizemetrics] + # [qualityByCyclemetrics] + # [qualityDistributionmetrics] + # [qualityByCyclemetricsTwo] + # [qualityDistributionmetricsTwo] From 037c9727df2445ba2a0f9e397b554e3e0eec0904 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Mon, 12 Mar 2018 15:29:27 +0100 Subject: [PATCH 08/31] first draf of GAL pipeline --- .../bioconda-tool-picard-MarkDuplicates.cwl | 425 ++++++++++++++++++ ...nda-tool-picard-collectMultipleMetrics.cwl | 27 +- CWL/workflows/GAL.cwl | 127 +++--- 3 files changed, 527 insertions(+), 52 deletions(-) create mode 100644 CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl diff --git a/CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl b/CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl new file mode 100644 index 0000000..6bcc6f6 --- /dev/null +++ b/CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl @@ -0,0 +1,425 @@ +#!/usr/bin/env cwl-runner + +class: CommandLineTool + +id: "Picard_MarkDuplicates" +label: "Picard MarkDuplicates" + +cwlVersion: "v1.0" + +doc: | + ![build_status](https://quay.io/repository/karl616/dockstore-tool-picard/status) + A Docker container containing the Picard jar file. See the [Picard](http://broadinstitute.github.io/picard/) webpage for more information. + +s:author: + - class: s:Person + s:identifier: https://orcid.org/0000-0001-6231-4417 + s:email: mailto:karl.nordstroem@uni-saarland.de + s:name: Karl Nordström + + +requirements: + - class: InlineJavascriptRequirement + +hints: + - class: ResourceRequirement + coresMin: 1 + ramMin: 4092 + outdirMin: 512000 + - class: DockerRequirement + dockerPull: "quay.io/biocontainers/picard:2.17.2--py36_0" + +baseCommand: ["picard", "MarkDuplicates"] + +outputs: + + OUTPUT_output: + type: File + outputBinding: + glob: $( inputs.OUTPUT ) + + METRICS_FILE_output: + type: File + outputBinding: + glob: $( inputs.METRICS_FILE ) + +inputs: + + MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP: + inputBinding: + position: 5 + prefix: "MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP=" + separate: false + type: int? + doc: | + This option is obsolete. ReadEnds will always be spilled to disk. Default value: 50000. This option can be set to 'null' to clear the default value. + + MAX_FILE_HANDLES_FOR_READ_ENDS_MAP: + inputBinding: + position: 5 + prefix: "MAX_FILE_HANDLES_FOR_READ_ENDS_MAP=" + separate: false + type: int? + doc: | + Maximum number of file handles to keep open when spilling read ends to disk. Set this number a little lower than the per-process maximum number of file that may be open. This number can be found by executing the 'ulimit -n' command on a Unix system. Default value: 8000. This option can be set to 'null' to clear the default value. + + SORTING_COLLECTION_SIZE_RATIO: + inputBinding: + position: 5 + prefix: "SORTING_COLLECTION_SIZE_RATIO=" + separate: false + type: double? + doc: | + This number, plus the maximum RAM available to the JVM, determine the memory footprint used by some of the sorting collections. If you are running out of memory, try reducing this number. Default value: 0.25. This option can be set to 'null' to clear the default value. + + BARCODE_TAG: + inputBinding: + position: 5 + prefix: "BARCODE_TAG=" + separate: false + type: string? + doc: | + Barcode SAM tag (ex. BC for 10X Genomics) Default value: null. + + READ_ONE_BARCODE_TAG: + inputBinding: + position: 5 + prefix: "READ_ONE_BARCODE_TAG=" + separate: false + type: string? + doc: | + Read one barcode SAM tag (ex. BX for 10X Genomics) Default value: null. + + READ_TWO_BARCODE_TAG: + inputBinding: + position: 5 + prefix: "READ_TWO_BARCODE_TAG=" + separate: false + type: string? + doc: | + Read two barcode SAM tag (ex. BX for 10X Genomics) Default value: null. + + TAG_DUPLICATE_SET_MEMBERS: + inputBinding: + position: 5 + prefix: "TAG_DUPLICATE_SET_MEMBERS=true" + separate: false + type: boolean? + doc: | + If a read appears in a duplicate set, add two tags. The first tag, DUPLICATE_SET_SIZE_TAG (DS), indicates the size of the duplicate set. The smallest possible DS value is 2 which occurs when two reads map to the same portion of the reference only one of which is marked as duplicate. The second tag, DUPLICATE_SET_INDEX_TAG (DI), represents a unique identifier for the duplicate set to which the record belongs. This identifier is the index-in-file of the representative read that was selected out of the duplicate set. Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + REMOVE_SEQUENCING_DUPLICATES: + inputBinding: + position: 5 + prefix: "REMOVE_SEQUENCING_DUPLICATES=true" + separate: false + type: boolean? + doc: | + If true remove 'optical' duplicates and other duplicates that appear to have arisen from the sequencing process instead of the library preparation process, even if REMOVE_DUPLICATES is false. If REMOVE_DUPLICATES is true, all duplicates are removed and this option is ignored. Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + TAGGING_POLICY: + inputBinding: + position: 5 + prefix: "TAGGING_POLICY=" + separate: false + type: + - "null" + - type: enum + symbols: [DontTag, OpticalOnly, All] + doc: | + Determines how duplicate types are recorded in the DT optional attribute. Default value: DontTag. This option can be set to 'null' to clear the default value. Possible values: {DontTag, OpticalOnly, All} + + CLEAR_DT: + inputBinding: + position: 5 + prefix: "CLEAR_DT=false" + separate: false + type: boolean? + doc: | + Clear DT tag from input SAM records. Should be set to false if input SAM doesn't have this tag. Default true Default value: true. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + ADD_PG_TAG_TO_READS: + inputBinding: + position: 5 + prefix: "ADD_PG_TAG_TO_READS=false" + separate: false + type: boolean? + doc: | + Add PG tag to each read in a SAM or BAM Default value: true. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + INPUT: + inputBinding: + position: 5 + prefix: "INPUT=" + separate: false + type: + - File + - type: array + items: File + inputBinding: + itemSeparator: " INPUT=" + doc: | + One or more input SAM or BAM files to analyze. Must be coordinate sorted. Default value: null. This option may be specified 0 or more times. + + OUTPUT: + inputBinding: + position: 5 + prefix: "OUTPUT=" + separate: false + type: string + doc: | + The output file to write marked records to Required. + + METRICS_FILE: + inputBinding: + position: 5 + prefix: "METRICS_FILE=" + separate: false + type: string + doc: | + File to write duplication metrics to Required. + + REMOVE_DUPLICATES: + inputBinding: + position: 5 + prefix: "REMOVE_DUPLICATES=true" + separate: false + type: boolean? + doc: | + If true do not write duplicates to the output file instead of writing them with appropriate flags set. Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + ASSUME_SORTED: + inputBinding: + position: 5 + prefix: "ASSUME_SORTED=true" + separate: false + type: boolean? + doc: | + If true, assume that the input file is coordinate sorted even if the header says otherwise. Deprecated, used ASSUME_SORT_ORDER=coordinate instead. Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} Cannot be used in conjuction with option(s) ASSUME_SORT_ORDER (ASO) + + ASSUME_SORT_ORDER: + inputBinding: + position: 5 + prefix: "ASSUME_SORT_ORDER=" + separate: false + type: + - 'null' + - type: enum + symbols: [unsorted, queryname, coordinate, duplicate, unknown] + doc: | + If not null, assume that the input file has this order even if the header says otherwise. Default value: null. Possible values: {unsorted, queryname, coordinate, duplicate, unknown} Cannot be used in conjuction with option(s) ASSUME_SORTED (AS) + + DUPLICATE_SCORING_STRATEGY: + inputBinding: + position: 5 + prefix: "DUPLICATE_SCORING_STRATEGY=" + separate: false + type: + - 'null' + - type: enum + symbols: [SUM_OF_BASE_QUALITIES, TOTAL_MAPPED_REFERENCE_LENGTH, RANDOM] + doc: | + The scoring strategy for choosing the non-duplicate among candidates. Default value: SUM_OF_BASE_QUALITIES. This option can be set to 'null' to clear the default value. Possible values: {SUM_OF_BASE_QUALITIES, TOTAL_MAPPED_REFERENCE_LENGTH, RANDOM} + + PROGRAM_RECORD_ID: + inputBinding: + position: 5 + prefix: "PROGRAM_RECORD_ID=" + separate: false + type: string? + doc: | + The program record ID for the @PG record(s) created by this program. Set to null to disable PG record creation. This string may have a suffix appended to avoid collision with other program record IDs. Default value: MarkDuplicates. This option can be set to 'null' to clear the default value. + + PROGRAM_GROUP_VERSION: + inputBinding: + position: 5 + prefix: "PROGRAM_GROUP_VERSION=" + separate: false + type: string? + doc: | + Value of VN tag of PG record to be created. If not specified, the version will be detected automatically. Default value: null. + + PROGRAM_GROUP_COMMAND_LINE: + inputBinding: + position: 5 + prefix: "PROGRAM_GROUP_COMMAND_LINE=" + separate: false + type: string? + doc: | + Value of CL tag of PG record to be created. If not supplied the command line will be detected automatically. Default value: null. + + PROGRAM_GROUP_NAME: + inputBinding: + position: 5 + prefix: "PROGRAM_GROUP_NAME=" + separate: false + type: string? + doc: | + Value of PN tag of PG record to be created. Default value: MarkDuplicates. This option can be set to 'null' to clear the default value. + + COMMENT: + inputBinding: + position: 5 + prefix: "COMMENT=" + separate: false + type: string? + doc: | + Comment(s) to include in the output file's header. Default value: null. This option may be specified 0 or more times. + + READ_NAME_REGEX: + inputBinding: + position: 5 + prefix: "READ_NAME_REGEX=" + separate: false + type: string? + doc: | + Regular expression that can be used to parse read names in the incoming SAM file. Read names are parsed to extract three variables: tile/region, x coordinate and y coordinate. These values are used to estimate the rate of optical duplication in order to give a more accurate estimated library size. Set this option to null to disable optical duplicate detection, e.g. for RNA-seq or other data where duplicate sets are extremely large and estimating library complexity is not an aim. Note that without optical duplicate counts, library size estimation will be inaccurate. The regular expression should contain three capture groups for the three variables, in order. It must match the entire read name. Note that if the default regex is specified, a regex match is not actually done, but instead the read name is split on colon character. For 5 element names, the 3rd, 4th and 5th elements are assumed to be tile, x and y values. For 7 element names (CASAVA 1.8), the 5th, 6th, and 7th elements are assumed to be tile, x and y values. Default value: . This option can be set to 'null' to clear the default value. + + OPTICAL_DUPLICATE_PIXEL_DISTANCE: + inputBinding: + position: 5 + prefix: "OPTICAL_DUPLICATE_PIXEL_DISTANCE=" + separate: false + type: int? + doc: | + The maximum offset between two duplicate clusters in order to consider them optical duplicates. The default is appropriate for unpatterned versions of the Illumina platform. For the patterned flowcell models, 2500 is moreappropriate. For other platforms and models, users should experiment to find what works best. Default value: 100. This option can be set to 'null' to clear the default value. + + MAX_OPTICAL_DUPLICATE_SET_SIZE: + inputBinding: + position: 5 + prefix: "MAX_OPTICAL_DUPLICATE_SET_SIZE=" + separate: false + type: long? + doc: | + This number is the maximum size of a set of duplicate reads for which we will attempt to determine which are optical duplicates. Please be aware that if you raise this value too high and do encounter a very large set of duplicate reads, it will severely affect the runtime of this tool. To completely disable this check, set the value to -1. Default value: 300000. This option can be set to 'null' to clear the default value. + + TMP_DIR: + inputBinding: + position: 5 + prefix: "TMP_DIR=" + separate: false + type: string? + doc: | + One or more directories with space available to be used by this program for temporary storage of working files Default value: null. This option may be specified 0 or more times. + + VERBOSITY: + inputBinding: + position: 5 + prefix: "VERBOSITY=" + separate: false + type: + - 'null' + - type: enum + symbols: [ERROR, WARNING, INFO, DEBUG] + doc: | + Control verbosity of logging. Default value: INFO. This option can be set to 'null' to clear the default value. Possible values: {ERROR, WARNING, INFO, DEBUG} + + QUIET: + inputBinding: + position: 5 + prefix: "QUIET=true" + separate: false + type: boolean? + doc: | + Whether to suppress job-summary info on System.err. Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + VALIDATION_STRINGENCY: + inputBinding: + position: 5 + prefix: "VALIDATION_STRINGENCY=" + separate: false + type: + - 'null' + - type: enum + symbols: [STRICT, LENIENT, SILENT] + doc: | + Validation stringency for all SAM files read by this program. Setting stringency to SILENT can improve performance when processing a BAM file in which variable-length data (read, qualities, tags) do not otherwise need to be decoded. Default value: STRICT. This option can be set to 'null' to clear the default value. Possible values: {STRICT, LENIENT, SILENT} + + COMPRESSION_LEVEL: + inputBinding: + position: 5 + prefix: "COMPRESSION_LEVEL=" + separate: false + type: int? + doc: | + Compression level for all compressed files created (e.g. BAM and VCF). Default value: 5. This option can be set to 'null' to clear the default value. + + MAX_RECORDS_IN_RAM: + inputBinding: + position: 5 + prefix: "MAX_RECORDS_IN_RAM=" + separate: false + type: int? + doc: | + When writing files that need to be sorted, this will specify the number of records stored in RAM before spilling to disk. Increasing this number reduces the number of file handles needed to sort the file, and increases the amount of RAM needed. Default value: 500000. This option can be set to 'null' to clear the default value. + + CREATE_INDEX: + inputBinding: + position: 5 + prefix: "CREATE_INDEX=true" + separate: false + type: boolean? + doc: | + Whether to create a BAM index when writing a coordinate-sorted BAM file. Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + CREATE_MD5_FILE: + inputBinding: + position: 5 + prefix: "CREATE_MD5_FILE=true" + separate: false + type: boolean? + doc: | + Whether to create an MD5 digest for any BAM or FASTQ files created. Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + REFERENCE_SEQUENCE: + inputBinding: + position: 5 + prefix: "REFERENCE_SEQUENCE=" + separate: false + type: File? + doc: | + Reference sequence file. Default value: null. + + GA4GH_CLIENT_SECRETS: + inputBinding: + position: 5 + prefix: "GA4GH_CLIENT_SECRETS=" + separate: false + type: File? + doc: | + Google Genomics API client_secrets.json file path. Default value: client_secrets.json. This option can be set to 'null' to clear the default value. + + USE_JDK_DEFLATER: + inputBinding: + position: 5 + prefix: "USE_JDK_DEFLATER=true" + separate: false + type: boolean? + doc: | + Use the JDK Deflater instead of the Intel Deflater for writing compressed output Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + USE_JDK_INFLATER: + inputBinding: + position: 5 + prefix: "USE_JDK_INFLATER=true" + separate: false + type: boolean? + doc: | + Use the JDK Inflater instead of the Intel Inflater for reading compressed input Default value: false. This option can be set to 'null' to clear the default value. Possible values: {true, false} + + OPTIONS_FILE: + inputBinding: + position: 5 + prefix: "OPTIONS_FILE=" + separate: false + type: File? + doc: | + File of OPTION_NAME=value pairs. No positional parameters allowed. Unlike command-line options, unrecognized options are ignored. A single-valued option set in an options file may be overridden by a subsequent command-line option. A line starting with '#' is considered a comment. Required. + +$namespaces: + s: https://schema.org/ + edam: http://edamontology.org/ + +$schemas: + - https://schema.org/docs/schema_org_rdfa.html + - http://edamontology.org/EDAM_1.18.owl diff --git a/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl b/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl index 294eb76..82a0bd0 100644 --- a/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl +++ b/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl @@ -31,11 +31,36 @@ baseCommand: ["picard", "CollectMultipleMetrics"] outputs: - OUTPUT_output: + AlignmentSummarymetrics: type: File outputBinding: glob: $(inputs.OUTPUT) + InsertSizemetrics: + type: File + outputBinding: + glob: $(inputs.OUTPUT) + + QualityByCyclemetrics: + type: File + outputBinding: + glob: $(inputs.OUTPUT) + + QualityDistributionmetrics: + type: File + outputBinding: + glob: $(inputs.OUTPUT) + + QualityByCyclemetricsTwo: + type: File + outputBinding: + glob: $(inputs.OUTPUT) + + QualityDistributionmetricsTwo: + type: File + outputBinding: + glob: $(inputs.OUTPUT) + inputs: ASSUME_SORTED: diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index 03ad49e..f4a6ee3 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -5,90 +5,115 @@ cwlVersion: v1.0 class: Workflow inputs: - inputSampleIDR1: File - ex: string - inputSampleIDR2: File - ex: string - inputReferenceGenome: File - ex: string - + inputSampleID_R1: File + inputSampleID_R2: File + fq1file: File + fq2file: File + reference_genome: File + outputName: string + prefix: string + outputs: - alignmentSummarymetrics: + AlignmentSummarymetrics: type: File - outputSource: PicardCollectMultipleMetrics/alignmentSummarymetrics + outputSource: picardCollectMultipleMetrics/AlignmentSummarymetrics - insertSizemetrics: + InsertSizemetrics: type: File - outputSource: PicardCollectMultipleMetrics/insertSizeMetrics + outputSource: picardCollectMultipleMetrics/InsertSizemetrics - qualityByCyclemetrics: + QualityByCyclemetrics: type: File - outputSource: PicardCollectMultipleMetrics/qualityByCyclemetrics + outputSource: picardCollectMultipleMetrics/QualityByCyclemetrics - qualityByDistributionmetrics: + QualityDistributionmetrics: type: File - outputSource: PicardCollectMultipleMetrics/qualityDistributionmetrics + outputSource: picardCollectMultipleMetrics/QualityDistributionmetrics - qualityByCyclemetricsTwo: + QualityByCyclemetricsTwo: type: File - outputSource: PicardCollectMultipleMetrics/qualityByCyclemetricsTwo + outputSource: picardCollectMultipleMetrics/QualityByCyclemetricsTwo - qualityByDistributionmetricsTwo: + QualityDistributionmetricsTwo: type: File - outputSource: PicardCollectMultipleMetrics/qualityDistributionmetrics + outputSource: picardCollectMultipleMetrics/QualityDistributionmetricsTwo steps: - bwaAln: - run: bioconda-tool-bwa-aln.yml + bwaAln1: + run: ../tools/bioconda-tool-bwa-aln.yml in: - fastqfile: inputSampleIDR1 - fastqfile: inputSampleIDR2 - fastafile: inputReferenceGenome + input: inputSampleID_R1 + outputName: outputName + prefix: prefix out: - [saiFileReadOne] - # [saiFileReadTwo] + [alnFile] + + bwaAln2: + run: ../tools/bioconda-tool-bwa-aln.yml + in: + input: inputSampleID_R2 + outputName: outputName + prefix: prefix + out: + [alnFile] bwaSampe: - run: bioconda-tool-bwa-sampe.yml + run: ../tools/bioconda-tool-bwa-sampe.yml in: - src: bwaAln/saiFileReadOne - bwaAln/saiFileReadTwo + aln1: bwaAln1/alnFile + aln2: bwaAln2/alnFile + fq1: fq1file + fq2: fq2file + prefix: prefix + outputName: outputName + src: [bwaAln1/alnFile, bwaAln2/alnFile] out: - [samFile] + [sampeFile] samtoolsView: - run: bioconda-tool-samtools-view.cwl + run: ../tools/bioconda-tool-samtools-view.cwl in: - src: bwaSampe/samFile + input: bwaSampe/sampeFile + outputFileName: + valueFrom: $( outputName + ".bam") + src: bwaSampe/sampeFile out: [bamFile] samtoolsSort: - run: bioconda-tool-samtools-sort.cwl + run: ../tools/bioconda-tool-samtools-sort.cwl in: + input: samtoolsView/bamFile + outputPrefix: prefix src: samtoolsView/bamFile - out: [bamFileSortedByCoordinates] + out: [bamFile] picardMarkDuplicates: - run: bioconda-tool-picard-MarkDuplicates.cwl - in: - src: samtoolSort/bamFileSortedByCoordinates - out: [bamFileWithDuplicates] + run: ../tools/bioconda-tool-picard-MarkDuplicates.cwl + in: + INPUT: samtoolsSort/bamFile + OUTPUT: + valueFrom: $( outputName + ".bam") + METRICS_FILE: + valueFrom: $( outputName + ".markDuplicates.txt" ) + src: samtoolsSort/bamFile + out: [METRICS_FILE_output, OUTPUT_output] samtoolsFlagstat: - run: bioconda-tool-samtools-flagstat.cwl + run: ../tools/bioconda-tool-samtools-flagstat.cwl in: - src: picardMarkDuplicates/bamFileWithDuplicates - out: [] - #output is here to stdout, is this correct then? + input: picardMarkDuplicates/OUTPUT_output + outputName: + valueFrom: $( outputName + ".flagstat.txt") + src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] + out: + - flagstat picardCollectMultipleMetrics: - run: bioconda-tool-picard-collectMultipleMetrics.cwl - in: - src: picardMarkDuplicates/bamFileWithDuplicates - out: [alignmentSummarymetrics] - # [insertSizemetrics] - # [qualityByCyclemetrics] - # [qualityDistributionmetrics] - # [qualityByCyclemetricsTwo] - # [qualityDistributionmetricsTwo] + run: ../tools/bioconda-tool-picard-collectMultipleMetrics.cwl + in: + INPUT: picardMarkDuplicates/OUTPUT_output + OUTPUT: + valueFrom: $( outputName + ".collectMultipleMetrics.txt") + src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] + out: [AlignmentSummarymetrics, InsertSizemetrics, QualityByCyclemetrics, QualityDistributionmetrics, QualityByCyclemetricsTwo, QualityDistributionmetricsTwo] From dc8a1f248a1e35dafed05fea8025177e4f0c130d Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Mon, 12 Mar 2018 16:39:23 +0100 Subject: [PATCH 09/31] bwa-aln parameters are now set --- CWL/workflows/GAL.cwl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index f4a6ee3..16bfbce 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -45,6 +45,10 @@ steps: input: inputSampleID_R1 outputName: outputName prefix: prefix + threads: + valueFrom: $( 12 ) + minQual: + valueFrom: $( 20 ) out: [alnFile] From 67071ed85cf2d31c7486fe31208b2e79e6286e63 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Tue, 13 Mar 2018 11:17:05 +0100 Subject: [PATCH 10/31] -added some parameters to tools -refined workflow --- CWL/tools/bioconda-tool-bwa-sampe.yml | 16 ++++++++- CWL/tools/bioconda-tool-samtools-view.cwl | 7 ++++ CWL/workflows/GAL.cwl | 40 +++++++++++++++++++++-- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/CWL/tools/bioconda-tool-bwa-sampe.yml b/CWL/tools/bioconda-tool-bwa-sampe.yml index e58bef8..7b23bc1 100644 --- a/CWL/tools/bioconda-tool-bwa-sampe.yml +++ b/CWL/tools/bioconda-tool-bwa-sampe.yml @@ -71,6 +71,14 @@ inputs: inputBinding: position: 14 + maximumInsertSize: + type: int? + inputBinding: + position: 5 + prefix: "-a" + doc: | + maximum nsert size [500] + noSW: type: boolean? doc: | @@ -103,7 +111,13 @@ inputs: position: 5 prefix: "-N" - + readGroupHeaderLine: + type: string? + inputBinding: + position: 5 + prefix: "-r" + doc: | + read group header line such as '@RG\tID:foo\tSM:bar' [null] doc: | Usage: bwa sampe [options] diff --git a/CWL/tools/bioconda-tool-samtools-view.cwl b/CWL/tools/bioconda-tool-samtools-view.cwl index d9b80ab..f6b179e 100644 --- a/CWL/tools/bioconda-tool-samtools-view.cwl +++ b/CWL/tools/bioconda-tool-samtools-view.cwl @@ -256,6 +256,13 @@ inputs: doc: | Reference sequence FASTA FILE [null] + inputFormat: + type: boolean? + inputBinding: + position: 5 + prefix: -S + doc: | + input file is a SAM-File, if this parameter is set to true doc: | Usage: samtools view [options] || [region ...] diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index 16bfbce..e6b52b2 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -58,6 +58,10 @@ steps: input: inputSampleID_R2 outputName: outputName prefix: prefix + threads: + valueFrom: $( 12 ) + minQual: + valueFrom: $ ( 20 ) out: [alnFile] @@ -70,6 +74,12 @@ steps: fq2: fq2file prefix: prefix outputName: outputName + preloadIndex: + valueFrom: $( 1==1 ) + maximumInsertSize: + valueFrom: $( 1000 ) + readGroupHeaderLine: + valueFrom: $( reference_genome ) src: [bwaAln1/alnFile, bwaAln2/alnFile] out: [sampeFile] @@ -79,7 +89,15 @@ steps: in: input: bwaSampe/sampeFile outputFileName: - valueFrom: $( outputName + ".bam") + valueFrom: $( outputName + ".bam") + useNoCompression: + valueFrom: $( 1==1 ) + outBam: + valueFrom: $( 1==1 ) + includeHeader: + valueFrom: $( 1==1 ) + inputFormat: + valueFrom: $ ( 1==1 ) src: bwaSampe/sampeFile out: [bamFile] @@ -99,7 +117,17 @@ steps: OUTPUT: valueFrom: $( outputName + ".bam") METRICS_FILE: - valueFrom: $( outputName + ".markDuplicates.txt" ) + valueFrom: $( outputName + ".PicardMarkDupmetrics.txt" ) + VALIDATION_STRINGENCY: + valueFrom: $( SILENT ) + REMOVE_DUPLICATES: + valueFrom: $( 1==0 ) + ASSUME_SORTED: + valueFrom: $( 1==1 ) + CREATE_INDEX: + valueFrom: $( 1==1) + MAX_RECORDS_IN_RAM: + valueFrom: $( 12500000 ) src: samtoolsSort/bamFile out: [METRICS_FILE_output, OUTPUT_output] @@ -119,5 +147,13 @@ steps: INPUT: picardMarkDuplicates/OUTPUT_output OUTPUT: valueFrom: $( outputName + ".collectMultipleMetrics.txt") + REFERNCE_SEQUENCE: + valueFrom: $( reference_genome ) + ASSUME_SORTED: + valueFrom: $( 1==1 ) + VALIDATION_STRINGENCY: + valueFrom: $( SILENT ) + PROGRAM: + valueFrom: $( [CollectAlignmentSummaryMetrics, CollectInsertSizeMetrics, QualityScoreDistribution, MeanQualityByCycle] ) src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] out: [AlignmentSummarymetrics, InsertSizemetrics, QualityByCyclemetrics, QualityDistributionmetrics, QualityByCyclemetricsTwo, QualityDistributionmetricsTwo] From cfbad150fcbd1fc93d930929cd0860c1f737cb69 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Tue, 13 Mar 2018 15:29:40 +0100 Subject: [PATCH 11/31] job file for GAL-workflow added --- CWL/workflows/GAL-workflow-job.yml | 15 +++++++++++++++ CWL/workflows/GAL.cwl | 6 ++---- 2 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 CWL/workflows/GAL-workflow-job.yml diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml new file mode 100644 index 0000000..f0499a0 --- /dev/null +++ b/CWL/workflows/GAL-workflow-job.yml @@ -0,0 +1,15 @@ +fq1file: + class: File + path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAT_L006_R1_001.fastq.gz + +fq2file: + class: File + path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAT_L006_R2_001.fastq.gz + +reference_genome: + class: File + path: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa + +outputName: string + +prefix: stringtwo diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index e6b52b2..71f440e 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -5,8 +5,6 @@ cwlVersion: v1.0 class: Workflow inputs: - inputSampleID_R1: File - inputSampleID_R2: File fq1file: File fq2file: File reference_genome: File @@ -42,7 +40,7 @@ steps: bwaAln1: run: ../tools/bioconda-tool-bwa-aln.yml in: - input: inputSampleID_R1 + input: fq1file outputName: outputName prefix: prefix threads: @@ -55,7 +53,7 @@ steps: bwaAln2: run: ../tools/bioconda-tool-bwa-aln.yml in: - input: inputSampleID_R2 + input: fq2file outputName: outputName prefix: prefix threads: From b04a0e5c5dd77a66e298d9737c2cac1031f3428d Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Wed, 14 Mar 2018 12:48:03 +0100 Subject: [PATCH 12/31] corrected GAL workflow and adjusted job file accordingly --- CWL/tools/bioconda-tool-bwa-aln.yml | 2 -- CWL/workflows/GAL-workflow-job.yml | 8 ++++---- CWL/workflows/GAL.cwl | 6 +++--- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/CWL/tools/bioconda-tool-bwa-aln.yml b/CWL/tools/bioconda-tool-bwa-aln.yml index 1dab369..5412e69 100755 --- a/CWL/tools/bioconda-tool-bwa-aln.yml +++ b/CWL/tools/bioconda-tool-bwa-aln.yml @@ -139,8 +139,6 @@ inputs: position: 1 prefix: "-q" - - doc: | Usage: bwa aln [options] diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml index f0499a0..60214f6 100644 --- a/CWL/workflows/GAL-workflow-job.yml +++ b/CWL/workflows/GAL-workflow-job.yml @@ -1,15 +1,15 @@ fq1file: class: File - path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAT_L006_R1_001.fastq.gz + path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAAT_L006_R1_001.fastq.gz fq2file: class: File - path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAT_L006_R2_001.fastq.gz + path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAAT_L006_R2_001.fastq.gz reference_genome: class: File path: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa -outputName: string +outputName: outputName -prefix: stringtwo +prefix: prefix diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index 71f440e..1976420 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -44,7 +44,7 @@ steps: outputName: outputName prefix: prefix threads: - valueFrom: $( 12 ) + valueFrom: $( 12 ) minQual: valueFrom: $( 20 ) out: @@ -57,9 +57,9 @@ steps: outputName: outputName prefix: prefix threads: - valueFrom: $( 12 ) + valueFrom: $( 12 ) minQual: - valueFrom: $ ( 20 ) + valueFrom: $ ( 20 ) out: [alnFile] From 4ec556cdf7556ccd91c0f129015de78584ac860f Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Thu, 15 Mar 2018 12:36:53 +0100 Subject: [PATCH 13/31] bwa-aln step and bwa-sampe step are now working, error in samtools-view step --- CWL/workflows/GAL-workflow-job.yml | 4 ++-- CWL/workflows/GAL.cwl | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml index 60214f6..4a9bc09 100644 --- a/CWL/workflows/GAL-workflow-job.yml +++ b/CWL/workflows/GAL-workflow-job.yml @@ -8,8 +8,8 @@ fq2file: reference_genome: class: File - path: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa + path: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa -outputName: outputName +outputName: bamFile prefix: prefix diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index 1976420..c312108 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -4,6 +4,11 @@ cwlVersion: v1.0 class: Workflow +requirements: + - class: StepInputExpressionRequirement + - class: InlineJavascriptRequirement + - class: MultipleInputFeatureRequirement + inputs: fq1file: File fq2file: File @@ -59,7 +64,7 @@ steps: threads: valueFrom: $( 12 ) minQual: - valueFrom: $ ( 20 ) + valueFrom: $( 20 ) out: [alnFile] @@ -77,7 +82,7 @@ steps: maximumInsertSize: valueFrom: $( 1000 ) readGroupHeaderLine: - valueFrom: $( reference_genome ) + valueFrom: readgroupinformation src: [bwaAln1/alnFile, bwaAln2/alnFile] out: [sampeFile] @@ -87,7 +92,7 @@ steps: in: input: bwaSampe/sampeFile outputFileName: - valueFrom: $( outputName + ".bam") + valueFrom: outputName + ".bam" useNoCompression: valueFrom: $( 1==1 ) outBam: @@ -95,7 +100,7 @@ steps: includeHeader: valueFrom: $( 1==1 ) inputFormat: - valueFrom: $ ( 1==1 ) + valueFrom: $( 1==1 ) src: bwaSampe/sampeFile out: [bamFile] From 54095c1a91e007fddd3e27410ac19d0aaf5261c8 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Thu, 15 Mar 2018 16:30:10 +0100 Subject: [PATCH 14/31] - corrected prefix and reference genome in job file - corrected workflow further: outputname for bwa-aln step is now corrected --- CWL/tools/bioconda-tool-samtools-view.cwl | 2 -- CWL/workflows/GAL-workflow-job.yml | 6 +++--- CWL/workflows/GAL.cwl | 8 +++++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CWL/tools/bioconda-tool-samtools-view.cwl b/CWL/tools/bioconda-tool-samtools-view.cwl index f6b179e..6affb1e 100644 --- a/CWL/tools/bioconda-tool-samtools-view.cwl +++ b/CWL/tools/bioconda-tool-samtools-view.cwl @@ -51,8 +51,6 @@ inputs: outputFileName: type: string - inputBinding: - position: 5 doc: | output file name diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml index 4a9bc09..e98146f 100644 --- a/CWL/workflows/GAL-workflow-job.yml +++ b/CWL/workflows/GAL-workflow-job.yml @@ -1,10 +1,10 @@ fq1file: class: File - path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAAT_L006_R1_001.fastq.gz + path: file_R1.fastq.gz fq2file: class: File - path: /projects/student/Wiebke/data/HepG2_H3K122ac_181/161116_SN7001355_0090_BC831BACXX/L006/HepG2_H3K122ac_181_GCCAAT_L006_R2_001.fastq.gz + path: file_R2.fastq.gz reference_genome: class: File @@ -12,4 +12,4 @@ reference_genome: outputName: bamFile -prefix: prefix +prefix: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index c312108..554cbba 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -46,7 +46,8 @@ steps: run: ../tools/bioconda-tool-bwa-aln.yml in: input: fq1file - outputName: outputName + outputName: + valueFrom: $( outputName + "_R1_Aln" ) prefix: prefix threads: valueFrom: $( 12 ) @@ -59,7 +60,8 @@ steps: run: ../tools/bioconda-tool-bwa-aln.yml in: input: fq2file - outputName: outputName + outputName: + valueFrom: $( outputName + "_R2_Aln" ) prefix: prefix threads: valueFrom: $( 12 ) @@ -92,7 +94,7 @@ steps: in: input: bwaSampe/sampeFile outputFileName: - valueFrom: outputName + ".bam" + valueFrom: $( inputs.outputName + ".bam") useNoCompression: valueFrom: $( 1==1 ) outBam: From 0239fdce8a5f9a26f3f4a37e578a3595dc575583 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Thu, 15 Mar 2018 17:04:27 +0100 Subject: [PATCH 15/31] name for bwa-aln works now --- CWL/workflows/GAL-workflow-job.yml | 2 +- CWL/workflows/GAL.cwl | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml index e98146f..62cca11 100644 --- a/CWL/workflows/GAL-workflow-job.yml +++ b/CWL/workflows/GAL-workflow-job.yml @@ -10,6 +10,6 @@ reference_genome: class: File path: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa -outputName: bamFile +outputName: "bamFile" prefix: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index 554cbba..949e4e4 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -46,8 +46,9 @@ steps: run: ../tools/bioconda-tool-bwa-aln.yml in: input: fq1file + name: outputName outputName: - valueFrom: $( outputName + "_R1_Aln" ) + valueFrom: $( inputs.name + "_R1_Aln" ) prefix: prefix threads: valueFrom: $( 12 ) @@ -60,8 +61,9 @@ steps: run: ../tools/bioconda-tool-bwa-aln.yml in: input: fq2file + name: outputName outputName: - valueFrom: $( outputName + "_R2_Aln" ) + valueFrom: $( inputs.name + "_R2_Aln" ) prefix: prefix threads: valueFrom: $( 12 ) From 00ad8bb6140a847a2474516add3789d757aed480 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Fri, 16 Mar 2018 14:11:44 +0100 Subject: [PATCH 16/31] debugged workflow, error in CollectMultipleMetrics still needs fixing --- CWL/workflows/GAL.cwl | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index 949e4e4..eb67bd8 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -86,7 +86,7 @@ steps: maximumInsertSize: valueFrom: $( 1000 ) readGroupHeaderLine: - valueFrom: readgroupinformation + valueFrom: $( '@RG\tID:foo\tSM:bar' ) src: [bwaAln1/alnFile, bwaAln2/alnFile] out: [sampeFile] @@ -113,7 +113,9 @@ steps: run: ../tools/bioconda-tool-samtools-sort.cwl in: input: samtoolsView/bamFile - outputPrefix: prefix + name: outputName + outputPrefix: + valueFrom: $( inputs.name + "_sort" ) src: samtoolsView/bamFile out: [bamFile] @@ -121,12 +123,13 @@ steps: run: ../tools/bioconda-tool-picard-MarkDuplicates.cwl in: INPUT: samtoolsSort/bamFile + name: outputName OUTPUT: - valueFrom: $( outputName + ".bam") + valueFrom: $( inputs.name + ".bam" ) METRICS_FILE: - valueFrom: $( outputName + ".PicardMarkDupmetrics.txt" ) + valueFrom: $( inputs.name + ".PicardMarkDupmetrics.txt" ) VALIDATION_STRINGENCY: - valueFrom: $( SILENT ) + valueFrom: SILENT REMOVE_DUPLICATES: valueFrom: $( 1==0 ) ASSUME_SORTED: @@ -142,8 +145,9 @@ steps: run: ../tools/bioconda-tool-samtools-flagstat.cwl in: input: picardMarkDuplicates/OUTPUT_output + name: outputName outputName: - valueFrom: $( outputName + ".flagstat.txt") + valueFrom: $( inputs.name + ".flagstat.txt") src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] out: - flagstat @@ -152,15 +156,16 @@ steps: run: ../tools/bioconda-tool-picard-collectMultipleMetrics.cwl in: INPUT: picardMarkDuplicates/OUTPUT_output + name: outputName OUTPUT: - valueFrom: $( outputName + ".collectMultipleMetrics.txt") + valueFrom: $( inputs.name + ".collectMultipleMetrics.txt") REFERNCE_SEQUENCE: valueFrom: $( reference_genome ) ASSUME_SORTED: valueFrom: $( 1==1 ) VALIDATION_STRINGENCY: - valueFrom: $( SILENT ) - PROGRAM: + valueFrom: SILENT + PROGRAM: valueFrom: $( [CollectAlignmentSummaryMetrics, CollectInsertSizeMetrics, QualityScoreDistribution, MeanQualityByCycle] ) src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] out: [AlignmentSummarymetrics, InsertSizemetrics, QualityByCyclemetrics, QualityDistributionmetrics, QualityByCyclemetricsTwo, QualityDistributionmetricsTwo] From 2237a8e0c5c7975f21e40dd36e580c3707c9a72e Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Fri, 16 Mar 2018 16:50:16 +0100 Subject: [PATCH 17/31] workflow is now running for testdata in test folder --- ...nda-tool-picard-collectMultipleMetrics.cwl | 93 +++++---- CWL/workflows/GAL.cwl | 58 +++--- ...tipleMetrics.txt.alignment_summary_metrics | 12 ++ ...Metrics.txt.base_distribution_by_cycle.pdf | Bin 0 -> 7025 bytes ...ics.txt.base_distribution_by_cycle_metrics | 111 ++++++++++ ...tipleMetrics.txt.insert_size_histogram.pdf | Bin 0 -> 7280 bytes ...ectMultipleMetrics.txt.insert_size_metrics | 193 ++++++++++++++++++ ...ctMultipleMetrics.txt.quality_by_cycle.pdf | Bin 0 -> 5862 bytes ...ltipleMetrics.txt.quality_by_cycle_metrics | 111 ++++++++++ ...ltipleMetrics.txt.quality_distribution.pdf | Bin 0 -> 4878 bytes ...leMetrics.txt.quality_distribution_metrics | 16 ++ test/file_R1.fastq.gz | Bin 0 -> 8074 bytes test/file_R2.fastq.gz | Bin 0 -> 8164 bytes test/log.txt | 8 + 14 files changed, 536 insertions(+), 66 deletions(-) create mode 100644 test/bamFile.collectMultipleMetrics.txt.alignment_summary_metrics create mode 100644 test/bamFile.collectMultipleMetrics.txt.base_distribution_by_cycle.pdf create mode 100644 test/bamFile.collectMultipleMetrics.txt.base_distribution_by_cycle_metrics create mode 100644 test/bamFile.collectMultipleMetrics.txt.insert_size_histogram.pdf create mode 100644 test/bamFile.collectMultipleMetrics.txt.insert_size_metrics create mode 100644 test/bamFile.collectMultipleMetrics.txt.quality_by_cycle.pdf create mode 100644 test/bamFile.collectMultipleMetrics.txt.quality_by_cycle_metrics create mode 100644 test/bamFile.collectMultipleMetrics.txt.quality_distribution.pdf create mode 100644 test/bamFile.collectMultipleMetrics.txt.quality_distribution_metrics create mode 100644 test/file_R1.fastq.gz create mode 100644 test/file_R2.fastq.gz create mode 100644 test/log.txt diff --git a/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl b/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl index 82a0bd0..d0284f3 100644 --- a/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl +++ b/CWL/tools/bioconda-tool-picard-collectMultipleMetrics.cwl @@ -31,35 +31,40 @@ baseCommand: ["picard", "CollectMultipleMetrics"] outputs: - AlignmentSummarymetrics: - type: File + summaryFiles: + type: File[] outputBinding: - glob: $(inputs.OUTPUT) - - InsertSizemetrics: - type: File - outputBinding: - glob: $(inputs.OUTPUT) - - QualityByCyclemetrics: - type: File - outputBinding: - glob: $(inputs.OUTPUT) - - QualityDistributionmetrics: - type: File - outputBinding: - glob: $(inputs.OUTPUT) - - QualityByCyclemetricsTwo: - type: File - outputBinding: - glob: $(inputs.OUTPUT) - - QualityDistributionmetricsTwo: - type: File - outputBinding: - glob: $(inputs.OUTPUT) + glob: $(inputs.OUTPUT + "*") + +# AlignmentSummarymetrics: +# type: File +# outputBinding: +# glob: $(inputs.OUTPUT) + +# InsertSizemetrics: +# type: File +# outputBinding: +# glob: $(inputs.OUTPUT) + +# QualityByCyclemetrics: +# type: File +# outputBinding: +# glob: $(inputs.OUTPUT) + +# QualityDistributionmetrics: +# type: File +# outputBinding: +# glob: $(inputs.OUTPUT) + +# QualityByCyclemetricsTwo: +# type: File +# outputBinding: +# glob: $(inputs.OUTPUT) + +# QualityDistributionmetricsTwo: +# type: File +# outputBinding: +# glob: $(inputs.OUTPUT) inputs: @@ -104,24 +109,26 @@ inputs: PROGRAM: inputBinding: - position: 5 - prefix: "PROGRAM=" - separate: false + position: 10 type: - 'null' - type: array - items: - type: enum - symbols: - - CollectAlignmentSummaryMetrics - - CollectInsertSizeMetrics - - QualityScoreDistribution - - MeanQualityByCycle - - CollectBaseDistributionByCycle - - CollectGcBiasMetrics - - RnaSeqMetrics - - CollectSequencingArtifactMetrics - - CollectQualityYieldMetrics + items: string + inputBinding: + prefix: "PROGRAM=" + separate: false +# items: +# type: enum +# symbols: +# - CollectAlignmentSummaryMetrics +# - CollectInsertSizeMetrics +# - QualityScoreDistribution +# - MeanQualityByCycle +# - CollectBaseDistributionByCycle +# - CollectGcBiasMetrics +# - RnaSeqMetrics +# - CollectSequencingArtifactMetrics +# - CollectQualityYieldMetrics doc: | Set of metrics programs to apply during the pass through the SAM file. Default value: [CollectAlignmentSummaryMetrics, CollectSizeMetrics, MeanQualityByCycle, QualityScoreDistribution]. This option can be set to 'null' to clear the default value. Possible values: [CollectAlignmentSummaryMetrics, CollectInsertSizeMetrics, QualityScoreDistribution, MeanQualityByCycle, CollectBaseDistributionByCycle, CollectGcBiasMetrics, RnaSeqMetrics, CollectSequencingArtifactMetrics, CollectQualityYieldMetrics]. This option may be specified 0 or more times. This option can be set to 'null' to clear the default list. diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index eb67bd8..9511d37 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -17,29 +17,34 @@ inputs: prefix: string outputs: - AlignmentSummarymetrics: - type: File - outputSource: picardCollectMultipleMetrics/AlignmentSummarymetrics - InsertSizemetrics: - type: File - outputSource: picardCollectMultipleMetrics/InsertSizemetrics + logFiles: + type: File[] + outputSource: picardCollectMultipleMetrics/summaryFiles - QualityByCyclemetrics: - type: File - outputSource: picardCollectMultipleMetrics/QualityByCyclemetrics +# AlignmentSummarymetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/AlignmentSummarymetrics - QualityDistributionmetrics: - type: File - outputSource: picardCollectMultipleMetrics/QualityDistributionmetrics +# InsertSizemetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/InsertSizemetrics - QualityByCyclemetricsTwo: - type: File - outputSource: picardCollectMultipleMetrics/QualityByCyclemetricsTwo +# QualityByCyclemetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/QualityByCyclemetrics - QualityDistributionmetricsTwo: - type: File - outputSource: picardCollectMultipleMetrics/QualityDistributionmetricsTwo +# QualityDistributionmetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/QualityDistributionmetrics + +# QualityByCyclemetricsTwo: +# type: File +# outputSource: picardCollectMultipleMetrics/QualityByCyclemetricsTwo + +# QualityDistributionmetricsTwo: +# type: File +# outputSource: picardCollectMultipleMetrics/QualityDistributionmetricsTwo steps: bwaAln1: @@ -135,7 +140,7 @@ steps: ASSUME_SORTED: valueFrom: $( 1==1 ) CREATE_INDEX: - valueFrom: $( 1==1) + valueFrom: $( 1==1 ) MAX_RECORDS_IN_RAM: valueFrom: $( 12500000 ) src: samtoolsSort/bamFile @@ -160,12 +165,19 @@ steps: OUTPUT: valueFrom: $( inputs.name + ".collectMultipleMetrics.txt") REFERNCE_SEQUENCE: - valueFrom: $( reference_genome ) + valueFrom: reference_genome ASSUME_SORTED: valueFrom: $( 1==1 ) VALIDATION_STRINGENCY: valueFrom: SILENT - PROGRAM: - valueFrom: $( [CollectAlignmentSummaryMetrics, CollectInsertSizeMetrics, QualityScoreDistribution, MeanQualityByCycle] ) + PROGRAMsToRun: + valueFrom: $( ["CollectAlignmentSummaryMetrics", "CollectInsertSizeMetrics", "QualityScoreDistribution", "MeanQualityByCycle"] ) src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] - out: [AlignmentSummarymetrics, InsertSizemetrics, QualityByCyclemetrics, QualityDistributionmetrics, QualityByCyclemetricsTwo, QualityDistributionmetricsTwo] + out: + - summaryFiles +# - AlignmentSummarymetrics +# - InsertSizemetrics +# - QualityByCyclemetrics +# - QualityDistributionmetrics +# - QualityByCyclemetricsTwo +# - QualityDistributionmetricsTwo diff --git a/test/bamFile.collectMultipleMetrics.txt.alignment_summary_metrics b/test/bamFile.collectMultipleMetrics.txt.alignment_summary_metrics new file mode 100644 index 0000000..3cd11d3 --- /dev/null +++ b/test/bamFile.collectMultipleMetrics.txt.alignment_summary_metrics @@ -0,0 +1,12 @@ +## htsjdk.samtools.metrics.StringHeader +# CollectMultipleMetrics INPUT=/tmp/tmpIELU1C/stg5ed07f2e-3a31-4e1b-bdd8-b4420e17058f/bamFile.bam ASSUME_SORTED=true OUTPUT=bamFile.collectMultipleMetrics.txt VALIDATION_STRINGENCY=SILENT STOP_AFTER=0 METRIC_ACCUMULATION_LEVEL=[ALL_READS] PROGRAM=[CollectAlignmentSummaryMetrics, CollectBaseDistributionByCycle, CollectInsertSizeMetrics, MeanQualityByCycle, QualityScoreDistribution] INCLUDE_UNPAIRED=false VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false +## htsjdk.samtools.metrics.StringHeader +# Started on: Fri Mar 16 16:36:47 CET 2018 + +## METRICS CLASS picard.analysis.AlignmentSummaryMetrics +CATEGORY TOTAL_READS PF_READS PCT_PF_READS PF_NOISE_READS PF_READS_ALIGNED PCT_PF_READS_ALIGNED PF_ALIGNED_BASES PF_HQ_ALIGNED_READS PF_HQ_ALIGNED_BASES PF_HQ_ALIGNED_Q20_BASES PF_HQ_MEDIAN_MISMATCHES PF_MISMATCH_RATE PF_HQ_ERROR_RATE PF_INDEL_RATE MEAN_READ_LENGTH READS_ALIGNED_IN_PAIRS PCT_READS_ALIGNED_IN_PAIRS PF_READS_IMPROPER_PAIRS PCT_PF_READS_IMPROPER_PAIRS BAD_CYCLES STRAND_BALANCE PCT_CHIMERAS PCT_ADAPTER SAMPLE LIBRARY READ_GROUP +FIRST_OF_PAIR 250 250 1 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 0 +SECOND_OF_PAIR 250 250 1 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 0 +PAIR 500 500 1 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 0 + + diff --git a/test/bamFile.collectMultipleMetrics.txt.base_distribution_by_cycle.pdf b/test/bamFile.collectMultipleMetrics.txt.base_distribution_by_cycle.pdf new file mode 100644 index 0000000000000000000000000000000000000000..47a1758306ca0245647331891ec92609e8712af1 GIT binary patch literal 7025 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 literal 0 HcmV?d00001 diff --git a/test/bamFile.collectMultipleMetrics.txt.base_distribution_by_cycle_metrics b/test/bamFile.collectMultipleMetrics.txt.base_distribution_by_cycle_metrics new file mode 100644 index 0000000..0557483 --- /dev/null +++ b/test/bamFile.collectMultipleMetrics.txt.base_distribution_by_cycle_metrics @@ -0,0 +1,111 @@ +## htsjdk.samtools.metrics.StringHeader +# CollectMultipleMetrics INPUT=/tmp/tmpIELU1C/stg5ed07f2e-3a31-4e1b-bdd8-b4420e17058f/bamFile.bam ASSUME_SORTED=true OUTPUT=bamFile.collectMultipleMetrics.txt VALIDATION_STRINGENCY=SILENT STOP_AFTER=0 METRIC_ACCUMULATION_LEVEL=[ALL_READS] PROGRAM=[CollectAlignmentSummaryMetrics, CollectBaseDistributionByCycle, CollectInsertSizeMetrics, MeanQualityByCycle, QualityScoreDistribution] INCLUDE_UNPAIRED=false VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false +## htsjdk.samtools.metrics.StringHeader +# Started on: Fri Mar 16 16:36:47 CET 2018 + +## METRICS CLASS picard.analysis.BaseDistributionByCycleMetrics +READ_END CYCLE PCT_A PCT_C PCT_G PCT_T PCT_N +1 1 25.2 21.2 27.6 26 0 +1 2 35.6 20.4 14 30 0 +1 3 30.4 26.4 16.8 26.4 0 +1 4 32.8 21.6 19.6 26 0 +1 5 26.4 23.2 18.8 31.6 0 +1 6 29.6 19.6 22.8 28 0 +1 7 25.6 16.4 22.8 35.2 0 +1 8 31.2 21.2 18.8 28.8 0 +1 9 32.4 17.2 24.8 25.6 0 +1 10 28.4 22.8 18.8 30 0 +1 11 32.4 18 20.4 29.2 0 +1 12 30 20 20.8 29.2 0 +1 13 34 19.6 19.2 27.2 0 +1 14 27.6 25.2 23.6 23.6 0 +1 15 31.2 20 22.4 26.4 0 +1 16 27.6 19.6 24.8 28 0 +1 17 29.2 26.4 16.4 28 0 +1 18 27.6 22.4 21.6 28.4 0 +1 19 33.2 16 18.4 32.4 0 +1 20 23.6 22 26.4 28 0 +1 21 26.8 18.8 21.6 32.8 0 +1 22 32.4 18.4 24.8 24.4 0 +1 23 30.8 22 23.6 23.6 0 +1 24 26.8 20.8 25.2 27.2 0 +1 25 30 19.6 22.4 28 0 +1 26 27.6 19.2 25.2 28 0 +1 27 25.6 17.6 22.8 34 0 +1 28 28.8 23.2 26 22 0 +1 29 30.4 20.4 21.6 27.6 0 +1 30 25.2 21.2 22.8 30.8 0 +1 31 27.2 22.8 21.2 28.8 0 +1 32 22.8 22 25.2 30 0 +1 33 24.8 23.2 21.6 30.4 0 +1 34 32 21.6 20.4 26 0 +1 35 29.2 21.2 25.2 24.4 0 +1 36 30 19.2 27.6 23.2 0 +1 37 29.2 21.6 20.8 28.4 0 +1 38 31.6 22 19.2 27.2 0 +1 39 28.8 22 22 27.2 0 +1 40 28.4 27.6 19.2 24.8 0 +1 41 28.8 24 20.4 26.8 0 +1 42 26 24.4 21.2 28.4 0 +1 43 29.6 19.6 20.4 30.4 0 +1 44 31.2 17.2 19.2 32.4 0 +1 45 26 20.4 26 27.6 0 +1 46 27.6 18.8 25.2 28.4 0 +1 47 32.4 24 14.8 28.8 0 +1 48 28 26.4 22.4 23.2 0 +1 49 26 25.2 21.2 27.6 0 +1 50 32.4 20.8 19.2 26 1.6 +1 51 34 18 22 17.6 8.4 +2 52 22.4 18.4 20.8 23.6 14.8 +2 53 23.6 13.6 14.4 29.6 18.8 +2 54 24.4 12.4 14.8 19.2 29.2 +2 55 21.2 12.8 16.8 24.8 24.4 +2 56 23.2 16.4 14.4 18 28 +2 57 23.6 14.8 19.2 23.2 19.2 +2 58 20.4 17.6 16 20.8 25.2 +2 59 24 13.6 15.2 20 27.2 +2 60 20 14 12 26 28 +2 61 28 14 12.4 24 21.6 +2 62 28.4 18.8 17.2 21.6 14 +2 63 31.2 21.2 17.2 28.4 2 +2 64 25.6 23.6 18.8 29.6 2.4 +2 65 35.6 18.8 20.8 24.8 0 +2 66 32.4 19.2 21.6 25.2 1.6 +2 67 35.2 18.4 22 24.4 0 +2 68 26.8 26.4 20.4 26.4 0 +2 69 28.4 23.6 22 26 0 +2 70 27.2 21.6 22.8 28.4 0 +2 71 28.4 22.4 18.8 30.4 0 +2 72 26.4 18.8 29.6 25.2 0 +2 73 30 17.6 24.4 28 0 +2 74 23.6 22 22.4 32 0 +2 75 24.4 22 23.2 30.4 0 +2 76 26.4 20 26 27.6 0 +2 77 25.6 21.6 23.6 29.2 0 +2 78 30 17.2 26.8 26 0 +2 79 28.8 23.2 18.8 29.2 0 +2 80 29.6 20.8 20.4 29.2 0 +2 81 26.4 21.6 25.2 26.8 0 +2 82 26 21.6 22 30.4 0 +2 83 29.6 20.4 24.8 25.2 0 +2 84 28.4 18 28.8 24.8 0 +2 85 26.4 22.4 24.4 26.8 0 +2 86 28 24 22.4 25.6 0 +2 87 35.6 23.6 19.6 21.2 0 +2 88 30.8 24 21.6 23.6 0 +2 89 33.2 21.6 18.8 26.4 0 +2 90 27.6 22 23.2 27.2 0 +2 91 29.6 21.2 19.6 29.6 0 +2 92 29.6 18.8 25.6 26 0 +2 93 28 22.4 22.4 27.2 0 +2 94 24.4 24.4 22 29.2 0 +2 95 25.6 21.2 21.2 32 0 +2 96 31.2 20.8 21.6 26.4 0 +2 97 27.6 21.6 22.4 28.4 0 +2 98 28.4 24 21.6 26 0 +2 99 27.6 21.6 21.2 29.6 0 +2 100 23.2 20 21.6 35.2 0 +2 101 28 22.4 20 29.6 0 +2 102 26.4 28.8 20 24.8 0 + + diff --git a/test/bamFile.collectMultipleMetrics.txt.insert_size_histogram.pdf b/test/bamFile.collectMultipleMetrics.txt.insert_size_histogram.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0324c409c6c954f0854aa22f4d79b00b7039143f GIT binary patch literal 7280 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 K^e0ZLm;e9?ZCeol literal 0 HcmV?d00001 diff --git a/test/log.txt b/test/log.txt new file mode 100644 index 0000000..3d76534 --- /dev/null +++ b/test/log.txt @@ -0,0 +1,8 @@ +{ + "QualityDistributionmetrics": null, + "QualityByCyclemetricsTwo": null, + "InsertSizemetrics": null, + "AlignmentSummarymetrics": null, + "QualityByCyclemetrics": null, + "QualityDistributionmetricsTwo": null +} From 4a227c04d231b0bbc0b729670be5d4c177e48606 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Fri, 16 Mar 2018 16:58:01 +0100 Subject: [PATCH 18/31] workflow now outputs .bam file from picardMarkDuplicates step --- CWL/workflows/GAL.cwl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CWL/workflows/GAL.cwl b/CWL/workflows/GAL.cwl index 9511d37..fe5c90c 100644 --- a/CWL/workflows/GAL.cwl +++ b/CWL/workflows/GAL.cwl @@ -22,6 +22,10 @@ outputs: type: File[] outputSource: picardCollectMultipleMetrics/summaryFiles + bamFileMarkDuplicates: + type: File + outputSource: picardMarkDuplicates/OUTPUT_output + # AlignmentSummarymetrics: # type: File # outputSource: picardCollectMultipleMetrics/AlignmentSummarymetrics From 1eb063633b9f47c866fc7d19b5740478d5859d05 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Mon, 19 Mar 2018 18:05:57 +0100 Subject: [PATCH 19/31] started dividing GAL workflow into two parts for parallelization --- CWL/workflows/GAL-part1.cwl | 125 ++++++++++++++++++++++++++++++++++++ CWL/workflows/GAL-part2.cwl | 78 ++++++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 CWL/workflows/GAL-part1.cwl create mode 100644 CWL/workflows/GAL-part2.cwl diff --git a/CWL/workflows/GAL-part1.cwl b/CWL/workflows/GAL-part1.cwl new file mode 100644 index 0000000..ebb0905 --- /dev/null +++ b/CWL/workflows/GAL-part1.cwl @@ -0,0 +1,125 @@ +#!/usr/bin/env cwl-runner + +cwlVersion: v1.0 + +class: Workflow + +requirements: + - class: StepInputExpressionRequirement + - class: InlineJavascriptRequirement + - class: MultipleInputFeatureRequirement + - class: SubworkflowFeatureRequirement + +inputs: + fq1file: File + fq2file: File + reference_genome: File + outputName: string + prefix: string + +outputs: + + logFiles: + type: File + outputSource: samtoolsView/bamFile + +# AlignmentSummarymetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/AlignmentSummarymetrics + +# InsertSizemetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/InsertSizemetrics + +# QualityByCyclemetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/QualityByCyclemetrics + +# QualityDistributionmetrics: +# type: File +# outputSource: picardCollectMultipleMetrics/QualityDistributionmetrics + +# QualityByCyclemetricsTwo: +# type: File +# outputSource: picardCollectMultipleMetrics/QualityByCyclemetricsTwo + +# QualityDistributionmetricsTwo: +# type: File + +steps: + bwaAln1: + run: ../tools/bioconda-tool-bwa-aln.yml + in: + input: fq1file + name: outputName + outputName: + valueFrom: $( inputs.name + "_R1_Aln" ) + prefix: prefix + threads: + valueFrom: $( 12 ) + minQual: + valueFrom: $( 20 ) + out: + [alnFile] + + bwaAln2: + run: ../tools/bioconda-tool-bwa-aln.yml + in: + input: fq2file + name: outputName + outputName: + valueFrom: $( inputs.name + "_R2_Aln" ) + prefix: prefix + threads: + valueFrom: $( 12 ) + minQual: + valueFrom: $( 20 ) + out: + [alnFile] + + bwaSampe: + run: ../tools/bioconda-tool-bwa-sampe.yml + in: + aln1: bwaAln1/alnFile + aln2: bwaAln2/alnFile + fq1: fq1file + fq2: fq2file + prefix: prefix + outputName: outputName + preloadIndex: + valueFrom: $( 1==1 ) + maximumInsertSize: + valueFrom: $( 1000 ) + readGroupHeaderLine: + valueFrom: $( '@RG\tID:foo\tSM:bar' ) + src: [bwaAln1/alnFile, bwaAln2/alnFile] + out: + [sampeFile] + + samtoolsView: + run: ../tools/bioconda-tool-samtools-view.cwl + in: + input: bwaSampe/sampeFile + outputFileName: + valueFrom: $( inputs.outputName + ".bam") + useNoCompression: + valueFrom: $( 1==1 ) + outBam: + valueFrom: $( 1==1 ) + includeHeader: + valueFrom: $( 1==1 ) + inputFormat: + valueFrom: $( 1==1 ) + src: bwaSampe/sampeFile + out: + [bamFile] + + samtoolsSort: + run: ../tools/bioconda-tool-samtools-sort.cwl + in: + input: samtoolsView/bamFile + name: outputName + outputPrefix: + valueFrom: $( inputs.name + "_sort" ) + src: samtoolsView/bamFile + out: [bamFile] diff --git a/CWL/workflows/GAL-part2.cwl b/CWL/workflows/GAL-part2.cwl new file mode 100644 index 0000000..3f036ac --- /dev/null +++ b/CWL/workflows/GAL-part2.cwl @@ -0,0 +1,78 @@ +#!/usr/bin/env cwl-runner + +cwlVersion "v1.0" + +class: Workflow + +requirements: + - class:StepInputExpressionRequirement + - class: InlineJavascriptRequirement + - class: MultipleInputFeatureRequirement + - class: SubworkflowFeatureRequirement + +inputs: + bamFile: File + +outputs: + logFiles: + type: File[] + outputSource: picardMarkDuplicates/OUTPUT_output + +#requirements: + # - class:StepInputExpressionRequirement + #- class: InlineJavascriptRequirement + # - class: MultipleInputFeatureRequirement + # - class: SubworkflowFeatureRequirement + +steps: + picardMarkDuplicates: + run: ../tools/bioconda-tool-picard-MarkDuplicates.cwl + in: + INPUT: samtoolsSort/bamFile + name: outputName + OUTPUT: + valueFrom: $( inputs.name + ".bam" ) + METRICS_FILE: + valueFrom: $( inputs.name + ".PicardMarkDupmetrics.txt" ) + VALIDATION_STRINGENCY: + valueFrom: SILENT + REMOVE_DUPLICATES: + valueFrom: $( 1==0 ) + ASSUME_SORTED: + valueFrom: $( 1==1 ) + CREATE_INDEX: + valueFrom: $( 1==1 ) + MAX_RECORDS_IN_RAM: + valueFrom: $( 12500000 ) + src: samtoolsSort/bamFile + out: [METRICS_FILE_output, OUTPUT_output] + + samtoolsFlagstat: + run: ../tools/bioconda-tool-samtools-flagstat.cwl + in: + input: picardMarkDuplicates/OUTPUT_output + name: outputName + outputName: + valueFrom: $( inputs.name + ".flagstat.txt") + src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] + out: + - flagstat + + picardCollectMultipleMetrics: + run: ../tools/bioconda-tool-picard-collectMultipleMetrics.cwl + in: + INPUT: picardMarkDuplicates/OUTPUT_output + name: outputName + OUTPUT: + valueFrom: $( inputs.name + ".collectMultipleMetrics.txt") + REFERNCE_SEQUENCE: + valueFrom: reference_genome + ASSUME_SORTED: + valueFrom: $( 1==1 ) + VALIDATION_STRINGENCY: + valueFrom: SILENT + PROGRAMsToRun: + valueFrom: $( ["CollectAlignmentSummaryMetrics", "CollectInsertSizeMetrics", "QualityScoreDistribution", "MeanQualityByCycle"] ) + src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] + out: + - summaryFiles From 9ca00cbc4223e2777e561135d4399affa7867b0f Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Tue, 20 Mar 2018 11:29:24 +0100 Subject: [PATCH 20/31] separated parts of GAL workflow (part 1 and part 2) are now validated --- CWL/workflows/GAL-part2.cwl | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/CWL/workflows/GAL-part2.cwl b/CWL/workflows/GAL-part2.cwl index 3f036ac..15d6707 100644 --- a/CWL/workflows/GAL-part2.cwl +++ b/CWL/workflows/GAL-part2.cwl @@ -1,34 +1,28 @@ #!/usr/bin/env cwl-runner -cwlVersion "v1.0" +cwlVersion: v1.0 class: Workflow requirements: - - class:StepInputExpressionRequirement - - class: InlineJavascriptRequirement - - class: MultipleInputFeatureRequirement - - class: SubworkflowFeatureRequirement +- class: StepInputExpressionRequirement +- class: InlineJavascriptRequirement +- class: MultipleInputFeatureRequirement inputs: bamFile: File + outputName: string outputs: logFiles: type: File[] - outputSource: picardMarkDuplicates/OUTPUT_output - -#requirements: - # - class:StepInputExpressionRequirement - #- class: InlineJavascriptRequirement - # - class: MultipleInputFeatureRequirement - # - class: SubworkflowFeatureRequirement + outputSource: picardCollectMultipleMetrics/summaryFiles steps: picardMarkDuplicates: run: ../tools/bioconda-tool-picard-MarkDuplicates.cwl in: - INPUT: samtoolsSort/bamFile + INPUT: bamFile name: outputName OUTPUT: valueFrom: $( inputs.name + ".bam" ) @@ -44,7 +38,7 @@ steps: valueFrom: $( 1==1 ) MAX_RECORDS_IN_RAM: valueFrom: $( 12500000 ) - src: samtoolsSort/bamFile + src: bamFile out: [METRICS_FILE_output, OUTPUT_output] samtoolsFlagstat: From 50a7ba9477b834243bb80f2d7209b92251d7bb66 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Tue, 20 Mar 2018 15:45:31 +0100 Subject: [PATCH 21/31] started parallel workflow for GAL workflow --- CWL/workflows/GAL-parallel.cwl | 48 ++++++++++++++++++++++++++++++++++ CWL/workflows/GAL-part1.cwl | 25 +----------------- CWL/workflows/GAL-part2.cwl | 1 + 3 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 CWL/workflows/GAL-parallel.cwl diff --git a/CWL/workflows/GAL-parallel.cwl b/CWL/workflows/GAL-parallel.cwl new file mode 100644 index 0000000..31590df --- /dev/null +++ b/CWL/workflows/GAL-parallel.cwl @@ -0,0 +1,48 @@ +#!/usr/bin/env cwl-runner + +cwlVersion: v1.0 + +class: Workflow + +requirements: + - class: StepInputExpressionRequirement + - class: InlineJavascriptRequirement + - class: MultipleInputFeatureRequirement + - class: SubworkflowFeatureRequirement + +inputs: + fq1file: File + fq2file: File + reference_genome: File + outputName: string + prefix: string + bamFile: File + +outputs: + logFiles: + type: File[] + outputSource: GAL-part2 + +steps: + GAL-part1: + run: GAL-part1.cwl + in: + fq1file: fq1file + fq2file: fq2file + reference_genome: reference_genome + outputName: outputName + prefix: prefix + out: [samtoolsViewBamFile] + + GAL-part2: + requirements: + - class: InitialWorkDirRequirement + listing: + - entryname: NoOutput + entry: | + Whatever should be in the file + run: GAL-part2.cwl + in: + outputName: outputName + bamFile: GAL-part1/samtoolsViewBamFile + out: [logFiles] diff --git a/CWL/workflows/GAL-part1.cwl b/CWL/workflows/GAL-part1.cwl index ebb0905..d36377f 100644 --- a/CWL/workflows/GAL-part1.cwl +++ b/CWL/workflows/GAL-part1.cwl @@ -19,33 +19,10 @@ inputs: outputs: - logFiles: + samtoolsViewBamFile: type: File outputSource: samtoolsView/bamFile -# AlignmentSummarymetrics: -# type: File -# outputSource: picardCollectMultipleMetrics/AlignmentSummarymetrics - -# InsertSizemetrics: -# type: File -# outputSource: picardCollectMultipleMetrics/InsertSizemetrics - -# QualityByCyclemetrics: -# type: File -# outputSource: picardCollectMultipleMetrics/QualityByCyclemetrics - -# QualityDistributionmetrics: -# type: File -# outputSource: picardCollectMultipleMetrics/QualityDistributionmetrics - -# QualityByCyclemetricsTwo: -# type: File -# outputSource: picardCollectMultipleMetrics/QualityByCyclemetricsTwo - -# QualityDistributionmetricsTwo: -# type: File - steps: bwaAln1: run: ../tools/bioconda-tool-bwa-aln.yml diff --git a/CWL/workflows/GAL-part2.cwl b/CWL/workflows/GAL-part2.cwl index 15d6707..84a389c 100644 --- a/CWL/workflows/GAL-part2.cwl +++ b/CWL/workflows/GAL-part2.cwl @@ -8,6 +8,7 @@ requirements: - class: StepInputExpressionRequirement - class: InlineJavascriptRequirement - class: MultipleInputFeatureRequirement +- class: SubworkflowFeatureRequirement inputs: bamFile: File From 0dd9c76f5f7d38816037ada627fcf17cb430d05d Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Thu, 22 Mar 2018 14:17:10 +0100 Subject: [PATCH 22/31] first draft of parallel workflow for GAL is now vailid --- CWL/workflows/GAL-parallel.cwl | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/CWL/workflows/GAL-parallel.cwl b/CWL/workflows/GAL-parallel.cwl index 31590df..d40b608 100644 --- a/CWL/workflows/GAL-parallel.cwl +++ b/CWL/workflows/GAL-parallel.cwl @@ -5,28 +5,28 @@ cwlVersion: v1.0 class: Workflow requirements: - - class: StepInputExpressionRequirement - - class: InlineJavascriptRequirement - - class: MultipleInputFeatureRequirement - - class: SubworkflowFeatureRequirement + - class: StepInputExpressionRequirement + - class: InlineJavascriptRequirement + - class: MultipleInputFeatureRequirement + - class: SubworkflowFeatureRequirement -inputs: +inputs: fq1file: File fq2file: File reference_genome: File outputName: string prefix: string bamFile: File - + outputs: - logFiles: + logFiles: type: File[] - outputSource: GAL-part2 + outputSource: GAL-part2/logFiles -steps: +steps: GAL-part1: run: GAL-part1.cwl - in: + in: fq1file: fq1file fq2file: fq2file reference_genome: reference_genome @@ -35,12 +35,12 @@ steps: out: [samtoolsViewBamFile] GAL-part2: - requirements: - - class: InitialWorkDirRequirement - listing: - - entryname: NoOutput - entry: | - Whatever should be in the file + requirements: + - class: InitialWorkDirRequirement + listing: + - entryname: inputs.outputName + "_sort" + entry: | + "Hallo Welt!" run: GAL-part2.cwl in: outputName: outputName From 2d36f42dcc158d1a1b05242419657c3fc764af89 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Thu, 22 Mar 2018 16:54:24 +0100 Subject: [PATCH 23/31] started scattering the GAL workflow --- CWL/workflows/GAL-parallel.cwl | 79 +++++++++++++++++++++++------- CWL/workflows/GAL-part1.cwl | 4 +- CWL/workflows/GAL-workflow-job.yml | 12 +++-- 3 files changed, 72 insertions(+), 23 deletions(-) diff --git a/CWL/workflows/GAL-parallel.cwl b/CWL/workflows/GAL-parallel.cwl index d40b608..99be240 100644 --- a/CWL/workflows/GAL-parallel.cwl +++ b/CWL/workflows/GAL-parallel.cwl @@ -9,40 +9,85 @@ requirements: - class: InlineJavascriptRequirement - class: MultipleInputFeatureRequirement - class: SubworkflowFeatureRequirement + - class: ScatterFeatureRequirement inputs: - fq1file: File - fq2file: File + fq1file: File[] + fq2file: File[] reference_genome: File outputName: string prefix: string - bamFile: File outputs: logFiles: type: File[] - outputSource: GAL-part2/logFiles + outputSource: picardCollectMultipleMetrics/summaryFiles steps: GAL-part1: run: GAL-part1.cwl + scatter: + - fq1file + - fq2file + scatterMethod: dotproduct in: fq1file: fq1file fq2file: fq2file reference_genome: reference_genome outputName: outputName prefix: prefix - out: [samtoolsViewBamFile] - - GAL-part2: - requirements: - - class: InitialWorkDirRequirement - listing: - - entryname: inputs.outputName + "_sort" - entry: | - "Hallo Welt!" - run: GAL-part2.cwl + out: + - samtoolsSortBamfile[] + + picardMarkDuplicates: + run: ../tools/bioconda-tool-picard-MarkDuplicates.cwl in: - outputName: outputName - bamFile: GAL-part1/samtoolsViewBamFile - out: [logFiles] + INPUT: GAL-part1/samtoolsSortBamFile[] + name: outputName + OUTPUT: + valueFrom: $( inputs.name + ".bam" ) + METRICS_FILE: + valueFrom: $( inputs.name + ".PicardMarkDupmetrics.txt" ) + VALIDATION_STRINGENCY: + valueFrom: SILENT + REMOVE_DUPLICATES: + valueFrom: $( 1==0 ) + ASSUME_SORTED: + valueFrom: $( 1==1 ) + CREATE_INDEX: + valueFrom: $( 1==1 ) + MAX_RECORDS_IN_RAM: + valueFrom: $( 12500000 ) + src: + - GAL-part1/samtoolsSortBamFile[] + out: [METRICS_FILE_output, OUTPUT_output] + + samtoolsFlagstat: + run: ../tools/bioconda-tool-samtools-flagstat.cwl + in: + input: picardMarkDuplicates/OUTPUT_output + name: outputName + outputName: + valueFrom: $( inputs.name + ".flagstat.txt") + src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] + out: + - flagstat + + picardCollectMultipleMetrics: + run: ../tools/bioconda-tool-picard-collectMultipleMetrics.cwl + in: + INPUT: picardMarkDuplicates/OUTPUT_output + name: outputName + OUTPUT: + valueFrom: $( inputs.name + ".collectMultipleMetrics.txt") + REFERNCE_SEQUENCE: + valueFrom: reference_genome + ASSUME_SORTED: + valueFrom: $( 1==1 ) + VALIDATION_STRINGENCY: + valueFrom: SILENT + PROGRAMsToRun: + valueFrom: $( ["CollectAlignmentSummaryMetrics", "CollectInsertSizeMetrics", "QualityScoreDistribution", "MeanQualityByCycle"] ) + src: [picardMarkDuplicates/METRICS_FILE_output, picardMarkDuplicates/OUTPUT_output] + out: + - summaryFiles diff --git a/CWL/workflows/GAL-part1.cwl b/CWL/workflows/GAL-part1.cwl index d36377f..73596b4 100644 --- a/CWL/workflows/GAL-part1.cwl +++ b/CWL/workflows/GAL-part1.cwl @@ -19,9 +19,9 @@ inputs: outputs: - samtoolsViewBamFile: + samtoolsSortBamFile: type: File - outputSource: samtoolsView/bamFile + outputSource: samtoolsSort/bamFile steps: bwaAln1: diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml index 62cca11..139b08b 100644 --- a/CWL/workflows/GAL-workflow-job.yml +++ b/CWL/workflows/GAL-workflow-job.yml @@ -1,10 +1,14 @@ fq1file: - class: File - path: file_R1.fastq.gz + - class: File + path: file_R1.fastq.gz + - class: File + path: file_R1.fastq.gz fq2file: - class: File - path: file_R2.fastq.gz + - class: File + path: file_R2.fastq.gz + - class: File + path: file_R2.fastq.gz reference_genome: class: File From 7f1c551bba2c4c51d44d0577b12f41dc70b7cd80 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Fri, 23 Mar 2018 09:30:42 +0100 Subject: [PATCH 24/31] parallel workflow now valid and running, but with error in PicardMarkDuplicates --- CWL/workflows/GAL-parallel.cwl | 6 +++--- CWL/workflows/GAL-part1.cwl | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CWL/workflows/GAL-parallel.cwl b/CWL/workflows/GAL-parallel.cwl index 99be240..7b1b9fd 100644 --- a/CWL/workflows/GAL-parallel.cwl +++ b/CWL/workflows/GAL-parallel.cwl @@ -37,12 +37,12 @@ steps: outputName: outputName prefix: prefix out: - - samtoolsSortBamfile[] + - samtoolsViewBamFile picardMarkDuplicates: run: ../tools/bioconda-tool-picard-MarkDuplicates.cwl in: - INPUT: GAL-part1/samtoolsSortBamFile[] + INPUT: GAL-part1/samtoolsViewBamFile name: outputName OUTPUT: valueFrom: $( inputs.name + ".bam" ) @@ -59,7 +59,7 @@ steps: MAX_RECORDS_IN_RAM: valueFrom: $( 12500000 ) src: - - GAL-part1/samtoolsSortBamFile[] + - GAL-part1/samtoolsViewBamFile out: [METRICS_FILE_output, OUTPUT_output] samtoolsFlagstat: diff --git a/CWL/workflows/GAL-part1.cwl b/CWL/workflows/GAL-part1.cwl index 73596b4..d36377f 100644 --- a/CWL/workflows/GAL-part1.cwl +++ b/CWL/workflows/GAL-part1.cwl @@ -19,9 +19,9 @@ inputs: outputs: - samtoolsSortBamFile: + samtoolsViewBamFile: type: File - outputSource: samtoolsSort/bamFile + outputSource: samtoolsView/bamFile steps: bwaAln1: From a00f5370ecc4bfa91262343744cf0c78ed9bb501 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Fri, 23 Mar 2018 15:49:05 +0100 Subject: [PATCH 25/31] parallel workflow for GAL is now running for sample data --- CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl | 10 ++++++---- CWL/workflows/GAL-parallel.cwl | 6 +++--- CWL/workflows/GAL-part1.cwl | 4 ++-- CWL/workflows/GAL-workflow-job.yml | 4 ++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl b/CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl index 6bcc6f6..f0539d3 100644 --- a/CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl +++ b/CWL/tools/bioconda-tool-picard-MarkDuplicates.cwl @@ -150,14 +150,16 @@ inputs: INPUT: inputBinding: position: 5 - prefix: "INPUT=" - separate: false type: - - File +# - type: File +# inputBinding: +# prefix: "INPUT=" +# separate: false - type: array items: File inputBinding: - itemSeparator: " INPUT=" + prefix: "INPUT=" + separate: false doc: | One or more input SAM or BAM files to analyze. Must be coordinate sorted. Default value: null. This option may be specified 0 or more times. diff --git a/CWL/workflows/GAL-parallel.cwl b/CWL/workflows/GAL-parallel.cwl index 7b1b9fd..cd922b9 100644 --- a/CWL/workflows/GAL-parallel.cwl +++ b/CWL/workflows/GAL-parallel.cwl @@ -37,12 +37,12 @@ steps: outputName: outputName prefix: prefix out: - - samtoolsViewBamFile + - samtoolsSortBamFile picardMarkDuplicates: run: ../tools/bioconda-tool-picard-MarkDuplicates.cwl in: - INPUT: GAL-part1/samtoolsViewBamFile + INPUT: GAL-part1/samtoolsSortBamFile name: outputName OUTPUT: valueFrom: $( inputs.name + ".bam" ) @@ -59,7 +59,7 @@ steps: MAX_RECORDS_IN_RAM: valueFrom: $( 12500000 ) src: - - GAL-part1/samtoolsViewBamFile + - GAL-part1/samtoolsSortBamFile out: [METRICS_FILE_output, OUTPUT_output] samtoolsFlagstat: diff --git a/CWL/workflows/GAL-part1.cwl b/CWL/workflows/GAL-part1.cwl index d36377f..73596b4 100644 --- a/CWL/workflows/GAL-part1.cwl +++ b/CWL/workflows/GAL-part1.cwl @@ -19,9 +19,9 @@ inputs: outputs: - samtoolsViewBamFile: + samtoolsSortBamFile: type: File - outputSource: samtoolsView/bamFile + outputSource: samtoolsSort/bamFile steps: bwaAln1: diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml index 139b08b..1791f4b 100644 --- a/CWL/workflows/GAL-workflow-job.yml +++ b/CWL/workflows/GAL-workflow-job.yml @@ -2,13 +2,13 @@ fq1file: - class: File path: file_R1.fastq.gz - class: File - path: file_R1.fastq.gz + path: file2_R1.fastq.gz fq2file: - class: File path: file_R2.fastq.gz - class: File - path: file_R2.fastq.gz + path: file2_R2.fastq.gz reference_genome: class: File From 24384900fffe392b3be07093ea8316d3519b5421 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Fri, 23 Mar 2018 15:54:00 +0100 Subject: [PATCH 26/31] parallel worflow now outputs bam-File from Picard-MarkDuplicates step --- CWL/workflows/GAL-parallel.cwl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CWL/workflows/GAL-parallel.cwl b/CWL/workflows/GAL-parallel.cwl index cd922b9..5a6c34e 100644 --- a/CWL/workflows/GAL-parallel.cwl +++ b/CWL/workflows/GAL-parallel.cwl @@ -23,6 +23,10 @@ outputs: type: File[] outputSource: picardCollectMultipleMetrics/summaryFiles + markDuplicatesBamFile: + type: File + outputSource: picardMarkDuplicates/OUTPUT_output + steps: GAL-part1: run: GAL-part1.cwl From 3ad0f716ceb74462a0ad9b4cdf8e3c797dcd4a06 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Fri, 23 Mar 2018 16:47:52 +0100 Subject: [PATCH 27/31] secondaryFiles-Option now in bwa-aln tool --- CWL/tools/bioconda-tool-bwa-aln.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CWL/tools/bioconda-tool-bwa-aln.yml b/CWL/tools/bioconda-tool-bwa-aln.yml index 5412e69..7023f4a 100755 --- a/CWL/tools/bioconda-tool-bwa-aln.yml +++ b/CWL/tools/bioconda-tool-bwa-aln.yml @@ -33,7 +33,13 @@ outputs: inputs: prefix: - type: string + type: File + secondaryFiles: + - ".amb" + - ".ann" + - ".bwt" + - ".pac" + - ".sa" doc: | reference prefix inputBinding: From 8d558eb540a277be2bfd36933abd82ca3c367913 Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Mon, 26 Mar 2018 09:37:20 +0200 Subject: [PATCH 28/31] - changed tool for bwa sampe to allow usage of secondary files - GAL-workflow now works with secondary files --- CWL/tools/bioconda-tool-bwa-sampe.yml | 8 +++++++- CWL/workflows/GAL-parallel.cwl | 8 +++++++- CWL/workflows/GAL-part1.cwl | 8 +++++++- CWL/workflows/GAL-workflow-job.yml | 4 +++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/CWL/tools/bioconda-tool-bwa-sampe.yml b/CWL/tools/bioconda-tool-bwa-sampe.yml index 7b23bc1..e30f832 100644 --- a/CWL/tools/bioconda-tool-bwa-sampe.yml +++ b/CWL/tools/bioconda-tool-bwa-sampe.yml @@ -35,7 +35,13 @@ outputs: inputs: prefix: - type: string + type: File + secondaryFiles: + - ".amb" + - ".ann" + - ".bwt" + - ".pac" + - ".sa" doc: | reference prefix inputBinding: diff --git a/CWL/workflows/GAL-parallel.cwl b/CWL/workflows/GAL-parallel.cwl index 5a6c34e..d7776d0 100644 --- a/CWL/workflows/GAL-parallel.cwl +++ b/CWL/workflows/GAL-parallel.cwl @@ -16,7 +16,13 @@ inputs: fq2file: File[] reference_genome: File outputName: string - prefix: string + prefix: File + #secondaryFiles: + # - ".amb" + # - ".ann" + # - ".bwt" + # - ".pac" + # - ".sa" outputs: logFiles: diff --git a/CWL/workflows/GAL-part1.cwl b/CWL/workflows/GAL-part1.cwl index 73596b4..3d5e3b3 100644 --- a/CWL/workflows/GAL-part1.cwl +++ b/CWL/workflows/GAL-part1.cwl @@ -15,7 +15,13 @@ inputs: fq2file: File reference_genome: File outputName: string - prefix: string + prefix: File + # secondaryFiles: + # - ".amb" + # - ".ann" + # - ".bwt" + # - ".pac" + # - ".sa" outputs: diff --git a/CWL/workflows/GAL-workflow-job.yml b/CWL/workflows/GAL-workflow-job.yml index 1791f4b..2989c36 100644 --- a/CWL/workflows/GAL-workflow-job.yml +++ b/CWL/workflows/GAL-workflow-job.yml @@ -16,4 +16,6 @@ reference_genome: outputName: "bamFile" -prefix: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa +prefix: + class: File + path: /projects/student/Wiebke/reference/hs37d5_PhiX_Lambda.fa From 5ac805f67eb394ecc410c923e331e504df33e90a Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Mon, 26 Mar 2018 16:59:14 +0200 Subject: [PATCH 29/31] modified bwa-index tool to create secondaryFiles as output, testing yet needs to be completed --- CWL/tools/bioconda-tool-bwa-index.cwl | 123 ++++++++++++++------------ 1 file changed, 65 insertions(+), 58 deletions(-) diff --git a/CWL/tools/bioconda-tool-bwa-index.cwl b/CWL/tools/bioconda-tool-bwa-index.cwl index 04226f4..a57ba07 100755 --- a/CWL/tools/bioconda-tool-bwa-index.cwl +++ b/CWL/tools/bioconda-tool-bwa-index.cwl @@ -62,64 +62,71 @@ inputs: outputs: - id: output - type: { type: array, items: File } - outputBinding: - glob: - - ${ - if (inputs.p) { - return inputs.p + ".amb" - } else { - if (inputs._6 == true) { - return inputs.input.path + ".64.amb" - } else { - return inputs.input.path + ".amb" - } - } - } - - ${ - if (inputs.p) { - return inputs.p + ".ann" - } else { - if (inputs._6 == true) { - return inputs.input.path + ".64.ann" - } else { - return inputs.input.path + ".ann" - } - } - } - - ${ - if (inputs.p) { - return inputs.p + ".bwt" - } else { - if (inputs._6 == true) { - return inputs.input.path + ".64.bwt" - } else { - return inputs.input.path + ".bwt" - } - } - } - - ${ - if (inputs.p) { - return inputs.p + ".pac" - } else { - if (inputs._6 == true) { - return inputs.input.path + ".64.pac" - } else { - return inputs.input.path + ".pac" - } - } - } - - ${ - if (inputs.p) { - return inputs.p + ".sa" - } else { - if (inputs._6 == true) { - return inputs.input.path + ".64.sa" - } else { - return inputs.input.path + ".sa" - } - } - } + type: File + secondaryFiles: + - ".amb" + - ".ann" + - ".bwt" + - ".pac" + - ".sa" + # type: { type: array, items: File } + # outputBinding: + # glob: + # - ${ + # if (inputs.p) { + # return inputs.p + ".amb" + # } else { + # if (inputs._6 == true) { + # return inputs.input.path + ".64.amb" + # } else { + # return inputs.input.path + ".amb" + # } + # } + # } + # - ${ + # if (inputs.p) { + # return inputs.p + ".ann" + # } else { + # if (inputs._6 == true) { + # return inputs.input.path + ".64.ann" + # } else { + # return inputs.input.path + ".ann" + # } + # } + # } + # - ${ + # if (inputs.p) { + # return inputs.p + ".bwt" + # } else { + # if (inputs._6 == true) { + # return inputs.input.path + ".64.bwt" + # } else { + # return inputs.input.path + ".bwt" + # } + # } + # } + # - ${ + # if (inputs.p) { + # return inputs.p + ".pac" + # } else { + # if (inputs._6 == true) { + # return inputs.input.path + ".64.pac" + # } else { + # return inputs.input.path + ".pac" + # } + # } + # } + # - ${ + # if (inputs.p) { + # return inputs.p + ".sa" + # } else { + # if (inputs._6 == true) { + # return inputs.input.path + ".64.sa" + # } else { + # return inputs.input.path + ".sa" + # } + # } + # } baseCommand: - bwa From 611f6b4231b90c1804dd00542b2dedc525f41efc Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Tue, 27 Mar 2018 16:37:04 +0200 Subject: [PATCH 30/31] bwa-index is now running without error, but still without output --- CWL/tools/bioconda-tool-bwa-index.cwl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CWL/tools/bioconda-tool-bwa-index.cwl b/CWL/tools/bioconda-tool-bwa-index.cwl index a57ba07..3f4acbc 100755 --- a/CWL/tools/bioconda-tool-bwa-index.cwl +++ b/CWL/tools/bioconda-tool-bwa-index.cwl @@ -61,8 +61,9 @@ inputs: prefix: "-6" outputs: - - id: output - type: File + # - id: output + index: + type: File[] secondaryFiles: - ".amb" - ".ann" From cce084ecf6f12d34fbc42670f9ab9e57d9a3f51f Mon Sep 17 00:00:00 2001 From: WiebkeSchmitt Date: Wed, 28 Mar 2018 17:30:10 +0200 Subject: [PATCH 31/31] bwa index tool is debugged further, but still not running as desired --- CWL/tools/bioconda-tool-bwa-index.cwl | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/CWL/tools/bioconda-tool-bwa-index.cwl b/CWL/tools/bioconda-tool-bwa-index.cwl index 3f4acbc..a9dc355 100755 --- a/CWL/tools/bioconda-tool-bwa-index.cwl +++ b/CWL/tools/bioconda-tool-bwa-index.cwl @@ -12,6 +12,8 @@ s:author: requirements: - class: InlineJavascriptRequirement + - class: InitialWorkDirRequirement + listing: input hints: - class: ResourceRequirement @@ -62,14 +64,16 @@ inputs: outputs: # - id: output - index: - type: File[] - secondaryFiles: - - ".amb" - - ".ann" - - ".bwt" - - ".pac" - - ".sa" +# index: +# type: File +# outputBinding: +# glob: $( inputs.input ) +# secondaryFiles: +# - ".amb" +# - ".ann" +# - ".bwt" +# - ".pac" +# - ".sa" # type: { type: array, items: File } # outputBinding: # glob: