通过在 Batch 上运行 Nextflow 流水线来编排作业


本教程将介绍如何运行 Nextflow 流水线。 具体来说,本教程将运行一个示例, 生命科学流水线 该模型可使用 RNA-Seq

本教程适用于想要使用 使用 Batch 执行 Nextflow。

Nextflow 是一种开源软件,用于编排生物信息学工作流。

目标

完成本教程后,您将了解如何执行以下操作:

  • 在 Cloud Shell 中安装 Nextflow。
  • 创建 Cloud Storage 存储分区。
  • 配置 Nextflow 流水线。
  • 在 Batch 上使用 Nextflow 运行示例流水线。
  • 查看流水线的输出。
  • 执行以下任一操作,以清理数据,以免产生额外费用: <ph type="x-smartling-placeholder">
      </ph>
    • 删除项目。
    • 逐个删除资源。

费用

在本文档中,您将使用 Google Cloud 的以下收费组件:

  • Batch
  • Cloud Storage

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

在本教程中创建的资源通常不到 1 美元, 假设您在 。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. 确保您的 Google Cloud 项目已启用结算功能

  6. 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
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. 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.

  10. 确保您的 Google Cloud 项目已启用结算功能

  11. 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
  12. 请确保您的项目至少包含一个 服务账号 本教程所需的权限。

    <ph type="x-smartling-placeholder">

    每个作业都需要一个服务账号, 用于创建和访问资源的批量服务代理 运行作业所需的资源。在本教程中,作业的服务账号 是 Compute Engine 默认服务账号

    为了确保 Compute Engine 默认服务账号具备必要的 允许 Batch 服务代理创建和访问 Batch 作业的资源。 请让管理员向 Compute Engine 默认服务账号授予 以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理访问权限

    您的管理员或许还能为 Compute Engine 默认服务账号提供 通过自定义 角色或其他预定义 角色

  13. 确保您拥有本教程所需的权限。

    <ph type="x-smartling-placeholder">

    如需获取完成本教程所需的权限, 请让管理员向您授予 以下 IAM 角色:

  14. 安装 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 存储桶

创建 Cloud Storage 存储桶以存储临时工作和输出 从 Nextflow 流水线导入文件,请使用 Google Cloud 控制台或命令行。

控制台

如需使用 Google Cloud 控制台创建 Cloud Storage 存储桶,请执行以下操作: 请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往存储桶页面。

    进入“存储桶”

  2. 点击 创建

  3. 创建存储桶页面上,输入 存储桶的全局唯一名称

  4. 点击创建

  5. 系统将禁止公开访问窗口中,点击确认

gcloud

如需使用 Google Cloud CLI 创建 Cloud Storage 存储桶,请执行以下操作: 使用 gcloud storage buckets create 命令

gcloud storage buckets create gs://BUCKET_NAME

BUCKET_NAME 替换为 您的存储桶的全局唯一名称

如果请求成功,则输出应类似于 以下:

Creating gs://BUCKET_NAME/...
   ```

配置 Nextflow

如需将 Nextflow 流水线配置为在 Batch 上运行,请按照下列步骤操作: 在命令行中执行以下步骤:

  1. 克隆示例流水线代码库:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. 转到 rnaseq-nf 文件夹:

    cd rnaseq-nf
    
  3. 打开 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'
    }
    ...
    
  4. gcb 部分中,执行以下操作:

    1. BUCKET_NAME 替换为 您在前面的步骤中创建的 Cloud Storage 存储桶。

    2. WORK_DIRECTORY 替换为新项目的名称 可供流水线用来存储日志和输出的文件夹。

      例如,输入 workDir

    3. google.region 字段后面,添加 第 google.project = 'PROJECT_ID' 行,其中 PROJECT_ID 是当前项目 ID Google Cloud 项目。

  5. 如需保存修改,请执行以下操作:

    1. Control+S 键。

    2. 输入 Y

    3. 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

查看流水线的输出

流水线运行完毕后,会存储输出文件、日志、错误或 results/qc_report.html文件内的临时文件 Cloud Storage 的“WORK_DIRECTORY”文件夹 存储桶。

要在 您的 Cloud Storage 的“WORK_DIRECTORY”文件夹 您可以使用 Google Cloud 控制台或命令行。

控制台

如需使用 Google Cloud 控制台检查流水线的输出文件,请按照下列步骤操作: 具体步骤:

  1. 在 Google Cloud 控制台中,前往存储桶页面。

    进入“存储桶”

  2. 名称列中,点击您在 先前的步骤。

  3. 存储分区详情页面上,打开 WORK_DIRECTORY 文件夹。

工作流运行的每个单独任务都有一个文件夹。每个文件夹 包含已运行的命令、输出文件和临时文件 创建 Deployment 清单

gcloud

如需使用 gcloud CLI 检查流水线的输出文件,请使用 该 gcloud storage ls 命令

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

替换以下内容:

  • BUCKET_NAME:您要创建的存储桶的名称, 您在前面步骤中创建的地址。

  • WORK_DIRECTORY:您在 Cloud Storage 中指定的目录 nextflow.config 文件。

输出将为流水线运行的每个单独任务列出一个文件夹。 每个文件夹都包含已运行的命令、输出文件以及 流水线创建的临时文件

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

若要避免产生费用,最简单的方法是删除当前项目。

如需删除当前项目,请使用 Google Cloud 控制台或 gcloud CLI。

控制台

  1. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

gcloud

    删除 Google Cloud 项目:

    gcloud projects delete PROJECT_ID

删除各个资源

如果您想继续使用当前项目,请删除单个 本教程中使用的资源

删除存储桶

如果您不再需要本教程中使用的存储桶, 删除存储桶

删除存储桶中的输出文件

流水线运行完毕后,会在 您的 Cloud Storage 的“WORK_DIRECTORY”文件夹 存储桶。

将 Cloud Storage 费用减少到当前的 Google Cloud 账号,则可以删除包含流水线 使用 Google Cloud 控制台或命令行运行输出文件。

控制台

如需删除 WORK_DIRECTORY 文件夹以及所有 Cloud Storage 存储桶中的 Google Cloud 控制台,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往存储桶页面。

    进入“存储桶”

  2. 名称列中,点击您在 先前的步骤。

  3. 存储分区详情页面上,选择包含 WORK_DIRECTORY 文件夹,然后执行以下操作:

    1. 点击删除

    2. 如需确认,请输入 DELETE,然后点击删除

gcloud

如需删除 WORK_DIRECTORY 文件夹以及所有 Cloud Storage 存储桶中的 gcloud CLI,请使用 将 gcloud storage rm 命令替换为 --recursive 标志。

gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \
      --recursive

替换以下内容:

  • BUCKET_NAME:您要创建的存储桶的名称, 您在前面步骤中指定的设置 ID。

  • WORK_DIRECTORY:用于存储 您在前面步骤中指定的流水线输出文件。

后续步骤