View a markdown version of this page

Especificaciones de la definición del flujo de trabajo de Nextflow - AWS HealthOmics

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Especificaciones de la definición del flujo de trabajo de Nextflow

HealthOmics es compatible con Nextflow DSL1 y DSL2. Para obtener más información, consulte Compatibilidad con la versión de Nextflow.

Nextflow DSL2 se basa en el lenguaje de programación Groovy, por lo que los parámetros son dinámicos y es posible aplicar coerción de tipos utilizando las mismas reglas que Groovy. Los parámetros y valores proporcionados por el JSON de entrada están disponibles en el mapa de parámetros () del flujo de trabajo. params

Utilice los complementos nf-schema y nf-validation

nota

Resumen del soporte para complementos HealthOmics :

  • v22.04: no hay soporte para complementos

  • v23.10: admite y nf-schema nf-validation

  • v24.10 — admite nf-schema

  • v25.10: admitenf-schema, y nf-core-utils nf-fgbio nf-prov

HealthOmics proporciona el siguiente soporte para los complementos de Nextflow:

  • Para la versión 23.10 de Nextflow, HealthOmics preinstala el complemento nf-validation @1 .1.1.

  • Para las versiones 23.10 y 24.10 de Nextflow, preinstala el complemento nf-schema @2 .3.0. HealthOmics

  • Para la versión 25.10 de Nextflow, HealthOmics preinstala los complementos nf-schema @2 .6.1, nf-core-utils @0 .4.0, nf-prov @1 .7.0 y nf-fgbio @1 .0.1.

  • No puede recuperar complementos adicionales durante la ejecución de un flujo de trabajo. HealthOmics ignora cualquier otra versión del complemento que especifique en el nextflow.config archivo.

  • Para Nextflow v24 y versiones posteriores, nf-schema es la nueva versión del complemento obsoleto. nf-validation Para obtener más información, consulte nf-schema en el repositorio de Nextflow. GitHub

Especifique los URI de almacenamiento

Cuando se utiliza un Amazon S3 o un HealthOmics URI para crear un archivo o un objeto de ruta de Nextflow, el objeto coincidente está disponible para el flujo de trabajo, siempre y cuando se conceda el acceso de lectura. Se permite el uso de prefijos o directorios para los URI de Amazon S3. Para ver ejemplos, consulte Formatos de parámetros de entrada de Amazon S3.

HealthOmics admite parcialmente el uso de patrones globales en los URI o los URI de HealthOmics almacenamiento de Amazon S3. Utilice patrones globales en la definición del flujo de trabajo para la creación de nuestros canales. path file Para conocer el comportamiento esperado y los casos exactos, consulteManejo de Nextflow del patrón Glob en las entradas de Amazon S3.

Directivas de Nextflow

Las directivas de Nextflow se configuran en el archivo de configuración o en la definición del flujo de trabajo de Nextflow. La siguiente lista muestra el orden de prioridad que se HealthOmics utiliza para aplicar los ajustes de configuración, de menor a mayor prioridad:

  1. Configuración global en el archivo de configuración.

  2. Sección de tareas de la definición del flujo de trabajo.

  3. Task-specific selectores en el archivo de configuración.

Estrategia de reintento de tareas mediante errorStrategy

Utilice la errorStrategy directiva para definir la estrategia en caso de errores en las tareas. De forma predeterminada, cuando una tarea regresa con una indicación de error (un estado de salida distinto de cero), la tarea se detiene y HealthOmics finaliza toda la ejecución. Si lo establecesretry, errorStrategy HealthOmics intenta volver a intentar la tarea fallida una vez. Para aumentar el número de reintentos, consulte. El intento de reintento de la tarea se realiza mediante maxRetries

process { label 'my_label' errorStrategy 'retry' script: """ your-command-here """ }

Para obtener información sobre cómo HealthOmics gestiona los reintentos de tareas durante una ejecución, consulte. La tarea se reintenta

El intento de reintento de la tarea se realiza mediante maxRetries

De forma predeterminada, HealthOmics no intenta reintentar una tarea fallida ni intenta volver a intentarlo si se configura. errorStrategy Para aumentar el número máximo de reintentos, errorStrategy defina retry y configure el número máximo de reintentos mediante la directiva. maxRetries

