Common Workflow Language に関する調査

# Common Workflow Language

* [Common Workflow Language](http://www.commonwl.org/)

# （追記）2020年12月最新動向の情報は以下を参照するのがよいです。

[Common Workflow Language 関連リンク集 \(2020年冬\)](https://zenn.dev/tom_tan/articles/8c9ee60bbd987d)


# 日本語での紹介

* [CWLの日本語での解説ドキュメント](https://github.com/pitagora-galaxy/cwl/wiki/CWL-Start-Guide-JP)

# 64秒で、CWLを説明する動画（公式、日本語字幕あり）

["Common Workflow Language" explained in 64 seconds \- YouTube](https://www.youtube.com/watch?v=86eY8xs-Vo8&t=5s)

# ユーザーガイド

* [Common Workflow Language User Guide](http://www.commonwl.org/user_guide/)

# 実例

- [pitagora\-galaxy/cwl: Common Workflow Language tools and workflows by Pitagora\-Network](https://github.com/pitagora-galaxy/cwl)
- [ncbi/pipelines](https://github.com/ncbi/pipelines)
- [qiime2/q2cwl: Prototype interface for automatically generating CWL tools from QIIME 2 actions](https://github.com/qiime2/q2cwl)
  - Qiime2なら、本家にCWLのレポジトリがある
- [xDBio\-Inc/cwl\-source: cwl files, tool and workflow metadata, and input specifications\.](https://github.com/xDBio-Inc/cwl-source)
- [rawgene/cwl: CWL tools and workflows used in RAWG](https://github.com/rawgene/cwl)
  - RNA-seq workflows in CWL

# CWLの書き方

- [雑に始める CWL！ - Qiita](https://qiita.com/tm_tn/items/4956f5ca523f7f49f386) 
    - 既存のバイオインフォマティクスのツールをCWLにする方法。
- [続・雑に始める CWL！ - Qiita](https://qiita.com/tm_tn/items/83ce4c826135d78ba98f) 
    - 他の事例の紹介
    - パイプの使いたいたい時の例など
  
# GUIで、操作するもの

Rabix Composer
Javaだけあれば動きます。

- [Rabix \- Reproducible Analysis for Bioinformatics](http://rabix.io/)


# サンプル

grep と wc のサンプルがあるようだ

https://twitter.com/HubGenomics/status/869757143028834305

## Docker 使っているようだ

https://github.com/bioexcel/bioexcel-notes/wiki/Common-Workflow-Language

## 普通のコマンドつかっている？

https://github.com/common-workflow-language/workflows/tree/master/workflows/presentation-demo


# 実行系の一覧

[ここに一覧がある](http://www.commonwl.org/#Implementations)

あとは、GitHub トピックスもある。

* [Topic: cwl](https://github.com/topics/cwl)

# 実行方法

`cwltool` とか `cwl-runner` をインストールする

```
pip install cwltool
pip install cwl-runner
```

サンプルのワークフローを使えるようにする

```
git clone https://github.com/common-workflow-language/workflows.git
cd workflows/workflows/hello
```

使い方は以下にある

[workflows/workflows/hello at master · common-workflow-language/workflows](https://github.com/common-workflow-language/workflows/tree/master/workflows/hello)

## サンプルの実行 hello world

```
cwl-runner  hello.cwl
```

結果の確認

```
cat response.txt
```

### 期待される結果

```
Hello World
```

## パラメータをファイルから渡す

```
cwl-runner  hello-param.cwl params.yaml
cat response.txt
```

### 期待される結果

```
Hello, CWL !
Hello World !
```

## パラメータをコマンドラインから渡す

```
cwl-runner  hello-param.cwl --usermessage "Yellow submarine\n"
```

### 期待される結果

```
Yellow submarine
```

# 参考情報

## こんな実行の仕方もある

* [CommonWorkflowLanguage - Debian Wiki](https://wiki.debian.org/CommonWorkflowLanguage)

ここのサンプルではこんな風に書かれている。

```
cwltool ~/git/workflows/workflows/hello/hello.cwl#main
```

## CIはどこで行われているか

* [CWL conformance tests \[Jenkins\]](https://ci.commonwl.org/)

# CWLではないワークフローシステム一覧

2018年5月2日に見た段階では、 210 まできているようです。

[Existing Workflow systems · common\-workflow\-language/common\-workflow\-language Wiki](https://github.com/common-workflow-language/common-workflow-language/wiki/Existing-Workflow-systems)

## python の DSL で CWL を書く

- [tetron/amelia: Experimental python DSL for writing CWL](https://github.com/tetron/amelia)