View a markdown version of this page

Spécificités 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.

Spécificités de la définition du flux de travail Nextflow

HealthOmics prend en charge Nextflow DSL1 et DSL2. Pour en savoir plus, consultez Prise en charge 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 les valeurs fournis par le JSON d'entrée sont disponibles dans la carte des paramètres (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

  • v25.10, v26.04 — prend en chargenf-schema,, et nf-core-utils nf-fgbio nf-prov

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 v24.10, HealthOmics préinstalle le plugin nf-schema @2 .3.0.

  • Pour Nextflow v25.10, HealthOmics préinstalle les plugins nf-schema @2 .6.1, nf-core-utils @0 .4.0, nf-prov @1 .7.0 et nf-fgbio @1 .0.1.

  • Pour Nextflow v26.04, HealthOmics préinstalle les plugins nf-schema @2 .7.2, nf-core-utils @0 .4.0, nf-prov @1 .7.0 et nf-fgbio @1 .0.1.

  • Vous ne pouvez pas récupérer de plugins supplémentaires lors de l'exécution d'un flux de travail. HealthOmics ignore toutes les autres versions de plug-in 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 les URI de stockage

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

HealthOmics prend partiellement en charge l'utilisation de modèles globulaires dans les URI Amazon S3 ou les URI HealthOmics de stockage. Utilisez les modèles Glob dans la définition du flux de travail pour la création de path file canaux. Pour le comportement attendu et les cas exacts, voirNextflow Gestion du modèle Glob dans les entrées Amazon S3.

Directives Nextflow

Vous configurez les directives Nextflow dans le fichier de configuration Nextflow ou dans la définition du flux de travail. 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. Task-specific sélecteurs dans le fichier de configuration.

Stratégie de nouvelle tentative de tâche utilisant ErrorStrategy

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

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

Pour plus d'informations sur la façon dont HealthOmics les nouvelles tentatives de tâches sont gérées au cours d'une exécution, consultezNouvelles tentatives de tâches.

Tentatives de nouvelle tentative de tâche à l'aide de MaxRetries

Par défaut, HealthOmics ne tente aucune nouvelle tentative pour une tâche ayant é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 des sélecteurs de nom ou d'étiquette.

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

Désactiver la nouvelle tentative de tâche à l'aide d'Omics 5.xx RetryOn

Pour Nextflow v23 et versions ultérieures, 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 pour exécuter une tâche qui a échoué.

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

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

process { omicsRetryOn5xx = false }

L'exemple suivant montre comment configurer 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 des sélecteurs de nom ou d'étiquette.

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

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

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 versions ultérieures, vous pouvez également spécifier la durée maximale des tâches à l'aide de la directive Nextflow. time

Lors du développement de nouveaux flux de travail, la définition de la durée maximale des tâches vous permet de détecter les tâches incontrôlables et les tâches de longue haleine.

Pour plus d'informations sur la directive temporelle Nextflow, consultez la directive temporelle 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 temporelle. Vous pouvez spécifier une valeur comprise entre 60 secondes et la durée d'exécution maximale.

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

  3. Si le flux de travail prend en charge les nouvelles tentatives pour une tâche, HealthOmics recommence la tâche en cas d'expiration du délai imparti.

  4. Si une tâche arrive à expiration (ou si la dernière tentative expire), HealthOmics elle est annulée. Cette opération peut durer 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 résultats des tâches qu'il a effectué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écutions et que le groupe d'exécutions expire plus tôt que le chronomètre de la tâche, l'exécution et la tâche passent au statut d'échec.

Spécifiez la durée du délai d'expiration à l'aide d'une ou de plusieurs des unités suivantes : ms sm,h, oud.

L'exemple suivant montre comment spécifier la configuration globale dans le fichier de configuration Nextflow. Il définit un délai d'attente 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'attente 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 à la tâche pour my_label 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 des sélecteurs de nom ou d'étiquette. Cet exemple définit une valeur de délai d'expiration globale de 30 minutes pour les tâches. 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 qui correspondent au sélecteur, ces valeurs ont priorité sur la valeur globale et la valeur de la définition du flux de travail.

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

Utiliser les profils Nextflow

Les profils Nextflow sont des ensembles nommés de paramètres de configuration que vous pouvez sélectionner lors de l'exécution. Définissez les profils dans le profiles bloc de votre nextflow.config fichier :

profiles { standard { process.cpus = 2 process.memory = '4 GB' } production { process.cpus = 16 process.memory = '64 GB' params.input = 's3://bucket/production-data.bam' } }

Lorsque vous démarrez une exécution, spécifiez un ou plusieurs profils à l'aide du engineSettings paramètre. HealthOmics passe le -profile drapeau au moteur Nextflow. Pour de plus amples informations, veuillez consulter Spécifier les paramètres du moteur Nextflow.

aws omics start-run \ --workflow-id workflow-id \ --role-arn role-arn \ --output-uri s3://bucket/prefix/ \ --engine-settings '{"profile": "production"}'

Lorsque plusieurs profils sont spécifiés (par exemple,"test,docker"), Nextflow les applique dans l'ordre dans lequel ils sont spécifiés sur la ligne de commande. Les profils ultérieurs remplacent les profils précédents en cas de conflit de paramètres. Pour les versions de Nextflow inférieures à 26, les profils sont appliqués dans l'ordre dans lequel ils sont définis dans le fichier de configuration plutôt que dans l'ordre de la ligne de commande.

Notez ce qui suit :

  • La prise en charge des profils est disponible pour toutes les versions de Nextflow HealthOmics prises en charge.

  • Les profils peuvent contenir des paramètres, des directives de processus, includeConfig des instructions et des remplacements de manifestes (y comprismanifest.nextflowVersion).

  • Les paramètres d'exécution explicites ont priorité sur les valeurs de paramètres définies par le profil.

  • Si vous spécifiez un profil inexistant, HealthOmics renvoie une erreur de validation.

  • Les profils doivent être définis dans le fichier zip de définition du flux de travail. HealthOmics ne prend pas en charge la récupération de définitions de profil à partir de sources externes.

  • Si vous ne spécifiez pas de profil, l'exécution utilise le standard profil s'il est défini dans les profils de la définition du flux de travail. Sinon, l'exécution utilise la configuration par défaut (niveau supérieur).

  • Lorsque vous utilisez des profils, nous vous recommandons d'épingler la version de Nextflow dans la définition de votre flux de travail afin de garantir manifest.nextflowVersion un comportement cohérent des applications de profil entre les exécutions.

Exporter du contenu au niveau du flux de travail

Pour Nextflow v25.10 et versions ultérieures, vous pouvez exporter des fichiers produits en dehors de tâches individuelles, tels que des rapports de provenance ou des DAG de pipeline. Pour exporter ces fichiers, écrivez-les dans/mnt/workflow/output/. HealthOmics exporte les fichiers placés dans ce répertoire vers le output/ préfixe de l'emplacement de sortie Amazon S3 de votre exécution.

L'exemple suivant montre comment configurer le nf-prov plug-in pour écrire un rapport de provenance/mnt/workflow/output/.

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

Vous pouvez également transmettre ce chemin en tant que paramètre dans le JSON d'entrée de votre exécution. Cette approche est courante avec les flux de travail nf-core qui utilisent. params.outdir

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

Exporter le contenu des tâches

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

Pour Nextflow v25.10 et versions ultérieurespublishDir, vous pouvez utiliser les sorties du flux de travail pour exporter le contenu des tâches. L'exemple suivant montre comment définir un output bloc de flux de travail qui exporte les résultats des tâches vers 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 '.' } }

Pour plus d'informations sur les sorties de flux de travail, consultez la section Sorties de flux de travail dans la documentation Nextflow.

Générez des rapports d'exécution de Nextflow

Nextflow peut produire quatre rapports intégrés pour chaque exécution : un rapport d'exécution (report), un calendrier (timeline), un fichier de trace (trace) et un diagramme de flux de travail (dag). HealthOmics Pour exporter ces fichiers vers l'emplacement de sortie Amazon S3 de votre exécution, configurez chacun d'eux pour écrire sa sortie /mnt/workflow/output/ dans votre nextflow.config fichier :

report { enabled = true file = '/mnt/workflow/output/report.html' overwrite = true } timeline { enabled = true file = '/mnt/workflow/output/timeline.html' overwrite = true } trace { enabled = true file = '/mnt/workflow/output/trace.txt' overwrite = true } dag { enabled = true file = '/mnt/workflow/output/dag.html' overwrite = true }

HealthOmics exporte les fichiers écrits sous /mnt/workflow/output/ le output/ préfixe de l'emplacement de sortie Amazon S3 de votre exécution. Pour plus d'informations sur ce chemin d'exportation, consultezExporter du contenu au niveau du flux de travail. Les rapports écrits à l'extérieur ne /mnt/workflow/output/ sont pas exportés vers l'emplacement de sortie Amazon S3 de votre exécution.

Les conteneurs de tâches doivent inclure ps

Lorsque le trace rapport reporttimeline, ou est activé, Nextflow collecte des métriques par tâche en les invoquant ps dans chaque conteneur de tâches. L'image de conteneur que vous spécifiez avec la container directive doit inclure la ps commande. Sur la plupart des distributions Linux, installez-le avec le package procps (Debian/Ubuntu) ou procps-ng (Amazon Linux, Red Hat, Fedora). Si un processus ne déclare pas de container directive, HealthOmics exécute la tâche dans un conteneur par défaut qui inclut déjàps.

Format de diagramme de flux de travail

Le dag rapport prend en charge plusieurs formats de sortie, sélectionnés par l'extension dedag.file. Les formats HTML, Mermaid et DOT sont rendus directement par Nextflow et ne nécessitent aucun outil supplémentaire. Les formats PDF, PNG et SVG nécessitent Graphviz, qui n'est pas inclus dans HealthOmics le moteur Nextflow. S'il dag.file est défini sur un chemin PDF, PNG ou SVG, Nextflow enregistre un avertissement et écrit le diagramme de flux de travail sous forme de fichier .dot source à sa place ; l'exécution se termine toujours correctement. Nous vous recommandons dag.file de définir un .html .dot chemin ou un chemin pour éviter l'avertissement et produire le format demandé. .mmd

Spécifiez la version de la syntaxe Nextflow

Nextflow v26.04.0 utilise l'analyseur syntaxique strict (v2) par défaut. Il s'agit d'une modification majeure pour les flux de travail écrits à l'aide de la syntaxe héritée (v1), qui est la valeur par défaut dans Nextflow v25.10.0 et versions antérieures. Pour plus d'informations sur la syntaxe v2, consultez la section Syntaxe stricte dans la documentation Seqera Nextflow.

Pour exécuter un flux de travail créé à partir de l'ancien analyseur (v1), définissez sur v1 dans engineSettings.syntaxVersion la StartRun demande :

{ "engineSettings": { "syntaxVersion": "v1" } }

Pour Nextflow v25.10.0 et versions antérieures, HealthOmics ne prend pas en charge l'analyseur v2.

Validation automatique de la syntaxe lors de la création du workflow

HealthOmics exécute automatiquement le linter DSL2 strict intégré à Nextflow (nf-lang/v2) lorsque vous créez ou mettez à jour un flux de travail DSL2 Nextflow. Ce linter fonctionne pendant CreateWorkflow et. CreateWorkflowVersion Elle s'applique à toutes les versions DSL2 prises en charge (v22.04, v23.10, v24.10, v25.10 et v26.04). Les flux de travail DSL1 ne sont pas linted.

Le filtre fonctionne en mode non bloquant. Les résultats de Lint n'empêchent pas le flux de travail de devenir ACTIF. Les résultats apparaissent sous forme de JSON structuré dans le statusMessage champ de la GetWorkflow réponse.

Note

Le linter intégré valide la syntaxe de définition de votre flux de travail au moment de la création. Il est distinct de l'analyseur syntaxique strict disponible pour Nextflow v26.04, qui est contrôlé par engineSettings.syntaxVersion et affecte le comportement d'exécution. Le linter vérifie la syntaxe de toutes les versions de DSL2 au moment de la création, quel que soit l'analyseur utilisé par le flux de travail lors de l'exécution. Sur Nextflow v22.04, v23.10 et v24.10 (ancienne grammaire), les résultats sont consultatifs. Sur Nextflow v25.10 et v26.04, les résultats reflètent des exigences strictes en matière de syntaxe des modes.

