https://toil.readthedocs.io/en/latest/running/cwl.html
https://servicedesk.surfsara.nl/wiki/display/WIKI/Snellius
module load 2021 nodejs/14.17.0-GCCcore-10.3.0
# good to add the above to your ~/.bashrc
# this speeds up processing of CWL Expressions and CWL Parameter references
export TOIL_SLURM_ARGS="--partition=thin --export=ALL"
# sets the partition to use; must have `--export=all` for toil-cwl-runner to work
# good to add the above to your ~/.bashrc as well
export PYTHONIOENCODING=utf8
# Ensures that unicode (including emojis🎉) is properly represented on the command line
# good to add the above to your ~/.bashrc as well
python3 -m venv toilenv
source toilenv/bin/activate
pip install -U pip setuptools wheel
pip install toil[cwl]
After the above is done, use the following to parse and submit your workflow
toil-cwl-runner --batchSystem slurm --disableCaching --singularity path_to_your_workflow.cwl path_to_workflow_inputs.json
To run the CWL v1.2 conformance tests
pip install cwltest
git clone https://github.com/common-workflow-language/cwl-v1.2.git
cd cwl-v1.2
TMPDIR=$PWD ./run_test.sh RUNNER=toil-cwl-runner EXTRA="--batchSystem slurm --disableCaching --singularity"
# any extra option we would want to pass to `toil-cwl-runner` goes in the `EXTRA=` string
# optionally add `-j16` or similar to control the number of simultaneous tests being run
# TMPDIR=$PWD ./run_test.sh RUNNER=toil-cwl-runner EXTRA="--batchSystem slurm --disableCaching --singularity " -j16
# and/or optionally add `--junit-xml path.xml` to save details about the results
# TMPDIR=$PWD ./run_test.sh RUNNER=toil-cwl-runner EXTRA="--batchSystem slurm --disableCaching --singularity " -j16 --junit-xml $HOME/toil-5.5.0_cwl_v1_2.xml
If you are using InplaceUpdateRequirement
in your CWL v1.1 or CWL v1.2+ description, then you'll need to also include --bypass-file-store
to your toil-cwl-runner
invocation.
Results on 2021-11-08 with Toil 5.5.0 and
--bypass-file-store
on Snellius using Singularity 3.8.3-1.el8 :The one failure is due to known a limitation of Singularity with respect to Docker format containers that use ENTRYPOINT (which is not recommended anyhow)