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:
- Instala 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
- Accede a tu Cuenta de Google.
Si todavía no tienes una cuenta, regístrate para obtener una nueva.
-
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.
- Habilita las API de Cloud Life Sciences, Compute Engine, and Cloud Storage.
Cree un bucket de Cloud Storage
Sigue las instrucciones detalladas en los lineamientos para asignación de nombres de bucket s y crea un bucket 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
En Cloud Console, abre el navegador de Cloud Storage:
Haga clic en Crear bucket .
En el cuadro de texto Nombre del bucket , ingresa un nombre único para tu bucket y, luego, haz clic en Crear.
gcloud
Abre Cloud Shell:
Ejecuta el siguiente comando a fin de crear un bucket y reemplaza BUCKET con un nombre único para tu bucket.
gsutil mb gs://BUCKET
Crea una cuenta de servicio y agrega funciones
Completa los siguientes pasos para crear una cuenta de servicio y agregar las funciones de IAM relevantes:
Console
Crea una cuenta de servicio con Cloud Console:
En Cloud Console, ve a la página Cuentas de servicio.
Haga clic en Crear cuenta de servicio.
En el campo Nombre de la cuenta de servicio, ingresa
nextflow-service-account
y, luego, haz clic en Crear.En la sección Otorga a esta cuenta de servicio acceso al proyecto, agrega las siguientes funciones en la lista desplegable Selecciona una función:
- Ejecutor de flujos de trabajo de Cloud Life Sciences
- Service Account User
- Consumidor de Service Usage
- Administrador de objetos de almacenamiento
Haz clic en Continuar y, luego, en Listo.
En la página Cuentas de servicio, busca la cuenta de servicio que creaste. En la misma fila, haz clic en Más y, luego, en Crear clave.
En la ventana Crear una clave privada para "nextflow-service-account" que aparece, completa los siguientes pasos:
- En Tipo de clave, selecciona JSON.
- Haga clic en Crear.
Se descargará a tu computadora un archivo JSON con la clave.
gcloud
Completa los siguientes pasos con Cloud Shell:
Abre Cloud Shell
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
Crea la cuenta de servicio.
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
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
Proporciona credenciales para tu aplicación
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
:
Console
Abre Cloud Shell
En el menú Más
de Cloud Shell, selecciona Subir archivo y elige el archivo de claves JSON que acabas de crear. Este paso sube el archivo al directorio principal de tu instancia de Cloud Shell.Ejecuta el siguiente comando para confirmar que el archivo subido está en tu directorio actual y confirmar el nombre del archivo:
ls
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
Completa los siguientes pasos con Cloud Shell:
Abre Cloud Shell
Configura el archivo de claves privadas en 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.
Si aún no está abierto, abre Cloud Shell.
Ejecuta los siguientes comandos para instalar Nextflow:
export NXF_VER=20.10.0 export NXF_MODE=google curl https://get.nextflow.io | bash
Si la instalación se completa correctamente, se muestra el siguiente mensaje:
N E X T F L O W version 20.10.0 build 5430 created 01-11-2020 15:14 UTC (10:14 EDT) cite doi:10.1038/nbt.3820 http://nextflow.io Nextflow installation completed. Please note: ‐ the executable file `nextflow` has been created in the folder: DIRECTORY ‐ you may complete the installation by moving it to a directory in your $PATH
Ejecuta el siguiente comando para clonar el repositorio de la canalización de muestra. El repositorio incluye la canalización que se ejecutará y los datos de muestra que usa la canalización.
git clone https://github.com/nextflow-io/rnaseq-nf.git
Completa los siguientes pasos para configurar Nextflow:
Cambia a la carpeta
rnaseq-nf
.cd rnaseq-nf git checkout v2.0
Con el editor de texto que elijas, edita el archivo llamado
nextflow.config
y realiza las siguientes actualizaciones en la seccióngls
:- Agrega la línea
google.project
si no está presente. - Reemplaza PROJECT_ID con el ID del proyecto.
- 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 bucket creado anteriormente.
- Reemplaza WORK_DIR por el nombre de una carpeta que se usará para el registro y el resultado. Usa un nombre de directorio nuevo que aún no exista en tu bucket.
- Nota: La ubicación de la variable
workDir
debe contener al menos 1 subdirectorio. No utilices solo el nombre del bucket.
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' }
- Agrega la línea
Vuelve a cambiar a la carpeta anterior.
cd ..
Ejecuta la canalización con Nextflow
Ejecuta la canalización con Nextflow. Después de iniciar la canalización, continuará ejecutándose en segundo plano hasta que finalice. La canalización puede tardar hasta 10 minutos en terminar.
./nextflow run rnaseq-nf/main.nf -profile gls
Cuando finalice la canalización, se mostrará el siguiente mensaje:
N E X T F L O W ~ version 20.10.0 Launching `rnaseq-nf/main.nf` [suspicious_mestorf] - revision: ef908c0bfd 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 executor > google-lifesciences (4) [db/2af640] process > RNASEQ:INDEX (transcript) [100%] 1 of 1 ✔ [a6/927725] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔ [59/438177] process > RNASEQ:QUANT (gut) [100%] 1 of 1 ✔ [9a/9743b9] process > MULTIQC [100%] 1 of 1 ✔ Done! Open the following report in your browser --> results/multiqc_report.html Completed at: DATE TIME Duration : 10m CPU hours : 0.2 Succeeded : 4
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.
La canalización guarda el archivo de salida final, results/qc_report.html
, en el bucket de Cloud Storage que especificaste en el archivo nextflow.config
.
Para verificar los archivos de salida individuales de cada tarea y los archivos intermedios, completa los siguientes pasos:
Console
En Cloud Storage Console, abre la página del navegador de Storage:
Ve al BUCKET y navega hasta el WORK_DIR especificado en el archivo
nextflow.config
.Habrá una carpeta para cada una de las tareas individuales que se ejecutaron en la canalización.
La carpeta contendrá los comandos que se ejecutaron, los archivos de salida y los archivos temporales utilizados durante el flujo de trabajo.
gcloud
Para ver los archivos de salida en Cloud Shell, primero abre Cloud Shell:
Ejecuta el siguiente comando para enumerar los resultados de tu bucket de Cloud Storage. Actualiza BUCKET y WORK_DIR a las variables especificadas en el archivo
nextflow.config
.gsutil ls gs://BUCKET/WORK_DIR
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.
Solución de problemas
Si tienes problemas para ejecutar la canalización, consulta la 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.
Realice una limpieza
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.
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 bucket 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
En Cloud Storage Console, abre la página del navegador de Storage:
Ve al BUCKET y navega hasta el WORK_DIR especificado en el archivo
nextflow.config
.Examina las subcarpetas y borra los archivos o directorios no deseados. Para borrar todos los archivos, borra todo el directorio WORK_DIR.
gcloud
Abre Cloud Shell y ejecuta lo siguiente:
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:
- En Cloud Console, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
¿Qué sigue?
- El sitio de Nextflow, el repositorio de GitHub de Nextflow y la documentación de Nextflow proporcionan información general, documentación y asistencia para el uso de Nextflow de una manera más completa.