Pour plus d'informations sur le format de sortie Lint et sur la manière de traiter les résultats, consultezLe flux de travail s'affiche HealthOmics.

Utiliser efficacement le stockage Scratch dans Nextflow

scratchLa directive de Nextflow contrôle l'endroit où un processus écrit ses fichiers de travail temporaires. Lorsque le stockage éphémère est activé (scratchStorageMode: LOCAL), utilisez la scratch directive pour rediriger Scratch I/O vers le volume local rapide situé à. /tmp

Le tableau suivant décrit les valeurs de scratch directive prises en charge et leur comportement dans HealthOmics :

Value Comportement dans HealthOmics Recommendation
scratch true Utilisations$TMPDIR. Scratch I/O est dirigé vers le volume éphémère local lorsqu'il estscratchStorageMode. LOCAL Recommandée
scratch '/some/path' Utilise le chemin littéral spécifié comme répertoire de travail. Pour utiliser le stockage éphémère, définissez le chemin d'accès /tmp ou un sous-répertoire de. /tmp Le chemin doit exister dans le conteneur et être accessible en écriture. Fonctionne lorsque le chemin est en dessous /tmp
scratch 'ram-disk' Tentatives d'utilisation /dev/shm (tmpfs dans la RAM). Cela n'est pas recommandé pour le stockage local à gratter dans HealthOmics. Non recommandé

L'approche recommandée consiste à définir scratch true dans votre définition de processus, qui utilise automatiquement $TMPDIR et ne nécessite aucune configuration de chemin :

process my_process { scratch true disk '200 GB' script: """ my-tool --input ${input} --output ${output} """ }

Pour plus d'informations sur le stockage éphémère et la disk directive, consultez. Stockage éphémère pour HealthOmics les tâches de flux de travail

Notes de mise à jour de Nextflow v26.04

Les tableaux suivants résument la HealthOmics prise en charge des nouvelles fonctionnalités, améliorations et dépréciations publiées dans la version 26.04 de Nextflow.

Nouvelles fonctionnalités et améliorations

Fonctionnalité De la version HealthOmics soutien Remarques
Analyseur syntaxique strict (par défaut) 26,04 Oui Activé par défaut à partir de la v26.04. L'ancien analyseur est disponible via syntaxVersion: "v1" les paramètres du moteur.
Types d'enregistrement 26,04 Oui Pour plus d'informations, consultez la section Enregistrements dans la documentation de Seqera Nextflow.
Résumés des résultats des flux de travail 26,04 Oui Imprime un résumé des résultats du flux de travail à la fin de l'exécution. Format de sortie configurable via outputFormat les paramètres du moteur. Pour de plus amples informations, veuillez consulter Spécifier les paramètres du moteur Nextflow.
Mode de journalisation de l'agent 26,04 Oui Configurable via agentMode les paramètres du moteur. Pour de plus amples informations, veuillez consulter Spécifier les paramètres du moteur Nextflow.
Système de modules (Nextflow Registry) 26,04 Non HealthOmics les flux de travail s'exécutent sur un réseau isolé sans accès Internet sortant. Vous pouvez inclure des modules directement dans le zip de votre flux de travail.
Saisie statique (aperçu) 26,04 Non HealthOmics ne prend pas en charge les fonctionnalités de prévisualisation.
Auto-load paramètres de collecte à partir de fichiers 26,04 Non Nécessite une saisie statique (aperçu), qui n' HealthOmics est pas prise en charge.
Multi-revision vérification des pipelines 26,04 N/A Non applicable. HealthOmics n'utilise pas Git-based Pipeline Checkout.

Obsolescence

Article obsolète De la version Impact Action recommandée
Méthode listFiles() 26,04 Avertissement de dépréciation Remplacer parlistDirectory().
Indicateur nextflow.enable.strict 26,04 N'est plus nécessaire Supprimer de la configuration. Le mode strict est désormais le mode par défaut.
manifest.defaultBranch 26,04 N'est plus nécessaire Supprimer de la configuration. HealthOmics n'utilise pas Git-based Pipeline Checkout et n'a jamais pris en charge cette option.