Nextflow の概要と AWS サービスとの関係性を IT エンジニア向けに紹介

NextflowをITエンジニア向けに説明した内容です。
2023.05.14

Nextflow のお作法を学ぶためにいろいろと調べていました。Nextflow はバイオインフォマティクスの分野で利用されているツールこともあり、一般的な IT エンジニアだととっつきにくいです。AWS がわかるエンジニア向けに Nextflow が AWS のサービスとなんの関係があるのか調べたことをまとめました。

Nextflow とは

Nextflow はオープンソースで開発されているワークフローツールです。AWS Step Functions と同じ様に独自の言語でワークフローを定義しワークフローの管理、データを処理できます。

A DSL for parallel and scalable computational pipelines | Nextflow

Nextflow は独自言語・実行エンジンのセットになっています。独自の言語(Domain Specific Language / 略称: DSL)でワークフローを定義する都合、言語を解釈するための実行エンジンが必要になっています。

IT エンジニアに馴染みのある独自言語ですと Terraform の HCL(HashiCorp Configuration Language)や、Step Functions の ASL(Amazon States Language)と同じです。

Nextflow は DSL でワークフローを記述したファイル(.nf)を Nextflow 実行エンジンで実行します。

main.nf

#!/usr/bin/env nextflow // シェバンで nextflow を指定
nextflow.enable.dsl=2 // DSL2 を利用すると明示的に宣言

process sayHello { // プロセスはいわゆる関数みたいなもの
  input:
    val x // Channel.of() の引数で渡している文字列(Bonjor)を変数 x に格納
  output:
    stdout // 出力先を標準出力に指定 ※標準出力へ内容を返すにはオペレーターの view が必要
  script:
    """
    echo '$x world!' // $変数名で変数を展開
    """
}

workflow { // プロセスの実行順番やプロセスへ渡す引数など全体の処理の流れを定義
  Channel.of('Bonjour', 'Ciao', 'Hello', 'Hola') | sayHello | view
}

上記ワークフロー定義の解説は以下の記事を参考にしてください。

Nextflow 入門 Hello World ワークフローの実行内容を解説 | DevelopersIO

特徴

Nextflow はバイオインフォマティクスの分野で広く利用されているワークフロー言語、エンジンの1つです。主な用途はゲノム解析における一連の解析処理の流れ(ワークフロー)を定義し再現性のある解析処理の構築に一役を買っています。

ワークフローで定義する一連のゲノム解析処理の流れのことをパイプラインと呼ばれています。

下の画像は RNA-Seq 解析パイプラインの処理の流れです。ここでは RNA-Seq 解析がなんなのかはおいておいて作業工程が多く複雑なステップを踏むことになるのは図を見ればご理解いただけるのではないでしょうか。一連の工程を自動化するためのワークフローを定義し、実行の管理できるのが Nextflow です。

画像引用: rnaseq » nf-core

ゲノム解析のパイプラインは Nextflow ではないと定義できないのか?というとそうではありません。たとえば AWS のサービスで実現しようとすれば Step Functions でワークフローを定義し、AWS Batch で解析処理を実行させる解析パイプラインを組むこともできます。

汎用的なワークフローを定義できる Step Fuctions に比べNextflow はゲノム解析のパイプライン構築に優れ、特定の用途向けに特化しています。

多くの研究者、開発者の間で利用されている理由の1つではないかと思います。並列実行の定義が容易であったり、Conda や、Apptainer などバイオインフォマティクス、HPC 界隈で使用するツール、アプリケーションをサポートしています。

ユーザーコミュニティ nf-core

nf-coreというユーザーコミュニティがあります。nf-core で作成、管理しているさまざまなゲノム解析のパイプラインのワークフローの定義(コード)が GitHub で公開されています。コードで定義された再現性の高い解析処理のパイプラインを容易に入手可能なため、ユーザーが手元の環境で同じ複雑な解析処理を実行できるのは大きな利点です。

nf-core については1分程度の解説動画ご視聴ください。

なぜ再現性が必要なのか?

単純に研究においての再現性は非常に重要だからです。

研究の再現性とは、研究の独自性を決定する大きな要素のひとつであり、ある研究と同じデータと手法を使って実験を行えば、元の研究と一致した結果が得られることを意味します。研究者は、ある結果を生み出した実験を繰り返し、同じ結果を得ることで、新しい発見の妥当性を確認します。さらに、該当分野の他の研究者も、元の結果に似た結果を生む同じ実験を繰り返すことができるのです。

研究の再現性に影響する5つの要素 - 学術英語アカデミー

私は研究者ではないため研究者になるための心構えは勉強になりました。

IT エンジニアに馴染みのある再現性を実現する用語ですと IaC や CI/CD の必要性と考えればしっくりくるのではないでしょうか。

IaC(Infrastructure as Code)は、インフラストラクチャをコードで表現し、コードのバージョン管理や自動化などを行うことを目的とした技術です。たとえば、同じコードを使用して AWS などのクラウドサービスでインフラストラクチャを構築する場合、IaC を使用することで同じ環境を容易に再現できます。

CI/CD(Continuous Integration/Continuous Deployment or Delivery)はソフトウェアの開発およびリリースプロセスを自動化する技術です。開発中に CI を使用することでコードの品質を保つとともに、プログラムのビルド、テスト、デプロイを自動化できます。CD を使用することで、アプリケーションのリリースプロセスも自動化され温もりある手作業によるデプロイミスのリスクを軽減できます。

ワークフローの必要なユースケース

ゲノム解析処理のパイプライン(ワークフロー)の再現性の高さの必要性については以下のリンクが参考になりました。

Describe data analysis workflow with workflow languages - Speaker Deck

上記リンクのスライドから引用です。これらは IT エンジニアでもあるあるですね。

似たような文章ですが後半が違います。

バイオインフォマティシャンも IT エンジニアも同じツラミを抱えていることがわかりました。

Nextflow と AWS の連携

Nextflow のワークフロー定義したパイプラインの処理は、分散コンピューティング(オンプレのスパコン)や、クラウドコンピューティング(AWS, Azure, Google Cloud)を実行をサポートしています。一般的にゲノム解析の処理は計算量が多くスパコンの様なリッチなコンピューティングリソースを必要としています。

AWS 上で Nextflow のワークフロー定義を実行する方法はいくつかありますので簡単に紹介します。

AWS Batch

EC2 上で実行している Nextflow から AWS Batch を呼び出してコンピュートリソースは AWS へオフロードする使い方の例です。

画像引用: Nextflow and AWS Batch – Inside the Integration (1 of 3) | Seqera Labs

オンプレサーバーで実行している Nextflow から AWS Batch を呼び出すことも同じくできます。過去の AWS のセミナーで理研ジェネシス様がオンプレの Nextflow から AWS Batch を利用する構成を紹介されています。Nextflow 以外のお話も興味深く参考になるかと思いますので御覧ください。

[医療機関向け]クラウド活用ウェビナー - クラウドによるゲノム解析を始めよう! ~ユーザー事例と新サービス Amazon Omics のご紹介~

画像引用: 上記ウェビナーより

Amazon Genomics CLI

Amazon Genomics CLI は Nextflow などでワークフローを定義したパイプラインを実行可能な環境構築と、パイプラインを処理を AWS Batch で実行を担う CLI が提供されています。AWS Batch を抽象化し上手く活用できる CLI 操作のラッパーだと思えば良いです。

画像引用: Amazon Genomics CLI (AGC)

要は Nextflow で定義したワークフローを Amazon Genomics CLI を通して AWS Batch で計算処理できます。 非 IT エンジニア向けの推しポイントははパイプラインを実行する AWS Batch のインフラの構築も Amazon Genomics CLI から構築できるところです。

