このチュートリアルでは、Batch で dsub
パイプラインを実行する方法について説明します。具体的には、dsub
パイプラインの例では、Binary Alignment Map(BAM)ファイルで DNA 配列データを処理し、BAM インデックス(BAI)ファイルを作成します。
このチュートリアルは、Batch で dsub
を使用したい Batch ユーザーを対象としています。dsub
は、 Google Cloudでバッチ処理ワークフローをオーケストレートするためのオープンソースのジョブ スケジューラです。dsub
で Batch を使用する方法については、Batch の dsub
ドキュメントをご覧ください。
Cloud Storage バケットを作成する
gcloud CLI を使用して、サンプル dsub
パイプラインの出力ファイルを保存する Cloud Storage バケットを作成するには、gcloud storage buckets create
コマンドを実行します。
gcloud storage buckets create gs://BUCKET_NAME \
--project PROJECT_ID
以下を置き換えます。
BUCKET_NAME
: 実際のプロジェクトのグローバルに一意の名前。PROJECT_ID
: Google Cloud プロジェクトのプロジェクト ID。
出力は次のようになります。
Creating gs://BUCKET_NAME/...
dsub
パイプラインを実行する
サンプル dsub
パイプラインは、1,000 Genomes Project の BAM ファイルをインデックスに登録し、結果を Cloud Storage バケットに出力します。
サンプル dsub
パイプラインを実行するには、次の dsub
コマンドを実行します。
dsub \
--provider google-batch \
--project PROJECT_ID \
--logging gs://BUCKET_NAME/WORK_DIRECTORY/logs \
--input BAM=gs://genomics-public-data/1000-genomes/bam/HG00114.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam \
--output BAI=gs://BUCKET_NAME/WORK_DIRECTORY/HG00114.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam.bai \
--image quay.io/cancercollaboratory/dockstore-tool-samtools-index \
--command 'samtools index ${BAM} ${BAI}' \
--wait
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトのプロジェクト ID。BUCKET_NAME
: 前に作成した Cloud Storage バケットの名前WORK_DIRECTORY
: パイプラインがログと出力を保存するために使用できる新しいディレクトリの名前。たとえば、「workDir
」と入力します。
dsub
パイプラインは、BAI ファイルとログを Cloud Storage バケット内の指定されたディレクトリに書き込むバッチジョブを実行します。具体的には、dsub
リポジトリには、samtools
を使用して --input
フラグで指定した BAM ファイルをインデックス化する事前ビルドされた Docker イメージが含まれています。
コマンドは、dsub
パイプラインの実行が完了するまで終了しません。これは、Batch ジョブのスケジュール設定のタイミングによって異なる場合があります。通常、この処理には 10 分ほどかかります。通常、Batch は数分以内にジョブの実行を開始し、ジョブの実行時間は約 8 分です。
最初は、コマンドはまだ実行中で、出力は次のようになります。
Job properties:
job-id: JOB_NAME
job-name: samtools
user-id: USERNAME
Provider internal-id (operation): projects/PROJECT_ID/locations/us-central1/jobs/JOB_NAME
Launched job-id: JOB_NAME
To check the status, run:
dstat --provider google-batch --project PROJECT_ID --location us-central1 --jobs 'JOB_NAME' --users 'USERNAME' --status '*'
To cancel the job, run:
ddel --provider google-batch --project PROJECT_ID --location us-central1 --jobs 'JOB_NAME' --users 'USERNAME'
Waiting for job to complete...
Waiting for: JOB_NAME.
ジョブが正常に完了すると、コマンドは終了し、出力は次のようになります。
JOB_NAME: SUCCESS
JOB_NAME
この出力には次の値が含まれます。
JOB_NAME
: ジョブの名前。USERNAME
: Google Cloud ユーザー名。PROJECT_ID
: Google Cloud プロジェクトのプロジェクト ID。
出力ファイルを表示する
gcloud CLI を使用してサンプル dsub
パイプラインで作成された出力ファイルを表示するには、gcloud storage ls
コマンドを実行します。
gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY \
--project PROJECT_ID
以下を置き換えます。
BUCKET_NAME
: 前に作成した Cloud Storage バケットの名前WORK_DIRECTORY
:dsub
コマンドで指定したディレクトリ。PROJECT_ID
: Google Cloud プロジェクトのプロジェクト ID。
出力は次のようになります。
gs://BUCKET_NAME/WORK_DIRECTORY/HG00114.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam.bai
gs://BUCKET_NAME/WORK_DIRECTORY/logs/
この出力には、BAI ファイルとジョブのログを含むディレクトリが含まれます。