Skip to content

Latest commit

 

History

History
166 lines (132 loc) · 6.58 KB

README_ja.md

File metadata and controls

166 lines (132 loc) · 6.58 KB

Genpei (源平)

pytest flake8 isort mypy Apache License

Genpei (源平) は、Global Alliance for Genomics and Health (GA4GH) により制定された Workflow Execution Service (WES) API 定義に準拠した標準実装です。 Microservice の思想に則り、Flaskcwltool を用いており、Common Workflow Language を用いて作られた、シンプルかつ拡張性の高い REST API Server です。 Common Workflow Language (CWL) により書かれた Workflow の実行や管理をサポートします。

Install and Run

Python 3.6 以上を想定しています。

$ pip3 install genpei
$ genpei

Docker

Docker を用いた利用も想定しています。 cwltool 内で Docker-in-Docker (DinD) を用いるため、docker.sock/tmp などを mount しなければなりません。 詳しくは、DockerHub - cwltool のドキュメントを確認してください。

# 起動
$ docker-compose up -d

# 起動確認
$ docker-compose logs

Usage

API 仕様は、GitHub - GA4GH WESSwaggerUI - GA4GH WES を確認してください。

一番簡単な REST API Request として、GET /service-info の例を挙げます。

GET /service-info
{
  "auth_instructions_url": "https://github.com/suecharo/genpei",
  "contact_info_url": "https://github.com/suecharo/genpei",
  "default_workflow_engine_parameters": [],
  "supported_filesystem_protocols": [
    "http",
    "https",
    "file"
  ],
  "supported_wes_versions": [
    "1.0.0"
  ],
  "system_state_counts": {},
  "tags": {
    "wes_name": "genpei"
  },
  "workflow_engine_versions": {
    "cwltool": "3.0.20200324120055"
  },
  "workflow_type_versions": {
    "CWL": {
      "workflow_type_version": [
        "v1.0",
        "v1.1",
        "v1.1.0-dev1",
        "v1.2.0-dev1",
        "v1.2.0-dev2"
      ]
    }
  }
}

起動時引数 (--host and --port) を指定することで、起動 Host や Port を変更できます。また、これらの引数に対応する環境変数として、GENPEI_HOST, GENPEI_PORT が用意されています。

genpei --help
usage: genpei [-h] [--host] [-p] [--debug] [-r] [--service-info]

An implementation of GA4GH Workflow Execution Service Standard as a microservice

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.
  -r , --run-dir   Specify the run dir. (default: ./run)
  --service-info   Specify `service-info.json`. The workflow_engine_versions, workflow_type_versions
                   and system_state_counts are overwritten in the application.

$ genpei --host 0.0.0.0 --port 5000

Genpei は、投入された workflow や workflow parameter、output files などを file system 上で管理しています。これら全ての file をまとめた directory を run dir と呼んでおり、default は ${PWD}/run です。run dir の場所は、起動時引数 --run-dir や環境変数 GENPEI_RUN_DIR で上書きできます。

run dir 構造は、以下のようになっており、それぞれの run における file 群が配置されています。初期化やそれぞれの run の削除は rm を用いた物理的な削除により行えます。

$ tree run
.
├── 11
│   └── 11a23a68-a914-427a-80cd-9ad6f7cfd256
│      ├── cmd.txt
│      ├── end_time.txt
│      ├── exe
│      │   └── workflow_params.json
│      ├── exit_code.txt
│      ├── outputs
│      │   ├── ERR034597_1.small_fastqc.html
│      │   ├── ERR034597_1.small.fq.trimmed.1P.fq
│      │   ├── ERR034597_1.small.fq.trimmed.1U.fq
│      │   ├── ERR034597_1.small.fq.trimmed.2P.fq
│      │   ├── ERR034597_1.small.fq.trimmed.2U.fq
│      │   └── ERR034597_2.small_fastqc.html
│      ├── run.pid
│      ├── run_request.json
│      ├── start_time.txt
│      ├── state.txt
│      ├── stderr.log
│      └── stdout.log
├── 14
│   └── ...
├── 2d
│   └── ...
└── 6b
    └── ...

POST /runs の実行は非常に複雑です。Python の requests を用いた例として、GitHub - genpei/tests/post_runs_examples が用意されています。参考にしてください。

Development

開発環境は以下で起動します。

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

Lint Tool として、flake8, isort, mypy を用いています。

それぞれの実行方法は以下のとおりです。

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

Test Tool として、pytest を用いてます。

実行方法は以下のとおりです。

$ pytest .

License

Apache-2.0. See the LICENSE.