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 y. DSL1 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 la coerción de tipos es posible 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 () params del flujo de trabajo.
Temas
Utilice los complementos nf-schema y nf-validation
nota
Resumen de la compatibilidad con los HealthOmics complementos:
v22.04: no hay soporte para complementos
v23.10: admite y
nf-schemanf-validationv24.10 — admite
nf-schema
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 Nextflow v23.10 y versiones posteriores, preinstala el complemento nf-schema @2 .3.0. HealthOmics
-
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.configarchivo. -
Para Nextflow v24 y versiones posteriores,
nf-schemaes la nueva versión del complemento obsoleto.nf-validationPara obtener más información, consulte nf-schema en el repositorio de Nextflow. GitHub
Especifique el almacenamiento URIs
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 en Amazon S3 URIs. Para ver ejemplos, consulte Formatos de parámetros de entrada de Amazon S3.
HealthOmics admite el uso de patrones globales en Amazon S3 URIs o HealthOmics Storage URIs. Utilice patrones globales en la definición del flujo de trabajo para la creación de nuestros canalespath. file
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:
-
Configuración global en el archivo de configuración.
-
Sección de tareas de la definición del flujo de trabajo.
-
Selectores específicos de la tarea en el archivo de configuración.
Temas
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 e inténtelo de nuevo con omicsRetryOn5xx
En las versiones 23 y 24 de Nextflow, 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 las versiones 23 y 24 de Nextflow, también puede 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
HealthOmics proporciona el siguiente soporte para la directiva horaria de Nextflow:
-
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.
-
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.
-
Si el flujo de trabajo admite reintentos para una tarea, HealthOmics reintenta la tarea si se agota el tiempo de espera.
-
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.
-
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.
-
El tiempo que una tarea pasa en estado pendiente no se tiene en cuenta para la duración de la tarea.
-
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 """ }
En el siguiente ejemplo, se 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' } }
Exporta el contenido de la tarea
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 """ }