このチュートリアルでは、Batch で Nextflow パイプラインを実行する方法について説明します。具体的には、このチュートリアルでは RNA-Seq を使用して短いリードデータからゲノムの特徴を定量化する Nextflow のサンプル rnaseq-nf
ライフ サイエンス パイプラインを実行します。
このチュートリアルは、Batch で Nextflow を使用する Batch ユーザーを対象としています。
Nextflow は、バイオインフォマティクス ワークフローをオーケストレートするためのオープンソース ソフトウェアです。
目標
このチュートリアルでは、次の方法を学習します。
- Cloud Shell に Nextflow をインストールします。
- Cloud Storage バケットを作成する。
- Nextflow パイプラインを構成する。
- Batch で Nextflow を使用してサンプル パイプラインを実行する。
- パイプラインの出力を表示します。
- 次のいずれかを行い、クリーンアップして追加料金が発生しないようにします。
- プロジェクトを削除する。
- リソースを個別に削除する。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
- Batch
- Cloud Storage
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このチュートリアルで作成されるリソースにかかる費用は、クリーンアップを含むすべての手順を適切なタイミングで完了した場合、通常 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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 - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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 -
このチュートリアルで使用する有効なネットワーキング構成を持つ Virtual Private Cloud(VPC)ネットワークがプロジェクトにあることを確認します。
このチュートリアルでは、
default
ネットワークを使用していることを前提としています。デフォルトでは、Google Cloud リソースはdefault
ネットワークを使用します。このネットワークは、このチュートリアルに必要なネットワーク アクセスを提供します。 -
このチュートリアルで Batch ジョブの実行に必要な権限を持つサービス アカウントがプロジェクトに 1 つ以上存在することを確認します。
デフォルトでは、ジョブは Compute Engine のデフォルトのサービス アカウントを使用します。このアカウントには編集者(
roles/editor
)IAM ロールが自動的に付与され、このチュートリアルで必要なすべての権限がすでに含まれています。ジョブのサービス アカウントに、Batch サービス エージェントが Batch ジョブのリソースを作成およびアクセスするために必要な権限が付与されていることを確認するには、ジョブのサービス アカウントに次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトに対するバッチ エージェント報告者(
roles/batch.agentReporter
) -
プロジェクトに対するストレージ管理者(
roles/storage.admin
) -
推奨)ジョブで Cloud Logging のログを生成できるようにするには:
プロジェクトに対するログ書き込み(
roles/logging.logWriter
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をジョブのサービス アカウントに付与することもできます。
-
プロジェクトに対するバッチ エージェント報告者(
-
このチュートリアルで必要な権限があることを確認します。
このチュートリアルを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントに対するサービス アカウント ユーザー (
roles/iam.serviceAccountUser
) -
プロジェクトに対する Storage オブジェクト管理者(
roles/storage.objectAdmin
)
-
プロジェクトのバッチジョブ編集者(
-
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 バケットを作成する手順は次のとおりです。
Google Cloud コンソールの [バケット] ページに移動します。
[
作成] をクリックします。[バケットの作成] ページで、バケットのグローバルに一意の名前を入力します。
[作成] をクリックします。
[公開アクセスの防止] ウィンドウで [確認] をクリックします。
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 パイプラインを構成するには、コマンドラインで次の操作を行います。
サンプル パイプライン リポジトリのクローンを作成します。
git clone https://github.com/nextflow-io/rnaseq-nf.git
rnaseq-nf
フォルダに移動します。cd rnaseq-nf
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' }
[
gcb
] セクションで、次の操作を行います。BUCKET_NAME
は、前の手順で作成した Cloud Storage バケットの名前に置き換えます。WORK_DIRECTORY
は、パイプラインがログと出力の保存に使用できる新しいフォルダの名前に置き換えます。たとえば、「
workDir
」と入力します。REGION
は、使用するリージョンに置き換えます。たとえば、「
us-central1
」と入力します。google.region
フィールドの後に、次のフィールドを追加します。google.project
フィールドを追加します。google.project = 'PROJECT_ID'
PROJECT_ID
は、現在の Google Cloud プロジェクトのプロジェクト ID に置き換えます。Compute Engine のデフォルトのサービス アカウントをジョブのサービス アカウントとして使用していない場合は、
google.batch.serviceAccountEmail
フィールドを追加します。google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
SERVICE_ACCOUNT_EMAIL
は、このチュートリアル用に準備したジョブのサービス アカウントのメールアドレスに置き換えます。
編集内容を保存する手順は次のとおりです。
Control+S
キーを押します。「
Y
」と入力します。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 コンソールを使用してパイプラインの出力ファイルを確認する手順は次のとおりです。
Google Cloud コンソールの [バケット] ページに移動します。
[名前] 列で、前の手順で作成したバケットの名前をクリックします。
[バケットの詳細] ページで、
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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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
フォルダとすべての出力ファイルを削除する手順は次のとおりです。
Google Cloud コンソールの [バケット] ページに移動します。
[名前] 列で、前の手順で作成したバケットの名前をクリックします。
[バケットの詳細] ページで、
WORK_DIRECTORY
フォルダを含む行を選択し、次の操作を行います。[削除] をクリックします。
確定するには、「
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
: 前の手順で指定したパイプライン出力ファイルを保存するディレクトリ。
次のステップ
Nextflow ワークフローのデプロイの詳細については、Nextflow GitHub リポジトリをご覧ください。
Nextflow のプロセス、スクリプト、構成オプションの詳細については、Nextflow のドキュメントをご覧ください。