研究者、開発者が HPC の実行環境を AWS 上に構築するのは尻込みすると思いますので、そこをカバーをしているのが Amazon Genomics CLI の特徴なのではないでしょうか。と言いつつも IT エンジニアでも HPC 環境を構築した経験がある方は極少数だと思います。ちなみに環境構築の裏側は AWS CDK が使われています。

Amazon Omics

Amazon Omics には3つのコンポーネントがあり、そのうちの1つに Omics Workflows があります。これはマネージドな HPC サービスを提供しています。

画像引用: Amazon Omics - End to End

Nextflow で定義したワークフローに Omics 独自のパラメーターを与えることで Omics Workflows でパイプラインを実行できるようになります。Nextflow で定義したワークフローの資産をクラウドベースのシステムに転用できます。

これまで紹介してきた Nextflow から AWS Batch を呼び出す方法や、Amazon Genomics CLI を使う方法のコンピューティングリソース部分は AWS Batch が利用されていました。Omics Workflow はマネージドな HPC サービスですのでコンピューティングリソース部分も Amazon Omics 管理となっており、ユーザーが設定する部分がより少なくなっており学習コストが下がっています。

AWS Batch を直接操作したり、Amazon Genomics CLI から操作するよりもさらに抽象化されています。IT は苦手という研究者、開発者にとっては AWS 部分の学習コストを削減できる利点はあります。ですが、2022年12月にリリースされた比較的新しいサービスですので、まだなんでもかんでもユーザーの要望を満たせるサービスになっていません。Amazon Omics の利用を検討されるのであればお近くの詳しい方へ相談されると良いでしょう。

その他

ワークフローツールの種類

バイオインフォマティクス分野で利用されているワークフロー言語・エンジンについは以下のリンクが参考になりました。

AWS のサービスでは Nextflow にも以下のワークフローエンジンをサポートしています。

  • Amazon Genomics CLI: miniwdl, Toil, Cromwell, Nextflow, Snakemake をサポート
  • Amazon Omics: WDL, Nextflow をサポート

Terra のサポート状況

「クラウド x ゲノム解析」といったら今ホットサービスはTerraではないでしょうか。

Terra のサイトには WDL 言語でワークフローを書き、Cromwell エンジンで動かす構成が紹介されています。※ WDL の実行エンジンが Cromwell のため

Analysis Tools - Terra.Bio

画像引用: Pipelining with workflows – Terra Support

WDL が欧米では現在主流なのか?と思ったのですが、ワークフローツールも利用用途に応じて選定が必要でした。IT エンジニア視点ですとプログラミング言語、フレームワークなどの技術選定と同じですね。

2017年ピッツバーグ大学で行われたNCBIハッカソンでパイプライン簡単に共有できる方法についてディスカッションした内容の記録があります。他のワークフローツールと比較して Nextflow を採用した経緯が書かれていますのでご興味あれば一読ください。

Nextflow was chosen because it can use any language, manages inputs and outputs and is meant to be easily wrapped.

NCBI-Hackathons/SPeW: Automatic Packaging and Distribution of Bioinformatics Pipelines

  • 5ステップある処理(5つのモジュール)どのように連携させ、インプットとアウトプットの管理、将来モジュール追加・変更ができるか検討した
  • ワークフローツールの候補にあがったのは Nextflow, snakemake, CWL の3つ
    • CWL は習得に時間かかる、労力に見合わない
    • Snakemake は Nextflow より柔軟性に欠ける
    • Nexflow はいろんな言語が使える、インプットとアウトプットを管理できる、簡単にラップができる

おわりに

Nextflow の利用用途がバイオインフォマティクスなだけに IT エンジニアには背景を知るための学習コストが高かったです。Nextflow の書き方を学ぶ前に AWS のサポート状況などを調べていたことを整理して書き残しました。

後日、Hello World の解説記事を書きました。Nextflow を動かすファーストステップにご利用いただければ幸いです。

Nextflow の実行環境構築はこちらを記事を参考にしてください。

参考