Skip to content

An API server for parsing workflows written in workflow languages.

License

Notifications You must be signed in to change notification settings

suecharo/agodashi

Repository files navigation

Agodashi

pytest flake8 isort mypy Apache License

Agodashi is a simple REST API server. It takes a workflow file written in workflow language as input and returns workflow type, workflow version and workflow parameters template. Currently, supported workflow languages are as follows:

In the future, we plan to support the following languages.

Install and Run

Agodashi supports Python 3.6 or newer.

$ pip3 install agodashi
$ agodashi

Docker

We also expect to launch using Docker.

# Launch
$ docker-compose up -d

# Launch confirmation
$ docker-compose logs

Usage

As API specifications, please check SwaggerUI - Agodashi API Spec

The help for the Agodashi startup command is as follows.

$ agodashi --help
usage: agodashi [-h] [--host] [-p] [--debug]

An API server for parsing workflows written in workflow languages

optional arguments:
  -h, --help    show this help message and exit
  --host        Host address of Flask. (default: 127.0.0.1)
  -p , --port   Port of Flask. (default: 8080)
  --debug       Enable debug mode of Flask.

As the simplest example of a REST API Request, here is the result of a POST /inspect-workflow.

POST /inspect-workflow -F 'wf_url=https://raw.githubusercontent.com/suecharo/agodashi/master/tests/resources/cwl/trimming_and_qc_packed.cwl'

{
  "wf_params": "nthreads: 2  # default value of type \"int\". (optional)\nfastq_2:  # type \"File\"\n    class: File\n    path: a/file/path\nfastq_1:  # type \"File\"\n    class: File\n    path: a/file/path\n",
  "wf_type": "CWL",
  "wf_version": "v1.0"
}

Development

You can start the development environment as follows.

$ docker-compose -f docker-compose.dev.yml up -d --build
$ docker-compose -f docker-compose.dev.yml exec app bash

We use flake8, isort, and mypy as the Linter.

$ bash ./tests/lint_and_style_check/flake8.sh
$ bash ./tests/lint_and_style_check/isort.sh
$ bash ./tests/lint_and_style_check/mypy.sh

We use pytest as a Test Tool.

$ pytest .

License

Apache-2.0. See the LICENSE.