在 Batch 上執行 dsub 管道,藉此自動化調度工作

本教學課程說明如何在 Batch 上執行 dsub pipeline。具體來說,這個範例 dsub 管道會處理二進位對齊對應 (BAM) 檔案 中的 DNA 序列資料,建立 BAM 索引 (BAI) 檔案。

本教學課程適用於想要搭配 Batch 使用 dsub 的 Batch 使用者。dsub 是開放原始碼工作排程器,可自動化調度 Google Cloud上的批次處理工作流程。如要進一步瞭解如何搭配使用 Batch 與 dsub,請參閱 Batch 的 dsub 說明文件

建立 Cloud Storage 值區

如要使用 gcloud CLI 建立 Cloud Storage bucket,以便儲存範例 dsub 管道的輸出檔案,請執行 gcloud storage buckets create 指令

gcloud storage buckets create gs://BUCKET_NAME \
    --project PROJECT_ID

更改下列內容:

輸出結果會與下列內容相似:

Creating gs://BUCKET_NAME/...

執行 dsub 管道

範例 dsub 管道會為 1,000 種基因體專案的 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 bucket 名稱。

  • WORK_DIRECTORY:管道可用來儲存記錄和輸出的新目錄名稱。例如輸入 workDir

dsub 管道會執行 Batch 工作,將 BAI 檔案和記錄寫入 Cloud Storage bucket 中的指定目錄。具體來說,dsub 存放區包含預先建構的 Docker 映像檔,該映像檔使用 samtools 為您在 --input 旗標中指定的 BAM 檔案建立索引。

指令會在 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 bucket 名稱。

  • 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 檔案,以及含有工作記錄的目錄。