第7回ワークフローミートアップまとめ
==============================
一日目から、最終日まで、日にちごとでセクションをきりました。
まずは、忘れる前に、メモでもよいので書いてもらえるとよいかとおもいます。
# 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)
- 前の時代のやつのときは、以下のような記述があり、おそらく、1つのシングルバイナリをつくれるのだとおもう。
- `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
- みんなで、1つのソフトを利用し、作者も交えて作業すると、いろいろ捗ることもある。
- ただし、動かないときのプレッシャーは非常に大きいようである。
## 落合
- 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