https://github.com/common-workflow-language/workflow-service
Implementation of the GA4GH Workflow Execution Service, a REST service for running workflows
https://github.com/common-workflow-language/workflow-service
python
Last synced: 11 months ago
JSON representation
Implementation of the GA4GH Workflow Execution Service, a REST service for running workflows
- Host: GitHub
- URL: https://github.com/common-workflow-language/workflow-service
- Owner: common-workflow-language
- License: apache-2.0
- Created: 2015-09-16T05:06:55.000Z (over 10 years ago)
- Default Branch: main
- Last Pushed: 2025-05-30T05:28:54.000Z (about 1 year ago)
- Last Synced: 2025-05-30T06:56:12.252Z (about 1 year ago)
- Topics: python
- Language: Python
- Homepage:
- Size: 357 KB
- Stars: 36
- Watchers: 12
- Forks: 22
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Workflow as a Service
This is a client and server implementation of the [GA4GH Workflow
Execution Service](https://github.com/ga4gh/workflow-execution-schemas) 1.0.0 API.
It provides [Arvados](https://arvados.org/) and [Toil](http://toil.ucsc-cgl.org/) backends. It
also works with any `cwl-runner` that supports the CWL standard command line
interface:
## 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
```
### Get stderr log from workflow:
```
$ wes-client --log
```
## 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
```