Common Workflow Language

Stian Soiland-Reyes edited this page Feb 29, 2016 · 2 revisions

The Common Workflow Language (CWL) is a pragmatic approach to a standardized workflow language for executing command line tools on the cloud and on local servers, with a particular focus on coordinating bioinformatics command line tools using Docker.

CWL is a YAML-based dataflow format, describing how command line tools can be wired together in a pipeline. An example workflow:

#!/usr/bin/env cwl-runner
class: Workflow
requirements:
  - class: ScatterFeatureRequirement
  - class: DockerRequirement
    dockerPull: "debian:8"
inputs:
  - id: "#pattern"
    type: string
  - id: "#infile"
    type: {type: array, items: File}
outputs:
  - id: "#outfile"
    type: File
    source: "#wc.outfile"
steps:
  - id: "#grep"
    run: {import: grep.cwl.yaml}
    scatter: "#grep.infile"
    inputs:
      - id: "#grep.pattern"
        source: "#pattern"
      - id: "#grep.infile"
        source: "#infile"
    outputs:
      - id: "#grep.outfile"

  - id: "#wc"
    run: {import: wc.cwl.yaml}
    inputs:
      - id: "#wc.infile"
        source: "#grep.outfile"
    outputs:
      - id: "#wc.outfile"

Source: https://github.com/common-workflow-language/workflows/blob/master/workflows/FestivalDemo/filtercount.cwl.yaml

CWL has a vibrant community and multiple implementations, including Rabix, Galaxy and a Python-based reference implementation cwltool.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.