Hello!
This guide will introduce you to writing tool wrappers and workflows using the Common Workflow Language (CWL). This guide describes the current stable specification, version 1.0.
Note: This document is a work in progress. Not all features are covered, yet.
Prerequisites
A text editor
A CWL runner. It is recommended to start with the reference implementation. The full list of CWL runners is on the project homepage.
| Setup | Download files required for the lesson | |
| 00:00 | 1. Introduction |
What is Common Workflow Language?
Why might I want to learn to use CWL? |
| 00:00 | 2. First Example | How do I wrap a simple command line tool? |
| 00:05 | 3. Essential Input Parameters |
How do I describe inputs to a command?
How do I specify the order in which inputs appear in a command? |
| 00:15 | 4. Returning Output Files | How do I describe outputs from a command? |
| 00:25 | 5. Capturing Standard Output | How do I capture a tool’s standard output stream? |
| 00:35 | 6. Parameter References | How do I reference input parameters in other fields? |
| 00:45 | 7. Running Tools Inside Docker | How do I run tools inside a Docker container? |
| 00:55 | 8. Additional Arguments and Parameters |
How do I specify arguments that don’t require input values?
How do I refer to runtime parameters? |
| 01:05 | 9. Array Inputs | How do I specify input parameters in arrays? |
| 01:15 | 10. Array Outputs | How do I specify tool outputs as arrays? |
| 01:25 | 11. Advanced Inputs | How do I describe dependent and exclusive parameters? |
| 01:35 | 12. Environment Variables | How do I set the value of environment variables for a tool’s execution? |
| 01:45 | 13. JavaScript Expressions | What do I do when I want to create values dynamically and CWL doesn’t provide a built-in way of doing so? |
| 01:55 | 14. Creating Files at Runtime | How do I create required input files from input parameters at runtime? |
| 02:05 | 15. Staging Input Files | How do I stage input files in the working directory? |
| 02:15 | 16. File Formats | How can I allow type-checking of input and output files? |
| 02:25 | 17. Metadata and Authorship | How do I provide information for people to cite my tool descriptions? |
| 02:35 | 18. Custom Types | How do I create and import my own custom types into a CWL description? |
| 02:45 | 19. Specifying Software Requirements |
How do I specify requirements/dependencies for a job?
What level of detail should I provide for a software requirement? |
| 02:55 | 20. Writing Workflows | How do I connect tools together into a workflow? |
| 03:05 | 21. Nested Workflows | How do I connect multiple workflows together? |
| 03:15 | Finish |
The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.