Tour of a WDL workflow
Stephanie Gogarten
Simulation and Benchmarking sub-WG
Sept 21, 2022
Outline
Where to learn WDL
Example workflow: submit job to imputation server
Docker
Dockstore
Advanced WDL: parallel jobs with scatter()
Where to learn WDL
“Learn WDL” videos
Anatomy of a workflow
Workflow inputs
Calling a task
Workflow inputs map to task inputs
In this case there is only one task, but with multiple tasks each can have a different subset of inputs
Inside the task
Task inputs
Doing stuff: the command block
Shell commands to be executed at runtime
Input references are enclosed in ${}
Transform inputs with arguments inside brackets (e.g. paste with separator)
Task output
Output type options are same as input: e.g. string, boolean, File
This example reads a temporary file to return a string
Workflow output
Output of workflow references task output
Displayed in AnVIL job manager:
Task name
Defining the compute environment
The “runtime” block specifies the docker image in which the command is executed
The docker image must contain all software needed to run the command
What is Docker?
13
Creating a docker image
Save in a “Dockerfile”
Build image locally
Push to repository
Maintaining code on GitHub
Dockerfile
WDL file
Sync with Dockstore
Example inputs
Publishing the workflow on Dockstore
.dockstore.yml file
Follow instructions linked from PRIMED website to connect your GitHub repository to Dockstore
PRIMED WDL collections
Workflow page on dockstore
Workflow must be published to see this page
Import workflow to an AnVIL workspace
Workflow on AnVIL
Edit example JSON and upload to AnVIL
Example JSON
Advanced WDL: scatter()
Questions?
#anvil channel on PRIMED Slack