Organizar tareas ejecutando flujos de procesamiento de Nextflow en Batch


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 usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

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

  1. 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.
  2. Install the Google Cloud CLI.

  3. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. 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 the resourcemanager.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.

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  8. Install the Google Cloud CLI.

  9. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  10. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  11. 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 the resourcemanager.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.

  12. Verify that billing is enabled for your Google Cloud project.

  13. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  14. 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 red default, que proporciona el acceso a la red necesario para este tutorial.

  15. 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:

    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.

  16. 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:

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

  18. 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:

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

      Ir a Contenedores

    2. Haz clic en Crear.

    3. En la página Crear un segmento, asigna un nombre único a nivel global al segmento.

    4. Haz clic en Crear.

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

    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:

    1. Clona el repositorio de la canalización de ejemplo:

      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:

      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'
      }
      
    4. En la sección gcb, haga lo siguiente:

      1. Sustituye BUCKET_NAME por el nombre del segmento de Cloud Storage que has creado en los pasos anteriores.

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

      3. Sustituye REGION por la región que quieras usar.

        Por ejemplo, escribe us-central1.

      4. Después del campo google.region, añade los siguientes campos:

        1. Añade el campo google.project:

          google.project = 'PROJECT_ID'
          

          Sustituye PROJECT_ID por el ID del proyecto Google Cloud actual.

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

    5. Para guardar los cambios, sigue estos pasos:

      1. Pulsa Control+S.

      2. Introduce Y.

      3. Pulsa Enter.

    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:

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

      Ir a Contenedores

    2. En la columna Nombre, haz clic en el nombre del segmento que has creado en los pasos anteriores.

    3. En la página Detalles del segmento, abra la carpeta WORK_DIRECTORY.

    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:

    • BUCKET_NAME: el nombre del segmento que has creado en los pasos anteriores.

    • WORK_DIRECTORY: el directorio que has especificado en el archivo nextflow.config.

    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:

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

      Ir a Contenedores

    2. En la columna Nombre, haz clic en el nombre del segmento que has creado en los pasos anteriores.

    3. En la página Detalles del contenedor, seleccione la fila que contiene la carpeta WORK_DIRECTORY y, a continuación, haga lo siguiente:

      1. Haz clic en Eliminar.

      2. Para confirmar la acción, introduce DELETE y haz clic en Eliminar.

    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:

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

    Siguientes pasos

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