diff --git a/.gitattributes b/.gitattributes index 07a4a56143d25a23ce6ab0320d147c3096caa5f6..574339b69b82d0008d4b3ffd2e7398ad5d82ed6d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -32,4 +32,16 @@ runs/kallisto_sleuth/sleuth_dge.csv filter=lfs diff=lfs merge=lfs -text studies/TalinumGenomeDraft/resources/Talinum.gm.CDS.nt.fa filter=lfs diff=lfs merge=lfs -text runs/sleuth/kallisto_sleuthObject.RData filter=lfs diff=lfs merge=lfs -text runs/sleuth/out/kallisto_sleuthObject.RData filter=lfs diff=lfs merge=lfs -text -runs/kallisto/kallisto_results/** filter=lfs diff=lfs merge=lfs -text \ No newline at end of file +runs/kallisto/kallisto_results/** filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.zip filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.html filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.html filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.html filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.zip filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.html filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.zip filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.html filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.zip filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.zip filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.html filter=lfs diff=lfs merge=lfs -text +runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.zip filter=lfs diff=lfs merge=lfs -text diff --git a/assays/Talinum_RNASeq_minimal/dataset/.gitkeep b/assays/Talinum_RNASeq_minimal/dataset/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.html b/runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.html new file mode 100644 index 0000000000000000000000000000000000000000..51bd550d5177f5d8001e285b9e3b186f22a7206a --- /dev/null +++ b/runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:496b053b05cdbff7213e1ce93e168c9aae01830b875ba4f140f0445add3a4c9d +size 608772 diff --git a/runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.zip b/runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.zip new file mode 100644 index 0000000000000000000000000000000000000000..9cf6ee9b211654b1618a018cfd9d8328430bb381 --- /dev/null +++ b/runs/fastqc/results/DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:453098e0f3046efe2317023867e5859e92ee91b254da02f4c84c6a569a12c358 +size 423523 diff --git a/runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.html b/runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.html new file mode 100644 index 0000000000000000000000000000000000000000..141b06f5d05da67b23731dd73f70df429c516163 --- /dev/null +++ b/runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d20c29bba7d056d66f6a6516c4d1044cdb26184971499eb8814de46ebcbaf6c +size 610809 diff --git a/runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.zip b/runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.zip new file mode 100644 index 0000000000000000000000000000000000000000..3424223ad1bc8913bfc56dfbc320daeea46c538e --- /dev/null +++ b/runs/fastqc/results/DB_099_CAMMD_CTTGTA_L001_R1_001_fastqc.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c51133d51ff8d98ddaf9df5373e5dc832a66de48b603fc1fca788b75fc9314f8 +size 425882 diff --git a/runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.html b/runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.html new file mode 100644 index 0000000000000000000000000000000000000000..1bbad97077bfab908d6766c70e34915a5988f5e7 --- /dev/null +++ b/runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:462d62cb603020068aff4606f26b62d818d2bfb56eb1894dc993638a5763c7ae +size 611722 diff --git a/runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.zip b/runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.zip new file mode 100644 index 0000000000000000000000000000000000000000..3ebe7614ff4e82ecc20df2d88ff803c94f888c8e --- /dev/null +++ b/runs/fastqc/results/DB_103_CAMMD_AGTCAA_L001_R1_001_fastqc.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e7d78a994d307c6a57adbb4b41d22207d0ae7ebf2ace568f9fbe70aa606da03 +size 424835 diff --git a/runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.html b/runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.html new file mode 100644 index 0000000000000000000000000000000000000000..25b6a558790028b0b6654d8cc85efe226691ea9f --- /dev/null +++ b/runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e689e4f749d29fff8ec52ada03471255579e43f04e49191bb8b19896348e576 +size 608061 diff --git a/runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.zip b/runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.zip new file mode 100644 index 0000000000000000000000000000000000000000..545e4bacd602bfbef83d7df68ac96811c098ff2b --- /dev/null +++ b/runs/fastqc/results/DB_161_reC3MD_GTCCGC_L001_R1_001_fastqc.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1772958d490994dabde1091c2506c634b78d12698027b37e9d8e15d20a72fbc1 +size 420951 diff --git a/runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.html b/runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.html new file mode 100644 index 0000000000000000000000000000000000000000..9df68457865e1dd583b6ae2c5a6b2b18536feb53 --- /dev/null +++ b/runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f54fd0ae336e95fa780a9b0fb097beb1f50cdbbc24610d6247066eba3b0454a +size 610537 diff --git a/runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.zip b/runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.zip new file mode 100644 index 0000000000000000000000000000000000000000..d94d2956abb44ef6071f5d4e888d4fe0396f10fd --- /dev/null +++ b/runs/fastqc/results/DB_163_reC3MD_GTGAAA_L001_R1_001_fastqc.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be44017bdb5956ac2b479115fd26a5f605b493b3224050bb0a0af6deb53786ac +size 424179 diff --git a/runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.html b/runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.html new file mode 100644 index 0000000000000000000000000000000000000000..5c6ddb761ce58660638ba16115b6d5dd8823b9b1 --- /dev/null +++ b/runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24474916df5d793336d0806f8ae28754e3ce1c03c3c3979f91a37550f26eb126 +size 609445 diff --git a/runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.zip b/runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.zip new file mode 100644 index 0000000000000000000000000000000000000000..1e9c80dd29f9e25c31b0a5eeb1cae36f5c46e214 --- /dev/null +++ b/runs/fastqc/results/DB_165_re-C3MD_GTGAAA_L002_R1_001_fastqc.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c7efe5eb2d68cb409f26228692e0b0d19da26787a2a3716faafd6f88722fdb0 +size 426039 diff --git a/runs/fastqc/run.cwl b/runs/fastqc/run.cwl new file mode 100644 index 0000000000000000000000000000000000000000..974e99274b8fab4201a548c27fdda57f059544b4 --- /dev/null +++ b/runs/fastqc/run.cwl @@ -0,0 +1,24 @@ +cwlVersion: v1.2 +class: Workflow + +requirements: + SubworkflowFeatureRequirement: {} + ScatterFeatureRequirement: {} + MultipleInputFeatureRequirement: {} + +inputs: + fastq: File[] + finaloutdir: string + +steps: + fastqc: + run: ../../workflows/fastqc/workflow.cwl + in: + fastq: fastq + finaloutdir: finaloutdir + out: [outdir] + +outputs: + outdir: + type: Directory + outputSource: fastqc/outdir \ No newline at end of file diff --git a/runs/fastqc/run.yml b/runs/fastqc/run.yml new file mode 100644 index 0000000000000000000000000000000000000000..d9744cf09a5b541d9497c4831f5a81055fdc996d --- /dev/null +++ b/runs/fastqc/run.yml @@ -0,0 +1,14 @@ +finaloutdir: "results" +fastq: + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_097_CAMMD_CAGATC_L001_R1_001.fastq.gz + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_099_CAMMD_CTTGTA_L001_R1_001.fastq.gz + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_103_CAMMD_AGTCAA_L001_R1_001.fastq.gz + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_161_reC3MD_GTCCGC_L001_R1_001.fastq.gz + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_163_reC3MD_GTGAAA_L001_R1_001.fastq.gz + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_165_re-C3MD_GTGAAA_L002_R1_001.fastq.gz \ No newline at end of file diff --git a/runs/kallisto/run.cwl b/runs/kallisto/run.cwl index 7ab4d83630e9cacda2b7da8c7a9b3ac804c5f12e..3ec2a22fd3d933361182dff470de94caf611a092 100644 --- a/runs/kallisto/run.cwl +++ b/runs/kallisto/run.cwl @@ -4,16 +4,20 @@ class: Workflow requirements: SubworkflowFeatureRequirement: {} + MultipleInputFeatureRequirement: {} inputs: IndexInput: File[] - InputReadsMultipleSamples: - type: + sampleRecord: + type: type: array - items: - type: array - items: File - numUnderscoresFileName: int + items: + type: record + fields: + readsOfOneSample: + type: File[] + sampleName: + type: string? isSingle: boolean FragmentLength: double? StandardDeviation: double? @@ -25,8 +29,7 @@ steps: run: ../../workflows/kallisto/workflow.cwl in: IndexInput: IndexInput - InputReadsMultipleSamples: InputReadsMultipleSamples - numUnderscoresFileName: numUnderscoresFileName + sampleRecord: sampleRecord isSingle: isSingle FragmentLength: FragmentLength StandardDeviation: StandardDeviation diff --git a/runs/kallisto/run.yml b/runs/kallisto/run.yml index 1d147f9882253552f871d417b493cb2cf9ca5c17..541e17004c6844c012e70922d7bc4470a59b8963 100644 --- a/runs/kallisto/run.yml +++ b/runs/kallisto/run.yml @@ -5,44 +5,47 @@ IndexInput: format: edam:format_1929 # FASTA ## Fastq files to be mapped -# The `InputReadsMultipleSamples` looks more complicated than needed -# It's an array of File arrays to generically allow multiple fastq files per sample +# The `readsOfOneSample` looks more complicated than needed +# It's an array of records (each with one or mupltiple files and a sample name) to generically allow multiple fastq files per sample -InputReadsMultipleSamples: - - +sampleRecord: + - readsOfOneSample: - class: File path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_097_CAMMD_CAGATC_L001_R1_001.fastq.gz - format: edam:format_1930 # FASTQ - - + format: edam:format_1930 + sampleName: 'DB_097' + - readsOfOneSample: + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_163_reC3MD_GTGAAA_L001_R1_001.fastq.gz + format: edam:format_1930 + sampleName: 'DB_163' + - readsOfOneSample: - class: File path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_099_CAMMD_CTTGTA_L001_R1_001.fastq.gz - format: edam:format_1930 # FASTQ - # - - # - class: File - # path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_103_CAMMD_AGTCAA_L001_R1_001.fastq.gz - # format: edam:format_1930 # FASTQ - # - - # - class: File - # path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_161_reC3MD_GTCCGC_L001_R1_001.fastq.gz - # format: edam:format_1930 # FASTQ - # - - # - class: File - # path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_163_reC3MD_GTGAAA_L001_R1_001.fastq.gz - # format: edam:format_1930 # FASTQ - # - - # - class: File - # path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_165_re-C3MD_GTGAAA_L002_R1_001.fastq.gz - # format: edam:format_1930 # FASTQ - -numUnderscoresFileName: 2 + format: edam:format_1930 + sampleName: 'DB_099' + - readsOfOneSample: + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_103_CAMMD_AGTCAA_L001_R1_001.fastq.gz + format: edam:format_1930 + sampleName: 'DB_103' + - readsOfOneSample: + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_161_reC3MD_GTCCGC_L001_R1_001.fastq.gz + format: edam:format_1930 + sampleName: 'DB_161' + - readsOfOneSample: + - class: File + path: ../../assays/Talinum_RNASeq_minimal/dataset/DB_165_re-C3MD_GTGAAA_L002_R1_001.fastq.gz + format: edam:format_1930 + sampleName: 'DB_165' ### Kallisto quant Parameters isSingle: true FragmentLength: 200 StandardDeviation: 20 BootstrapSamples: 30 - -resultsFolder: test +resultsFolder: kallisto_results $namespaces: edam: https://edamontology.org/ \ No newline at end of file diff --git a/workflows/fastqc/collectFilesInDir.cwl b/workflows/fastqc/collectFilesInDir.cwl new file mode 100644 index 0000000000000000000000000000000000000000..39f9ff8ae5a33d939136c081a9cd79533972eddc --- /dev/null +++ b/workflows/fastqc/collectFilesInDir.cwl @@ -0,0 +1,20 @@ +cwlVersion: v1.2 +class: ExpressionTool +label: Collect files in a directory +doc: | + Takes Files (e.g. from a workflow step) and yields them in a desired directory. +requirements: + - class: InlineJavascriptRequirement +inputs: + files: File[] + destination: string +expression: | + ${ + return {"outDir": { + "class": "Directory", + "basename": inputs.destination, + "listing": inputs.files + } }; + } +outputs: + outDir: Directory \ No newline at end of file diff --git a/workflows/fastqc/fastqc.cwl b/workflows/fastqc/fastqc.cwl new file mode 100644 index 0000000000000000000000000000000000000000..a2e408db732fa6913af001c6349dda4ac30a116e --- /dev/null +++ b/workflows/fastqc/fastqc.cwl @@ -0,0 +1,48 @@ +#!/usr/bin/env cwl-runner +cwlVersion: v1.2 +class: CommandLineTool + +label: Run fastqc on raw reads in FASTQ format (single or paired end) or aligned reads in BAM. + +doc: | + simplified from: https://github.com/common-workflow-library/bio-cwl-tools/blob/66f620da5b0a11e934a6da83272205a2516bcd91/fastqc/fastqc_1.cwl + + Run fastqc on raw reads in FASTQ format (single or paired end) or aligned reads in BAM. + +hints: + ResourceRequirement: + coresMin: 1 + ramMin: 5000 + DockerRequirement: + dockerPull: quay.io/biocontainers/fastqc:0.11.9--hdfd78af_1 + SoftwareRequirement: + packages: + fastqc: + specs: [ https://identifiers.org/biotools/fastqc ] + version: [ "0.11.9" ] + + +baseCommand: "fastqc" +arguments: + - valueFrom: $(runtime.outdir) + prefix: "-o" + - valueFrom: "--noextract" + +inputs: + fastq: + type: File + inputBinding: + position: 1 + +outputs: + fastqc_zip: + doc: all data e.g. figures + type: File + outputBinding: + glob: "*_fastqc.zip" + fastqc_html: + doc: html report showing results from zip + type: File + outputBinding: + glob: "*_fastqc.html" + diff --git a/workflows/fastqc/workflow.cwl b/workflows/fastqc/workflow.cwl new file mode 100644 index 0000000000000000000000000000000000000000..d80a7eaafc7c6f530d3c43ca21716b005e7d1f4e --- /dev/null +++ b/workflows/fastqc/workflow.cwl @@ -0,0 +1,32 @@ +#!/usr/bin/env cwl-runner +cwlVersion: v1.2 +class: Workflow + +requirements: + ScatterFeatureRequirement: {} + SubworkflowFeatureRequirement: {} + +inputs: + fastq: File[] + finaloutdir: string + +steps: + fastqc: + run: fastqc.cwl + scatter: fastq + in: + fastq: fastq + out: [fastqc_zip, fastqc_html] + collectFiles: + run: ./collectFilesInDir.cwl + in: + destination: finaloutdir + files: + source: [fastqc/fastqc_html, fastqc/fastqc_zip] + linkMerge: merge_flattened + out: [outDir] + +outputs: + outdir: + type: Directory + outputSource: collectFiles/outDir \ No newline at end of file diff --git a/workflows/kallisto/README.md b/workflows/kallisto/README.md deleted file mode 100644 index 244a3c13bfec41dce6d7e5e892b1b5e37fe55d2f..0000000000000000000000000000000000000000 --- a/workflows/kallisto/README.md +++ /dev/null @@ -1,12 +0,0 @@ - -# Kallisto - -CWL adapted from: https://github.com/common-workflow-library/bio-cwl-tools/commit/91c42fb809ce18eafe16155cca0abf362270c0fe - -## Workflow graph - -```bash -cwltool --print-dot kallisto-workflow.cwl | dot -Tsvg > kallisto_workflow_graph.svg -``` - - \ No newline at end of file diff --git a/workflows/kallisto/kallisto-help.cwl b/workflows/kallisto/kallisto-test.cwl similarity index 100% rename from workflows/kallisto/kallisto-help.cwl rename to workflows/kallisto/kallisto-test.cwl diff --git a/workflows/kallisto/kallisto_workflow_graph.svg b/workflows/kallisto/kallisto_workflow_graph.svg deleted file mode 100644 index a9083cee1ed9f5c8f89da0ff9cfcd795b28818aa..0000000000000000000000000000000000000000 --- a/workflows/kallisto/kallisto_workflow_graph.svg +++ /dev/null @@ -1,173 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Generated by graphviz version 2.50.0 (20220117.2223) - --> -<!-- Title: G Pages: 1 --> -<svg width="1313pt" height="395pt" - viewBox="0.00 0.00 1313.00 395.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 391)"> -<title>G</title> -<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-391 1309,-391 1309,4 -4,4"/> -<g id="clust1" class="cluster"> -<title>cluster_inputs</title> -<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-303 8,-379 1297,-379 1297,-303 8,-303"/> -<text text-anchor="middle" x="1230" y="-310.8" font-family="Times,serif" font-size="14.00">Workflow Inputs</text> -</g> -<g id="clust2" class="cluster"> -<title>cluster_outputs</title> -<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="310,-8 310,-84 456,-84 456,-8 310,-8"/> -<text text-anchor="middle" x="383" y="-15.8" font-family="Times,serif" font-size="14.00">Workflow Outputs</text> -</g> -<!-- quant --> -<g id="node1" class="node"> -<title>quant</title> -<polygon fill="lightgoldenrodyellow" stroke="black" points="647,-185.5 647,-221.5 705,-221.5 705,-185.5 647,-185.5"/> -<text text-anchor="middle" x="676" y="-199.8" font-family="Times,serif" font-size="14.00">quant</text> -</g> -<!-- collectResults --> -<g id="node2" class="node"> -<title>collectResults</title> -<polygon fill="lightgoldenrodyellow" stroke="black" points="325,-112.5 325,-148.5 441,-148.5 441,-112.5 325,-112.5"/> -<text text-anchor="middle" x="383" y="-126.8" font-family="Times,serif" font-size="14.00">collectResults</text> -</g> -<!-- quant->collectResults --> -<g id="edge1" class="edge"> -<title>quant->collectResults</title> -<path fill="none" stroke="black" d="M646.83,-195.43C601.59,-184.47 513.24,-163.06 451.29,-148.05"/> -<polygon fill="black" stroke="black" points="451.75,-144.56 441.2,-145.6 450.1,-151.36 451.75,-144.56"/> -</g> -<!-- finalOut --> -<g id="node12" class="node"> -<title>finalOut</title> -<polygon fill="#94ddf4" stroke="black" points="346,-39.5 346,-75.5 420,-75.5 420,-39.5 346,-39.5"/> -<text text-anchor="middle" x="383" y="-53.8" font-family="Times,serif" font-size="14.00">finalOut</text> -</g> -<!-- collectResults->finalOut --> -<g id="edge13" class="edge"> -<title>collectResults->finalOut</title> -<path fill="none" stroke="black" d="M383,-112.31C383,-104.29 383,-94.55 383,-85.57"/> -<polygon fill="black" stroke="black" points="386.5,-85.53 383,-75.53 379.5,-85.53 386.5,-85.53"/> -</g> -<!-- index --> -<g id="node3" class="node"> -<title>index</title> -<polygon fill="lightgoldenrodyellow" stroke="black" points="166,-258.5 166,-294.5 222,-294.5 222,-258.5 166,-258.5"/> -<text text-anchor="middle" x="194" y="-272.8" font-family="Times,serif" font-size="14.00">index</text> -</g> -<!-- index->quant --> -<g id="edge2" class="edge"> -<title>index->quant</title> -<path fill="none" stroke="black" d="M222.35,-271.32C304.43,-259.23 542.41,-224.18 636.78,-210.28"/> -<polygon fill="black" stroke="black" points="637.39,-213.73 646.77,-208.81 636.37,-206.8 637.39,-213.73"/> -</g> -<!-- resultsFolder --> -<g id="node4" class="node"> -<title>resultsFolder</title> -<polygon fill="#94ddf4" stroke="black" points="16,-334.5 16,-370.5 128,-370.5 128,-334.5 16,-334.5"/> -<text text-anchor="middle" x="72" y="-348.8" font-family="Times,serif" font-size="14.00">resultsFolder</text> -</g> -<!-- resultsFolder->collectResults --> -<g id="edge3" class="edge"> -<title>resultsFolder->collectResults</title> -<path fill="none" stroke="black" d="M84.72,-334.44C100.23,-314.43 127.98,-281.07 157,-258 213.1,-213.41 286.94,-175.31 334.69,-152.9"/> -<polygon fill="black" stroke="black" points="336.29,-156.02 343.88,-148.63 333.34,-149.67 336.29,-156.02"/> -</g> -<!-- IndexInput --> -<g id="node5" class="node"> -<title>IndexInput</title> -<polygon fill="#94ddf4" stroke="black" points="146.5,-334.5 146.5,-370.5 241.5,-370.5 241.5,-334.5 146.5,-334.5"/> -<text text-anchor="middle" x="194" y="-348.8" font-family="Times,serif" font-size="14.00">IndexInput</text> -</g> -<!-- IndexInput->index --> -<g id="edge4" class="edge"> -<title>IndexInput->index</title> -<path fill="none" stroke="black" d="M188.2,-334.34C187.27,-325.56 187.02,-314.66 187.46,-304.77"/> -<polygon fill="black" stroke="black" points="190.97,-304.8 188.21,-294.57 183.99,-304.29 190.97,-304.8"/> -</g> -<!-- IndexInput->index --> -<g id="edge5" class="edge"> -<title>IndexInput->index</title> -<path fill="none" stroke="black" d="M199.8,-334.34C200.73,-325.56 200.98,-314.66 200.54,-304.77"/> -<polygon fill="black" stroke="black" points="204.01,-304.29 199.79,-294.57 197.03,-304.8 204.01,-304.29"/> -</g> -<!-- BootstrapSamples --> -<g id="node6" class="node"> -<title>BootstrapSamples</title> -<polygon fill="#94ddf4" stroke="black" points="260,-334.5 260,-370.5 408,-370.5 408,-334.5 260,-334.5"/> -<text text-anchor="middle" x="334" y="-348.8" font-family="Times,serif" font-size="14.00">BootstrapSamples</text> -</g> -<!-- BootstrapSamples->quant --> -<g id="edge6" class="edge"> -<title>BootstrapSamples->quant</title> -<path fill="none" stroke="black" d="M361.03,-334.43C377.21,-324.58 398.38,-312.33 418,-303 493.49,-267.08 585.84,-234.39 637.06,-217.2"/> -<polygon fill="black" stroke="black" points="638.36,-220.46 646.74,-213.97 636.15,-213.81 638.36,-220.46"/> -</g> -<!-- FragmentLength --> -<g id="node7" class="node"> -<title>FragmentLength</title> -<polygon fill="#94ddf4" stroke="black" points="426.5,-334.5 426.5,-370.5 563.5,-370.5 563.5,-334.5 426.5,-334.5"/> -<text text-anchor="middle" x="495" y="-348.8" font-family="Times,serif" font-size="14.00">FragmentLength</text> -</g> -<!-- FragmentLength->quant --> -<g id="edge7" class="edge"> -<title>FragmentLength->quant</title> -<path fill="none" stroke="black" d="M516.12,-334.35C548.54,-308.02 610.66,-257.56 647.19,-227.9"/> -<polygon fill="black" stroke="black" points="649.46,-230.56 655.02,-221.54 645.05,-225.13 649.46,-230.56"/> -</g> -<!-- StandardDeviation --> -<g id="node8" class="node"> -<title>StandardDeviation</title> -<polygon fill="#94ddf4" stroke="black" points="581.5,-334.5 581.5,-370.5 732.5,-370.5 732.5,-334.5 581.5,-334.5"/> -<text text-anchor="middle" x="657" y="-348.8" font-family="Times,serif" font-size="14.00">StandardDeviation</text> -</g> -<!-- StandardDeviation->quant --> -<g id="edge8" class="edge"> -<title>StandardDeviation->quant</title> -<path fill="none" stroke="black" d="M659.22,-334.35C662.48,-309.12 668.6,-261.76 672.48,-231.74"/> -<polygon fill="black" stroke="black" points="675.99,-231.91 673.8,-221.54 669.04,-231.01 675.99,-231.91"/> -</g> -<!-- isSingle --> -<g id="node9" class="node"> -<title>isSingle</title> -<polygon fill="#94ddf4" stroke="black" points="751,-334.5 751,-370.5 825,-370.5 825,-334.5 751,-334.5"/> -<text text-anchor="middle" x="788" y="-348.8" font-family="Times,serif" font-size="14.00">isSingle</text> -</g> -<!-- isSingle->quant --> -<g id="edge9" class="edge"> -<title>isSingle->quant</title> -<path fill="none" stroke="black" d="M775.14,-334.23C766.7,-323.94 754.87,-311.31 742,-303 732.91,-297.13 727.06,-302.23 719,-295 700.25,-278.19 688.96,-251.45 682.68,-231.39"/> -<polygon fill="black" stroke="black" points="685.99,-230.23 679.84,-221.59 679.26,-232.17 685.99,-230.23"/> -</g> -<!-- numUnderscoresFileName --> -<g id="node10" class="node"> -<title>numUnderscoresFileName</title> -<polygon fill="#94ddf4" stroke="black" points="843,-334.5 843,-370.5 1051,-370.5 1051,-334.5 843,-334.5"/> -<text text-anchor="middle" x="947" y="-348.8" font-family="Times,serif" font-size="14.00">numUnderscoresFileName</text> -</g> -<!-- numUnderscoresFileName->quant --> -<g id="edge10" class="edge"> -<title>numUnderscoresFileName->quant</title> -<path fill="none" stroke="black" d="M914.31,-334.34C892.23,-323.54 862.1,-310.31 834,-303 800.7,-294.34 787.64,-310.65 757,-295 749.29,-291.06 718.14,-254.93 696.79,-229.53"/> -<polygon fill="black" stroke="black" points="699.35,-227.14 690.25,-221.72 693.99,-231.63 699.35,-227.14"/> -</g> -<!-- InputReadsMultipleSamples --> -<g id="node11" class="node"> -<title>InputReadsMultipleSamples</title> -<polygon fill="#94ddf4" stroke="black" points="1069.5,-334.5 1069.5,-370.5 1288.5,-370.5 1288.5,-334.5 1069.5,-334.5"/> -<text text-anchor="middle" x="1179" y="-348.8" font-family="Times,serif" font-size="14.00">InputReadsMultipleSamples</text> -</g> -<!-- InputReadsMultipleSamples->quant --> -<g id="edge11" class="edge"> -<title>InputReadsMultipleSamples->quant</title> -<path fill="none" stroke="black" d="M1133.09,-334.43C1108.8,-324.46 1078.54,-312.1 1051,-303 930.41,-263.16 784.15,-229.58 715.25,-213.93"/> -<polygon fill="black" stroke="black" points="715.79,-210.46 705.27,-211.66 714.25,-217.29 715.79,-210.46"/> -</g> -<!-- InputReadsMultipleSamples->quant --> -<g id="edge12" class="edge"> -<title>InputReadsMultipleSamples->quant</title> -<path fill="none" stroke="black" d="M1148.73,-334.43C1126.8,-324.46 1096.54,-312.1 1069,-303 941.93,-261.02 786.37,-225.99 714.95,-211.57"/> -<polygon fill="black" stroke="black" points="715.53,-208.11 705.04,-209.59 714.16,-214.98 715.53,-208.11"/> -</g> -</g> -</svg> diff --git a/workflows/kallisto/workflow.cwl b/workflows/kallisto/workflow.cwl index 1d020e1110afc46d500e96eef07a1f7282164219..4ce56173769787379dddf9cd977d60b18e6ff9c1 100644 --- a/workflows/kallisto/workflow.cwl +++ b/workflows/kallisto/workflow.cwl @@ -1,3 +1,4 @@ +#!/usr/bin/env cwl-runner cwlVersion: v1.2 class: Workflow @@ -7,62 +8,58 @@ requirements: InlineJavascriptRequirement: {} inputs: - IndexInput: File[] - InputReadsMultipleSamples: - type: - type: array - items: - type: array - items: File - # numCharsFileName: - # type: int - # default: 6 - numUnderscoresFileName: - type: int - default: 2 - isSingle: boolean - FragmentLength: double? - StandardDeviation: double? - BootstrapSamples: int? - resultsFolder: string + IndexInput: File[] + sampleRecord: + type: + type: array + items: + type: record + fields: + readsOfOneSample: + type: File[] + sampleName: + type: string? + isSingle: boolean + FragmentLength: double? + StandardDeviation: double? + BootstrapSamples: int? + resultsFolder: string steps: - index: - run: kallisto-index.cwl - in: - InputFiles: IndexInput - IndexName: - source: IndexInput - valueFrom: $(self[0].nameroot) - out: [index] - quant: - run: kallisto-quant.cwl - scatter: - - InputReads - - QuantOutfolder - scatterMethod: dotproduct - in: - InputReads: InputReadsMultipleSamples - # numChars: - # source: numCharsFileName - numUnderscores: numUnderscoresFileName - QuantOutfolder: - source: InputReadsMultipleSamples - # valueFrom: $(self[0].nameroot.substring(0, inputs.numChars)) - valueFrom: $(self[0].nameroot.split('_').slice(0, inputs.numUnderscores).join('_')) - Index: index/index - isSingle: isSingle - FragmentLength: FragmentLength - StandardDeviation: StandardDeviation - BootstrapSamples: BootstrapSamples - out: [outFolder] - collectResults: - run: ./yield-dirInDestination.cwl - scatter: inDir - in: - inDir: quant/outFolder - destinationDir: resultsFolder - out: [outDir] + index: + run: kallisto-index.cwl + in: + InputFiles: IndexInput + IndexName: + source: IndexInput + valueFrom: $(self[0].nameroot) + out: [index] + + quant: + run: kallisto-quant.cwl + scatter: [InputReads, QuantOutfolder] + scatterMethod: dotproduct + in: + InputReads: + source: sampleRecord + valueFrom: $(self.readsOfOneSample) + QuantOutfolder: + source: sampleRecord + valueFrom: $(self.sampleName) + Index: index/index + isSingle: isSingle + FragmentLength: FragmentLength + StandardDeviation: StandardDeviation + BootstrapSamples: BootstrapSamples + out: [outFolder] + + collectResults: + run: ./yield-dirInDestination.cwl + scatter: inDir + in: + inDir: quant/outFolder + destinationDir: resultsFolder + out: [outDir] outputs: finalOut: diff --git a/workflows/kallisto/yield-dirInDestination.cwl b/workflows/kallisto/yield-dirInDestination.cwl index c2a20eabcd7bfc412238d74a99aedb6eac468008..bc90cb81f1a907735bd433d6117c55872c213f92 100644 --- a/workflows/kallisto/yield-dirInDestination.cwl +++ b/workflows/kallisto/yield-dirInDestination.cwl @@ -1,7 +1,7 @@ cwlVersion: v1.2 class: ExpressionTool doc: | - Takes a directory (e.g. from a workflow step) and yield it in a desired directory. + Takes a directory (e.g. from a workflow step) and yields it in a desired directory. requirements: - class: InlineJavascriptRequirement inputs: