Caractéristiques de la définition du flux de travail Nextflow - AWS HealthOmics

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Caractéristiques de la définition du flux de travail Nextflow

HealthOmics prend en charge DSL1 Nextflow et. DSL2 Pour en savoir plus, consultez Support de la version Nextflow.

Nextflow DSL2 est basé sur le langage de programmation Groovy, les paramètres sont donc dynamiques et la coercition de type est possible en utilisant les mêmes règles que Groovy. Les paramètres et valeurs fournis par le JSON d'entrée sont disponibles dans la carte parameters (params) du flux de travail.

Utiliser les plugins nf-schema et nf-validation

Note

Résumé de la HealthOmics prise en charge des plugins :

  • v22.04 — aucun support pour les plugins

  • v23.10 — prend en charge et nf-schema nf-validation

  • v24.10 — prend en charge nf-schema

HealthOmics fournit le support suivant pour les plugins Nextflow :

  • Pour Nextflow v23.10, HealthOmics préinstalle le plugin nf-validation @1 .1.1.

  • Pour Nextflow v23.10 et versions ultérieures, HealthOmics préinstalle le plugin nf-schema @2 .3.0.

  • Vous ne pouvez pas récupérer de plug-ins supplémentaires lors de l'exécution d'un flux de travail. HealthOmics ignore toutes les autres versions du plugin que vous spécifiez dans le nextflow.config fichier.

  • Pour Nextflow v24 et versions supérieures, nf-schema il s'agit de la nouvelle version du plugin obsolètenf-validation. Pour plus d'informations, consultez nf-schema dans le référentiel GitHub Nextflow.

Spécifier le stockage URIs

Lorsqu'un Amazon S3 ou un HealthOmics URI est utilisé pour créer un fichier ou un objet de chemin Nextflow, l'objet correspondant est mis à la disposition du flux de travail, à condition que l'accès en lecture soit accordé. L'utilisation de préfixes ou de répertoires est autorisée pour Amazon S3 URIs. Pour obtenir des exemples, consultez Formats de paramètres d'entrée Amazon S3.

HealthOmics prend en charge l'utilisation de modèles globaux dans Amazon S3 URIs ou HealthOmics Storage URIs. Utilisez des modèles Glob dans la définition du flux de travail pour la création de path file canaux.

Directives Nextflow

Vous configurez les directives Nextflow dans le fichier de configuration ou la définition du flux de travail Nextflow. La liste suivante indique l'ordre de priorité HealthOmics utilisé pour appliquer les paramètres de configuration, de la priorité la plus faible à la plus élevée :

  1. Configuration globale dans le fichier de configuration.

  2. Section des tâches de la définition du flux de travail.

  3. Sélecteurs spécifiques aux tâches dans le fichier de configuration.

Stratégie de nouvelle tentative de tâche en utilisant errorStrategy

Utilisez la errorStrategy directive pour définir la stratégie en cas d'erreurs de tâches. Par défaut, lorsqu'une tâche revient avec une indication d'erreur (un statut de sortie différent de zéro), la tâche s'arrête et HealthOmics met fin à l'exécution complète. Si vous définissez cette errorStrategy optionretry, HealthOmics tente une nouvelle tentative de la tâche qui a échoué. Pour augmenter le nombre de tentatives, voirTentatives de nouvelle tentative de tâche en utilisant maxRetries.

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

Pour plus d'informations sur le mode HealthOmics de gestion des nouvelles tentatives de tâches lors d'une exécution, consultezNouvelles tentatives de tâches.

Tentatives de nouvelle tentative de tâche en utilisant maxRetries

Par défaut, HealthOmics ne tente aucune nouvelle tentative d'une tâche qui a échoué, ou tente une nouvelle tentative si vous configurez. errorStrategy Pour augmenter le nombre maximum de tentatives, définissez retry et configurez le nombre maximum de tentatives errorStrategy à l'aide de la maxRetries directive.

L'exemple suivant définit le nombre maximum de tentatives à 3 dans la configuration globale.

process { errorStrategy = 'retry' maxRetries = 3 }

L'exemple suivant montre comment définir maxRetries dans la section des tâches de la définition du flux de travail.

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

L'exemple suivant montre comment spécifier une configuration spécifique à une tâche dans le fichier de configuration Nextflow, en fonction du nom ou des sélecteurs d'étiquette.

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

Désactiver la tâche, réessayez en utilisant omicsRetryOn5xx

Pour Nextflow v23 et v24, HealthOmics prend en charge les nouvelles tentatives de tâche si la tâche a échoué en raison d'erreurs de service (codes d'état HTTP 5XX). Par défaut, HealthOmics tente jusqu'à deux tentatives d'une tâche ayant échoué.

