Skip to content
Snippets Groups Projects
Commit 7943aba7 authored by Dominik Brilhaus's avatar Dominik Brilhaus
Browse files

Merge branch 'cwl' into 'main'

Cwl

See merge request !16
parents b6cbec3a 1579a8e9
No related branches found
No related tags found
1 merge request!16Cwl
Pipeline #9415 passed
Showing
with 950 additions and 108 deletions
# CWL
**Data analysis** in this ARC is packaged and made reusable via [Common Workflow Language (CWL)](https://www.commonwl.org).
For details, visit the [DataPLANT knowledgebase](https://nfdi4plants.github.io/nfdi4plants.knowledgebase/cwl/).
Briefly, every data analysis step (`runs`) is described with a `run.cwl` document. The `run.cwl` points (i.e. executes) one or multiple `workflows` (stored as `workflow.cwl`). The input parameters required for the `workflow.cwl` are documented in the accompanying `run.yml`. A `workflow.cwl` can be a single command line tool or a more complex workflow pipeline that references and combines other `*.cwl` documents.
```bash
...
├── runs
│ ├── fastqc
│ │ ├── run.cwl
│ │ └── run.yml
│ ...
├── studies
│ ├── ...
└── workflows
├── fastqc
│ ├── collectFilesInDir.cwl
│ ├── fastqc.cwl
│ └── workflow.cwl
...
```
```mermaid
%%{ init: {"flowchart": { "wrappingWidth": "10000" }}}%%
flowchart TD
workflowcwl --o runcwl
subgraph r["runs/fastqc/"]
runcwl@{ shape: doc, label: "run.cwl" }
runyml@{ shape: doc, label: "run.yml" }
end
i[input: DB_097_CAMMD_CAGATC_L001_R1_001.fastq.gz] --o runyml
r --> o[output: DB_097_CAMMD_CAGATC_L001_R1_001_fastqc.html]
subgraph "workflows/fastqc"
workflowcwl@{ shape: doc, label: "workflow.cwl" }
end
```
## Setup and dependencies
Again, for details check the docs linked above.
Executing cwl documents requires a cwl runner, e.g. [cwltool](https://github.com/common-workflow-language/cwltool).
Software and package dependencies are ideally covered by Docker or Conda and described in the hints / requirements sections of cwl documents (e.g. `DockerRequirement` and / or `SoftwareRequirement`).
Additional dependencies may exist for one or the other workflow (e.g. a local installation of R or F# or packages therein), if the workflow is not yet packaged perfectly reusable.
## Default cwltool commands
Here's a list of frequently used `cwltool` commands to validate or execute runs and workflows.
### Validate document
```bash
cwltool --validate run.cwl
```
### Execute workflow in `./runs/*`
```bash
cwltool run.cwl run.yml
```
### capture log and run in bg
```bash
cwltool run.cwl run.yml > $(date +"%Y-%m-%d_%H-%M")-run.log 2>&1 &
```
### capture log, run in parallel and in bg
```bash
cwltool --parallel run.cwl run.yml > $(date +"%Y-%m-%d_%H-%M")-run.log 2>&1 &
```
### Print workflow to file
```bash
cwltool --print-dot run.cwl | dot -Tsvg > run.svg
```
# CWL
## Organisation
### Runs
Every run is described with a `run.cwl` workflow that points to (i.e. steps through) one or multiple workflows or tools.
## Default cwltool commands
### Validate document
```bash
cwltool --validate run.cwl
```
### Execute workflow in `./runs/*`
```bash
cwltool run.cwl run.yml
```
### capture log and run in bg
```bash
cwltool run.cwl run.yml > $(date +"%Y-%m-%d_%H-%M")-run.log 2>&1 &
```
### capture log, run in parallel and in bg
```bash
cwltool --parallel run.cwl run.yml > $(date +"%Y-%m-%d_%H-%M")-run.log 2>&1 &
```
### Print workflow to file
```bash
cwltool --print-dot run.cwl | dot -Tsvg > run.svg
```
### List all workflows
```bash
find ./workflows -name 'workflow.cwl' -exec zsh -c 'echo "$1" >> workflows.txt' zsh {} \;
find ./workflows -name 'workflow.cwl' -exec zsh -c 'cwltool --validate "$1" > validate-workflows.txt' zsh {} \;
find ./runs -name 'run.cwl' -exec zsh -c 'cwltool --validate "$1" > validate-runs.txt' zsh {} \;
```
\ No newline at end of file
```bash
bash plot-cwls.sh "../../" "run.cwl" "runs-wfls.txt" "runs"
```
\ No newline at end of file
# Test : `bash plot-cwls.sh "../../" "run.cwl" "runs-wfls.txt" "runs"`
arcRoot=$1 arcRoot=$1
cwlPattern=$2 cwlPattern=$2
outWflList=$3 outWflList=$3
...@@ -8,8 +12,6 @@ find "$arcRoot"/ -name "$cwlPattern" > "$outWflList" ...@@ -8,8 +12,6 @@ find "$arcRoot"/ -name "$cwlPattern" > "$outWflList"
mkdir -p "$outGraphs" mkdir -p "$outGraphs"
while IFS= read -r wfl; do while IFS= read -r wfl; do
dirname "$wfl" | xargs basename | xargs read wflname read wflname < <(dirname "$wfl" | xargs basename)
cwltool --print-dot "$wfl" | dot -Tsvg > "$outGraphs"/"$wflname".svg cwltool --print-dot "$wfl" | dot -Tsvg > "$outGraphs"/"$wflname".svg
done < "$outWflList" done < "$outWflList"
\ No newline at end of file
...@@ -3,4 +3,4 @@ arcRoot: ...@@ -3,4 +3,4 @@ arcRoot:
path: "../../" path: "../../"
cwlPattern: "workflow.cwl" cwlPattern: "workflow.cwl"
outWflList: "workflow-wfls.txt" outWflList: "workflow-wfls.txt"
outValidation: "validate-workflows.txt" outGraphs: "workflows"
\ No newline at end of file \ No newline at end of file
#!/usr/bin/env cwl-runner #!/usr/bin/env cwl-runner
cwlVersion: v1.2 cwlVersion: v1.2
class: CommandLineTool class: Workflow
requirements:
InitialWorkDirRequirement:
listing:
- entryname: plot-cwls.sh
entry:
$include: plot-cwls.sh
baseCommand: ["bash", "plot-cwls.sh"]
inputs: inputs:
arcRoot: arcRoot:
type: Directory type: Directory
inputBinding: cwlPattern:
position: 1 type: string
cwlPattern: outWflList:
type: string type: string
inputBinding: outGraphs:
position: 2 type: string
outWflList:
type: string
inputBinding:
position: 3
outGraphs:
type: string
inputBinding:
position: 4
outputs: outputs:
output_files: outputDir:
type: File[] type: Directory
outputBinding: outputSource: collect_files/outDir
glob: $(inputs.outGraphs)/*.svg
steps:
plot:
run:
class: CommandLineTool
requirements:
InitialWorkDirRequirement:
listing:
- entryname: plot-cwls.sh
entry:
$include: plot-cwls.sh
baseCommand: ["bash", "plot-cwls.sh"]
inputs:
arcRoot:
type: Directory
inputBinding:
position: 1
cwlPattern:
type: string
inputBinding:
position: 2
outWflList:
type: string
inputBinding:
position: 3
outGraphs:
type: string
inputBinding:
position: 4
outputs:
output_files:
type: File[]
outputBinding:
glob: $(inputs.outGraphs)/*.svg
in:
arcRoot: arcRoot
cwlPattern: cwlPattern
outWflList: outWflList
outGraphs: outGraphs
out: [output_files]
collect_files:
run:
class: ExpressionTool
requirements:
InlineJavascriptRequirement: {}
inputs:
files: File[]
destination: string
expression: |
${
return {"outDir": {
"class": "Directory",
"basename": inputs.destination,
"listing": inputs.files
} };
}
outputs:
outDir: Directory
in:
files: plot/output_files
destination: outGraphs
out: [outDir]
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="564pt" height="246pt"
viewBox="0.00 0.00 564.00 246.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 242)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-242 560,-242 560,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-155 8,-230 548,-230 548,-155 8,-155"/>
<text text-anchor="middle" x="492.92" y="-161.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="214,-8 214,-83 333,-83 333,-8 214,-8"/>
<text text-anchor="middle" x="273.25" y="-14.8" font-family="Times,serif" font-size="14.00">Workflow Outputs</text>
</g>
<!-- inKallistoResults -->
<g id="node1" class="node">
<title>inKallistoResults</title>
<polygon fill="#94ddf4" stroke="black" points="427.78,-185.5 427.78,-221.5 540.22,-221.5 540.22,-185.5 427.78,-185.5"/>
<text text-anchor="middle" x="484" y="-199.3" font-family="Times,serif" font-size="14.00">inKallistoResults</text>
</g>
<!-- deseq2 -->
<g id="node5" class="node">
<title>deseq2</title>
<ellipse fill="none" stroke="black" cx="273" cy="-129" rx="34.83" ry="18"/>
<text text-anchor="middle" x="273" y="-124.8" font-family="Times,serif" font-size="14.00">deseq2</text>
</g>
<!-- inKallistoResults&#45;&gt;deseq2 -->
<g id="edge1" class="edge">
<title>inKallistoResults&#45;&gt;deseq2</title>
<path fill="none" stroke="black" d="M465.54,-185.39C453.25,-174.97 436.25,-162.3 419,-155 386.69,-141.33 347.36,-135.13 317.66,-132.32"/>
<polygon fill="black" stroke="black" points="317.85,-128.82 307.59,-131.46 317.25,-135.8 317.85,-128.82"/>
</g>
<!-- inMetadataFactorList -->
<g id="node2" class="node">
<title>inMetadataFactorList</title>
<polygon fill="#94ddf4" stroke="black" points="273.74,-185.5 273.74,-221.5 410.26,-221.5 410.26,-185.5 273.74,-185.5"/>
<text text-anchor="middle" x="342" y="-199.3" font-family="Times,serif" font-size="14.00">inMetadataFactorList</text>
</g>
<!-- inMetadataFactorList&#45;&gt;deseq2 -->
<g id="edge2" class="edge">
<title>inMetadataFactorList&#45;&gt;deseq2</title>
<path fill="none" stroke="black" d="M325.65,-185.32C316.41,-175.61 304.75,-163.36 294.75,-152.86"/>
<polygon fill="black" stroke="black" points="297.25,-150.41 287.82,-145.58 292.18,-155.23 297.25,-150.41"/>
</g>
<!-- inMetadataFile -->
<g id="node3" class="node">
<title>inMetadataFile</title>
<polygon fill="#94ddf4" stroke="black" points="154.62,-185.5 154.62,-221.5 255.38,-221.5 255.38,-185.5 154.62,-185.5"/>
<text text-anchor="middle" x="205" y="-199.3" font-family="Times,serif" font-size="14.00">inMetadataFile</text>
</g>
<!-- inMetadataFile&#45;&gt;deseq2 -->
<g id="edge3" class="edge">
<title>inMetadataFile&#45;&gt;deseq2</title>
<path fill="none" stroke="black" d="M221.12,-185.32C230.13,-175.71 241.49,-163.6 251.28,-153.16"/>
<polygon fill="black" stroke="black" points="254.1,-155.26 258.39,-145.58 249,-150.47 254.1,-155.26"/>
</g>
<!-- inMetadataSample -->
<g id="node4" class="node">
<title>inMetadataSample</title>
<polygon fill="#94ddf4" stroke="black" points="15.52,-185.5 15.52,-221.5 136.48,-221.5 136.48,-185.5 15.52,-185.5"/>
<text text-anchor="middle" x="76" y="-199.3" font-family="Times,serif" font-size="14.00">inMetadataSample</text>
</g>
<!-- inMetadataSample&#45;&gt;deseq2 -->
<g id="edge4" class="edge">
<title>inMetadataSample&#45;&gt;deseq2</title>
<path fill="none" stroke="black" d="M96.47,-185.35C109.78,-175.05 127.97,-162.52 146,-155 172.43,-143.97 204.02,-137.73 229.08,-134.24"/>
<polygon fill="black" stroke="black" points="229.57,-137.7 239.04,-132.95 228.67,-130.76 229.57,-137.7"/>
</g>
<!-- output -->
<g id="node6" class="node">
<title>output</title>
<polygon fill="#94ddf4" stroke="black" points="246,-38.5 246,-74.5 300,-74.5 300,-38.5 246,-38.5"/>
<text text-anchor="middle" x="272.89" y="-52.3" font-family="Times,serif" font-size="14.00">output</text>
</g>
<!-- deseq2&#45;&gt;output -->
<g id="edge5" class="edge">
<title>deseq2&#45;&gt;output</title>
<path fill="none" stroke="black" d="M273,-110.93C273,-103.17 273,-93.78 273,-85.06"/>
<polygon fill="black" stroke="black" points="276.5,-84.9 273,-74.9 269.5,-84.9 276.5,-84.9"/>
</g>
</g>
</svg>
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="186pt" height="246pt"
viewBox="0.00 0.00 186.00 246.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 242)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-242 182,-242 182,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-155 8,-230 170,-230 170,-155 8,-155"/>
<text text-anchor="middle" x="114.92" y="-161.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="32,-8 32,-83 151,-83 151,-8 32,-8"/>
<text text-anchor="middle" x="91.25" y="-14.8" font-family="Times,serif" font-size="14.00">Workflow Outputs</text>
</g>
<!-- fastq -->
<g id="node1" class="node">
<title>fastq</title>
<polygon fill="#94ddf4" stroke="black" points="108,-185.5 108,-221.5 162,-221.5 162,-185.5 108,-185.5"/>
<text text-anchor="middle" x="134.61" y="-199.3" font-family="Times,serif" font-size="14.00">fastq</text>
</g>
<!-- fastqc -->
<g id="node3" class="node">
<title>fastqc</title>
<ellipse fill="none" stroke="black" cx="72" cy="-129" rx="31.45" ry="18"/>
<text text-anchor="middle" x="72" y="-124.8" font-family="Times,serif" font-size="14.00">fastqc</text>
</g>
<!-- fastq&#45;&gt;fastqc -->
<g id="edge1" class="edge">
<title>fastq&#45;&gt;fastqc</title>
<path fill="none" stroke="black" d="M123.03,-185.22C116.33,-175.95 107.62,-164.51 99,-155 97.98,-153.88 96.92,-152.74 95.83,-151.62"/>
<polygon fill="black" stroke="black" points="98.03,-148.87 88.44,-144.36 93.12,-153.87 98.03,-148.87"/>
</g>
<!-- finaloutdir -->
<g id="node2" class="node">
<title>finaloutdir</title>
<polygon fill="#94ddf4" stroke="black" points="15.83,-185.5 15.83,-221.5 90.17,-221.5 90.17,-185.5 15.83,-185.5"/>
<text text-anchor="middle" x="53" y="-199.3" font-family="Times,serif" font-size="14.00">finaloutdir</text>
</g>
<!-- finaloutdir&#45;&gt;fastqc -->
<g id="edge2" class="edge">
<title>finaloutdir&#45;&gt;fastqc</title>
<path fill="none" stroke="black" d="M57.5,-185.32C59.73,-176.83 62.46,-166.39 64.96,-156.88"/>
<polygon fill="black" stroke="black" points="68.38,-157.62 67.53,-147.06 61.61,-155.84 68.38,-157.62"/>
</g>
<!-- outdir -->
<g id="node4" class="node">
<title>outdir</title>
<polygon fill="#94ddf4" stroke="black" points="45,-38.5 45,-74.5 99,-74.5 99,-38.5 45,-38.5"/>
<text text-anchor="middle" x="71.72" y="-52.3" font-family="Times,serif" font-size="14.00">outdir</text>
</g>
<!-- fastqc&#45;&gt;outdir -->
<g id="edge3" class="edge">
<title>fastqc&#45;&gt;outdir</title>
<path fill="none" stroke="black" d="M72,-110.93C72,-103.17 72,-93.78 72,-85.06"/>
<polygon fill="black" stroke="black" points="75.5,-84.9 72,-74.9 68.5,-84.9 75.5,-84.9"/>
</g>
</g>
</svg>
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="416pt" height="246pt"
viewBox="0.00 0.00 416.00 246.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 242)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-242 412,-242 412,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-155 8,-230 400,-230 400,-155 8,-155"/>
<text text-anchor="middle" x="344.92" y="-161.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="171,-8 171,-83 290,-83 290,-8 171,-8"/>
<text text-anchor="middle" x="230.25" y="-14.8" font-family="Times,serif" font-size="14.00">Workflow Outputs</text>
</g>
<!-- arcPath -->
<g id="node1" class="node">
<title>arcPath</title>
<polygon fill="#94ddf4" stroke="black" points="334.01,-185.5 334.01,-221.5 391.99,-221.5 391.99,-185.5 334.01,-185.5"/>
<text text-anchor="middle" x="363" y="-199.3" font-family="Times,serif" font-size="14.00">arcPath</text>
</g>
<!-- isaSampleToRawDataSeq -->
<g id="node5" class="node">
<title>isaSampleToRawDataSeq</title>
<ellipse fill="none" stroke="black" cx="230" cy="-129" rx="101.66" ry="18"/>
<text text-anchor="middle" x="230" y="-124.8" font-family="Times,serif" font-size="14.00">isaSampleToRawDataSeq</text>
</g>
<!-- arcPath&#45;&gt;isaSampleToRawDataSeq -->
<g id="edge1" class="edge">
<title>arcPath&#45;&gt;isaSampleToRawDataSeq</title>
<path fill="none" stroke="black" d="M353.12,-185.21C346.42,-174.99 336.69,-162.6 325,-155 319.75,-151.58 314.04,-148.63 308.13,-146.08"/>
<polygon fill="black" stroke="black" points="309.28,-142.78 298.69,-142.4 306.73,-149.3 309.28,-142.78"/>
</g>
<!-- assayName -->
<g id="node2" class="node">
<title>assayName</title>
<polygon fill="#94ddf4" stroke="black" points="236.12,-185.5 236.12,-221.5 315.88,-221.5 315.88,-185.5 236.12,-185.5"/>
<text text-anchor="middle" x="276" y="-199.3" font-family="Times,serif" font-size="14.00">assayName</text>
</g>
<!-- assayName&#45;&gt;isaSampleToRawDataSeq -->
<g id="edge2" class="edge">
<title>assayName&#45;&gt;isaSampleToRawDataSeq</title>
<path fill="none" stroke="black" d="M265.1,-185.32C259.48,-176.47 252.53,-165.5 246.29,-155.67"/>
<polygon fill="black" stroke="black" points="249.14,-153.63 240.82,-147.06 243.23,-157.38 249.14,-153.63"/>
</g>
<!-- outName -->
<g id="node3" class="node">
<title>outName</title>
<polygon fill="#94ddf4" stroke="black" points="150.34,-185.5 150.34,-221.5 217.66,-221.5 217.66,-185.5 150.34,-185.5"/>
<text text-anchor="middle" x="184" y="-199.3" font-family="Times,serif" font-size="14.00">outName</text>
</g>
<!-- outName&#45;&gt;isaSampleToRawDataSeq -->
<g id="edge3" class="edge">
<title>outName&#45;&gt;isaSampleToRawDataSeq</title>
<path fill="none" stroke="black" d="M194.9,-185.32C200.52,-176.47 207.47,-165.5 213.71,-155.67"/>
<polygon fill="black" stroke="black" points="216.77,-157.38 219.18,-147.06 210.86,-153.63 216.77,-157.38"/>
</g>
<!-- startingNodeNum -->
<g id="node4" class="node">
<title>startingNodeNum</title>
<polygon fill="#94ddf4" stroke="black" points="15.84,-185.5 15.84,-221.5 132.16,-221.5 132.16,-185.5 15.84,-185.5"/>
<text text-anchor="middle" x="74" y="-199.3" font-family="Times,serif" font-size="14.00">startingNodeNum</text>
</g>
<!-- startingNodeNum&#45;&gt;isaSampleToRawDataSeq -->
<g id="edge4" class="edge">
<title>startingNodeNum&#45;&gt;isaSampleToRawDataSeq</title>
<path fill="none" stroke="black" d="M94.27,-185.34C106.99,-175.29 124.14,-163.05 141,-155 147.23,-152.03 153.88,-149.35 160.62,-146.95"/>
<polygon fill="black" stroke="black" points="162.18,-150.12 170.55,-143.63 159.96,-143.48 162.18,-150.12"/>
</g>
<!-- output -->
<g id="node6" class="node">
<title>output</title>
<polygon fill="#94ddf4" stroke="black" points="203,-38.5 203,-74.5 257,-74.5 257,-38.5 203,-38.5"/>
<text text-anchor="middle" x="229.89" y="-52.3" font-family="Times,serif" font-size="14.00">output</text>
</g>
<!-- isaSampleToRawDataSeq&#45;&gt;output -->
<g id="edge5" class="edge">
<title>isaSampleToRawDataSeq&#45;&gt;output</title>
<path fill="none" stroke="black" d="M230,-110.93C230,-103.17 230,-93.78 230,-85.06"/>
<polygon fill="black" stroke="black" points="233.5,-84.9 230,-74.9 226.5,-84.9 233.5,-84.9"/>
</g>
</g>
</svg>
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="820pt" height="246pt"
viewBox="0.00 0.00 820.00 246.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 242)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-242 816,-242 816,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-155 8,-230 804,-230 804,-155 8,-155"/>
<text text-anchor="middle" x="748.92" y="-161.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="318,-8 318,-83 437,-83 437,-8 318,-8"/>
<text text-anchor="middle" x="377.25" y="-14.8" font-family="Times,serif" font-size="14.00">Workflow Outputs</text>
</g>
<!-- BootstrapSamples -->
<g id="node1" class="node">
<title>BootstrapSamples</title>
<polygon fill="#94ddf4" stroke="black" points="678.06,-185.5 678.06,-221.5 795.94,-221.5 795.94,-185.5 678.06,-185.5"/>
<text text-anchor="middle" x="737" y="-199.3" font-family="Times,serif" font-size="14.00">BootstrapSamples</text>
</g>
<!-- kallisto -->
<g id="node8" class="node">
<title>kallisto</title>
<ellipse fill="none" stroke="black" cx="377" cy="-129" rx="36.29" ry="18"/>
<text text-anchor="middle" x="377" y="-124.8" font-family="Times,serif" font-size="14.00">kallisto</text>
</g>
<!-- BootstrapSamples&#45;&gt;kallisto -->
<g id="edge1" class="edge">
<title>BootstrapSamples&#45;&gt;kallisto</title>
<path fill="none" stroke="black" d="M718.32,-185.37C705.45,-174.66 687.41,-161.67 669,-155 625.15,-139.11 494.34,-133.16 423.62,-131.06"/>
<polygon fill="black" stroke="black" points="423.32,-127.55 413.22,-130.77 423.12,-134.55 423.32,-127.55"/>
</g>
<!-- FragmentLength -->
<g id="node2" class="node">
<title>FragmentLength</title>
<polygon fill="#94ddf4" stroke="black" points="550.34,-185.5 550.34,-221.5 659.66,-221.5 659.66,-185.5 550.34,-185.5"/>
<text text-anchor="middle" x="605" y="-199.3" font-family="Times,serif" font-size="14.00">FragmentLength</text>
</g>
<!-- FragmentLength&#45;&gt;kallisto -->
<g id="edge2" class="edge">
<title>FragmentLength&#45;&gt;kallisto</title>
<path fill="none" stroke="black" d="M587.24,-185.27C575.39,-174.8 558.92,-162.12 542,-155 504,-139.02 457.27,-133.08 423.26,-130.95"/>
<polygon fill="black" stroke="black" points="423.3,-127.45 413.13,-130.41 422.93,-134.44 423.3,-127.45"/>
</g>
<!-- IndexInput -->
<g id="node3" class="node">
<title>IndexInput</title>
<polygon fill="#94ddf4" stroke="black" points="455.29,-185.5 455.29,-221.5 532.71,-221.5 532.71,-185.5 455.29,-185.5"/>
<text text-anchor="middle" x="494" y="-199.3" font-family="Times,serif" font-size="14.00">IndexInput</text>
</g>
<!-- IndexInput&#45;&gt;kallisto -->
<g id="edge3" class="edge">
<title>IndexInput&#45;&gt;kallisto</title>
<path fill="none" stroke="black" d="M479.92,-185.23C471.06,-175.27 458.88,-163.15 446,-155 437.36,-149.54 427.35,-145.04 417.69,-141.44"/>
<polygon fill="black" stroke="black" points="418.8,-138.12 408.2,-138.14 416.5,-144.73 418.8,-138.12"/>
</g>
<!-- StandardDeviation -->
<g id="node4" class="node">
<title>StandardDeviation</title>
<polygon fill="#94ddf4" stroke="black" points="316.51,-185.5 316.51,-221.5 437.49,-221.5 437.49,-185.5 316.51,-185.5"/>
<text text-anchor="middle" x="377" y="-199.3" font-family="Times,serif" font-size="14.00">StandardDeviation</text>
</g>
<!-- StandardDeviation&#45;&gt;kallisto -->
<g id="edge4" class="edge">
<title>StandardDeviation&#45;&gt;kallisto</title>
<path fill="none" stroke="black" d="M377,-185.32C377,-176.92 377,-166.62 377,-157.19"/>
<polygon fill="black" stroke="black" points="380.5,-157.06 377,-147.06 373.5,-157.06 380.5,-157.06"/>
</g>
<!-- isSingle -->
<g id="node5" class="node">
<title>isSingle</title>
<polygon fill="#94ddf4" stroke="black" points="237.44,-185.5 237.44,-221.5 298.56,-221.5 298.56,-185.5 237.44,-185.5"/>
<text text-anchor="middle" x="268" y="-199.3" font-family="Times,serif" font-size="14.00">isSingle</text>
</g>
<!-- isSingle&#45;&gt;kallisto -->
<g id="edge5" class="edge">
<title>isSingle&#45;&gt;kallisto</title>
<path fill="none" stroke="black" d="M279.18,-185.14C286.37,-175.14 296.51,-163.02 308,-155 316.22,-149.26 325.9,-144.69 335.38,-141.11"/>
<polygon fill="black" stroke="black" points="336.8,-144.32 345.1,-137.73 334.51,-137.71 336.8,-144.32"/>
</g>
<!-- resultsFolder -->
<g id="node6" class="node">
<title>resultsFolder</title>
<polygon fill="#94ddf4" stroke="black" points="130.45,-185.5 130.45,-221.5 219.55,-221.5 219.55,-185.5 130.45,-185.5"/>
<text text-anchor="middle" x="175" y="-199.3" font-family="Times,serif" font-size="14.00">resultsFolder</text>
</g>
<!-- resultsFolder&#45;&gt;kallisto -->
<g id="edge6" class="edge">
<title>resultsFolder&#45;&gt;kallisto</title>
<path fill="none" stroke="black" d="M189.47,-185.31C199.26,-174.86 213.08,-162.18 228,-155 260.03,-139.59 299.91,-133.49 330.34,-131.16"/>
<polygon fill="black" stroke="black" points="330.94,-134.63 340.69,-130.48 330.48,-127.64 330.94,-134.63"/>
</g>
<!-- sampleRecord -->
<g id="node7" class="node">
<title>sampleRecord</title>
<polygon fill="#94ddf4" stroke="black" points="15.96,-185.5 15.96,-221.5 112.04,-221.5 112.04,-185.5 15.96,-185.5"/>
<text text-anchor="middle" x="64" y="-199.3" font-family="Times,serif" font-size="14.00">sampleRecord</text>
</g>
<!-- sampleRecord&#45;&gt;kallisto -->
<g id="edge7" class="edge">
<title>sampleRecord&#45;&gt;kallisto</title>
<path fill="none" stroke="black" d="M79.18,-185.43C89.76,-174.74 104.84,-161.76 121,-155 157.69,-139.66 267.22,-133.56 330.49,-131.27"/>
<polygon fill="black" stroke="black" points="330.73,-134.77 340.61,-130.93 330.49,-127.77 330.73,-134.77"/>
</g>
<!-- finalOut -->
<g id="node9" class="node">
<title>finalOut</title>
<polygon fill="#94ddf4" stroke="black" points="346.06,-38.5 346.06,-74.5 407.94,-74.5 407.94,-38.5 346.06,-38.5"/>
<text text-anchor="middle" x="377" y="-52.3" font-family="Times,serif" font-size="14.00">finalOut</text>
</g>
<!-- kallisto&#45;&gt;finalOut -->
<g id="edge8" class="edge">
<title>kallisto&#45;&gt;finalOut</title>
<path fill="none" stroke="black" d="M377,-110.93C377,-103.17 377,-93.78 377,-85.06"/>
<polygon fill="black" stroke="black" points="380.5,-84.9 377,-74.9 373.5,-84.9 380.5,-84.9"/>
</g>
</g>
</svg>
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="228pt" height="135pt"
viewBox="0.00 0.00 228.00 135.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 131)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-131 224,-131 224,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-44 8,-119 212,-119 212,-44 8,-44"/>
<text text-anchor="middle" x="156.92" y="-50.8" font-family="Times,serif" font-size="14.00">Workflow Inputs</text>
</g>
<!-- exp_factor -->
<g id="node1" class="node">
<title>exp_factor</title>
<polygon fill="#94ddf4" stroke="black" points="128.07,-74.5 128.07,-110.5 203.93,-110.5 203.93,-74.5 128.07,-74.5"/>
<text text-anchor="middle" x="166" y="-88.3" font-family="Times,serif" font-size="14.00">exp_factor</text>
</g>
<!-- run_shiny -->
<g id="node3" class="node">
<title>run_shiny</title>
<ellipse fill="none" stroke="black" cx="114" cy="-18" rx="45.46" ry="18"/>
<text text-anchor="middle" x="114" y="-13.8" font-family="Times,serif" font-size="14.00">run_shiny</text>
</g>
<!-- exp_factor&#45;&gt;run_shiny -->
<g id="edge1" class="edge">
<title>exp_factor&#45;&gt;run_shiny</title>
<path fill="none" stroke="black" d="M153.68,-74.32C147.17,-65.25 139.07,-53.96 131.89,-43.94"/>
<polygon fill="black" stroke="black" points="134.55,-41.65 125.88,-35.56 128.86,-45.73 134.55,-41.65"/>
</g>
<!-- in_kallisto_df -->
<g id="node2" class="node">
<title>in_kallisto_df</title>
<polygon fill="#94ddf4" stroke="black" points="16.11,-74.5 16.11,-110.5 109.89,-110.5 109.89,-74.5 16.11,-74.5"/>
<text text-anchor="middle" x="63" y="-88.3" font-family="Times,serif" font-size="14.00">in_kallisto_df</text>
</g>
<!-- in_kallisto_df&#45;&gt;run_shiny -->
<g id="edge2" class="edge">
<title>in_kallisto_df&#45;&gt;run_shiny</title>
<path fill="none" stroke="black" d="M75.09,-74.32C81.47,-65.25 89.41,-53.96 96.45,-43.94"/>
<polygon fill="black" stroke="black" points="99.46,-45.75 102.35,-35.56 93.74,-41.72 99.46,-45.75"/>
</g>
</g>
</svg>
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="797pt" height="246pt"
viewBox="0.00 0.00 797.00 246.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 242)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-242 793,-242 793,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-155 8,-230 781,-230 781,-155 8,-155"/>
<text text-anchor="middle" x="725.92" y="-161.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="303,-8 303,-83 422,-83 422,-8 303,-8"/>
<text text-anchor="middle" x="362.25" y="-14.8" font-family="Times,serif" font-size="14.00">Workflow Outputs</text>
</g>
<!-- inKallistoResults -->
<g id="node1" class="node">
<title>inKallistoResults</title>
<polygon fill="#94ddf4" stroke="black" points="660.78,-185.5 660.78,-221.5 773.22,-221.5 773.22,-185.5 660.78,-185.5"/>
<text text-anchor="middle" x="717" y="-199.3" font-family="Times,serif" font-size="14.00">inKallistoResults</text>
</g>
<!-- collectResults -->
<g id="node7" class="node">
<title>collectResults</title>
<ellipse fill="none" stroke="black" cx="362" cy="-129" rx="59.94" ry="18"/>
<text text-anchor="middle" x="362" y="-124.8" font-family="Times,serif" font-size="14.00">collectResults</text>
</g>
<!-- inKallistoResults&#45;&gt;collectResults -->
<g id="edge1" class="edge">
<title>inKallistoResults&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M699.28,-185.37C687.03,-174.66 669.8,-161.67 652,-155 613.02,-140.39 504.1,-134.23 431.41,-131.7"/>
<polygon fill="black" stroke="black" points="431.52,-128.2 421.4,-131.36 431.28,-135.19 431.52,-128.2"/>
</g>
<!-- inMetadataDataCol -->
<g id="node2" class="node">
<title>inMetadataDataCol</title>
<polygon fill="#94ddf4" stroke="black" points="517.19,-185.5 517.19,-221.5 642.81,-221.5 642.81,-185.5 517.19,-185.5"/>
<text text-anchor="middle" x="580" y="-199.3" font-family="Times,serif" font-size="14.00">inMetadataDataCol</text>
</g>
<!-- inMetadataDataCol&#45;&gt;collectResults -->
<g id="edge2" class="edge">
<title>inMetadataDataCol&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M559.24,-185.44C545.51,-175.04 526.66,-162.38 508,-155 483.3,-145.24 454.77,-139.28 429.52,-135.65"/>
<polygon fill="black" stroke="black" points="429.66,-132.14 419.29,-134.28 428.73,-139.08 429.66,-132.14"/>
</g>
<!-- inMetadataFactorList -->
<g id="node3" class="node">
<title>inMetadataFactorList</title>
<polygon fill="#94ddf4" stroke="black" points="362.74,-185.5 362.74,-221.5 499.26,-221.5 499.26,-185.5 362.74,-185.5"/>
<text text-anchor="middle" x="431" y="-199.3" font-family="Times,serif" font-size="14.00">inMetadataFactorList</text>
</g>
<!-- inMetadataFactorList&#45;&gt;collectResults -->
<g id="edge3" class="edge">
<title>inMetadataFactorList&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M414.65,-185.32C405.76,-175.98 394.62,-164.27 384.88,-154.04"/>
<polygon fill="black" stroke="black" points="387.19,-151.39 377.76,-146.56 382.12,-156.22 387.19,-151.39"/>
</g>
<!-- inMetadataFile -->
<g id="node4" class="node">
<title>inMetadataFile</title>
<polygon fill="#94ddf4" stroke="black" points="243.62,-185.5 243.62,-221.5 344.38,-221.5 344.38,-185.5 243.62,-185.5"/>
<text text-anchor="middle" x="294" y="-199.3" font-family="Times,serif" font-size="14.00">inMetadataFile</text>
</g>
<!-- inMetadataFile&#45;&gt;collectResults -->
<g id="edge4" class="edge">
<title>inMetadataFile&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M310.12,-185.32C318.88,-175.98 329.86,-164.27 339.46,-154.04"/>
<polygon fill="black" stroke="black" points="342.18,-156.25 346.47,-146.56 337.07,-151.46 342.18,-156.25"/>
</g>
<!-- inMetadataSample -->
<g id="node5" class="node">
<title>inMetadataSample</title>
<polygon fill="#94ddf4" stroke="black" points="104.52,-185.5 104.52,-221.5 225.48,-221.5 225.48,-185.5 104.52,-185.5"/>
<text text-anchor="middle" x="165" y="-199.3" font-family="Times,serif" font-size="14.00">inMetadataSample</text>
</g>
<!-- inMetadataSample&#45;&gt;collectResults -->
<g id="edge5" class="edge">
<title>inMetadataSample&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M185.47,-185.35C198.78,-175.05 216.97,-162.52 235,-155 254.34,-146.93 276.44,-141.42 296.72,-137.68"/>
<polygon fill="black" stroke="black" points="297.57,-141.09 306.83,-135.93 296.38,-134.19 297.57,-141.09"/>
</g>
<!-- outFolder -->
<g id="node6" class="node">
<title>outFolder</title>
<polygon fill="#94ddf4" stroke="black" points="15.78,-185.5 15.78,-221.5 86.22,-221.5 86.22,-185.5 15.78,-185.5"/>
<text text-anchor="middle" x="51" y="-199.3" font-family="Times,serif" font-size="14.00">outFolder</text>
</g>
<!-- outFolder&#45;&gt;collectResults -->
<g id="edge6" class="edge">
<title>outFolder&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M62.24,-185.43C70.28,-174.75 82.11,-161.76 96,-155 129.42,-138.73 225.25,-133.03 292.25,-131.05"/>
<polygon fill="black" stroke="black" points="292.43,-134.54 302.33,-130.77 292.24,-127.55 292.43,-134.54"/>
</g>
<!-- outdir -->
<g id="node8" class="node">
<title>outdir</title>
<polygon fill="#94ddf4" stroke="black" points="335,-38.5 335,-74.5 389,-74.5 389,-38.5 335,-38.5"/>
<text text-anchor="middle" x="361.72" y="-52.3" font-family="Times,serif" font-size="14.00">outdir</text>
</g>
<!-- collectResults&#45;&gt;outdir -->
<g id="edge7" class="edge">
<title>collectResults&#45;&gt;outdir</title>
<path fill="none" stroke="black" d="M362,-110.93C362,-103.17 362,-93.78 362,-85.06"/>
<polygon fill="black" stroke="black" points="365.5,-84.9 362,-74.9 358.5,-84.9 365.5,-84.9"/>
</g>
</g>
</svg>
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="548pt" height="320pt"
viewBox="0.00 0.00 547.58 320.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 316)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-316 543.58,-316 543.58,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="47.01,-229 47.01,-304 209.01,-304 209.01,-229 47.01,-229"/>
<text text-anchor="middle" x="153.94" y="-235.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="219.01,-8 219.01,-83 338.01,-83 338.01,-8 219.01,-8"/>
<text text-anchor="middle" x="278.27" y="-14.8" font-family="Times,serif" font-size="14.00">Workflow Outputs</text>
</g>
<!-- fastqc -->
<g id="node1" class="node">
<title>fastqc</title>
<polygon fill="lightgoldenrodyellow" stroke="black" points="16.45,-184.5 16.45,-220.5 539.58,-220.5 539.58,-184.5 16.45,-184.5"/>
<text text-anchor="middle" x="278.01" y="-198.3" font-family="Times,serif" font-size="14.00">Run fastqc on raw reads in FASTQ format (single or paired end) or aligned reads in BAM.</text>
</g>
<!-- collectFiles -->
<g id="node2" class="node">
<title>collectFiles</title>
<polygon fill="lightgoldenrodyellow" stroke="black" points="197.31,-111.5 197.31,-147.5 358.72,-147.5 358.72,-111.5 197.31,-111.5"/>
<text text-anchor="middle" x="278.01" y="-125.3" font-family="Times,serif" font-size="14.00">Collect files in a directory</text>
</g>
<!-- fastqc&#45;&gt;collectFiles -->
<g id="edge1" class="edge">
<title>fastqc&#45;&gt;collectFiles</title>
<path fill="none" stroke="black" d="M272.14,-184.31C271.3,-176.29 271.06,-166.55 271.44,-157.57"/>
<polygon fill="black" stroke="black" points="274.93,-157.75 272.15,-147.53 267.95,-157.25 274.93,-157.75"/>
</g>
<!-- fastqc&#45;&gt;collectFiles -->
<g id="edge2" class="edge">
<title>fastqc&#45;&gt;collectFiles</title>
<path fill="none" stroke="black" d="M283.89,-184.31C284.73,-176.29 284.97,-166.55 284.59,-157.57"/>
<polygon fill="black" stroke="black" points="288.08,-157.25 283.88,-147.53 281.1,-157.75 288.08,-157.25"/>
</g>
<!-- outdir -->
<g id="node5" class="node">
<title>outdir</title>
<polygon fill="#94ddf4" stroke="black" points="251.01,-38.5 251.01,-74.5 305.01,-74.5 305.01,-38.5 251.01,-38.5"/>
<text text-anchor="middle" x="277.74" y="-52.3" font-family="Times,serif" font-size="14.00">outdir</text>
</g>
<!-- collectFiles&#45;&gt;outdir -->
<g id="edge5" class="edge">
<title>collectFiles&#45;&gt;outdir</title>
<path fill="none" stroke="black" d="M278.01,-111.31C278.01,-103.29 278.01,-93.55 278.01,-84.57"/>
<polygon fill="black" stroke="black" points="281.51,-84.53 278.01,-74.53 274.51,-84.53 281.51,-84.53"/>
</g>
<!-- finaloutdir -->
<g id="node3" class="node">
<title>finaloutdir</title>
<polygon fill="#94ddf4" stroke="black" points="54.85,-259.5 54.85,-295.5 129.18,-295.5 129.18,-259.5 54.85,-259.5"/>
<text text-anchor="middle" x="92.01" y="-273.3" font-family="Times,serif" font-size="14.00">finaloutdir</text>
</g>
<!-- finaloutdir&#45;&gt;collectFiles -->
<g id="edge3" class="edge">
<title>finaloutdir&#45;&gt;collectFiles</title>
<path fill="none" stroke="black" d="M54.5,-262.12C36.71,-253.18 17.17,-239.75 7.01,-221 -0.81,-206.54 -3.43,-196.7 7.01,-184 29.65,-156.46 117.41,-142.86 187.01,-136.3"/>
<polygon fill="black" stroke="black" points="187.5,-139.77 197.14,-135.38 186.86,-132.8 187.5,-139.77"/>
</g>
<!-- fastq -->
<g id="node4" class="node">
<title>fastq</title>
<polygon fill="#94ddf4" stroke="black" points="147.01,-259.5 147.01,-295.5 201.01,-295.5 201.01,-259.5 147.01,-259.5"/>
<text text-anchor="middle" x="173.62" y="-273.3" font-family="Times,serif" font-size="14.00">fastq</text>
</g>
<!-- fastq&#45;&gt;fastqc -->
<g id="edge4" class="edge">
<title>fastq&#45;&gt;fastqc</title>
<path fill="none" stroke="black" d="M198.4,-259.38C212.35,-249.59 230.04,-237.18 245.2,-226.53"/>
<polygon fill="black" stroke="black" points="247.61,-229.12 253.78,-220.51 243.59,-223.39 247.61,-229.12"/>
</g>
</g>
</svg>
<?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.42.3 (20191010.1750)
-->
<!-- Title: G Pages: 1 -->
<svg width="821pt" height="393pt"
viewBox="0.00 0.00 821.00 393.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 389)">
<title>G</title>
<polygon fill="#eeeeee" stroke="transparent" points="-4,4 -4,-389 817,-389 817,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_inputs</title>
<polygon fill="#eeeeee" stroke="black" stroke-dasharray="5,2" points="8,-302 8,-377 805,-377 805,-302 8,-302"/>
<text text-anchor="middle" x="749.92" y="-308.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="232,-8 232,-83 351,-83 351,-8 232,-8"/>
<text text-anchor="middle" x="291.25" y="-14.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="492,-184.5 492,-220.5 546,-220.5 546,-184.5 492,-184.5"/>
<text text-anchor="middle" x="518.55" y="-198.3" 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="243.73,-111.5 243.73,-147.5 338.27,-147.5 338.27,-111.5 243.73,-111.5"/>
<text text-anchor="middle" x="291" y="-125.3" font-family="Times,serif" font-size="14.00">collectResults</text>
</g>
<!-- quant&#45;&gt;collectResults -->
<g id="edge1" class="edge">
<title>quant&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M491.95,-193.08C456.78,-182.13 394.44,-162.71 348.49,-148.4"/>
<polygon fill="black" stroke="black" points="349.25,-144.97 338.66,-145.34 347.16,-151.66 349.25,-144.97"/>
</g>
<!-- finalOut -->
<g id="node11" class="node">
<title>finalOut</title>
<polygon fill="#94ddf4" stroke="black" points="260.06,-38.5 260.06,-74.5 321.94,-74.5 321.94,-38.5 260.06,-38.5"/>
<text text-anchor="middle" x="291" y="-52.3" font-family="Times,serif" font-size="14.00">finalOut</text>
</g>
<!-- collectResults&#45;&gt;finalOut -->
<g id="edge12" class="edge">
<title>collectResults&#45;&gt;finalOut</title>
<path fill="none" stroke="black" d="M291,-111.31C291,-103.29 291,-93.55 291,-84.57"/>
<polygon fill="black" stroke="black" points="294.5,-84.53 291,-74.53 287.5,-84.53 294.5,-84.53"/>
</g>
<!-- index -->
<g id="node3" class="node">
<title>index</title>
<polygon fill="lightgoldenrodyellow" stroke="black" points="135,-257.5 135,-293.5 189,-293.5 189,-257.5 135,-257.5"/>
<text text-anchor="middle" x="161.55" y="-271.3" font-family="Times,serif" font-size="14.00">index</text>
</g>
<!-- index&#45;&gt;quant -->
<g id="edge2" class="edge">
<title>index&#45;&gt;quant</title>
<path fill="none" stroke="black" d="M189.13,-269.11C252.4,-256.52 409.85,-225.21 481.92,-210.87"/>
<polygon fill="black" stroke="black" points="482.79,-214.27 491.92,-208.89 481.42,-207.4 482.79,-214.27"/>
</g>
<!-- resultsFolder -->
<g id="node4" class="node">
<title>resultsFolder</title>
<polygon fill="#94ddf4" stroke="black" points="16.45,-332.5 16.45,-368.5 105.55,-368.5 105.55,-332.5 16.45,-332.5"/>
<text text-anchor="middle" x="61" y="-346.3" font-family="Times,serif" font-size="14.00">resultsFolder</text>
</g>
<!-- resultsFolder&#45;&gt;collectResults -->
<g id="edge3" class="edge">
<title>resultsFolder&#45;&gt;collectResults</title>
<path fill="none" stroke="black" d="M70.88,-332.31C82.56,-312.81 103.31,-280.65 126,-257 165.85,-215.46 220.09,-176.58 255.32,-153.17"/>
<polygon fill="black" stroke="black" points="257.42,-155.98 263.85,-147.56 253.57,-150.13 257.42,-155.98"/>
</g>
<!-- IndexInput -->
<g id="node5" class="node">
<title>IndexInput</title>
<polygon fill="#94ddf4" stroke="black" points="123.29,-332.5 123.29,-368.5 200.71,-368.5 200.71,-332.5 123.29,-332.5"/>
<text text-anchor="middle" x="162" y="-346.3" font-family="Times,serif" font-size="14.00">IndexInput</text>
</g>
<!-- IndexInput&#45;&gt;index -->
<g id="edge4" class="edge">
<title>IndexInput&#45;&gt;index</title>
<path fill="none" stroke="black" d="M156.16,-332.2C155.28,-323.75 155.04,-313.37 155.44,-303.87"/>
<polygon fill="black" stroke="black" points="158.95,-303.9 156.17,-293.68 151.97,-303.4 158.95,-303.9"/>
</g>
<!-- IndexInput&#45;&gt;index -->
<g id="edge5" class="edge">
<title>IndexInput&#45;&gt;index</title>
<path fill="none" stroke="black" d="M167.84,-332.2C168.72,-323.75 168.96,-313.37 168.56,-303.87"/>
<polygon fill="black" stroke="black" points="172.03,-303.4 167.83,-293.68 165.05,-303.9 172.03,-303.4"/>
</g>
<!-- BootstrapSamples -->
<g id="node6" class="node">
<title>BootstrapSamples</title>
<polygon fill="#94ddf4" stroke="black" points="219.06,-332.5 219.06,-368.5 336.94,-368.5 336.94,-332.5 219.06,-332.5"/>
<text text-anchor="middle" x="278" y="-346.3" font-family="Times,serif" font-size="14.00">BootstrapSamples</text>
</g>
<!-- BootstrapSamples&#45;&gt;quant -->
<g id="edge6" class="edge">
<title>BootstrapSamples&#45;&gt;quant</title>
<path fill="none" stroke="black" d="M301.24,-332.47C314.21,-323.17 330.78,-311.62 346,-302 392.26,-272.76 447.48,-242.01 482.88,-222.8"/>
<polygon fill="black" stroke="black" points="484.74,-225.77 491.88,-217.94 481.41,-219.61 484.74,-225.77"/>
</g>
<!-- FragmentLength -->
<g id="node7" class="node">
<title>FragmentLength</title>
<polygon fill="#94ddf4" stroke="black" points="355.34,-332.5 355.34,-368.5 464.66,-368.5 464.66,-332.5 355.34,-332.5"/>
<text text-anchor="middle" x="410" y="-346.3" font-family="Times,serif" font-size="14.00">FragmentLength</text>
</g>
<!-- FragmentLength&#45;&gt;quant -->
<g id="edge7" class="edge">
<title>FragmentLength&#45;&gt;quant</title>
<path fill="none" stroke="black" d="M422.72,-332.47C441.73,-307 477.7,-258.82 499.89,-229.1"/>
<polygon fill="black" stroke="black" points="502.85,-230.98 506.03,-220.88 497.24,-226.8 502.85,-230.98"/>
</g>
<!-- StandardDeviation -->
<g id="node8" class="node">
<title>StandardDeviation</title>
<polygon fill="#94ddf4" stroke="black" points="482.51,-332.5 482.51,-368.5 603.49,-368.5 603.49,-332.5 482.51,-332.5"/>
<text text-anchor="middle" x="543" y="-346.3" font-family="Times,serif" font-size="14.00">StandardDeviation</text>
</g>
<!-- StandardDeviation&#45;&gt;quant -->
<g id="edge8" class="edge">
<title>StandardDeviation&#45;&gt;quant</title>
<path fill="none" stroke="black" d="M540.2,-332.47C536.1,-307.54 528.43,-260.87 523.53,-231.04"/>
<polygon fill="black" stroke="black" points="526.93,-230.18 521.86,-220.88 520.03,-231.31 526.93,-230.18"/>
</g>
<!-- isSingle -->
<g id="node9" class="node">
<title>isSingle</title>
<polygon fill="#94ddf4" stroke="black" points="621.44,-332.5 621.44,-368.5 682.56,-368.5 682.56,-332.5 621.44,-332.5"/>
<text text-anchor="middle" x="652" y="-346.3" font-family="Times,serif" font-size="14.00">isSingle</text>
</g>
<!-- isSingle&#45;&gt;quant -->
<g id="edge9" class="edge">
<title>isSingle&#45;&gt;quant</title>
<path fill="none" stroke="black" d="M641.41,-332.2C634.3,-321.97 624.04,-309.58 612,-302 599.96,-294.42 592.65,-302.17 581,-294 557.98,-277.86 540.89,-250.24 530.55,-229.75"/>
<polygon fill="black" stroke="black" points="533.64,-228.11 526.15,-220.62 527.34,-231.15 533.64,-228.11"/>
</g>
<!-- sampleRecord -->
<g id="node10" class="node">
<title>sampleRecord</title>
<polygon fill="#94ddf4" stroke="black" points="700.96,-332.5 700.96,-368.5 797.04,-368.5 797.04,-332.5 700.96,-332.5"/>
<text text-anchor="middle" x="749" y="-346.3" font-family="Times,serif" font-size="14.00">sampleRecord</text>
</g>
<!-- sampleRecord&#45;&gt;quant -->
<g id="edge10" class="edge">
<title>sampleRecord&#45;&gt;quant</title>
<path fill="none" stroke="black" d="M722.22,-332.35C710.36,-322.9 696.34,-311.25 683,-302 640.81,-272.75 589.34,-244.28 555.32,-225.54"/>
<polygon fill="black" stroke="black" points="556.65,-222.28 546.21,-220.52 553.27,-228.41 556.65,-222.28"/>
</g>
<!-- sampleRecord&#45;&gt;quant -->
<g id="edge11" class="edge">
<title>sampleRecord&#45;&gt;quant</title>
<path fill="none" stroke="black" d="M738.08,-332.35C728.36,-322.9 714.34,-311.25 701,-302 653.08,-268.78 593.19,-236.57 555.34,-218.46"/>
<polygon fill="black" stroke="black" points="556.75,-215.26 546.21,-214.17 553.77,-221.59 556.75,-215.26"/>
</g>
</g>
</svg>
# Facultative CAM in Talinum # Facultative CAM in Talinum
## Data origin This ARC is based on Brilhaus et al. (2016). <https://doi.org/10.1104/pp.15.01076>. See [isa.investigation.xlsx](./isa.investigation.xlsx) for details.
The [Talinum Genome Draft](./studies/TalinumGenomeDraft) originates from <https://git.nfdi4plants.org/hhu-plant-biochemistry/talinum-fruticosum-genome>
- see [isa.investigation.xlsx](./isa.investigation.xlsx) for details
- Adapted from
> Brilhaus, D., Bräutigam, A., Mettler-Altmann, T., Winter, K., and Weber, A.P.M. (2016). Reversible Burst of Transcriptional Changes during Induction of Crassulacean Acid Metabolism in *Talinum triangulare*. Plant Physiology 170: 102–122. <https://doi.org/10.1104/pp.15.01076>
- [studies/TalinumGenomeDraft](./studies/TalinumGenomeDraft) originates from <https://git.nfdi4plants.org/hhu-plant-biochemistry/talinum-fruticosum-genome>
<!--- Start of automated section -->
# Facultative CAM in Talinum triangulare
## Table of Contents ## Table of Contents
1. [Description](#description) 1. [Description](#description)
1. [Contacts](#contacts)
2. [Publication](#publication) 2. [Publication](#publication)
3. Studies 3. Studies
- [TalinumGenomeDraft](#study--talinumgenomedraft) - [TalinumGenomeDraft](#study--talinumgenomedraft)
...@@ -87,16 +78,6 @@ class TalinumGenomeDraft,plant_material,mh-quant-results,mh-quant-report,rna_ext ...@@ -87,16 +78,6 @@ class TalinumGenomeDraft,plant_material,mh-quant-results,mh-quant-report,rna_ext
| Assay identifiers | MassHunter_targets , Talinum_RNASeq_minimal , GCqTOF_targets | | Assay identifiers | MassHunter_targets , Talinum_RNASeq_minimal , GCqTOF_targets |
| Assay Count | 3 | | Assay Count | 3 |
## Contacts
| Names | Email | Address | Affiliation | ORCID |
| ----- | ----- | ------- | ----------- | ----- |
| Dominik Brilhaus | <brilhaus@hhu.de> | HHU Düsseldorf, 22.07.U1.43, Universitätsstr. 1, 40225 Düsseldorf | Institute of Plant Biochemistry, HHU Düsseldorf | <http://orcid.org/0000-0001-9021-3197> |
| Andrea Bräutigam | <andrea.brauetigam@hhu.de> | Universitätsstr. 1, 40225 Düsseldorf | Institute of Plant Biochemistry, HHU Düsseldorf | <http://orcid.org/0000-0002-5309-0527> |
| Tabea Mettler-Altmann | <tabea.mettler@hhu.de> | Universitätsstr. 1, 40225 Düsseldorf | Institute of Plant Biochemistry, HHU Düsseldorf | <http://orcid.org/0000-0002-9161-4889> |
| Klaus Winter | <winterk@si.edu> | Balboa, Ancón, Republic of Panama | Smithsonian Tropical Research Institute, Panama | |
| Andreas P M Weber | <aweber@hhu.de> | Universitätsstr. 1, 40225 Düsseldorf | Institute of Plant Biochemistry, HHU Düsseldorf | <http://orcid.org/0000-0003-0970-4672> |
## Publication ## Publication
| Meta Data | Description | | Meta Data | Description |
...@@ -191,5 +172,3 @@ class TalinumGenomeDraft,plant_material,mh-quant-results,mh-quant-report,rna_ext ...@@ -191,5 +172,3 @@ class TalinumGenomeDraft,plant_material,mh-quant-results,mh-quant-report,rna_ext
### Annotation headers ### Annotation headers
**Parameters**: [Bio entity](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000012),[Biosource amount](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000013),[Biosource material state](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010009),[Extraction buffer](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000050),[Extraction buffer volume](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000051),[Internal standard](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010012),[Sample volume](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010013),[MS sample post-extraction](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000043),[MS sample resuspension](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000044),[MS derivatization](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000052),[MS sample type](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000045),[Chromatography instrument model](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000046),[Chromatography autosampler model](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000047),[Chromatography column type](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000053),[Chromatography column model](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000048),[mobile phase](http://purl.obolibrary.org/obo/CHMO_0000995),[Chromatography injection volume](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010014),[Chromatography injection mode](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010015),[Chromatography gradient](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000081),[scan polarity](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000465),[scan window lower limit](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000501),[scan window upper limit](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000500),[scan rate](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000015),[instrument model](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000031),[ionization type](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000008),[mass analyzer type](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000443),[detector type](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000026) **Parameters**: [Bio entity](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000012),[Biosource amount](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000013),[Biosource material state](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010009),[Extraction buffer](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000050),[Extraction buffer volume](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000051),[Internal standard](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010012),[Sample volume](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010013),[MS sample post-extraction](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000043),[MS sample resuspension](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000044),[MS derivatization](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000052),[MS sample type](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000045),[Chromatography instrument model](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000046),[Chromatography autosampler model](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000047),[Chromatography column type](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000053),[Chromatography column model](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000048),[mobile phase](http://purl.obolibrary.org/obo/CHMO_0000995),[Chromatography injection volume](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010014),[Chromatography injection mode](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0010015),[Chromatography gradient](http://purl.org/nfdi4plants/ontology/dpbo/DPBO_0000081),[scan polarity](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000465),[scan window lower limit](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000501),[scan window upper limit](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000500),[scan rate](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000015),[instrument model](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000031),[ionization type](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000008),[mass analyzer type](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000443),[detector type](https://www.ebi.ac.uk/ols4/ontologies/ms/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FMS_1000026)
<!--- End of automated section -->
\ No newline at end of file
# Runs
See [.cwl/README.md](../.cwl/README.md) for more info.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment