|
| 1 | +$base: http://commonwl.org/cwltool# |
| 2 | +$namespaces: |
| 3 | + cwl: "https://w3id.org/cwl/cwl#" |
| 4 | + cwltool: "http://commonwl.org/cwltool#" |
| 5 | +$graph: |
| 6 | +- $import: https://github.com/common-workflow-language/cwl-v1.2/raw/codegen/CommonWorkflowLanguage.yml |
| 7 | + |
| 8 | +- name: Secrets |
| 9 | + type: record |
| 10 | + inVocab: false |
| 11 | + extends: cwl:ProcessRequirement |
| 12 | + fields: |
| 13 | + class: |
| 14 | + type: string |
| 15 | + doc: "Always 'Secrets'" |
| 16 | + jsonldPredicate: |
| 17 | + "_id": "@type" |
| 18 | + "_type": "@vocab" |
| 19 | + secrets: |
| 20 | + type: string[] |
| 21 | + doc: | |
| 22 | + List one or more input parameters that are sensitive (such as passwords) |
| 23 | + which will be deliberately obscured from logging. |
| 24 | + jsonldPredicate: |
| 25 | + "_type": "@id" |
| 26 | + refScope: 0 |
| 27 | + |
| 28 | + |
| 29 | +- name: ProcessGenerator |
| 30 | + type: record |
| 31 | + inVocab: true |
| 32 | + extends: cwl:Process |
| 33 | + documentRoot: true |
| 34 | + fields: |
| 35 | + - name: class |
| 36 | + jsonldPredicate: |
| 37 | + "_id": "@type" |
| 38 | + "_type": "@vocab" |
| 39 | + type: string |
| 40 | + - name: run |
| 41 | + type: [string, cwl:Process] |
| 42 | + jsonldPredicate: |
| 43 | + _id: "cwl:run" |
| 44 | + _type: "@id" |
| 45 | + subscope: run |
| 46 | + doc: | |
| 47 | + Specifies the process to run. |
| 48 | +
|
| 49 | +- name: MPIRequirement |
| 50 | + type: record |
| 51 | + inVocab: false |
| 52 | + extends: cwl:ProcessRequirement |
| 53 | + doc: | |
| 54 | + Indicates that a process requires an MPI runtime. |
| 55 | + fields: |
| 56 | + - name: class |
| 57 | + type: string |
| 58 | + doc: "Always 'MPIRequirement'" |
| 59 | + jsonldPredicate: |
| 60 | + "_id": "@type" |
| 61 | + "_type": "@vocab" |
| 62 | + - name: processes |
| 63 | + type: [int, cwl:Expression] |
| 64 | + doc: | |
| 65 | + The number of MPI processes to start. If you give a string, |
| 66 | + this will be evaluated as a CWL Expression and it must |
| 67 | + evaluate to an integer. |
| 68 | +
|
| 69 | +- name: CUDARequirement |
| 70 | + type: record |
| 71 | + extends: cwl:ProcessRequirement |
| 72 | + inVocab: false |
| 73 | + doc: | |
| 74 | + Require support for NVIDA CUDA (GPU hardware acceleration). |
| 75 | + fields: |
| 76 | + class: |
| 77 | + type: string |
| 78 | + doc: 'cwltool:CUDARequirement' |
| 79 | + jsonldPredicate: |
| 80 | + _id: "@type" |
| 81 | + _type: "@vocab" |
| 82 | + cudaVersionMin: |
| 83 | + type: string |
| 84 | + doc: | |
| 85 | + Minimum CUDA version to run the software, in X.Y format. This |
| 86 | + corresponds to a CUDA SDK release. When running directly on |
| 87 | + the host (not in a container) the host must have a compatible |
| 88 | + CUDA SDK (matching the exact version, or, starting with CUDA |
| 89 | + 11.3, matching major version). When run in a container, the |
| 90 | + container image should provide the CUDA runtime, and the host |
| 91 | + driver is injected into the container. In this case, because |
| 92 | + CUDA drivers are backwards compatible, it is possible to |
| 93 | + use an older SDK with a newer driver across major versions. |
| 94 | +
|
| 95 | + See https://docs.nvidia.com/deploy/cuda-compatibility/ for |
| 96 | + details. |
| 97 | + cudaComputeCapability: |
| 98 | + type: |
| 99 | + - 'string' |
| 100 | + - 'string[]' |
| 101 | + doc: | |
| 102 | + CUDA hardware capability required to run the software, in X.Y |
| 103 | + format. |
| 104 | +
|
| 105 | + * If this is a single value, it defines only the minimum |
| 106 | + compute capability. GPUs with higher capability are also |
| 107 | + accepted. |
| 108 | +
|
| 109 | + * If it is an array value, then only select GPUs with compute |
| 110 | + capabilities that explicitly appear in the array. |
| 111 | + cudaDeviceCountMin: |
| 112 | + type: ['null', int, cwl:Expression] |
| 113 | + default: 1 |
| 114 | + doc: | |
| 115 | + Minimum number of GPU devices to request. If not specified, |
| 116 | + same as `cudaDeviceCountMax`. If neither are specified, |
| 117 | + default 1. |
| 118 | + cudaDeviceCountMax: |
| 119 | + type: ['null', int, cwl:Expression] |
| 120 | + doc: | |
| 121 | + Maximum number of GPU devices to request. If not specified, |
| 122 | + same as `cudaDeviceCountMin`. |
| 123 | +
|
| 124 | +- name: LoopInput |
| 125 | + type: record |
| 126 | + fields: |
| 127 | + id: |
| 128 | + type: string? |
| 129 | + jsonldPredicate: "@id" |
| 130 | + doc: "It must reference the `id` of one of the elements in the `in` field of the step." |
| 131 | + loopSource: |
| 132 | + doc: | |
| 133 | + Specifies one or more of the step output parameters that will |
| 134 | + provide input to the loop iterations after the first one (inputs |
| 135 | + of the first iteration are the step input parameters). |
| 136 | + type: |
| 137 | + - string? |
| 138 | + - string[]? |
| 139 | + jsonldPredicate: |
| 140 | + "_type": "@id" |
| 141 | + refScope: 1 |
| 142 | + linkMerge: |
| 143 | + type: cwl:LinkMergeMethod? |
| 144 | + jsonldPredicate: "cwl:linkMerge" |
| 145 | + default: merge_nested |
| 146 | + doc: | |
| 147 | + The method to use to merge multiple inbound links into a single array. |
| 148 | + If not specified, the default method is "merge_nested". |
| 149 | + pickValue: |
| 150 | + type: ["null", cwl:PickValueMethod] |
| 151 | + jsonldPredicate: "cwl:pickValue" |
| 152 | + doc: | |
| 153 | + The method to use to choose non-null elements among multiple sources. |
| 154 | + default: |
| 155 | + type: ["null", Any] |
| 156 | + doc: | |
| 157 | + The default value for this parameter to use if either there is no |
| 158 | + `source` field, or the value produced by the `source` is `null`. The |
| 159 | + default must be applied prior to scattering or evaluating `valueFrom`. |
| 160 | + jsonldPredicate: |
| 161 | + _id: "sld:default" |
| 162 | + _container: "@list" |
| 163 | + noLinkCheck: true |
| 164 | + valueFrom: |
| 165 | + type: |
| 166 | + - "null" |
| 167 | + - string |
| 168 | + - cwl:Expression |
| 169 | + jsonldPredicate: "cwl:valueFrom" |
| 170 | + doc: | |
| 171 | + To use valueFrom, [StepInputExpressionRequirement](#StepInputExpressionRequirement) must |
| 172 | + be specified in the workflow or workflow step requirements. |
| 173 | +
|
| 174 | + If `valueFrom` is a constant string value, use this as the value for |
| 175 | + this input parameter. |
| 176 | +
|
| 177 | + If `valueFrom` is a parameter reference or expression, it must be |
| 178 | + evaluated to yield the actual value to be assigned to the input field. |
| 179 | +
|
| 180 | + The `self` value in the parameter reference or expression must be |
| 181 | + `null` if there is no `loopSource` field, or the value of the |
| 182 | + parameter(s) specified in the `loopSource` field. |
| 183 | +
|
| 184 | + The value of `inputs` in the parameter reference or expression must be |
| 185 | + the input object to the previous iteration of the workflow step (or the initial |
| 186 | + inputs for the first iteration). |
| 187 | +
|
| 188 | +- name: Loop |
| 189 | + type: record |
| 190 | + extends: cwl:ProcessRequirement |
| 191 | + inVocab: false |
| 192 | + doc: | |
| 193 | + Prototype to enable workflow-level looping of a step. |
| 194 | +
|
| 195 | + Valid only under `requirements` of a https://www.commonwl.org/v1.2/Workflow.html#WorkflowStep. |
| 196 | + Unlike other CWL requirements, Loop requirement is not propagated to inner steps. |
| 197 | +
|
| 198 | + `loopWhen` is an expansion of the CWL v1.2 `when` construct which controls |
| 199 | + conditional execution. |
| 200 | +
|
| 201 | + Using `loopWhen` and `when` for the same step will produce an error. |
| 202 | +
|
| 203 | + `loopWhen` is not compatible with `scatter` at this time and combining the |
| 204 | + two in the same step will produce an error. |
| 205 | + fields: |
| 206 | + class: |
| 207 | + type: string |
| 208 | + doc: 'cwltool:Loop' |
| 209 | + jsonldPredicate: |
| 210 | + _id: "@type" |
| 211 | + _type: "@vocab" |
| 212 | + loopWhen: |
| 213 | + type: cwl:Expression |
| 214 | + doc: | |
| 215 | + Only run the step while the expression evaluates to `true`. |
| 216 | + If `false` and no iteration has been performed, the step is skipped. |
| 217 | +
|
| 218 | + A skipped step produces a `null` on each output. |
| 219 | +
|
| 220 | + The `inputs` value in the expression must be the step input object. |
| 221 | +
|
| 222 | + It is an error if this expression returns a value other than `true` or `false`. |
| 223 | + loop: |
| 224 | + type: LoopInput[] |
| 225 | + jsonldPredicate: |
| 226 | + _id: "cwltool:loop" |
| 227 | + mapSubject: id |
| 228 | + mapPredicate: loopSource |
| 229 | + doc: | |
| 230 | + Defines the input parameters of the loop iterations after the first one |
| 231 | + (inputs of the first iteration are the step input parameters). If no |
| 232 | + `loop` rule is specified for a given step `in` field, the initial value |
| 233 | + is kept constant among all iterations. |
| 234 | + outputMethod: |
| 235 | + type: |
| 236 | + type: enum |
| 237 | + name: LoopOutputModes |
| 238 | + symbols: [ last, all ] |
| 239 | + default: last |
| 240 | + doc: | |
| 241 | + - Specify the desired method of dealing with loop outputs |
| 242 | + - Default. Propagates only the last computed element to the subsequent steps when the loop terminates. |
| 243 | + - Propagates a single array with all output values to the subsequent steps when the loop terminates. |
| 244 | +- name: ShmSize |
| 245 | + type: record |
| 246 | + extends: cwl:ProcessRequirement |
| 247 | + inVocab: false |
| 248 | + fields: |
| 249 | + class: |
| 250 | + type: string |
| 251 | + doc: 'cwltool:ShmSize' |
| 252 | + jsonldPredicate: |
| 253 | + "_id": "@type" |
| 254 | + "_type": "@vocab" |
| 255 | + shmSize: |
| 256 | + type: string |
| 257 | + doc: | |
| 258 | + Size of /dev/shm. The format is `<number><unit>`. <number> must be greater |
| 259 | + than 0. Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` |
| 260 | + (megabytes), or `g` (gigabytes). If you omit the unit, the default is |
| 261 | + bytes. If you omit the size entirely, the value is `64m`." |
0 commit comments