Plumbing Options
Options for connecting workflow steps
-
Linear Chaining
The simplest way to chain tasks together in a workflow is a linear chain, where we feed the output of one task to the input of the next, like so: This is easy to do because WDL allows us to refer to the output of any task (declared appropriately ...
See more -
Branch & Merge
The ability to connect outputs to inputs described in Linear Chaining and Multi-in/out, which relies on hierarchical naming, can be further extended to direct a task's outputs to separate paths, do something with them, then merge the branching pat...
See more -
Multi-input / Multi-output
The ability to connect outputs to inputs described in Linear Chaining, which relies on hierarchical naming, allows you to chain together tools that produce multiple outputs and accept multiple inputs, and specify exactly which output feeds into wh...
See more -
Scatter-Gather Parallelism
Parallelism is a way to make a program finish faster by performing several operations in parallel, rather than sequentially (i.e. waiting for each operation to finish before starting the next one). For a more detailed introduction on parallelism, ...
See more -
Task Aliasing
When you need to call a task more than once in a workflow, you can use task aliasing. It would be tedious to copy-paste a task's definition and change the name each time you needed to use it again in the workflow. This method, termed copy and past...
See more -
Conditionals (if/else)
Conditionals have been implemented as of Cromwell version 24 Sometimes when pipelining, there are steps you want to run sometimes and not other times. This could mean switching between two paths (e.g. run a tool in modeA vs. run a tool in modeB) o...
See more