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

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

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

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

Cloud Storage バケットを作成する

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

コンソール

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 コンソールまたはコマンドラインを使用します。

コンソール

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 ファイルで指定したディレクトリ。

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