RED-CWL 1 Specification

DRAFT: This spec is still subject to change.

Changes to the draft can viewed in the git history of this page.

RED-CWL 1 is a subset of the CWL 1.1 CommandLineTool Description. RED 9 will be the first version that implements the RED-CWL 1 specification draft.

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.1 CommandLineTool Description to define wether a certain part of the standard is supported or not.

Data model

Identifiers

CWL 1.1 - 2.3 Identifiers

Arbitrary identifiers using Schema Salad definitions are not supported.

Only id fields that are explicitely described in the CWL 1.1 CommandLineTool Description are supported. This limitation is allowed by the CWL standard.

Document Preprocessing

CWL 1.1 - 2.3 Document preprocessing

$import and $include directives are not supported.

Data type simplifications are supported.

Extensions and metadata

CWL 1.1 - 2.4 Extensions and metadata

Extensions and metadata are not supported.

Execution model

Generic execution process

CWL 1.1 - 3.2 Generic execution process

The generic execution process is not supported, because RED execution work inherently different than CWL runtimes.

RED execution engines execute the following steps using an “agent” program that supervises the processing in the experiment container:

  1. Execute validate subcommands of input and output connectors.
  2. Execute input connectors.
  3. Execute CommandLineTool.
  4. Execute output connectors.

Requirements and hints

CWL 1.1 - 3.3 Requirements and hints

Requirements and hints are not supported.

Parameter references

CWL 1.1 - 3.4 Parameter references

Expressions (Optional)

CWL 1.1 - 3.5 Expressions (Optional)

Executing CWL documents as scripts

CWL 1.1 - 3.6 Executing CWL documents as scripts

Discovering CWL documents on a local filesystem

CWL 1.1 - 3.7 Discovering CWL documents on a local filesystem

Running a Command

Input binding

CWL 1.1 - 4.1 Input binding

Runtime environment

CWL 1.1 - 4.2 Runtime environement

Execution

CWL 1.1 - 4.3 Execution

Output binding

CWL 1.1 - 4.4 Output binding

CommandLine Tool

CWL 1.1 - 5 CommandLine Tool

CommandInputParameter

CWL 1.1 - 5.1 CommandInputParameter

CommandLineBinding

CWL 1.1 - 5.1.1 CommandLineBinding

Expression

CWL 1.1 - 5.1.2 Expression

SecondaryFileSchema

CWL 1.1 - 5.1.3 SecondaryFileSchema

LoadListingEnum

CWL 1.1 - 5.1.4 LoadListingEnum

Any

CWL 1.1 - 5.1.5 Any

CWLType

CWL 1.1 - 5.1.6 CWLType

File

CWL 1.1 - 5.1.7 File

Directory

CWL 1.1 - 5.1.7.1 Directory

stdin

CWL 1.1 - 5.1.8 stdin

CommandInputRecordSchema

CWL 1.1 - 5.1.9 CommandInputRecordSchema

CommandInputRecordField

CWL 1.1 - 5.1.9.1 CommandInputRecordField

CommandInputEnumSchema

CWL 1.1 - 5.1.9.1.1 CommandInputEnumSchema

CommandInputArraySchema

CWL 1.1 - 5.1.9.1.2 CommandInputArraySchema

CommandOutputParameter

CWL 1.1 - 5.2 CommandOutputParameter

stdout

CWL 1.1 - 5.2.1 stdout

stderr

CWL 1.1 - 5.2.2 stderr

CommandOutputRecordSchema

CWL 1.1 - 5.2.3 CommandOutputRecordSchema

CommandOutputRecordField

CWL 1.1 - 5.2.4 CommandOutputRecordField

CommandOutputEnumSchema

CWL 1.1 - 5.2.4.1 CommandOutputEnumSchema

CommandOutputArraySchema

CWL 1.1 - 5.2.4.2 CommandOutputArraySchema

CommandOutputBinding

CWL 1.1 - 5.2.4.3 CommandOutputBinding

InlineJavascriptRequirement

CWL 1.1 - 5.3 InlineJavascriptRequirement

SchemaDefRequirement

CWL 1.1 - 5.4 SchemaDefRequirement

LoadListingRequirement

CWL 1.1 - 5.5 LoadListingRequirement

DockerRequirement

CWL 1.1 - 5.6 DockerRequirement

SoftwareRequirement

CWL 1.1 - 5.7 SoftwareRequirement

SoftwarePackage

CWL 1.1 - 5.8 SoftwarePackage

InitialWorkDirRequirement

CWL 1.1 - 5.9 InitialWorkDirRequirement

Dirent

CWL 1.1 - 5.9.1 Dirent

EnvVarRequirement

CWL 1.1 - 5.10 EnvVarRequirement

EnvironmentDef

CWL 1.1 - 5.11 EnvironmentDef

ShellCommandRequirement

CWL 1.1 - 5.12 ShellCommandRequirement

ResourceRequirement

CWL 1.1 - 5.13 ResourceRequirement

WorkReuse

CWL 1.1 - 5.14 WorkReuse

NetworkAccess

CWL 1.1 - 5.15 NetworkAccess

InplaceUpdateRequirement

CWL 1.1 - 5.16 InplaceUpdateRequirement

ToolTimeLimit

CWL 1.1 - 5.17 ToolTimeLimit

CWLVersion

CWL 1.1 - 5.18 CWLVersion