Vous pouvez configurer omicsRetryOn5xx pour désactiver la rétentative de tâche en cas d'erreur de service. Pour plus d'informations sur la nouvelle tentative d'une tâche HealthOmics, consultezNouvelles tentatives de tâches.

L'exemple suivant permet de configurer omicsRetryOn5xx la configuration globale pour désactiver la nouvelle tentative de tâche.

process { omicsRetryOn5xx = false }

L'exemple suivant montre comment procéder à la configuration omicsRetryOn5xx dans la section des tâches de la définition du flux de travail.

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

L'exemple suivant montre comment définir omicsRetryOn5xx une configuration spécifique à une tâche dans le fichier de configuration Nextflow, en fonction du nom ou des sélecteurs d'étiquette.

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

Durée de la tâche à l'aide de la time directive

HealthOmics fournit un quota ajustable (voirHealthOmics quotas de service) pour spécifier la durée maximale d'une course. Pour les flux de travail Nextflow v23 et v24, vous pouvez également spécifier la durée maximale des tâches à l'aide de la directive Nextflow. time

Lors du développement d'un nouveau flux de travail, la définition de la durée maximale des tâches vous permet de détecter les tâches intempestives et les tâches de longue durée.

Pour plus d'informations sur la directive temporelle Nextflow, voir directive time dans la référence Nextflow.

HealthOmics fournit le support suivant pour la directive temporelle Nextflow :

  1. HealthOmics prend en charge une granularité d'une minute pour la directive horaire. Vous pouvez spécifier une valeur comprise entre 60 secondes et la durée maximale d'exécution.

  2. Si vous entrez une valeur inférieure à 60, HealthOmics arrondissez-la à 60 secondes. Pour les valeurs supérieures à 60, HealthOmics arrondissez à la minute inférieure la plus proche.

  3. Si le flux de travail prend en charge les nouvelles tentatives pour une tâche, HealthOmics réessayez la tâche si le délai imparti est expiré.

  4. Si le délai d'expiration d'une tâche (ou si la dernière tentative expire), elle est HealthOmics annulée. Cette opération peut avoir une durée d'une à deux minutes.

  5. En cas d'expiration de la tâche, HealthOmics définit l'exécution et le statut de la tâche sur Échec, et annule les autres tâches en cours d'exécution (pour les tâches en cours d'exécution, en attente ou en cours d'exécution). HealthOmics exporte les sorties des tâches qu'il a terminées avant le délai d'expiration vers l'emplacement de sortie S3 que vous avez désigné.

  6. Le temps passé par une tâche en attente n'est pas pris en compte dans la durée de la tâche.

  7. Si l'exécution fait partie d'un groupe d'exécution et que le groupe d'exécution expire avant le délai imparti, l'exécution et la tâche passent au statut d'échec.

Spécifiez la durée du délai d'expiration en utilisant une ou plusieurs des unités suivantes :ms,s, mh, oud.

L'exemple suivant montre comment spécifier une configuration globale dans le fichier de configuration Nextflow. Il définit un délai d'expiration global de 1 heure et 30 minutes.

process { time = '1h30m' }

L'exemple suivant montre comment spécifier une directive temporelle dans la section des tâches de la définition du flux de travail. Cet exemple définit un délai d'expiration de 3 jours, 5 heures et 4 minutes. Cette valeur a priorité sur la valeur globale du fichier de configuration, mais pas sur une directive temporelle spécifique à une tâche my_label dans le fichier de configuration.

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

L'exemple suivant montre comment spécifier des directives temporelles spécifiques à une tâche dans le fichier de configuration Nextflow, en fonction du nom ou des sélecteurs d'étiquette. Cet exemple définit un délai d'expiration global de la tâche de 30 minutes. Il définit une valeur de 2 heures pour la tâche myTask et une valeur de 3 heures pour les tâches avec étiquettemy_label. Pour les tâches correspondant au sélecteur, ces valeurs ont priorité sur la valeur globale et sur la valeur de la définition du flux de travail.

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

Exporter le contenu de la tâche

Pour les flux de travail écrits dans Nextflow, définissez une directive PublishDir pour exporter le contenu des tâches vers votre compartiment Amazon S3 de sortie. Comme indiqué dans l'exemple suivant, définissez la valeur PublishDir sur. /mnt/workflow/pubdir Pour exporter des fichiers vers Amazon S3, les fichiers doivent se trouver dans ce répertoire.

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 """ }