Common Workflow Language入門
先日workflow-meetupにお誘いを頂いて参加してきました。そこでThe Common Workflow Language(CWL)というものを習ったので忘れないうちに医学部生にもわかりやすくまとめます。
CWLって?
一言で言うと、bioinformatics処理の自動化です。どういうことかもうちょっと詳しく見てみましょう。
>ソフトウェアを組み合わせて構成される一連の作業手順 (ワークフロー) を記述するための仕組みや言語、GUI ソフトウェアは既に多く存在します。しかし、それらは特定の実行環境 (ハードウェア、ソフトウェア) に依存したものであり、異なる環境の間でワークフローを共有、再実行することは困難です。この問題を解決するために、異なるワークフロー実行ソフトウェア (実行エンジン) の間で共通してインポート/エクスポートできるフォーマットを目指して、Common Workflow Language (CWL) の開発が始まりました。
素晴らしい日本語ドキュメントから取ってきました。要はbioinformaticsなど、複数のソフトの連携が必要な処理を自動化、共有がスムーズになるような仕組みです。ローカルでテストして、サーバーやクラウドに持っていくのも簡単です。最近はSangerやBroad Institute(ハーバードとMITの共同研究施設)などでも使われているとのことです。
まずは60秒でわかるCWL - youtubeをみてください。
.cwl
で記述できるのはtoolとworkflowの二種類です。toolは例えばSTARやkallistoなど一つのツールを一つのcwlファイルに記述します。workflowはそれらのtoolをbindして実際のworkflowにします。更に、workflowをnestして新しいworkflowを作ったりも出来ます。
始め方
- 素晴らしい日本語ドキュメントを読みましょう。10分もあれば読めると思います。
- cwl-intro-gui-workshop スライドをやってみましょう。1時間ほどです。
- user guideをやりましょう。3時間ほどで終わるように設計されています。(理論値)
CWLのここがすごい
入門は各サイトにお任せするとして、今回は私がCWLをさわってみてすごいと思ったところをまとめてみます。素人目線です。
rabix composerのGUIがきれいすぎる
画像はbioinformaticsでお馴染みのSTARをrabix composerで操っているところです。rabix composerを使えば、GUIで直感的にCWLが触れます。更に出来たworkflowをクラウドやサーバーにそのまま持っていってCLI越しに使うことが出来ます。
dockerをベースにして完全にreproducibleにできる
いかにも今どきなのですが、toolの記述はすべてdockerのコンテナを使って記述することが出来ます。つまり、環境が変わってインストールし直す手間がまったく無いということです。すばらしいですね。さらに--user-space-docker-cmd=udocker
というオプション一つで、udockerというUser権限しか無い環境でも使えるdockerを使って動かすことができるようです。
すでにいろいろなソフトのcwlが出来ている
Communityで管理されているCWL Tools & Workflowsがあります。ほかにもDBCLS太田さんの管理されているPitagora Workflows in CWLもいろいろ揃っています。
cwltoolの安定感がすごい
出来たcwlファイルをCLI環境で使うにはcwltoolを使います。感動したのはヘルプが自動で生成されるところ。しかも、pythonで書かれていてpythonに組み込むことも出来ます。
import cwltool.factory
fac = cwltool.factory.Factory()
echo = fac.make("echo.cwl")
result = echo(inp="foo")
# result["out"] == "foo"
日本人contributerが多い
困ったときに助けてくれるやさしいcontributerの方々が日本に何人かいます。また、日本語ドキュメントも多くてとても助かります。更に、開発者のMichael R. Crusoeは来日しており、#CommonWLjpなどでCWLの輪を広げています。
On my way to the 11th @NBDC_info / @dbcls #biohack18 (with a week long stop in Tokyo for #usegalaxyjp meeting and other #CommonWL presentations and a bilingual workshop) pic.twitter.com/W4gsO9bnA1
— Michael R. Crusoe (@biocrusoe) 2018年12月2日
kallistoをCWL + Rabix Composerで試してみる
まずは実際の作業工程を見てみましょう。
ちゃんとkallistoのoutputが生成されていますね!データはgithubにまとめておきました。テスト用のシーケンスデータも付けてあるので、クローンして遊んでみてください。kallisto-index.cwl
とkallisto-quant.cwl
は公式のCWL Tools & Workflowsから取ってきました。もちろんこれらはdocker imageを使っています。新しいworkflowを作ってみましょう。動画のように直感的にできると思います。
今回、errorが出て進まなかった場所があったのですが、石井さん、西田さんの応援や、cwlの作者のMichaelやRabixの作者のKaushikがerrorに対処してくれました。
issue : kallisto workflow is incompatible with Rabix composer #418
この対応のフレンドリーさはbioinformaticsならではですね。
workflow業界のあれこれ
ここで一旦workflowについて広く見てみましょう。ハーバードを始めとする海外の研究所ではサーバーを研究所ごとに管理するのに変えて、クラウドの利用が盛んになってきています。そういう時代感もあり、workflowやコンテナなど、reproducibleな環境の整備というのはますます重要視されてきています。workflow業界ではcwlの他に古き良きGalaxy、Broad Instituteが開発しているWDLやnextflow、Pythonで書かれているSnakemakeなど、さまざまな選択肢があります。どのworkflowが好きか、Cambridgeの@AlbertVilellaが世界中のbioinformaticianにアンケートをとっていました。
90 responses in https://t.co/hbaY7ShocR @nextflowio @SBGenomics @commonwl Snamemake pic.twitter.com/1kc1DaXdBa
— Albert Vilella (@AlbertVilella) 2018年12月5日
No votes so far for @ensembl Hive, Apache Taverna or @arvados , even though we know they have plenty of users https://t.co/Db2el8vPDt #Bioinformatics #Workflows https://t.co/hbaY7ShocR
— Albert Vilella (@AlbertVilella) 2018年12月6日
どうやら一番twitter界隈のbioinformaticianはnextflowが好きなようです。ただ、下のspreadsheetを見ると、githubではGalaxy,bcbioについで三番目に盛んなようです。
他にも、cwlやnextflowを取り上げたgenome解析の論文も出ていたりします。
結論 みんなでCWLを使おう!
医学部生にできるだけわかりやすく書いてみました。みんなでcwlを使ってどんどん解析を楽にしましょう!
国試も自動化できたらなあ。。。
参考資料
- CWL公式ページ : リンク集がついている。
- cwl-intro-gui-workshop スライド : 二階堂研石井さんのスライド。わかりやすいです。
- 前の記事 : PythonとKerasでどうぶつしょうぎ
- 次の記事 : Pythonの変数と代入について
- 関連記事 :