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.