Organiza trabajos mediante la ejecución de canalizaciones de Nextflow en Batch


En este instructivo, se explica cómo ejecutar una canalización de Nextflow en Batch. En particular, en este instructivo, se ejecuta una canalización de ciencias biológicas de muestra que cuantifica las características geómicas a partir de datos de lectura corta mediante RNA-Seq.

Este instructivo está dirigido a los usuarios de Batch que deseen usar Nextflow con Batch.

Nextflow es un software de código abierto para organizar flujos de trabajo bioinformáticos.

Objetivos

Al completar este instructivo, aprenderás a hacer lo siguiente:

  • Instalar Nextflow en Cloud Shell.
  • Crear un bucket de Cloud Storage
  • Configurar una canalización de Nextflow.
  • Ejecutar una canalización de muestra con Nextflow en Batch.
  • Visualiza los resultados de la canalización.
  • Realiza una limpieza para evitar que se apliquen cargos adicionales mediante una de las siguientes acciones:
    • Borrar un proyecto
    • Borra recursos individuales.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

  • Batch
  • Cloud Storage

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Los recursos creados en este instructivo suelen costar menos de un dólar, suponiendo que completas todos los pasos, incluida la limpieza, de manera oportuna.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Instala Google Cloud CLI.
  3. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  4. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita las APIs de Batch, Cloud Storage, Compute Engine, and Logging:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Instala Google Cloud CLI.
  8. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  9. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  10. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  11. Habilita las APIs de Batch, Cloud Storage, Compute Engine, and Logging:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. Asegúrate de que tu proyecto tenga al menos una cuenta de servicio con los permisos necesarios para este instructivo.

    Cada trabajo requiere una cuenta de servicio que le permita al agente de servicio de Batch crear los recursos necesarios para ejecutar el trabajo y acceder a ellos. Para este instructivo, la cuenta de servicio del trabajo es la cuenta de servicio predeterminada de Compute Engine.

    Para asegurarte de que la cuenta de servicio predeterminada de Compute Engine tenga los permisos necesarios a fin de permitir que el agente de servicio de Batch cree y acceda a recursos para los trabajos de Batch, pídele a tu administrador que otorgue los siguientes roles de IAM a la cuenta de servicio predeterminada de Compute Engine:

    Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.

    Es posible que el administrador también pueda otorgar los permisos necesarios a la cuenta de servicio predeterminada de Compute Engine mediante funciones personalizadas, o bien otras funciones predefinidas.

  13. Asegúrate de tener los permisos necesarios para este instructivo.

    A fin de obtener los permisos que necesitas para completar este instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  14. Instala Nextflow:

    curl -s -L https://github.com/nextflow-io/nextflow/releases/download/v23.04.1/nextflow | bash
    

    El resultado debería ser similar al siguiente ejemplo:

    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
    

Crea un bucket de Cloud Storage

Si deseas crear un bucket de Cloud Storage para almacenar archivos temporales de trabajo y de salida de la canalización de Nextflow, usa la consola de Google Cloud o la línea de comandos.

Consola

Para crear un bucket de Cloud Storage con la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Buckets.

    Ir a Buckets

  2. Haz clic en Crear.

  3. En la página Crear un bucket, ingresa un nombre único a nivel global para tu bucket.

  4. Haz clic en Crear.

  5. En la ventana Se impedirá el acceso público, haz clic en Confirmar.

Línea de comandos

gcloud

Para crear un bucket de Cloud Storage con Google Cloud CLI, usa el comando gcloud storage buckets create.

gcloud storage buckets create gs://BUCKET_NAME

Reemplaza BUCKET_NAME por un nombre único a nivel global para el bucket.

Si la solicitud se realiza correctamente, el resultado debería ser similar al siguiente:

Creating gs://BUCKET_NAME/...

gsutil

Para crear un bucket de Cloud Storage con la herramienta de gsutil, usa el comando gsutil mb.

gsutil mb gs://BUCKET_NAME

Reemplaza BUCKET_NAME por un nombre único a nivel global para el bucket.

Si la solicitud se realiza correctamente, el resultado debería ser similar al siguiente:

Creating gs://BUCKET_NAME/...

Configura Nextflow

Para configurar la canalización de Nextflow para que se ejecute en Batch, sigue estos pasos en la línea de comandos:

  1. Clona el repositorio de canalización de muestra:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. Ve a la carpeta rnaseq-nf:

    cd rnaseq-nf
    
  3. Abre el archivo nextflow.config:

    nano nextflow.config
    

    El archivo debe contener la siguiente sección:

    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. En la sección gcb, haz lo siguiente:

    1. Reemplaza BUCKET_NAME por el nombre del bucket de Cloud Storage que creaste en los pasos anteriores.

    2. Reemplaza WORK_DIRECTORY por el nombre de una carpeta nueva que la canalización pueda usar para almacenar registros y resultados.

      Por ejemplo, ingresa workDir.

    3. Después del campo google.region, agrega la línea google.project = 'PROJECT_ID', en la que PROJECT_ID es el ID del proyecto actual de Google Cloud.

  5. Para guardar los cambios, haz lo siguiente:

    1. Presiona Control+S.

    2. Ingresa Y.

    3. Presiona Enter.

