Ejecuta Nextflow

En esta página, se explica cómo ejecutar una canalización en Google Cloud con Nextflow.

La canalización utilizada en este instructivo es una prueba de concepto de una canalización de RNA-Seq destinada a mostrar la utilización de Nextflow en Google Cloud.

Objetivos

Después de completar el instructivo, sabrás cómo realizar las siguientes actividades:

  • Instalar Nextflow en Cloud Shell
  • Configurar una canalización de Nextflow
  • Ejecutar una canalización con Nextflow en Google Cloud

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

  • Compute Engine
  • Cloud Storage

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto. Los usuarios nuevos de Google Cloud pueden ser aptos para una prueba gratuita.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita las API de Cloud Life Sciences, Compute Engine, and Cloud Storage.

    Habilita las API

Cree un depósito de Cloud Storage

Sigue las instrucciones detalladas en los lineamientos para asignación de nombres de depósitos y crea un depósito con nombre único destinado a almacenar trabajo temporal y archivos de salida durante todo este instructivo. Como se describe en los lineamientos para asignación de nombres de depósitos, para la compatibilidad con DNS, este instructivo no funcionará con nombres de depósitos que contengan un guion bajo (_).

Console

  1. En Cloud Console, abre el navegador de Cloud Storage:

    Ir al navegador de Cloud Storage

  2. Haga clic en Crear depósito.

  3. En el cuadro de texto Nombre del depósito, ingresa un nombre único para tu depósito y, luego, haz clic en Crear.

gcloud

  1. Abre Cloud Shell:

    Ir a Cloud Shell

  2. Ejecuta el siguiente comando a fin de crear un depósito y reemplaza BUCKET con un nombre único para tu depósito.

    gsutil mb gs://BUCKET
    

Crea y activa una cuenta de servicio

Console

Crea una cuenta de servicio con Cloud Console:

  1. En Cloud Console, ve a la página Cuentas de servicio.

    Ir a la página Cuentas de servicio

  2. En la lista Cuenta de servicio, selecciona Cuenta de servicio nueva.

  3. En el campo Nombre de la cuenta de servicio, ingresa nextflow-service-account.

  4. En la lista Función, selecciona las siguientes funciones:

    • Ejecutador de flujo de trabajo de Cloud Life Sciences
    • Service Account User
    • Consumidor de Service Usage
    • Administrador de objetos de almacenamiento
  5. Haga clic en Crear. Se descargará a tu computadora un archivo JSON con la clave.

Puedes proporcionar credenciales de autenticación al código o a los comandos de tu aplicación. Para ello, configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene la clave de tu cuenta de servicio.

En los siguientes pasos se muestra cómo configurar la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.

  1. Abre Cloud Shell

    Ir a Cloud Shell

  2. En el menú Más de tres puntos de Cloud Shell, selecciona Subir archivo y selecciona el archivo de claves JSON que acabas de crear. Esto subirá el archivo al directorio de inicio de tu instancia de Cloud Shell.

  3. Ejecuta el siguiente comando para confirmar que el archivo subido está en tu directorio actual y confirmar el nombre del archivo:

    ls
    

  4. Configura las credenciales y reemplaza KEY-FILENAME.json por el nombre de tu archivo de claves.

    export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/KEY-FILENAME.json
    

gcloud

Crea una cuenta de servicio con Cloud Shell:

  1. Abre Cloud Shell

    Ir a Cloud Shell

  2. Configura las variables que se usarán en la creación de la cuenta de servicio y reemplaza PROJECT_ID con el ID de tu proyecto.

    export PROJECT=PROJECT_ID
    export SERVICE_ACCOUNT_NAME=nextflow-service-account
    export SERVICE_ACCOUNT_ADDRESS=${SERVICE_ACCOUNT_NAME}@${PROJECT}.iam.gserviceaccount.com
    
  3. Crea la cuenta de servicio.

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
    
  4. La cuenta de servicio necesita las siguientes funciones de administración de identidades y accesos:

    • roles/lifesciences.workflowsRunner
    • roles/iam.serviceAccountUser
    • roles/serviceusage.serviceUsageConsumer
    • roles/storage.objectAdmin

    Ejecuta los siguientes comandos en Cloud Shell para otorgar estas funciones:

    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/lifesciences.workflowsRunner
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/iam.serviceAccountUser
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/serviceusage.serviceUsageConsumer
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/storage.objectAdmin
    

Configura GOOGLE_APPLICATION_CREDENTIALS para usar las credenciales de la cuenta de servicio con Cloud Shell

  1. Obtén las credenciales de la cuenta de servicio y configura el archivo de claves privadas a la variable de entorno GOOGLE_APPLICATION_CREDENTIALS:

    export SERVICE_ACCOUNT_KEY=${SERVICE_ACCOUNT_NAME}-private-key.json
    gcloud iam service-accounts keys create \
      --iam-account=${SERVICE_ACCOUNT_ADDRESS} \
      --key-file-type=json ${SERVICE_ACCOUNT_KEY}
    export SERVICE_ACCOUNT_KEY_FILE=${PWD}/${SERVICE_ACCOUNT_KEY}
    export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/${SERVICE_ACCOUNT_KEY}
    

Instala y configura Nextflow en Cloud Shell

