Batch で Nextflow パイプラインを実行してジョブをオーケストレート


このチュートリアルでは、Batch で Nextflow パイプラインを実行する方法について説明します。具体的には、このチュートリアルでは RNA-Seq を使用して短いリードデータからゲノムの特徴を定量化する Nextflow のサンプル rnaseq-nf ライフ サイエンス パイプラインを実行します。

このチュートリアルは、Batch で Nextflow を使用する Batch ユーザーを対象としています。

Nextflow は、バイオインフォマティクス ワークフローをオーケストレートするためのオープンソース ソフトウェアです。

目標

このチュートリアルでは、次の方法を学習します。

  • Cloud Shell に Nextflow をインストールします。
  • Cloud Storage バケットを作成する。
  • Nextflow パイプラインを構成する。
  • Batch で Nextflow を使用してサンプル パイプラインを実行する。
  • パイプラインの出力を表示します。
  • 次のいずれかを行い、クリーンアップして追加料金が発生しないようにします。
    • プロジェクトを削除する。
    • リソースを個別に削除する。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

  • Batch
  • Cloud Storage

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このチュートリアルで作成されるリソースにかかる費用は、クリーンアップを含むすべての手順を適切なタイミングで完了した場合、通常 1 ドル未満です。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. このチュートリアルで使用する有効なネットワーキング構成を持つ Virtual Private Cloud(VPC)ネットワークがプロジェクトにあることを確認します。

    このチュートリアルでは、default ネットワークを使用していることを前提としています。デフォルトでは、Google Cloud リソースは default ネットワークを使用します。このネットワークは、このチュートリアルに必要なネットワーク アクセスを提供します。

  13. このチュートリアルで Batch ジョブの実行に必要な権限を持つサービス アカウントがプロジェクトに 1 つ以上存在することを確認します。

    デフォルトでは、ジョブは Compute Engine のデフォルトのサービス アカウントを使用します。このアカウントには編集者(roles/editor)IAM ロールが自動的に付与され、このチュートリアルで必要なすべての権限がすでに含まれています。

    ジョブのサービス アカウントに、Batch サービス エージェントが Batch ジョブのリソースを作成およびアクセスするために必要な権限が付与されていることを確認するには、ジョブのサービス アカウントに次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をジョブのサービス アカウントに付与することもできます。

  14. このチュートリアルで必要な権限があることを確認します。

    このチュートリアルを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。

  15. Nextflow をインストールします。

    curl -s -L https://github.com/nextflow-io/nextflow/releases/download/v23.04.1/nextflow | bash
    

    出力例を以下に示します。

    N E X T F L O W
    version 23.04.1 build 5866
    created 15-04-2023 06:51 UTC
    cite doi:10.1038/nbt.3820
    http://nextflow.io
    
    Nextflow installation completed. Please note:
    - the executable file `nextflow` has been created in the folder: ...
    - you may complete the installation by moving it to a directory in your $PATH
    

Cloud Storage バケットを作成する

Nextflow パイプラインの一時作業ファイルと出力ファイルを保存する Cloud Storage バケットを作成するには、Google Cloud コンソールまたはコマンドラインを使用します。

Console

Google Cloud コンソールを使用して Cloud Storage バケットを作成する手順は次のとおりです。

  1. Google Cloud コンソールの [バケット] ページに移動します。

    [バケット] に移動

  2. [ 作成] をクリックします。

  3. [バケットの作成] ページで、バケットのグローバルに一意の名前を入力します。

  4. [作成] をクリックします。

  5. [公開アクセスの防止] ウィンドウで [確認] をクリックします。

gcloud

Google Cloud CLI を使用して Cloud Storage バケットを作成するには、gcloud storage buckets create コマンドを使用します。

gcloud storage buckets create gs://BUCKET_NAME

BUCKET_NAME は、バケットのグローバルに一意の名前に置き換えます。

リクエストが成功した場合、出力は次のようになります。

Creating gs://BUCKET_NAME/...
   ```

Nextflow を構成する

Batch で実行するように Nextflow パイプラインを構成するには、コマンドラインで次の操作を行います。

  1. サンプル パイプライン リポジトリのクローンを作成します。

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. rnaseq-nf フォルダに移動します。

    cd rnaseq-nf
    
  3. nextflow.config ファイルを開きます。

    nano nextflow.config
    

    このファイルには、次の gcb セクションが含まれている必要があります。

    gcb {
      params.transcriptome = 'gs://rnaseq-nf/data/ggal/transcript.fa'
      params.reads = 'gs://rnaseq-nf/data/ggal/gut_{1,2}.fq'
      params.multiqc = 'gs://rnaseq-nf/multiqc'
      process.executor = 'google-batch'
      process.container = 'quay.io/nextflow/rnaseq-nf:v1.1'
      workDir = 'gs://BUCKET_NAME/WORK_DIRECTORY'
      google.region  = 'REGION'
    }
    
  4. [gcb] セクションで、次の操作を行います。

    1. BUCKET_NAME は、前の手順で作成した Cloud Storage バケットの名前に置き換えます。

    2. WORK_DIRECTORY は、パイプラインがログと出力の保存に使用できる新しいフォルダの名前に置き換えます。

      たとえば、「workDir」と入力します。

    3. REGION は、使用するリージョンに置き換えます。

      たとえば、「us-central1」と入力します。

    4. google.region フィールドの後に、次のフィールドを追加します。

      1. google.project フィールドを追加します。

        google.project = 'PROJECT_ID'
        

        PROJECT_ID は、現在の Google Cloud プロジェクトのプロジェクト ID に置き換えます。

      2. Compute Engine のデフォルトのサービス アカウントをジョブのサービス アカウントとして使用していない場合は、google.batch.serviceAccountEmail フィールドを追加します。

        google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
        

        SERVICE_ACCOUNT_EMAIL は、このチュートリアル用に準備したジョブのサービス アカウントのメールアドレスに置き換えます。

  5. 編集内容を保存する手順は次のとおりです。

    1. Control+S キーを押します。

    2. Y」と入力します。

    3. Enter キーを押します。

パイプラインを実行する

コマンドラインを使用して、サンプルの Nextflow パイプラインを実行します。

../nextflow run nextflow-io/rnaseq-nf -profile gcb

パイプラインは、前の手順で指定した設定を使用して小規模なデータセットを実行します。このオペレーションが完了するまでに 10 分ほどかかることがあります。

パイプラインの実行が完了すると、出力は次のようになります。

N E X T F L O W  ~  version 23.04.1
Launching `https://github.com/nextflow-io/rnaseq-nf` [crazy_curry] DSL2 - revision: 88b8ef803a [master]
 R N A S E Q - N F   P I P E L I N E
 ===================================
 transcriptome: gs://rnaseq-nf/data/ggal/transcript.fa
 reads        : gs://rnaseq-nf/data/ggal/gut_{1,2}.fq
 outdir       : results

