Skip to content

Dev approach

Ash O'Farrell edited this page Oct 9, 2025 · 1 revision

Currently, I'm the sole dev of these WDLs. Nevertheless, I do make an attempt to keep this system maintainable in case I'm struck down by a meteorite. Here's my general approach to things.

git and GitHub

hooks/CICD

I have precommit hooks in myco to catch WDL errors, but due to the nature of dependencies or quirks specific to womtool bugs occasionally slip through. Tree Nine runs pylint on cluster-related scripts, although it's set up mostly to catch syntax errors rather than make things pretty.

versioning

  • If you see version 1.0 at the top of a file, ignore it; it's a required WDL thing and doesn't correlate to anything else
  • Tagged commits/GitHub releases are technically mutable, but as a general rule I don't mess with them once I make them.
  • If I'm making hotfixes, I work directly on the main branch.
  • If I'm adding a feature or doing an important overhaul, that work is done on a feature branch. Once I've confirmed it works properly on Terra, I open a PR and pull it into main, and then make a release.

WDL

TBCalNet runs on Terra, which runs on Cromwell, which (as of October 2025) still does not fully support WDL 1.1. As such all workflows are strictly WDL 1.0, and should never be updated to a newer WDL version until/unless Cromwell supports it. All WDL files used by TB-D, including imports, MUST say version 1.0 at the top of them or else Cromwell will interpret them as wdl-draft-2, find something it doesn't like, and crash.

I use command <<< syntax rather than command { syntax for WDL tasks, and within the body of a command section I refer to WDL variables with tilde-syntax such as ~{input_mat} to make them distinct from any variables defined within bash.

I roll my own Docker images for a large number of tasks. If you intend on updating this pipeline to use newer versions of software, I recommend using it the existing Dockerfiles I have to build the images, rather than outright replacing it with the official image for a particular piece of software, as it may be missing some key components specific to my WDLs.

python

I use tabs.

Clone this wiki locally