---
# System prepended metadata

title: 第７回ワークフローミートアップまとめ

---

第７回ワークフローミートアップまとめ
==============================

一日目から、最終日まで、日にちごとでセクションをきりました。
まずは、忘れる前に、メモでもよいので書いてもらえるとよいかとおもいます。

# Day 1 (8/13 Mon)

# でてきた疑問

## CWL

- CWLのBNFなどはあるか？
    - おそらくない。文法は JSONLD ベースなのでそれでいいという考えなのでは。
- CWLの予約語一覧はあるか？
    - ない。
    - 公式にないという回答をもらいました。
        - [Is there any Reserved Words in CWL ? · Issue \#759](https://github.com/common-workflow-language/common-workflow-language/issues/759)
- CWLで使うファイルの公式な呼び方
    - `.cwl` ツールファイル
        - CWLが書いてある。ワークフローでもツールファイルと呼ぶ
    - `.yml`, `.json` など、ジョブファイル
        - 実行したいパラメータが書いてある。
        - 実はここはエンジン依存

# やったこと

## 石井
- juliaでシングルバイナリを作ろうとしている
- PackageManager.jl
    - なんとか、動いた。julia 0.7.0
    - シングルバイナリを期待していたが、 `.so` ができたりしたので、できればシングルバイナリを作りたい。
        - `gcc` のオプションで `-static` のようなもので、できたとおもうので、これを試してみたい
- [JuliaComputing/static\-julia: Static AOT Julia compilation, demos and instructions](https://github.com/JuliaComputing/static-julia)
    - 前の時代のやつのときは、以下のような記述があり、おそらく、１つのシングルバイナリをつくれるのだとおもう。
    - `With Julia 0.7, a single large binary can be created, which does not require the driver program to load the shared library.` 

## 西田
- E-Cell4のAzure Batch試行
- MetaboanalystR の docker 環境作成
- Cytoscape のための Selenium Grid Standalone docker image利用例作成

## 丹生
- エンジンの CWL 準拠度改善のための cwl-inspector いじり
    - baseCommand をクォートでくくるときの処理の修正
    - record 型をパースするときのフィールド抜け修正
    - 作業前:
        ```
        62 tests passed, 43 failures, 27 unsupported features
        ```
    - 作業後:
        ```
        66 tests passed, 35 failures, 31 unsupported features
        ```
    - fail の数が減ってきたので、それぞれのテストの失敗原因を集計して各個撃破の準備
        - フラグメント(#foo): 14
        - $namespace, $schemas, $import (SALAD): 5
        - record 型: 3
        - secondaryFiles: 4
        - file/directory literals: 4
        - InitialWorkDirRequirement: 1
        - 不明: 3

- cwltest が開発者に優しくないのでなんとかしたい
    - 各テスト項目の結果が確認できない (全体の結果しか出ない)
    - 複数のテストの結果を比較できない
        - regression が出たのかどうかを目視しないといけない
    - 現状の cwltest とは用途が違う気がするので、別に作成したほうがいいかも

## 大田

- [ChIP-Atlas](https://chip-atlas.org) のバグを直した
  - ruby Net::HTTP の timeout をちゃんと設定してあげるだけの簡単なお仕事
- とある激重Rscriptをスパコンで走らせた (順調に行けばメモリが足りず落ちるはず)
- STAR/RSEM のパイプラインをCWLで書いた
  - RSEM が内部で呼び出すSTARに渡すオプションを微妙に変えるために[RSEMをforkしている](https://github.com/inutano/RSEM)
  - こいつを呼ぶコンテナを拵えるために[山を登った](https://quay.io/repository/inutano/rsem) (677MB)
  - [CWLで書いた、動いた](https://github.com/inutano/sra-star-rsem/tree/master/analysis/processing/readcount)
- ちまちました仕事を今日で終えたので明日から論文書く

## 佐藤
- CWLのお勉強(CWLのドキュメントの3/21ページまで理解)
    - CWLの文法は最初よく分からなかったが、CWLはYAML形式で書かれているということを知って満足(JSONで書く場合もある)
    - inputBindingフィールドの意味。
        - 本日の目標：簡単なコマンドをCWLで実行・・・達成
    - "cwl-runner"は以下のコマンドでインストール
        - pipenv shell 　　　　　 # これでpythonの仮想環境に入った
        - pipenv install cwl-runner
    - 目標：CWLミーティングの参加で何か発言できるようにすること
- プログラミングの話題
    - いろいろ
    

# Day 2 (8/14 Tue)

## おちあい！

- hotsubでGCPで動かすときのアレがアレなのでアレ
  - 技術検証
    - http://otiai10.hatenablog.com/entry/2018/08/14/173023
    - いける

## 石井

- Juliaでのシングルバイナリを作ってみる
    - shared objectと、実行ファイルという形式の場合は簡単にできあがった。
        - これで事足りるとすることもできるか？
    - 残念なことに、完全なシングルバイナリを生成できていない
        - `-static` を指定してコンパイルをしようとすると、 `-ljulia` で解決される、 `libjulia.so` が `shared object` のため、エラーになる。
        - julia の `Makefile` をざっと眺めてみたが、 `static library` を生成するオプションはなさそう。
    - 試行錯誤中のメモ
        - [Julia でシングルバイナリを作るろうとした \- HackMD](https://hackmd.io/W-A27tVPTEeblotQzUKvGg?view)
        - GCCのオプションなども久しぶりに調べた。
        - おそらくこの方向に突き進むのは違うような気がする。。。
    - もともと書きたかったバリデータについては、juliaで書いて、dockerイメージにするとか、そのあたりからだろうか。
    - または、Go, Rustで書くか。
    - 関連しそうなパッケージたち
        - [dhoegh/BuildExecutable\.jl: Build a standalone executables from a Julia script](https://github.com/dhoegh/BuildExecutable.jl)
            - もともとこれがあったとおもう
        - [JuliaComputing/static\-julia: Static AOT Julia compilation, demos and instructions](https://github.com/JuliaComputing/static-julia)
            - つぎにこれになったのかなとおもう
        - [JuliaLang/PackageCompiler\.jl: Compile your Julia Package](https://github.com/JuliaLang/PackageCompiler.jl)
            - 公式のもののようで、shared でよければ生成できた
        - [JuliaPackaging/BinaryBuilder\.jl: Binary Dependency Builder for Julia](https://github.com/JuliaPackaging/BinaryBuilder.jl)
        - [NHDaly/ApplicationBuilder\.jl: Compile, bundle, and release julia software](https://github.com/NHDaly/ApplicationBuilder.jl)
            - 1ファイルにして、デスクトップからダブルクリックで起動できるらしい
    - 読んだほうがよいかもしれない
        - [Static and Ahead of Time \(AOT\) Compiled Julia – Julia Computing](https://juliacomputing.com/blog/2016/02/09/static-julia.html)
- 教わったGUIのdocker環境を試した。
    - うまく動いた。
        - 以前いろいろ用途を考えたことがあったので、
    - [GUIなDockerを試す。Seleniumのコンテナを使った場合 \- Qiita](https://qiita.com/manabuishiirb/items/34fd3a6a2a175946d13c)
- CWL
    - 西田さんが、conformance test の yaml だけを用いて、cwlのファイルがない状態で、テストしたところ、3個成功していたい件について、なにがあったのか知っておきたいので、明日調べる
    - 明日は、issueを立てたい
    - CWLのワークフローの流れについて
        - viewer の例
            - [lobSTR\-workflow\.cwl \- Common Workflow Language Viewer](https://view.commonwl.org/workflows/github.com/common-workflow-language/workflows/blob/lobstr-v1/workflows/lobSTR/lobSTR-workflow.cwl)
        - dot での出力。
            - cwltool のオプションで、 `print-dot` というようなオプションがあるので、それを、graphvizにだす
        - Rabix Composer を使う
            - [Rabix \- Reproducible Analysis for Bioinformatics](http://rabix.io/)
            - GUIのツール。
            - エレクトロンベースのツールだったとおもう。

## 西田

- cwl に無知すぎるので  `./run_test.sh --verbose` を試し概要をつかんだ
  - すなわち `cwltest --tool /usr/local/bin/cwl-runner --test=conformance_test_v1.0.yaml --verbose --basedir /root/common-workflow-language/v1.0 --`
  - ざっくりどういう感じのtoolか感じとれた。コマンドライン実行を行うことが多い人のためのツールと感じた。ゆえに自分に縁が無さそう。
- cwl 試すついでに [bioconductor の workflow集](https://www.bioconductor.org/packages/release/BiocViews.html#___Workflow) と比較
  - workflowというと https://www.bioconductor.org/packages/release/bioc/vignettes/KEGGlincs/inst/doc/Example-workflow.html のような自然言語で「何をします」という説明の後にそれを実行するコードという印象がある。cwlでそういう例は無い?
    - CWL の [User Guide](https://www.commonwl.org/user_guide/) が近いかも
    - rabix composer を使うとそれに近くなるかも
- E-Cell4のAzure Batch試行
  - まだ試行中

- MetaboanalystR の docker 環境作成
  - できた。会中にDockerfile化してpull reqしようと思う

- Cytoscape のための Selenium Grid Standalone docker image利用例作成
  - まだ何もしてない

## 大田

- CWL-metrics 論文書き
  - Method 書き終わった、残りは図と図のlegendとcitation
  - 7種類のツール * SE/PE * 9サンプル * 6インスタンスタイプのデータで図を作り中
  - 図を描くのは楽しい, Jupyter notebook で描いてデータと一緒にgithubに上げる作戦

## 丹生
- cwl-inspector 修正
    - $include, $import, $mixin 対応
    - fragment (#foo) 対応
        - SchemaDefRequirement 対応までいかなかった
        - foo.cwl#bar みたいなのはまだ
    - 作業前:
        ```
        66 tests passed, 35 failures, 31 unsupported features
        ```
    - 作業後:
        ```
        67 tests passed, 36 failures, 29 unsupported features
        ```
    - requirement 周りに関して、[仕様の通りに実装した](https://github.com/common-workflow-language/common-workflow-language/issues/757)ため、conformance test の達成率が下がった
        ```
        67 tests passed, 35 failures, 30 unsupported features
        ```
- cwltest の -j オプション(並列化)を試してみた
    - テストの成功数や失敗数が、本来表示されるべき数より少なく表示される
        - おそらく成功テスト数などを表す変数が排他制御されていない
    - 各テストの標準エラー出力が入り乱れてデバッグ用途では使えない
        - -j なしや JUnit 形式の出力なら判別可能だが…



## 佐藤
- CWLのお勉強(CWLのドキュメントの21/21ページまで読んだが、完全理解はまだ)
    - 複数のCWLを組み合わせる処理の記述を理解するまでが今日の目標
    - 自分なりに解釈したCWLの文法っぽいものをまとめた


## 池田
- julia をインストールしてちょっと触ってみた[https://qiita.com/percipere/items/a2d5dc78e2e67d89a43c]


# Day 3 (8/15 Wed)

## hottopic hotsub

- hotsub をいろいろな環境で試した
    - 動いた
        - Mac で local VirtualBox
    - 動かない
        - AWS
        - Windows local VirutlBox
        - Linux local VirtualBox
- みんなで、１つのソフトを利用し、作者も交えて作業すると、いろいろ捗ることもある。
    - ただし、動かないときのプレッシャーは非常に大きいようである。

## 落合

- hotsubぜんぜんうごかん
    - AWSのサラピンEC2上でhotsub
    - hotsub/proxy -v ~/.aws

## 石井

- CWLにBNFがあるか？、予約語があるかについて issue をたてた
    - [Is there any BNF or PEG file for CWL ?](https://github.com/common-workflow-language/common-workflow-language/issues/758)
    - [Is there any Reserved Words in CWL ?](https://github.com/common-workflow-language/common-workflow-language/issues/759)
- hotsub デバッグ参加
    - `--provider local` が動くのに貢献した。

## 西田

- hotsub について学習
- azure batch の技術サポートが twitter で行われるようなので twitter をしていたhttps://twitter.com/AzureSupport/status/1029653565386702848

## 佐藤
- CWLの勉強
    - 「複数の処理を組み立てるには、複数ファイルを指定する必要があり、一つのファイルだけでワークフローの記述を完結できない」説が存在するが、それは本当？
    - dockerの起動処理を調べた
        - そもそも自分がdockerをあまり上手く扱えていないので、dockerの調査も少し行う
    - 自分はyamlよりもjson派なので、jsonでCWLを記述した。結果、成功。
- CWLをvisualizeするツールrabixを使おうとした(使ったとは言っていない)

- 自分の代わりに、CWLにBNFや予約語があるのかという質問をissueで立てて下さった石井さんに感謝した

- 石井より、佐藤さんからの質問、他に世の中に存在しているワークフローのリストがあるかに関する回答
    - [Existing Workflow systems · common\-workflow\-language/common\-workflow\-language Wiki](https://github.com/common-workflow-language/common-workflow-language/wiki/Existing-Workflow-systems)

## 大田

- 論文の表がほぼ完成
- 論文の図がほぼ完成
- Jupyter notebookで再解析可能な感じに書いている


## 丹生 
- hotsub を使ってみた
    - mac 環境ローカルで動く・動かない再現条件を調べた
    - 自分のワークフローのバックエンド的に使えるようにしてみたい
- 昨日の [requirement の Issue](https://github.com/common-workflow-language/common-workflow-language/issues/757) にお返事が来た
    - v1.0 では、動かないのは「仕様通り」で v1.1 にならないと直らない可能性が高い
- 自作ワークフローエンジン改良
    - fragment (foo.cwl#bar) の単純なサポートを追加
        - 場当たり的な追加なのでリファクタリングが必要
    - SubworkflowFeatureRequirement を未サポートに格下げ
    - 作業前
        ```
        67 tests passed, 36 failures, 29 unsupported features
        ```
    - 作業後
        ```
        68 tests passed, 26 failures, 38 unsupported features
        ```



## 那須野
- IIBMP2018の準備
    - 演題「クラウド環境で Galaxy を利用する」
    - まずは素材集め中
- hotsubを試した
    - AWS で実行できなかったので、docker-machineを素で実行して確認中
    - bad certificate エラーが出ることはわかったが、これはdocker-machineあるあるらしい。
       ```
       ~$ docker-machine create --driver amazonec2 --amazonec2-region us-east-2 --amazonec2-vpc-id vpc-XXXX test
       Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host "13.x.x.x:2376": remote error: tls: bad certificate
       ```

# Day 4 (8/16 Thu)

## 大田

- 図と表が(ほぼ)完成した！ :tada: 
- 明日には本体の完成、本文のリファクタリング突入を目指したい

## 西田

- Azure Batchをいじった結果，プール作成を https://github.com/ecell/ecell4/blob/master/python/lib/ecell4/extra/azure_batch.py のように自前で行うことがまずいと判断した
  - プロビジョニングは hotsub のようなソフトウェアに任せるようにすべきと考えている
  - BatchはBatchサービスにおけるアカウントをプロビジョニング時に設定しないとssh loginできない模様 https://docs.microsoft.com/en-us/azure/batch/batch-user-accounts
  - Batchサービスより単に複数の計算機でmap reduce的なことを行えるシステムから始めた方がコードがすっきりするのかもしれない
  - https://github.com/DataBiosphere/toil より hotsub の方が目的に適してそうに思う

- バグレポート
  - https://github.com/rabix/composer/issues/397
  - https://github.com/otiai10/hotsub/issues/107


## 石井

- CWL
    - [CWLについてのメリット、デメリットなどを書き出してみた](https://hackmd.io/fLCSM08xT_Ww2NkL0UTFzQ?view)
        - 昨年作った [CWL Start Guide JP · pitagora\-galaxy/cwl Wiki](https://github.com/pitagora-galaxy/cwl/wiki/CWL-Start-Guide-JP) を更新するか、別バージョンをだしてみるのもよい？
        - コメントをいただく
            - GUIを使ったバージョン
            - 実務に近いCWLを実行するときのやり方
                - fastqc を実行するものとか？
                - 普段の業務でもつかえそうな感じ
                    - 分野が違うと、一気に全部用意するのは大変だけど、コツコツためていくのもよいかもしれない。
                    - 一手詰めワークフローをやる動画とか
    - 予約語はない。今後もない予定とのこと
        - [Is there any Reserved Words in CWL ?](https://github.com/common-workflow-language/common-workflow-language/issues/759)
    - [Rabix Composer](http://rabix.io/launch.html)を試して、以下のissueに、Macでは動くという例を追加した。
        - [RDF resolution error: ENOENT: no such file or directory · Issue \#397 · rabix/composer](https://github.com/rabix/composer/issues/397)
- その他作業

## 佐藤
- CWLで「複数の処理を組み立てるには、複数CWLファイルを指定する必要があり、一つのファイルだけでワークフローの記述を完結できない」説を覆すため、複数のCWLで記述されたワークフローを一つのCWLにまとめる・・・成功
- CWLに予約語はないらしいが、[これ](https://www.commonwl.org/v1.0/Workflow.html#Workflow)を見れば良いような気がする
- CWLをvisualizeするツールrabixを使いたかった
    - このページから、 [Rabix Composer](http://rabix.io/launch.html) ダウンロードできます(石井)
        - すみません、ダウンロード済みです(単に「rabixを動かしてみる」という予定を忘れていただけ)
- CWLの仕様バグ、どこにある？
    - いろいろあります(丹生)
        - https://github.com/common-workflow-language/common-workflow-language/issues/757
- CWL Asia Pacific Teleconferenceが中止になって、残念だ


## 池田
- 引き続きjuliaで遊んでみた
- [julia を使ってみる 2 (Pythonの利用と文字列）](https://qiita.com/percipere/items/03c729b8c400b0c1ed7d)
    - テキストの処理にも十分に活用できそうな雰囲気である

## 丹生
- エンジンいじり
    - あまり進まず
    - `run` の仕様が曖昧じゃない？という issue を[立てた](https://github.com/common-workflow-language/common-workflow-language/issues/760)
    - Conformance test 131, 132 にハマる
        - ワークフローからステップに対して存在しないパラメータを指定しても、動いていい場合がある(!?)
            - 動いていい場合: 131
                - https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/v1.0/echo-tool.cwl
            - 動いてはいけない場合: 132
                - https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/v1.0/fail-unspecified-input.cwl
        - 両方落ちるべきなのでは…
    - record type の対応作業中
        - 難航中
        - conformance test では、当然のように record type と enum type が両方出てくる
    - 作業前:
        ```
        68 tests passed, 26 failures, 38 unsupported features
        ```
    - 作業後:
        ```
        67 tests passed, 27 failures, 38 unsupported features
        ```
        - inputs.json の確認を厳密にすることで、132 がパス・131 が fail に
        - 厳密にしたため、105 (`default` の `File` オブジェクトが存在しない場合も permanentFail になってはいなけい) が落ちてしまうようになった

## 予定されているイベントが、キャンセル

- 16:00 - CWL Asia Pacific Teleconference


# Day 5 (8/17 Fri)

- 昼休憩なしの予定

- LC4RI(Literate Computing for Reproducible Infrastructure の話 (午後~13:50?)
    - NIIより、政谷先生、谷沢さんにきていただく。 
- 14:30 AIPから撤収


## 石井

- その他作業
- 9月、10月のミートアップの内容について検討
    - 9月
        - リモートミートアップを計画
        - 通常通りの作業に加えて、リモートの参加者（複数）で、使うのによい会議ツールを探す
            - スライドの共有
            - VS Code でリモート接続？
    - 10月
        - 東京、大阪、ブランチ開催
        - 予定しているイベント
            - IIBMP報告（東京サイド、東京の参加者で現地にいった人）
            - Azure Batch概要(大阪サイド、西田さん)

## 丹生
- エンジンいじり
    - 131, 132 の対応方法を変更
        - 入力がおかしな CommandLineTool を弾くようにした
    - expressionLib 対応
    - expression 内の record 型の扱いを修正
    - 作業前
        ```
        67 tests passed, 27 failures, 38 unsupported features
        ```
    - 作業後
        ```
        72 tests passed, 22 failures, 38 unsupported features
        ```
## 佐藤
- rabixを使ってみる

## 大田

- 論文掲載用の図の微修正をしていた
- LC4RIの話を聞いた
- https://github.com/nteract/papermill という顧客が本当に求めていたものを教えてもらった

# Day 5 延長@神保町 Run hotsub Run

## イベント

- hotsub について
    - AWS について
        - 実行するリージョンと、指定するリージョンが異なる場合、動かないケースがある
        - しかしその理由は不明
        - オハイオ、オハイオは、失敗し
        - ムンバイ、ムンバイは、成功する人と成功しない人がいる。
        - tokyo, tokyo が成功した。
        - AWSのAPIサーバーの問題かもしれない。
    - GCPについて
        - APIサーバーの挙動安定しているのか、hotsub安定して動く

## 大田

- 動いた！hotsubが動いた！
  - Ohio EC2 -> Ohio: だめ
  - Mumbai EC2 -> Mumbai: だめ
  - Mishima -> Tokyo: OK
  - Mishima -> Ohio: OK
  - Mishima -> Mumbai: OK
  - なんやねん
- hotsub w/ CWL を動かすために必要な otiai10/c4cwl の修正の方向性について調べたり
  - cwltool がつらい
  - pip がまじクソ


Galaxyのチュートリアルについて
==========================

- 本家のトレーニングマテリアル
    - [galaxyproject/training\-material: A collection of Galaxy\-related training material](https://github.com/galaxyproject/training-material)
    - 英語であるが、Up to date であり、よくメンテナンスされているのでおすすめ

- 以下のセミナーのチュートリアルを実行してみる
    - https://pitagora.connpass.com
    - こちらは、上記の本家トレーニングマテリアルの、日本語版

- 以下のチュートリアルを実行してみる
    - https://github.com/inutano/training/tree/master/ngs5

