在 Batch 上运行 dsub 流水线以编排作业

本教程介绍了如何在 Batch 上运行 dsub 流水线。具体来说,示例 dsub 流水线会处理 二进制比对图 (BAM) 文件中的 DNA 测序数据,以创建 BAM 索引 (BAI) 文件。

本教程面向想要将 dsub 与 Batch 搭配使用的 Batch 用户。dsub 是一个开源作业调度程序,用于在 Google Cloud上编排批处理工作流。如需详细了解如何将 Batch 与 dsub 搭配使用,请参阅 Batch 的 dsub 文档

创建 Cloud Storage 存储桶

如需使用 gcloud CLI 创建 Cloud Storage 存储桶来存储示例 dsub 流水线的输出文件,请运行 gcloud storage buckets create 命令

gcloud storage buckets create gs://BUCKET_NAME \
    --project PROJECT_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 代码库包含一个预构建的 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 存储桶的名称。

  • 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 文件和一个包含作业日志的目录。