El siguiente ejemplo establece el número máximo de reintentos en 3 en la configuración global.

process { errorStrategy = 'retry' maxRetries = 3 }

El siguiente ejemplo muestra cómo configurarlo maxRetries en la sección de tareas de la definición del flujo de trabajo.

process myTask { label 'my_label' errorStrategy 'retry' maxRetries 3 script: """ your-command-here """ }

El siguiente ejemplo muestra cómo especificar la configuración específica de la tarea en el archivo de configuración de Nextflow, en función de los selectores de nombres o etiquetas.

process { withLabel: 'my_label' { errorStrategy = 'retry' maxRetries = 3 } withName: 'myTask' { errorStrategy = 'retry' maxRetries = 3 } }

Opte por no participar en la tarea y vuelva a intentarlo con omicsRetryOn5xx

Para Nextflow v23 y versiones posteriores, HealthOmics admite reintentos de tareas si la tarea falló debido a errores de servicio (códigos de estado HTTP 5XX). De forma predeterminada, HealthOmics intenta reintentar hasta dos veces una tarea fallida.

Puede configurarlo omicsRetryOn5xx para excluirse del reintento de la tarea en caso de errores de servicio. Para obtener más información sobre cómo volver a intentar una tarea HealthOmics, consulte. La tarea se reintenta

El siguiente ejemplo se configura omicsRetryOn5xx en la configuración global para optar por no volver a intentar la tarea.

process { omicsRetryOn5xx = false }

El siguiente ejemplo muestra cómo realizar la configuración omicsRetryOn5xx en la sección de tareas de la definición del flujo de trabajo.

process myTask { label 'my_label' omicsRetryOn5xx = false script: """ your-command-here """ }

El siguiente ejemplo muestra cómo establecer omicsRetryOn5xx una configuración específica para una tarea en el archivo de configuración de Nextflow, en función de los selectores de nombres o etiquetas.

process { withLabel: 'my_label' { omicsRetryOn5xx = false } withName: 'myTask' { omicsRetryOn5xx = false } }

Duración de la tarea según la directiva time

HealthOmics proporciona una cuota ajustable (consulteHealthOmics cuotas de servicio) para especificar la duración máxima de una ejecución. Para los flujos de trabajo de Nextflow v23 y posteriores, también puedes especificar la duración máxima de las tareas mediante la directiva Nextflow. time

Durante el desarrollo de un nuevo flujo de trabajo, establecer la duración máxima de las tareas te ayuda a atrapar las tareas fuera de control y las tareas de larga duración.

Para obtener más información sobre la directiva horaria de Nextflow, consulta la directiva horaria en la referencia de Nextflow.

HealthOmics proporciona el siguiente soporte para la directiva horaria de Nextflow:

  1. HealthOmics admite una granularidad de 1 minuto para la directiva de tiempo. Puede especificar un valor entre 60 segundos y el valor de duración máxima de la ejecución.

  2. Si introduce un valor inferior a 60, lo HealthOmics redondea a 60 segundos. Para valores superiores a 60, HealthOmics redondea al minuto más cercano.

  3. Si el flujo de trabajo admite reintentos para una tarea, HealthOmics reintenta la tarea si se agota el tiempo de espera.

  4. Si se agota el tiempo de espera de una tarea (o se agota el tiempo de espera del último reintento), HealthOmics cancela la tarea. Esta operación puede tener una duración de uno a dos minutos.

  5. Cuando se agota el tiempo de espera de la tarea, HealthOmics establece el estado de ejecución y tarea como fallido y cancela las demás tareas en ejecución (para las tareas en estado Iniciativo, Pendiente o En ejecución). HealthOmics exporta los resultados de las tareas que completó antes de que se agotara el tiempo de espera a la ubicación de salida de S3 que haya designado.

  6. El tiempo que una tarea pasa en estado pendiente no se tiene en cuenta para la duración de la tarea.

  7. Si la ejecución forma parte de un grupo de ejecución y se agota el tiempo de espera antes que el temporizador de la tarea, la ejecución y la tarea pasan al estado fallido.

Especifique la duración del tiempo de espera mediante una o más de las siguientes unidades:ms,s, mh, od.