Para evitar tener que instalar software en tu máquina, continúa ejecutando todos los comandos de terminal en este instructivo desde Cloud Shell.

  1. Si aún no está abierto, abre Cloud Shell.

    Ir a Cloud Shell

  2. Instala Nextflow en Cloud Shell.

    export NXF_VER=20.01.0
    export NXF_MODE=google
    curl https://get.nextflow.io | bash
    
  3. Clona el repositorio de canalización de muestra que incluye la canalización que se ejecutará y los datos de muestra que se utilizarán.

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  4. Configura Nextflow:

    1. Cambia a la carpeta rnaseq-nf.

      cd rnaseq-nf
      

    2. Con el editor de texto que elijas, edita el archivo llamado nextflow.config y realiza las siguientes actualizaciones en la sección gls:

      • Agrega la línea google.project si no está presente.
      • Reemplaza PROJECT_ID con el ID del proyecto.
      • Agrega la línea google.location que especifica dónde se procesará la solicitud de Cloud Life Sciences.
      • Si lo deseas, cambia el valor de google.location. Debes ser una de las ubicaciones disponibles de Cloud Life Sciences API.
      • Si lo deseas, cambia el valor de google.region, que especifica la región en la que se iniciarán las VM de Compute Engine. Consulta Regiones y zonas disponibles de Compute Engine.
      • Reemplaza BUCKET con el nombre del depósito creado anteriormente.
      • Reemplaza WORK_DIR por el nombre de una carpeta que se usará para el registro y el resultado. Debería ser un nombre de directorio nuevo que aún no existe en el depósito.
      • Nota: La ubicación de la variable workDir debe contener al menos 1 subdirectorio. No utilices solo el nombre del depósito.
      gls {
         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-lifesciences'
         process.container = 'nextflow/rnaseq-nf:latest'
         workDir = 'gs://BUCKET/WORK_DIR'
         google.location = 'europe-west2'
         google.region  = 'europe-west1'
         google.project = 'PROJECT_ID'
      }
      
    3. Vuelve a cambiar a la carpeta anterior.

      cd ..
      

Ejecuta la canalización con Nextflow.

  1. Ejecuta la canalización con Nextflow en Cloud Shell:

    ./nextflow run rnaseq-nf/main.nf -profile gls
    
  2. Nextflow seguirá ejecutándose en Cloud Shell.

Visualiza el resultado de la canalización de Nextflow

Cuando finalice la canalización, puedes verificar el resultado y los registros, errores, comandos ejecutados y archivos temporales, si los hay.

El archivo de salida final se guardará en la instancia de Cloud Storage como results/qc_report.html.

Para verificar los archivos de salida individuales de cada tarea, además de los archivos intermedios, haz lo siguiente:

Console

  1. En Cloud Storage Console, abre la página del navegador de Storage:

    Ir al navegador de Cloud Storage

  2. Ve al BUCKET y navega hasta el WORK_DIR especificado en el archivo nextflow.config.

  3. Habrá una carpeta para cada una de las tareas individuales que se ejecutaron en la canalización.

  4. La carpeta contendrá los comandos que se ejecutaron, los archivos de salida y los archivos temporales utilizados durante el flujo de trabajo.

gcloud

  1. Para ver los archivos de salida en Cloud Shell, primero abre Cloud Shell:

    Ir a Cloud Shell

  2. Ejecuta el siguiente comando para enumerar los resultados de tu depósito de Cloud Storage. Actualiza BUCKET y WORK_DIR a las variables especificadas en el archivo nextflow.config.

    gsutil ls gs://BUCKET/WORK_DIR
    
  3. Se mostrará una carpeta para cada una de las tareas ejecutadas. Continúa enumerando el contenido de los subdirectorios posteriores para ver todos los archivos que creó la canalización. Actualiza TASK_FOLDER para que sea una de las carpetas de tareas que se mostró en el comando anterior.

    gsutil ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER
    

Puedes ver los archivos intermedios que creó la canalización y elegir cuáles quieres conservar, o bien quitarlos para reducir los costos asociados con Cloud Storage. Si quieres quitar los archivos, consulta Borra los archivos intermedios en el depósito de Cloud Storage.

Soluciona problemas

  • Si tienes problemas para ejecutar la canalización, consulta la página de solución de problemas de la API de Cloud Life Sciences.

  • Si tu canalización falla, puedes revisar los registros de cada tarea. Para ello, mira los archivos de registro en cada una de las carpetas de Cloud Storage, como .command.err, .command.log, .command.out, etcétera.

Limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

Una vez que termines el instructivo para ejecutar la canalización de las prácticas recomendadas de GATK, puedes limpiar los recursos que creaste en Google Cloud para que no consuman tu cuota y no se te facturen en el futuro. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Borra los archivos intermedios del depósito de Cloud Storage

Cuando ejecutas la canalización, esta almacena los archivos intermedios en gs://BUCKET/WORK_DIR. Puedes quitar los archivos después de que se complete el flujo de trabajo para reducir los cargos de Cloud Storage.

Para ver cuánto espacio se usa en el directorio, usa el siguiente comando:

gsutil du -sh gs://BUCKET/WORK_DIR

Para quitar archivos del directorio de trabajo, sigue estos pasos:

Console

  1. En Cloud Storage Console, abre la página del navegador de Storage:

    Ir al navegador de Cloud Storage

  2. Ve al BUCKET y navega hasta el WORK_DIR especificado en el archivo nextflow.config.

  3. Examina las subcarpetas y borra los archivos o directorios no deseados. Para borrar todos los archivos, borra todo el directorio WORK_DIR.

gcloud

  1. Abre Cloud Shell y ejecuta lo siguiente:

    Ir a Cloud Shell

  2. Para quitar todos los archivos intermedios del directorio WORK_DIR:

    gsutil -m rm gs://BUCKET/WORK_DIR/**
    

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a la página Administrar recursos

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

Qué sigue