本教程将介绍如何运行 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
您可使用价格计算器根据您的预计使用情况来估算费用。
在本教程中创建的资源通常不到 1 美元, 假设您在 。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
- 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.
-
-
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.
-
-
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 -
请确保您的项目至少包含一个 服务账号 本教程所需的权限。
<ph type="x-smartling-placeholder">每个作业都需要一个服务账号, 用于创建和访问资源的批量服务代理 运行作业所需的资源。在本教程中,作业的服务账号 是 Compute Engine 默认服务账号。
为了确保 Compute Engine 默认服务账号具备必要的 允许 Batch 服务代理创建和访问 Batch 作业的资源。 请让管理员向 Compute Engine 默认服务账号授予 以下 IAM 角色:
-
Batch Agent Reporter (
roles/batch.agentReporter
) 针对项目 -
Storage Admin (
roles/storage.admin
) 针对项目 -
(推荐)让作业在 Cloud Logging 中生成日志:
Logs Writer (
roles/logging.logWriter
) 针对项目
如需详细了解如何授予角色,请参阅管理访问权限。
-
Batch Agent Reporter (
-
确保您拥有本教程所需的权限。
<ph type="x-smartling-placeholder">如需获取完成本教程所需的权限, 请让管理员向您授予 以下 IAM 角色:
-
Batch Job Editor (
roles/batch.jobsEditor
) 针对项目 -
Service Account User (
roles/iam.serviceAccountUser
) 服务账号用户 针对作业的服务账号,在本教程中为 Compute Engine 默认服务账号 -
Storage Object Admin (
roles/storage.objectAdmin
) 针对项目
-
Batch Job Editor (
-
安装 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 存储桶,请执行以下操作: 请按以下步骤操作:
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 上运行,请按照下列步骤操作: 在命令行中执行以下步骤:
克隆示例流水线代码库:
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
是当前项目 ID Google Cloud 项目。
如需保存修改,请执行以下操作:
按
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
查看流水线的输出
流水线运行完毕后,会存储输出文件、日志、错误或
results/qc_report.html
文件内的临时文件
Cloud Storage 的“WORK_DIRECTORY
”文件夹
存储桶。
要在
您的 Cloud Storage 的“WORK_DIRECTORY
”文件夹
您可以使用 Google Cloud 控制台或命令行。
控制台
如需使用 Google Cloud 控制台检查流水线的输出文件,请按照下列步骤操作: 具体步骤:
在 Google Cloud 控制台中,前往存储桶页面。
在名称列中,点击您在 先前的步骤。
在存储分区详情页面上,打开
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。
控制台
- 在 Google Cloud 控制台中,进入管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 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 控制台,请按以下步骤操作:
在 Google Cloud 控制台中,前往存储桶页面。
在名称列中,点击您在 先前的步骤。
在存储分区详情页面上,选择包含
WORK_DIRECTORY
文件夹,然后执行以下操作:点击删除。
如需确认,请输入
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
:用于存储 您在前面步骤中指定的流水线输出文件。
后续步骤
如需详细了解如何部署 Nextflow 工作流,请参阅 Nextflow GitHub 代码库。
如需详细了解 Nextflow 进程、脚本和配置选项, 请参阅 Nextflow 文档。