En este tutorial se explica cómo ejecutar una canalización de Nextflow
en Batch. En concreto, en este tutorial se ejecuta el
flujo de procesamiento de datos de ciencias de la vida de ejemplo rnaseq-nf
de Nextflow,
que cuantifica las características genómicas a partir de datos de lecturas cortas mediante
RNA-Seq.
Este tutorial está dirigido a los usuarios de Batch que quieran usar Nextflow con Batch.
Nextflow es un software de código abierto para orquestar flujos de trabajo de bioinformática.
Objetivos
Al completar este tutorial, aprenderás a hacer lo siguiente:
- Instala Nextflow en Cloud Shell.
- Crea un segmento de Cloud Storage.
- Configura un flujo de procesamiento de Nextflow.
- Ejecuta un flujo de procesamiento de ejemplo con Nextflow en Batch.
- Ver las salidas de la canalización.
- Para evitar que se te apliquen cargos adicionales, haz una de las siguientes acciones:
- Eliminar un proyecto.
- Elimina recursos concretos.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
- Batch
- Cloud Storage
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Los recursos creados en este tutorial suelen costar menos de un dólar, siempre que completes todos los pasos (incluida la limpieza) a tiempo.
Antes de empezar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com -
Asegúrate de que tu proyecto tenga una red de nube privada virtual (VPC) con una configuración de red válida para este tutorial.
En este tutorial se da por hecho que usas la red
default
. De forma predeterminada,los Google Cloud recursos usan la reddefault
, que proporciona el acceso a la red necesario para este tutorial. -
Asegúrate de que tu proyecto tenga al menos una cuenta de servicio con los permisos necesarios para ejecutar la tarea por lotes de este tutorial.
De forma predeterminada, los trabajos usan la cuenta de servicio predeterminada de Compute Engine, a la que se le asigna automáticamente el rol de gestión de identidades y accesos Editor (
roles/editor
) y que ya tiene todos los permisos necesarios para este tutorial.Para asegurarte de que la cuenta de servicio del trabajo tenga los permisos necesarios para que el agente de servicio de Batch cree recursos y acceda a ellos para los trabajos de Batch, pide a tu administrador que conceda a la cuenta de servicio del trabajo los siguientes roles de gestión de identidades y accesos:
-
Reporter de agente de Batch (
roles/batch.agentReporter
) en el proyecto -
Administrador de Storage (
roles/storage.admin
) en el proyecto -
(Recomendado) Permite que los trabajos generen registros en Cloud Logging:
Escritor de registros (
roles/logging.logWriter
) en el proyecto
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Es posible que tu administrador también pueda conceder a la cuenta de servicio del trabajo los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Reporter de agente de Batch (
-
Asegúrate de que tienes los permisos necesarios para seguir este tutorial.
Para obtener los permisos que necesitas para completar este tutorial, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo -
Administrador de objetos de Storage (
roles/storage.objectAdmin
) en el proyecto
-
Editor de trabajos por lotes (
-
Instala Nextflow:
curl -s -L https://github.com/nextflow-io/nextflow/releases/download/v23.04.1/nextflow | bash
La salida debería ser similar a la siguiente:
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
En la Google Cloud consola, ve a la página Buckets.
Haz clic en
Crear.En la página Crear un segmento, asigna un nombre único a nivel global al segmento.
Haz clic en Crear.
En la ventana Se impedirá el acceso público, haz clic en Confirmar.
Clona el repositorio de la canalización de ejemplo:
git clone https://github.com/nextflow-io/rnaseq-nf.git
Ve a la carpeta
rnaseq-nf
:cd rnaseq-nf
Abre el archivo
nextflow.config
:nano nextflow.config
El archivo debe contener la siguiente sección
gcb
: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 = 'REGION' }
En la sección
gcb
, haga lo siguiente:Sustituye
BUCKET_NAME
por el nombre del segmento de Cloud Storage que has creado en los pasos anteriores.Sustituye
WORK_DIRECTORY
por el nombre de una nueva carpeta que la canalización pueda usar para almacenar registros y resultados.Por ejemplo, escribe
workDir
.Sustituye
REGION
por la región que quieras usar.Por ejemplo, escribe
us-central1
.Después del campo
google.region
, añade los siguientes campos:Añade el campo
google.project
:google.project = 'PROJECT_ID'
Sustituye
PROJECT_ID
por el ID del proyecto Google Cloud actual.Si no usas la cuenta de servicio predeterminada de Compute Engine como cuenta de servicio del trabajo, añade el campo
google.batch.serviceAccountEmail
:google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
Sustituye
SERVICE_ACCOUNT_EMAIL
por la dirección de correo de la cuenta de servicio del trabajo que has preparado para este tutorial.
Para guardar los cambios, sigue estos pasos:
Pulsa
Control+S
.Introduce
Y
.Pulsa
Enter
.
En la Google Cloud consola, ve a la página Buckets.
En la columna Nombre, haz clic en el nombre del segmento que has creado en los pasos anteriores.
En la página Detalles del segmento, abra la carpeta
WORK_DIRECTORY
.BUCKET_NAME
: el nombre del segmento que has creado en los pasos anteriores.WORK_DIRECTORY
: el directorio que has especificado en el archivonextflow.config
.En la Google Cloud consola, ve a la página Buckets.
En la columna Nombre, haz clic en el nombre del segmento que has creado en los pasos anteriores.
En la página Detalles del contenedor, seleccione la fila que contiene la carpeta
WORK_DIRECTORY
y, a continuación, haga lo siguiente:Haz clic en Eliminar.
Para confirmar la acción, introduce
DELETE
y haz clic en Eliminar.
BUCKET_NAME
: el nombre del segmento que has especificado en los pasos anteriores.WORK_DIRECTORY
: el directorio en el que se almacenarán los archivos de salida de la canalización que has especificado en los pasos anteriores.Para obtener más información sobre cómo implementar flujos de trabajo de Nextflow, consulta el repositorio de GitHub de Nextflow.
Para obtener más información sobre los procesos, las secuencias de comandos y las opciones de configuración de Nextflow, consulta la documentación de Nextflow.
Crea un segmento de Cloud Storage
Para crear un segmento de Cloud Storage en el que almacenar los archivos de trabajo y de salida temporales de la canalización de Nextflow, usa la consola de Google Cloud o la línea de comandos.
Consola
Para crear un segmento de Cloud Storage con la Google Cloud consola, sigue estos pasos:
gcloud
Para crear un segmento de Cloud Storage con la CLI de Google Cloud, usa el comando gcloud storage buckets create
.
gcloud storage buckets create gs://BUCKET_NAME
Sustituye BUCKET_NAME
por un nombre único a nivel global para tu segmento.
Si la solicitud se realiza correctamente, el resultado debería ser similar al siguiente:
Creating gs://BUCKET_NAME/...
```
Configurar Nextflow
Para configurar la canalización de Nextflow para que se ejecute en Batch, sigue estos pasos en la línea de comandos:
Ejecutar el flujo de procesamiento
Ejecuta el flujo de procesamiento de Nextflow de ejemplo mediante la línea de comandos:
../nextflow run nextflow-io/rnaseq-nf -profile gcb
La canalización ejecuta un conjunto de datos pequeño con los ajustes que has proporcionado en los pasos anteriores. Esta operación puede tardar hasta 10 minutos en completarse.
Una vez que se haya ejecutado la canalización, la salida debería ser similar a la siguiente:
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
Ver las salidas de la canalización
Una vez que se ha ejecutado la canalización, almacena los archivos de salida, los registros, los errores o los archivos temporales en el archivo results/qc_report.html
de la carpeta WORK_DIRECTORY
de tu segmento de Cloud Storage.
Para comprobar los archivos de salida de la canalización en la carpeta WORK_DIRECTORY
de tu segmento de Cloud Storage, puedes usar la consola Google Cloud o la línea de comandos.
Consola
Para comprobar los archivos de salida de la canalización mediante la consola Google Cloud , sigue estos pasos:
Hay una carpeta para cada tarea independiente que ejecuta el flujo de trabajo. Cada carpeta contiene los comandos que se han ejecutado, los archivos de salida y los archivos temporales creados por la canalización.
gcloud
Para comprobar los archivos de salida de la canalización con gcloud CLI, usa el comando gcloud storage ls
.
gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY
Haz los cambios siguientes:
La salida muestra una carpeta para cada tarea independiente que ejecuta el flujo de trabajo. Cada carpeta contiene los comandos que se han ejecutado, los archivos de salida y los archivos temporales creados por la canalización.
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
Eliminar el proyecto
La forma más fácil de evitar que te cobren es eliminar el proyecto actual.
Para eliminar el proyecto actual, usa la Google Cloud consola o la CLI de gcloud.
Consola
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Eliminar recursos concretos
Si quieres seguir usando el proyecto actual, elimina los recursos que se han utilizado en este tutorial.
Eliminar el segmento
Si ya no necesitas el contenedor que has usado en este tutorial, elimínalo.
Eliminar los archivos de salida del segmento
Una vez que se haya ejecutado la canalización, se crearán archivos de salida y se almacenarán en la carpeta WORK_DIRECTORY
de tu
cubo de Cloud Storage.
Para reducir los cargos de Cloud Storage en la cuenta actual, puedes eliminar la carpeta que contiene los archivos de salida de la canalización mediante la consola o la línea de comandos.Google Cloud Google Cloud
Consola
Para eliminar la carpeta WORK_DIRECTORY
y todos los archivos de salida de tu segmento de Cloud Storage mediante la consolaGoogle Cloud , sigue estos pasos:
gcloud
Para eliminar la carpeta WORK_DIRECTORY
y todos los archivos de salida de tu segmento de Cloud Storage con gcloud CLI, usa el comando gcloud storage rm
con la marca --recursive
.
gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \
--recursive
Haz los cambios siguientes: