Skip to content

Implementation of the GA4GH Workflow Execution Service, a REST service for running workflows

License

Notifications You must be signed in to change notification settings

common-workflow-language/workflow-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

962983a · May 14, 2025
Mar 24, 2025
Jul 13, 2021
Apr 23, 2018
May 14, 2025
Mar 24, 2025
May 14, 2025
May 14, 2025
Mar 24, 2025
Mar 24, 2025
Sep 22, 2019
Mar 28, 2022
Mar 28, 2022
Mar 24, 2025
Jun 29, 2018
Apr 1, 2022
May 14, 2025
Mar 24, 2025
Mar 24, 2025
Mar 24, 2025
Mar 24, 2025
Mar 25, 2025
May 14, 2025
Mar 24, 2025
Jul 17, 2018
May 14, 2025
Mar 24, 2025
Mar 24, 2025
Mar 24, 2025
Mar 24, 2025

Repository files navigation

Workflow as a Service

This is a client and server implementation of the GA4GH Workflow Execution Service 1.0.0 API.

It provides Arvados and Toil backends. It also works with any cwl-runner that supports the CWL standard command line interface: http://www.commonwl.org/v1.0/CommandLineTool.html#Executing_CWL_documents_as_scripts

Installation:

pip install wes-service

Usage

Client configuration

Command line parameter or environment variable.

--host or WES_API_HOST

The host to contact.

--proto or WES_API_PROTO

The protocol (http or https) to use.

--auth or WES_API_AUTH

Credentials. Format is 'Header: value' or just 'value'. If header name is not provided, value goes in the 'Authorization'.

Get service info

$ wes-client --info

Submit a workflow to run:

Attachments must be accessible from the filesystem. Workflow runners may also support http URLs or other storage systems.

$ wes-client --host localhost:8080 --proto http                             \
   --attachments="testdata/dockstore-tool-md5sum.cwl,testdata/md5sum.input" \
   testdata/md5sum.cwl testdata/md5sum.cwl.json

List workflows

$ wes-client --list

Get workflow status

$ wes-client --get <run-id>

Get stderr log from workflow:

$ wes-client --log <run-id>

Server Configuration

Run a standalone server with default cwl-runner backend:

$ wes-server

Run a standalone server with Arvados backend:

$ pip install arvados-cwl-runner
$ wes-server --backend=wes_service.arvados_wes

Run a standalone server with Toil backend:

$ pip install toil[all]
$ wes-server --backend=wes_service.toil_wes --opt extra=--clean=never

Use alternate executable with cwl-runner backend

$ pip install cwltool
$ wes-server --backend=wes_service.cwl_runner --opt runner=cwltool --opt extra=--debug

Pass parameters to cwl-runner

Use "--opt" following by "key=value"

$ wes-server --backend=wes_service.cwl_runner --opt extra=--workDir=/tmp/work

Development

If you would like to develop against workflow-service make sure you pass the provided test and it is flake8 compliant

Install from Source

$ virtualenv venv && source venv/bin/activate && pip install toil[all] && pip install . --process-dependency-links && pip install -r dev-requirements.txt

Running Tests

From path workflow-service run

$ pytest && flake8