Uploading local `bin` scripts folder to gs://example-bucket/workdir/tmp/53/2847f2b832456a88a8e4cd44eec00a/bin
executor >  google-batch (4)
[67/71b856] process > RNASEQ:INDEX (transcript)     [100%] 1 of 1 ✔
[0c/2c79c6] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[a9/571723] process > RNASEQ:QUANT (gut)            [100%] 1 of 1 ✔
[9a/1f0dd4] process > MULTIQC                       [100%] 1 of 1 ✔

Done! Open the following report in your browser --> results/multiqc_report.html

Completed at: 20-Apr-2023 15:44:55
Duration    : 10m 13s
CPU hours   : (a few seconds)
Succeeded   : 4

パイプラインの出力を表示する

パイプラインの実行が完了すると、出力ファイル、ログ、エラー、一時ファイルが Cloud Storage バケットの WORK_DIRECTORY フォルダ内の results/qc_report.html ファイルに保存されます。

Cloud Storage バケットの WORK_DIRECTORY フォルダにあるパイプラインの出力ファイルを確認するには、Google Cloud コンソールまたはコマンドラインを使用します。

Console

Google Cloud コンソールを使用してパイプラインの出力ファイルを確認する手順は次のとおりです。

  1. Google Cloud コンソールの [バケット] ページに移動します。

    [バケット] に移動

  2. [名前] 列で、前の手順で作成したバケットの名前をクリックします。

  3. [バケットの詳細] ページで、WORK_DIRECTORY フォルダを開きます。

ワークフローで実行される個々のタスクごとにフォルダがあります。各フォルダには、実行されたコマンド、出力ファイル、パイプラインによって作成された一時ファイルが含まれています。

gcloud

gcloud CLI を使用してパイプラインの出力ファイルを確認するには、gcloud storage ls コマンドを使用します。

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

以下を置き換えます。

  • BUCKET_NAME: 前の手順で作成したバケットの名前。

  • WORK_DIRECTORY: nextflow.config ファイルで指定したディレクトリ。

出力には、パイプラインで実行された個々のタスクごとにフォルダが一覧表示されます。各フォルダには、実行されたコマンド、出力ファイル、パイプラインによって作成された一時ファイルが含まれています。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

課金をなくす最も簡単な方法は、現在のプロジェクトを削除することです。

現在のプロジェクトを削除するには、Google Cloud コンソールまたは gcloud CLI を使用します。

Console

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

リソースを個別に削除する

現在のプロジェクトを引き続き使用する場合は、このチュートリアルで使用した個々のリソースを削除します。

バケットの削除

このチュートリアルで使用したバケットが不要になった場合は、バケットを削除します。

バケット内の出力ファイルを削除する

パイプラインの実行が完了すると、出力ファイルが作成されて Cloud Storage バケットの WORK_DIRECTORY フォルダに保存されます。

現在の Google Cloud アカウントに対する Cloud Storage の料金を削減するには、Google Cloud コンソールまたはコマンドラインを使用して、パイプラインの出力ファイルを含むフォルダを削除します。

Console

Google Cloud コンソールを使用して Cloud Storage バケットから WORK_DIRECTORY フォルダとすべての出力ファイルを削除する手順は次のとおりです。

  1. Google Cloud コンソールの [バケット] ページに移動します。

    [バケット] に移動

  2. [名前] 列で、前の手順で作成したバケットの名前をクリックします。

  3. [バケットの詳細] ページで、WORK_DIRECTORY フォルダを含む行を選択し、次の操作を行います。

    1. [削除] をクリックします。

    2. 確定するには、「DELETE」と入力して [削除] をクリックします。

gcloud

gcloud CLI を使用して Cloud Storage バケットから WORK_DIRECTORY フォルダとすべての出力ファイルを削除するには、--recursive フラグで gcloud storage rm コマンドを実行します。

gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \
      --recursive

以下を置き換えます。

  • BUCKET_NAME: 前の手順で指定したバケットの名前。

  • WORK_DIRECTORY: 前の手順で指定したパイプライン出力ファイルを保存するディレクトリ。

次のステップ