El siguiente ejemplo muestra cómo especificar la configuración global en el archivo de configuración de Nextflow. Establece un tiempo de espera global de 1 hora y 30 minutos.

process { time = '1h30m' }

El siguiente ejemplo muestra cómo especificar una directiva horaria en la sección de tareas de la definición del flujo de trabajo. En este ejemplo se establece un tiempo de espera de 3 días, 5 horas y 4 minutos. Este valor tiene prioridad sobre el valor global del archivo de configuración, pero no tiene prioridad sobre una directiva de tiempo específica de la tarea en el archivo de my_label configuración.

process myTask { label 'my_label' time '3d5h4m' script: """ your-command-here """ }

El siguiente ejemplo muestra cómo especificar las directivas horarias específicas de la tarea en el archivo de configuración de Nextflow, en función de los selectores de nombres o etiquetas. En este ejemplo, se establece un valor de tiempo de espera global de la tarea de 30 minutos. Establece un valor de 2 horas para la tarea myTask y establece un valor de 3 horas para las tareas con etiquetamy_label. Para las tareas que coinciden con el selector, estos valores tienen prioridad sobre el valor global y el valor de la definición del flujo de trabajo.

process { time = '30m' withLabel: 'my_label' { time = '3h' } withName: 'myTask' { time = '2h' } }

Exporte contenido a nivel de flujo de trabajo

Para la versión 25.10 de Nextflow, puede exportar archivos generados al margen de tareas individuales, como informes de procedencia o DAG en proceso. Para exportar estos archivos, escríbalos en. /mnt/workflow/output/ HealthOmics exporta los archivos ubicados en este directorio al output/ prefijo de la ubicación de salida de Amazon S3 de la ejecución.

El siguiente ejemplo muestra cómo configurar el nf-prov complemento para escribir un informe de procedencia en él. /mnt/workflow/output/

prov { formats { bco { file = "/mnt/workflow/output/pipeline_info/manifest.bco.json" } } }

También puedes pasar esta ruta como parámetro en el JSON de entrada de tu ejecución. Este enfoque es común en los flujos de trabajo nf-core que utilizan. params.outdir

{ "outdir": "/mnt/workflow/output/" }

Exporta el contenido de las tareas

Para los flujos de trabajo escritos en Nextflow, defina una directiva PublishDir para exportar el contenido de las tareas a su bucket de salida de Amazon S3. Como se muestra en el siguiente ejemplo, defina el valor PublishDir en. /mnt/workflow/pubdir Para exportar archivos a Amazon S3, los archivos deben estar en este directorio.

nextflow.enable.dsl=2 workflow { CramToBamTask(params.ref_fasta, params.ref_fasta_index, params.ref_dict, params.input_cram, params.sample_name) ValidateSamFile(CramToBamTask.out.outputBam) } process CramToBamTask { container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud" publishDir "/mnt/workflow/pubdir" input: path ref_fasta path ref_fasta_index path ref_dict path input_cram val sample_name output: path "${sample_name}.bam", emit: outputBam path "${sample_name}.bai", emit: outputBai script: """ set -eo pipefail samtools view -h -T $ref_fasta $input_cram | samtools view -b -o ${sample_name}.bam - samtools index -b ${sample_name}.bam mv ${sample_name}.bam.bai ${sample_name}.bai """ } process ValidateSamFile { container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud" publishDir "/mnt/workflow/pubdir" input: file input_bam output: path "validation_report" script: """ java -Xmx3G -jar /usr/gitc/picard.jar \ ValidateSamFile \ INPUT=${input_bam} \ OUTPUT=validation_report \ MODE=SUMMARY \ IS_BISULFITE_SEQUENCED=false """ }

En el caso de Nextflow v25.10, como alternativapublishDir, puede utilizar los resultados del flujo de trabajo para exportar el contenido de las tareas. El siguiente ejemplo muestra cómo definir un output bloque de flujo de trabajo que exporta los resultados de las tareas a Amazon S3.

process myTask { input: val data output: path 'result.txt' script: """ echo ${data} > result.txt """ } workflow { main: output_file = myTask('hello') publish: results = output_file } output { results { path '.' } }

Para obtener más información sobre los resultados del flujo de trabajo, consulte los resultados del flujo de trabajo en la documentación de Nextflow.