RED-CWL 0 Specification
RED-CWL 0 is a subset of the CWL 1.0 CommandLineTool Description reflects the current (incomplete) implementation status.
The CWL reference implementation cwltool requires a *.cwl file as generic description of CommandLineTool and a *.yml job file to define an input object, that contains actual parameters to run the experiment.
In contrast, a RED file embeds the contents of a *.cwl file under the cli keyword and embeds the input object under the inputs keyword.
Depending on the RED execution engine, defining an output object might be optional and can be embedded under the outputs keyword.
The RED-CWL description can be extracted from a RED file’s cli section and stored in a *.cwl file.
Since RED-CWL is a subset of the CWL standard, this extracted description should always be compatible with CWL runtimes like cwltool.
On the other hand, not every CWL description can be embedded into a RED file without modification.
This spec refers to individial sections of the CWL 1.0 CommandLineTool Description to define wether a certain part of the standard is supported or not.
Data model
Document preprocessing
CWL 1.0 - 2.4 Document preprocessing
Optional inputs and outputs can be defined as <T>?. Input arrays can be defined as <T>[]. Optional input arrays can be defined as <T>[]?.
<T> refers to the input type. Output arrays are not allowed.
Running a Command
Runtime Environment
CWL 1.0 - 4.2 Document preprocessing
Setting runtime parameters like runtime.ram is not supported.
In the context of RED, this information is part of the container section, because the container engine enforces these settings.
In addtion, the resource requirements of a CLI tool are in many cases influenced by the input data size. This makes resource requirements more of an experiment setting than a CLI tool setting.
CommandLineTool
| Field | Supported | Description |
|---|---|---|
| inputs | partly | only map<id, type | CommandInputParameter> |
| outputs | partly | only map<id, type | CommandInputParameter> |
| class | yes | |
| id | no | |
| requirements | no | |
| hints | no | |
| label | no | |
| doc | yes | |
| cwlVersion | yes | |
| baseCommand | yes | |
| arguments | no | |
| stdin | no | |
| stdout | partly | only string |
| stderr | partly | only string |
| successCodes | no | |
| temporaryFailCodes | no | |
| permanentFailCodes | no |
CommandInputParameter
CWL 1.0 - 5.1 CommandInputParameter
| Field | Supported | Description |
|---|---|---|
| id | no | because inputs only supports map<id, type | CommandInputParameter> |
| label | no | |
| secondaryFiles | no | |
| streamable | no | |
| doc | yes | |
| format | no | |
| inputBinding | yes | |
| default | no | |
| type | partly | only string, CWLType |
Expression
| Symbol | Supported | Description |
|---|---|---|
| ExpressionPlaceholder | partly | only in RED outputs to reference inputs |
CommandLineBinding
CWL 1.0 - 5.1.2 CommandLineBinding
| Field | Supported | Description |
|---|---|---|
| loadContents | no | |
| position | yes | |
| prefix | yes | |
| separate | yes | |
| itemSeparator | yes | |
| valueFrom | no | |
| shellQuote | no |
Any
Not supported.
CWLType
| Symbol | Supported | Description |
|---|---|---|
| null | yes | |
| boolean | yes | |
| int | yes | |
| long | yes | |
| float | yes | |
| double | yes | |
| string | yes | |
| File | yes | |
| Directory | yes |
File
Supported in RED inputs section.
| Field | Supported | Description |
|---|---|---|
| class | yes | |
| location | no | because RED introduces the connector field, that replaces location |
| path | auto | automatically set by execution engine |
| basename | yes | |
| dirname | yes | |
| nameroot | auto | automatically set by execution engine |
| nameext | auto | automatically set by execution engine |
| checksum | yes | |
| size | yes | |
| secondaryFiles | no | |
| format | no | |
| contents | no |
Directory
Supported in RED inputs section.
| Field | Supported | Description |
|---|---|---|
| class | yes | |
| location | no | because RED introduces the connector field, that replaces location |
| path | auto | automatically set by execution engine |
| basename | yes | |
| listing | yes |
CommandInputRecordSchema
CWL 1.0 - 5.1.6 CommandInputRecordSchema
Not supported.
CommandInputRecordField
CWL 1.0 - 5.1.7 CommandInputRecordField
Not supported.
CommandInputRecordSchema
CWL 1.0 - 5.1.6 CommandInputRecordSchema
Not supported.
CommandInputRecordField
CWL 1.0 - 5.1.7 CommandInputRecordField
Not supported.
CommandInputEnumSchema
CWL 1.0 - 5.1.7.1 CommandInputEnumSchema
Not supported.
CommandInputArraySchema
CWL 1.0 - 5.1.7.2 CommandInputArraySchema
https://www.commonwl.org/v1.0/CommandLineTool.html#Document_preprocessing
Not supported, but arrays can be specified using type: <T>[] as described in CWL 1.0 - 2.4 Document preprocessing.
CommandOutputParameter
CWL 1.0 - 5.2 CommandOutputParameter
| Field | Supported | Description |
|---|---|---|
| id | no | because inputs only supports map<id, type | CommandInputParameter> |
| label | no | |
| secondaryFiles | no | |
| streamable | no | |
| doc | yes | |
| outputBinding | yes | |
| format | no | |
| type | partly | only string, CWLType, where CWLType is one of File, Directory |
stdout
| Symbol | Supported | Description |
|---|---|---|
| stdout | yes |
stderr
| Symbol | Supported | Description |
|---|---|---|
| stderr | yes |
CommandOutputBinding
CWL 1.0 - 5.2.3 CommandOutputBinding
| Field | Supported | Description |
|---|---|---|
| glob | yes | |
| loadContents | no | |
| outputEval | no |
CommandOutputRecordSchema
CWL 1.0 - 5.2.4 CommandOutputRecordSchema
Not supported.
CommandOutputRecordField
CWL 1.0 - 5.2.5 CommandOutputRecordField
Not supported.
CommandOutputEnumSchema
CWL 1.0 - 5.2.5.1 CommandOutputEnumSchema
Not supported.
CommandOutputArraySchema
CWL 1.0 - 5.2.5.2 CommandOutputArraySchema
Not supported.
InlineJavascriptRequirement
CWL 1.0 - 5.3 InlineJavascriptRequirement
Not supported.
SchemaDefRequirement
CWL 1.0 - 5.4 SchemaDefRequirement
Not supported.
DockerRequirement
CWL 1.0 - 5.5 DockerRequirement
Not supported, because container engine settings must be defined in the container section of a RED file.
SoftwareRequirement
CWL 1.0 - 5.6 SoftwareRequirement
Not supported.
SoftwarePackage
Not supported.
InitialWorkDirRequirement
CWL 1.0 - 5.8 InitialWorkDirRequirement
Not supported.
EnvVarRequirement
CWL 1.0 - 5.9 EnvVarRequirement
Not supported.
EnvironmentDef
Not supported.
ShellCommandRequirement
CWL 1.0 - 5.11 ShellCommandRequirement
Not supported.
ResourceRequirement
CWL 1.0 - 5.12 ResourceRequirement
Not supported.
CWLVersion
| Field | Supported | Description |
|---|---|---|
| draft-2 | no | |
| draft-3.dev1 | no | |
| draft-3.dev2 | no | |
| draft-3.dev3 | no | |
| draft-3.dev4 | no | |
| draft-3.dev5 | no | |
| draft-3 | no | |
| draft-4.dev1 | no | |
| draft-4.dev2 | no | |
| draft-4.dev3 | no | |
| v1.0.dev4 | no | |
| v1.0 | yes |