2 title: "Running and Debugging a Workflow"
6 - "How do I provide input to run a workflow?"
7 - "What should I do if the workflow fails?"
9 - "Write an input parameter file."
10 - "Execute the workflow."
11 - "Diagnose workflow errors."
13 - "The input parameter file is a YAML file with values for each input parameter."
14 - "A common reason for a workflow step fails is insufficient RAM."
15 - "Use ResourceRequirement to set the amount of RAM to be allocated to the job."
16 - "Output parameter values are printed as JSON to standard output at the end of the run."
19 # The input parameter file
21 CWL input values are provided in the form of a YAML or JSON file.
24 This file gives the values for parameters declared in the `inputs`
25 section of our workflow. Our workflow takes `fq`, `genome` and `gtf`
28 When setting inputs, Files and Directories are given as an object with
29 `class: File` or `class: Directory`. This distinguishes them from
30 plain strings that may or may not be file paths.
32 Note: if you don't have example sequence data or the STAR index files, see [setup](/setup.html).
39 location: rnaseq/raw_fastq/Mov10_oe_1.subset.fq
40 format: http://edamontology.org/format_1930
43 location: hg19-chr1-STAR-index
46 location: rnaseq/reference_data/chr1-hg19_genes.gtf
50 > ## Running the workflow
52 > Type this into the terminal:
55 > cwl-runner main.cwl main-input.yaml
58 > This may take a few minutes to run, and will print some amount of
59 > logging. The logging you see, how access other logs, and how to
60 > track workflow progress will depend on your CWL runner platform.
65 # Debugging the workflow
67 Depending on whether and how your workflow platform enforces memory
68 limits, your workflow may fail. Let's talk about what to do when a
71 A workflow can fail for many reasons: some possible reasons include
72 bad input, bugs in the code, or running out memory. In our example,
73 the STAR workflow may fail with an out of memory error.
75 To help diagnose these errors, the workflow runner produces logs that
76 record what happened, either in the terminal or the web interface.
78 Some errors you might see in the logs that would indicate an out of
82 EXITING: fatal error trying to allocate genome arrays, exception thrown: std::bad_alloc
83 Possible cause 1: not enough RAM. Check if you have enough RAM 5711762337 bytes
84 Possible cause 2: not enough virtual memory allowed with ulimit. SOLUTION: run ulimit -v 5711762337
90 Container exited with code: 137
93 (Exit code 137 most commonly occurs when a container goes "out of memory" and is terminated by the operating system).
95 If this happens, you will need to request more RAM.
97 # Setting runtime RAM requirements
99 By default, a step is allocated 256 MB of RAM. From the STAR error message:
101 > Check if you have enough RAM 5711762337 bytes
103 We can see that STAR requires quite a bit more RAM than 256 MB. To
104 request more RAM, add a "requirements" section with
105 "ResourceRequirement" to the "STAR" step:
112 run: bio-cwl-tools/STAR/STAR-Align.cwl
117 Resource requirements you can set include:
119 * coresMin: CPU cores
120 * ramMin: RAM (in megabytes)
121 * tmpdirMin: temporary directory available space
122 * outdirMin: output directory available space
124 > ## Running the workflow
126 > Now that you've fixed the workflow, run it again.
132 The CWL runner will print a results JSON object to standard output. It will look something like this (it may include additional fields).
136 "bam_sorted_indexed": {
137 "location": "file:///home/username/rnaseq-cwl-training-exercises/Aligned.sortedByCoord.out.bam",
138 "basename": "Aligned.sortedByCoord.out.bam",
143 "basename": "Aligned.sortedByCoord.out.bam.bai",
144 "location": "file:///home/username/rnaseq-cwl-training-exercises/Aligned.sortedByCoord.out.bam.bai",
151 "location": "file:///home/username/rnaseq-cwl-training-exercises/Mov10_oe_1.subset_fastqc.html",
152 "basename": "Mov10_oe_1.subset_fastqc.html",
160 This has a similar structure as `main-input.yaml`. The each output
161 parameter is listed, with the `location` field of each `File` object
162 indicating where the output file can be found.