大阪大学医学部 Python会 (情報医科学研究会)

Now is better than never.

Common Workflow Language入門

2018-12-07(Fri) - Posted by 安水 in 技術ブログ    tag:Bioinformatics

Contents

    先日workflow-meetupにお誘いを頂いて参加してきました。そこでThe Common Workflow Language(CWL)というものを習ったので忘れないうちに医学部生にもわかりやすくまとめます。

    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を作ったりも出来ます。

    始め方

    1. 素晴らしい日本語ドキュメントを読みましょう。10分もあれば読めると思います。
    2. cwl-intro-gui-workshop スライドをやってみましょう。1時間ほどです。
    3. user guideをやりましょう。3時間ほどで終わるように設計されています。(理論値)

    CWLのここがすごい

    入門は各サイトにお任せするとして、今回は私がCWLをさわってみてすごいと思ったところをまとめてみます。素人目線です。

    rabix composerのGUIがきれいすぎる

    rabix gif

    画像は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の輪を広げています。

    kallistoをCWL + Rabix Composerで試してみる

    まずは実際の作業工程を見てみましょう。

    gif

    ちゃんとkallistoのoutputが生成されていますね!データはgithubにまとめておきました。テスト用のシーケンスデータも付けてあるので、クローンして遊んでみてください。kallisto-index.cwlkallisto-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が開発しているWDLnextflow、Pythonで書かれているSnakemakeなど、さまざまな選択肢があります。どのworkflowが好きか、Cambridgeの@AlbertVilellaが世界中のbioinformaticianにアンケートをとっていました。

    どうやら一番twitter界隈のbioinformaticianはnextflowが好きなようです。ただ、下のspreadsheetを見ると、githubではGalaxy,bcbioについで三番目に盛んなようです。

    他にも、cwlやnextflowを取り上げたgenome解析の論文も出ていたりします。

    Baichoo, S. et al. Developing reproducible bioinformatics analysis workflows for heterogeneous computing environments to support African genomics. BMC Bioinformatics 19, 457 (2018).

    結論 みんなでCWLを使おう!

    医学部生にできるだけわかりやすく書いてみました。みんなでcwlを使ってどんどん解析を楽にしましょう!

    国試も自動化できたらなあ。。。

    参考資料