Skip to content

Commit

Permalink
Added CWL extensions file
Browse files Browse the repository at this point in the history
  • Loading branch information
GlassOfWhiskey committed Dec 5, 2024
1 parent 97afb19 commit d07da91
Showing 1 changed file with 261 additions and 0 deletions.
261 changes: 261 additions & 0 deletions extensions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
$base: http://commonwl.org/cwltool#
$namespaces:
cwl: "https://w3id.org/cwl/cwl#"
cwltool: "http://commonwl.org/cwltool#"
$graph:
- $import: https://github.com/common-workflow-language/cwl-v1.2/raw/codegen/CommonWorkflowLanguage.yml

- name: Secrets
type: record
inVocab: false
extends: cwl:ProcessRequirement
fields:
class:
type: string
doc: "Always 'Secrets'"
jsonldPredicate:
"_id": "@type"
"_type": "@vocab"
secrets:
type: string[]
doc: |
List one or more input parameters that are sensitive (such as passwords)
which will be deliberately obscured from logging.
jsonldPredicate:
"_type": "@id"
refScope: 0


- name: ProcessGenerator
type: record
inVocab: true
extends: cwl:Process
documentRoot: true
fields:
- name: class
jsonldPredicate:
"_id": "@type"
"_type": "@vocab"
type: string
- name: run
type: [string, cwl:Process]
jsonldPredicate:
_id: "cwl:run"
_type: "@id"
subscope: run
doc: |
Specifies the process to run.
- name: MPIRequirement
type: record
inVocab: false
extends: cwl:ProcessRequirement
doc: |
Indicates that a process requires an MPI runtime.
fields:
- name: class
type: string
doc: "Always 'MPIRequirement'"
jsonldPredicate:
"_id": "@type"
"_type": "@vocab"
- name: processes
type: [int, cwl:Expression]
doc: |
The number of MPI processes to start. If you give a string,
this will be evaluated as a CWL Expression and it must
evaluate to an integer.
- name: CUDARequirement
type: record
extends: cwl:ProcessRequirement
inVocab: false
doc: |
Require support for NVIDA CUDA (GPU hardware acceleration).
fields:
class:
type: string
doc: 'cwltool:CUDARequirement'
jsonldPredicate:
_id: "@type"
_type: "@vocab"
cudaVersionMin:
type: string
doc: |
Minimum CUDA version to run the software, in X.Y format. This
corresponds to a CUDA SDK release. When running directly on
the host (not in a container) the host must have a compatible
CUDA SDK (matching the exact version, or, starting with CUDA
11.3, matching major version). When run in a container, the
container image should provide the CUDA runtime, and the host
driver is injected into the container. In this case, because
CUDA drivers are backwards compatible, it is possible to
use an older SDK with a newer driver across major versions.
See https://docs.nvidia.com/deploy/cuda-compatibility/ for
details.
cudaComputeCapability:
type:
- 'string'
- 'string[]'
doc: |
CUDA hardware capability required to run the software, in X.Y
format.
* If this is a single value, it defines only the minimum
compute capability. GPUs with higher capability are also
accepted.
* If it is an array value, then only select GPUs with compute
capabilities that explicitly appear in the array.
cudaDeviceCountMin:
type: ['null', int, cwl:Expression]
default: 1
doc: |
Minimum number of GPU devices to request. If not specified,
same as `cudaDeviceCountMax`. If neither are specified,
default 1.
cudaDeviceCountMax:
type: ['null', int, cwl:Expression]
doc: |
Maximum number of GPU devices to request. If not specified,
same as `cudaDeviceCountMin`.
- name: LoopInput
type: record
fields:
id:
type: string?
jsonldPredicate: "@id"
doc: "It must reference the `id` of one of the elements in the `in` field of the step."
loopSource:
doc: |
Specifies one or more of the step output parameters that will
provide input to the loop iterations after the first one (inputs
of the first iteration are the step input parameters).
type:
- string?
- string[]?
jsonldPredicate:
"_type": "@id"
refScope: 1
linkMerge:
type: cwl:LinkMergeMethod?
jsonldPredicate: "cwl:linkMerge"
default: merge_nested
doc: |
The method to use to merge multiple inbound links into a single array.
If not specified, the default method is "merge_nested".
pickValue:
type: ["null", cwl:PickValueMethod]
jsonldPredicate: "cwl:pickValue"
doc: |
The method to use to choose non-null elements among multiple sources.
default:
type: ["null", Any]
doc: |
The default value for this parameter to use if either there is no
`source` field, or the value produced by the `source` is `null`. The
default must be applied prior to scattering or evaluating `valueFrom`.
jsonldPredicate:
_id: "sld:default"
_container: "@list"
noLinkCheck: true
valueFrom:
type:
- "null"
- string
- cwl:Expression
jsonldPredicate: "cwl:valueFrom"
doc: |
To use valueFrom, [StepInputExpressionRequirement](#StepInputExpressionRequirement) must
be specified in the workflow or workflow step requirements.
If `valueFrom` is a constant string value, use this as the value for
this input parameter.
If `valueFrom` is a parameter reference or expression, it must be
evaluated to yield the actual value to be assigned to the input field.
The `self` value in the parameter reference or expression must be
`null` if there is no `loopSource` field, or the value of the
parameter(s) specified in the `loopSource` field.
The value of `inputs` in the parameter reference or expression must be
the input object to the previous iteration of the workflow step (or the initial
inputs for the first iteration).
- name: Loop
type: record
extends: cwl:ProcessRequirement
inVocab: false
doc: |
Prototype to enable workflow-level looping of a step.
Valid only under `requirements` of a https://www.commonwl.org/v1.2/Workflow.html#WorkflowStep.
Unlike other CWL requirements, Loop requirement is not propagated to inner steps.
`loopWhen` is an expansion of the CWL v1.2 `when` construct which controls
conditional execution.
Using `loopWhen` and `when` for the same step will produce an error.
`loopWhen` is not compatible with `scatter` at this time and combining the
two in the same step will produce an error.
fields:
class:
type: string
doc: 'cwltool:Loop'
jsonldPredicate:
_id: "@type"
_type: "@vocab"
loopWhen:
type: cwl:Expression
doc: |
Only run the step while the expression evaluates to `true`.
If `false` and no iteration has been performed, the step is skipped.
A skipped step produces a `null` on each output.
The `inputs` value in the expression must be the step input object.
It is an error if this expression returns a value other than `true` or `false`.
loop:
type: LoopInput[]
jsonldPredicate:
_id: "cwltool:loop"
mapSubject: id
mapPredicate: loopSource
doc: |
Defines the input parameters of the loop iterations after the first one
(inputs of the first iteration are the step input parameters). If no
`loop` rule is specified for a given step `in` field, the initial value
is kept constant among all iterations.
outputMethod:
type:
type: enum
name: LoopOutputModes
symbols: [ last, all ]
default: last
doc: |
- Specify the desired method of dealing with loop outputs
- Default. Propagates only the last computed element to the subsequent steps when the loop terminates.
- Propagates a single array with all output values to the subsequent steps when the loop terminates.
- name: ShmSize
type: record
extends: cwl:ProcessRequirement
inVocab: false
fields:
class:
type: string
doc: 'cwltool:ShmSize'
jsonldPredicate:
"_id": "@type"
"_type": "@vocab"
shmSize:
type: string
doc: |
Size of /dev/shm. The format is `<number><unit>`. <number> must be greater
than 0. Unit is optional and can be `b` (bytes), `k` (kilobytes), `m`
(megabytes), or `g` (gigabytes). If you omit the unit, the default is
bytes. If you omit the size entirely, the value is `64m`."

0 comments on commit d07da91

Please sign in to comment.