Ejecuta la canalización

Ejecuta la canalización de Nextflow de muestra 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 la configuración que proporcionaste en los pasos anteriores. Esta operación puede tardar hasta 10 minutos en completarse.

Cuando la canalización termine de ejecutarse, el resultado debería ser similar al 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

Visualiza los resultados de la canalización

Cuando la canalización termina de ejecutarse, almacena los archivos de salida, registros, errores o archivos temporales en el archivo results/qc_report.html dentro de la carpeta WORK_DIRECTORY del bucket de Cloud Storage.

Para verificar los archivos de salida de la canalización en la carpeta WORK_DIRECTORY del bucket de Cloud Storage, puedes usar la consola de Google Cloud o la línea de comandos.

Consola

Para verificar los archivos de salida de la canalización con la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Buckets.

    Ir a Buckets

  2. En la columna Nombre, haz clic en el nombre del bucket que creaste en los pasos anteriores.

  3. En la página Detalles del bucket, abre la carpeta WORK_DIRECTORY.

Hay una carpeta para cada tarea individual que ejecuta el flujo de trabajo. Cada carpeta contiene los comandos que se ejecutaron, los archivos de salida y los archivos temporales que creó la canalización.

Línea de comandos

gcloud

Para verificar 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

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket que creaste en los pasos anteriores.

  • WORK_DIRECTORY: Es el directorio que especificaste en el archivo nextflow.config.

El resultado muestra una carpeta para cada tarea individual que ejecuta la canalización. Cada carpeta contiene los comandos que se ejecutaron, los archivos de salida y los archivos temporales creados por la canalización.

gsutil

Para verificar los archivos de salida de la canalización con la herramienta gsutil, usa el comando gsutil ls.

gsutil ls gs://BUCKET_NAME/WORK_DIRECTORY

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket que creaste en los pasos anteriores.

  • WORK_DIRECTORY: Es el directorio que especificaste en el archivo nextflow.config.

El resultado muestra una carpeta para cada tarea individual que ejecuta la canalización. Cada carpeta contiene los comandos que se ejecutaron, los archivos de salida y los archivos temporales creados por la canalización.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto actual.

Para borrar el proyecto actual, usa la consola de Google Cloud o la gcloud CLId.

Consola

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

gcloud

    Borra un proyecto de Google Cloud:

    gcloud projects delete PROJECT_ID

Borra los recursos individuales

Si deseas seguir usando el proyecto actual, borra los recursos individuales que usaste en este instructivo.

Borra el bucket

Si ya no necesitas el bucket que usaste en este instructivo, bórralo.

Borra los archivos de salida en el bucket

Cuando la canalización termina de ejecutarse, crea y almacena archivos de salida en la carpeta WORK_DIRECTORY de tu bucket de Cloud Storage.

Para reducir los cargos de Cloud Storage a la cuenta actual de Google Cloud, puedes borrar la carpeta que contiene los archivos de salida de la canalización con la consola de Google Cloud o la línea de comandos.

Consola

Para borrar la carpeta WORK_DIRECTORY y todos los archivos de salida de tu bucket de Cloud Storage con la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Buckets.

    Ir a Buckets

  2. En la columna Nombre, haz clic en el nombre del bucket que creaste en los pasos anteriores.

  3. En la página Detalles del bucket, selecciona la fila que contiene la carpeta WORK_DIRECTORY y, luego, haz lo siguiente:

    1. Haz clic en Borrar.

    2. Para confirmar, ingresa DELETE y, luego, haz clic en Borrar.

Línea de comandos

gcloud

Para borrar la carpeta WORK_DIRECTORY y todos los archivos de salida del bucket 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

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket que especificaste en los pasos anteriores.

  • WORK_DIRECTORY: Es el directorio para almacenar los archivos de salida de la canalización que especificaste en los pasos anteriores.

gsutil

Para borrar la carpeta WORK_DIRECTORY y todos los archivos de salida del bucket de Cloud Storage con la herramienta gsutil, usa el comando gsutil rm con las opciones -m y -r.

gsutil -m rm -r gs://BUCKET_NAME/WORK_DIRECTORY

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket que especificaste en los pasos anteriores.

  • WORK_DIRECTORY: Es el directorio para almacenar los archivos de salida de la canalización que especificaste en los pasos anteriores.

¿Qué sigue?

  • Para obtener más información sobre la implementación de 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.