第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