このチュートリアルでは、Batch で Nextflow のパイプラインを実行する方法について説明します。具体的には、RNA-Seq を使用して短いリードデータからゲノムの特徴を定量化するサンプル ライフ サイエンス パイプラインを実行します。
このチュートリアルは、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 -
プロジェクトに、このチュートリアルで必要な権限を含むサービス アカウントが 1 つ以上設定されていることを確認します。
各ジョブには、Batch サービス エージェントがジョブの実行に必要なリソースを作成してアクセスできるサービス アカウントが必要です。このチュートリアルでは、ジョブのサービス アカウントは Compute Engine のデフォルトのサービス アカウントです。
Compute Engine のデフォルト サービス アカウントに Batch サービス エージェントが Batch ジョブのリソースを作成およびアクセスするために必要な権限を付与するには、Compute Engine のデフォルト サービス アカウントに次の IAM ロールを付与するように管理者に依頼してください。
-
プロジェクトに対するバッチ エージェント報告者(
roles/batch.agentReporter
) -
プロジェクトに対するストレージ管理者(
roles/storage.admin
) -
(推奨)ジョブで Cloud Logging のログを生成できるようにする
プロジェクトに対するログ書き込み(
roles/logging.logWriter
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、Compute Engine のデフォルト サービス アカウントに必要な権限を付与することもできます。
-
プロジェクトに対するバッチ エージェント報告者(
-
このチュートリアルで必要な権限があることを確認します。
このチュートリアルを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントに対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。このチュートリアルでは、Compute Engine のデフォルトのサービス アカウントです。 -
プロジェクトに対する 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 コンソールまたはコマンドラインを使用します。
コンソール
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/...
gsutil
gsutil ツールを使用して Cloud Storage バケットを作成するには、gsutil mb
コマンドを使用します。
gsutil mb 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 { 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 = 'us-central1' } ...
gcb
セクションで、次の操作を行います。BUCKET_NAME
を前の手順で作成した Cloud Storage バケットの名前に置き換えます。WORK_DIRECTORY
は、パイプラインがログと出力の保存に使用できる新しいフォルダの名前に置き換えます。たとえば、「
workDir
」と入力します。google.region
フィールドの後にgoogle.project = 'PROJECT_ID'
行を追加します。ここで、PROJECT_ID
は、現在の Google Cloud プロジェクトのプロジェクト ID です。
編集内容を保存する手順は次のとおりです。
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 コンソールまたはコマンドラインを使用します。
コンソール
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
ファイルで指定したディレクトリ。
出力には、パイプラインが実行するタスクごとにフォルダが表示されます。各フォルダには、実行されたコマンド、出力ファイル、パイプラインによって作成された一時ファイルが格納されます。
gsutil
gsutil ツールを使用してパイプラインの出力ファイルを確認するには、gsutil ls
コマンドを使用します。
gsutil ls gs://BUCKET_NAME/WORK_DIRECTORY
以下を置き換えます。
BUCKET_NAME
: 前の手順で作成したバケットの名前。WORK_DIRECTORY
:nextflow.config
ファイルで指定したディレクトリ。
出力には、パイプラインが実行するタスクごとにフォルダが表示されます。各フォルダには、実行されたコマンド、出力ファイル、パイプラインによって作成された一時ファイルが格納されます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金を停止する最も簡単な方法は、現在のプロジェクトを削除することです。
現在のプロジェクトを削除するには、Google Cloud コンソールまたは gcloud CLI を使用します。
コンソール
- 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 コンソールまたはコマンドラインを使用してパイプラインの出力ファイルを含むフォルダを削除します。
コンソール
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
: 前の手順で指定したパイプライン出力ファイルを保存するディレクトリ。
gsutil
gsutil ツールを使用して Cloud Storage バケットから WORK_DIRECTORY
フォルダとすべての出力ファイルを削除するには、-m
オプションと -r
オプションのある gsutil rm
コマンドを使用します。
gsutil -m rm -r gs://BUCKET_NAME/WORK_DIRECTORY
以下を置き換えます。
BUCKET_NAME
: 前の手順で指定したバケットの名前。WORK_DIRECTORY
: 前の手順で指定したパイプライン出力ファイルを保存するディレクトリ。
次のステップ
Nextflow ワークフローのデプロイの詳細については、Nextflow の GitHub リポジトリをご覧ください。
Nextflow のプロセス、スクリプト、構成オプションの詳細については、Nextflow のドキュメントをご覧ください。