Fichiers modèles de paramètres pour les HealthOmics flux de travail - 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.

Fichiers modèles de paramètres pour les HealthOmics flux de travail

Les modèles de paramètres définissent les paramètres d'entrée d'un flux de travail. Vous pouvez définir des paramètres d'entrée pour rendre votre flux de travail plus flexible et plus polyvalent. Par exemple, vous pouvez définir un paramètre pour l'emplacement des fichiers génomiques de référence sur Amazon S3. Les modèles de paramètres peuvent être fournis par le biais d'un service de dépôt basé sur Git ou de votre disque local. Les utilisateurs peuvent ensuite exécuter le flux de travail à l'aide de différents ensembles de données.

Vous pouvez créer le modèle de paramètres pour votre flux de travail ou HealthOmics générer le modèle de paramètres pour vous.

Le modèle de paramètres est un fichier JSON. Dans le fichier, chaque paramètre d'entrée est un objet nommé qui doit correspondre au nom de l'entrée du flux de travail. Lorsque vous lancez une exécution, si vous ne fournissez pas de valeurs pour tous les paramètres requis, l'exécution échoue.

L'objet du paramètre d'entrée inclut les attributs suivants :

  • description— Cet attribut obligatoire est une chaîne que la console affiche sur la page Démarrer l'exécution. Cette description est également conservée sous forme de métadonnées d'exécution.

  • optional— Cet attribut facultatif indique si le paramètre d'entrée est facultatif. Si vous ne spécifiez pas le optional champ, le paramètre d'entrée est obligatoire.

L'exemple de modèle de paramètres suivant montre comment spécifier les paramètres d'entrée.

{ "myRequiredParameter1": { "description": "this parameter is required", }, "myRequiredParameter2": { "description": "this parameter is also required", "optional": false }, "myOptionalParameter": { "description": "this parameter is optional", "optional": true } }

Génération de modèles de paramètres

HealthOmics génère le modèle de paramètres en analysant la définition du flux de travail pour détecter les paramètres d'entrée. Si vous fournissez un fichier modèle de paramètres pour un flux de travail, les paramètres de votre fichier remplacent les paramètres détectés dans la définition du flux de travail.

Il existe de légères différences entre la logique d'analyse des moteurs CWL, WDL et Nextflow, comme décrit dans les sections suivantes.

Détection de paramètres pour CWL

Dans le moteur de flux de travail CWL, la logique d'analyse repose sur les hypothèses suivantes :

  • Tous les types pris en charge par des valeurs nulles sont marqués comme paramètres d'entrée facultatifs.

  • Tous les types pris en charge non nuls sont marqués comme paramètres d'entrée obligatoires.

  • Tous les paramètres avec des valeurs par défaut sont marqués comme paramètres d'entrée facultatifs.

  • Les descriptions sont extraites de la label section de la définition du main flux de travail. Si label ce n'est pas spécifié, la description sera vide (chaîne vide).

Les tableaux suivants présentent des exemples d'interpolation CWL. Pour chaque exemple, le nom du paramètre estx. Si le paramètre est obligatoire, vous devez fournir une valeur pour le paramètre. Si le paramètre est facultatif, il n'est pas nécessaire de fournir de valeur.

Ce tableau présente des exemples d'interpolation CWL pour les types primitifs.

Entrée Exemple d'entrée/sortie Obligatoire
x: type: int
1 ou 2 ou... Oui
x: type: int default: 2
La valeur par défaut est 2. L'entrée valide est 1 ou 2 ou... Non
x: type: int?
L'entrée valide est None ou 1 ou 2 ou... Non
x: type: int? default: 2
La valeur par défaut est 2. L'entrée valide est None ou 1 ou 2 ou... Non

Le tableau suivant présente des exemples d'interpolation CWL pour les types complexes. Un type complexe est un ensemble de types primitifs.

Entrée Exemple d'entrée/sortie Obligatoire
x: type: array items: int
[] ou [1,2,3] Oui
x: type: array? items: int
Aucun ou [] ou [1,2,3] Non
x: type: array items: int?

[] ou [Aucun, 3, Aucun]

Oui
x: type: array? items: int?

[Aucun] ou Aucun ou [1,2,3] ou [Aucun, 3] mais pas []

Non

Détection de paramètres pour WDL

Dans le moteur de flux de travail WDL, la logique d'analyse repose sur les hypothèses suivantes :

  • Tous les types pris en charge par des valeurs nulles sont marqués comme paramètres d'entrée facultatifs.

  • Pour les types pris en charge non nullables :

    • Toute variable d'entrée à laquelle sont assignés des littéraux ou des expressions est marquée comme paramètre facultatif. Par exemple :

      Int x = 2 Float f0 = 1.0 + f1
    • Si aucune valeur ou expression n'a été affectée aux paramètres d'entrée, ils seront marqués comme paramètres obligatoires.

  • Les descriptions sont extraites de parameter_meta la définition du main flux de travail. Si parameter_meta ce n'est pas spécifié, la description sera vide (chaîne vide). Pour plus d'informations, consultez la spécification WDL pour les métadonnées des paramètres.

Les tableaux suivants présentent des exemples d'interpolation WDL. Pour chaque exemple, le nom du paramètre estx. Si le paramètre est obligatoire, vous devez fournir une valeur pour le paramètre. Si le paramètre est facultatif, il n'est pas nécessaire de fournir de valeur.

Ce tableau présente des exemples d'interpolation WDL pour les types primitifs.

Entrée Exemple d'entrée/sortie Obligatoire
Int x 1 ou 2 ou... Oui
Int x = 2 2 Non
Int x = 1+2 3 Non
Int x = y+z y+z Non
Int ? x Aucun, 1 ou 2 ou... Oui
Int ? x = 2 Aucun ou 2 Non
Int ? x = 1+2 Aucun ou 3 Non
Int ? x = y+z Aucun ou y+z Non

Le tableau suivant présente des exemples d'interpolation WDL pour les types complexes. Un type complexe est un ensemble de types primitifs.

Entrée Exemple d'entrée/sortie Obligatoire
Tableau [Int] x [1,2,3] ou [] Oui
Tableau [Int] + x [1], mais pas [] Oui
Tableau [Int] ? x Aucun ou [] ou [1,2,3] Non
Tableau [Int ?] x [] ou [Aucun, 3, Aucun] Oui
Tableau [Int ?] = ? x [Aucun] ou Aucun ou [1,2,3] ou [Aucun, 3] mais pas [] Non
Exemple de structure {String a, Int y}

plus loin dans les entrées : Sample MySample

String a = mySample.a Int y = mySample.y
Oui
Exemple de structure {String a, Int y}

plus tard dans les entrées : Sample ? Mon échantillon

if (defined(mySample)) { String a = mySample.a Int y = mySample.y }
Non

Détection de paramètres pour Nextflow

Pour Nextflow, HealthOmics génère le modèle de paramètres en analysant le nextflow_schema.json fichier. Si la définition du flux de travail n'inclut pas de fichier de schéma, HealthOmics analyse le fichier de définition du flux de travail principal.

Analyse du fichier de schéma

Pour que l'analyse fonctionne correctement, assurez-vous que le fichier de schéma répond aux exigences suivantes :

HealthOmics analyse le nextflow_schema.json fichier pour générer le modèle de paramètres :

  • Extrait tout properties ce qui est défini dans le schéma.

  • Comprend la propriété description si disponible pour la propriété.

  • Indique si chaque paramètre est facultatif ou obligatoire, en fonction du required champ de la propriété.

L'exemple suivant montre un fichier de définition et le fichier de paramètres généré.

{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "$defs": { "input_options": { "title": "Input options", "type": "object", "required": ["input_file"], "properties": { "input_file": { "type": "string", "format": "file-path", "pattern": "^s3://[a-z0-9.-]{3,63}(?:/\\S*)?$", "description": "description for input_file" }, "input_num": { "type": "integer", "default": 42, "description": "description for input_num" } } }, "output_options": { "title": "Output options", "type": "object", "required": ["output_dir"], "properties": { "output_dir": { "type": "string", "format": "file-path", "description": "description for output_dir", } } } }, "properties": { "ungrouped_input_bool": { "type": "boolean", "default": true } }, "required": ["ungrouped_input_bool"], "allOf": [ { "$ref": "#/$defs/input_options" }, { "$ref": "#/$defs/output_options" } ] }

Le modèle de paramètres généré :

{ "input_file": { "description": "description for input_file", "optional": False }, "input_num": { "description": "description for input_num", "optional": True }, "output_dir": { "description": "description for output_dir", "optional": False }, "ungrouped_input_bool": { "description": None, "optional": False } }

Analyse du fichier principal

Si la définition du flux de travail n'inclut aucun nextflow_schema.json fichier, HealthOmics analyse le fichier de définition du flux de travail principal.

HealthOmics analyse les params expressions présentes dans le fichier de définition du flux de travail principal et dans le nextflow.config fichier. Tous ceux params dont les valeurs par défaut sont marqués comme facultatifs.

Pour que l'analyse fonctionne correctement, tenez compte des exigences suivantes :

  • HealthOmics analyse uniquement le fichier de définition du flux de travail principal. Pour garantir que tous les paramètres sont capturés, nous vous recommandons de les connecter à tous params les sous-modules et aux flux de travail importés.

  • Le fichier de configuration est facultatif. Si vous en définissez un, nommez-le nextflow.config et placez-le dans le même répertoire que le fichier de définition du flux de travail principal.

L'exemple suivant montre un fichier de définition et le modèle de paramètres généré.

params.input_file = "default.txt" params.threads = 4 params.memory = "8GB" workflow { if (params.version) { println "Using version: ${params.version}" } }

Le modèle de paramètres généré :

{ "input_file": { "description": None, "optional": True }, "threads": { "description": None, "optional": True }, "memory": { "description": None, "optional": True }, "version": { "description": None, "optional": False } }

Pour les valeurs par défaut définies dans nextflow.config, HealthOmics collecte les params assignations et les paramètres déclarés dans le fichierparams {}, comme indiqué dans l'exemple suivant. Dans les instructions d'affectation, elles params doivent apparaître dans la partie gauche de la déclaration.

params.alpha = "alpha" params.beta = "beta" params { gamma = "gamma" delta = "delta" } env { // ignored, as this assignment isn't in the params block VERSION = "TEST" } // ignored, as params is not on the left side interpolated_image = "${params.cli_image}"

Le modèle de paramètres généré :

{ // other params in your main workflow defintion "alpha": { "description": None, "optional": True }, "beta": { "description": None, "optional": True }, "gamma": { "description": None, "optional": True }, "delta": { "description": None, "optional": True } }

Paramètres imbriqués

Les deux nextflow_schema.json et nextflow.config autorisent les paramètres imbriqués. Toutefois, le modèle de HealthOmics paramètres ne nécessite que les paramètres de niveau supérieur. Si votre flux de travail utilise un paramètre imbriqué, vous devez fournir un objet JSON en entrée pour ce paramètre.

Paramètres imbriqués dans les fichiers de schéma

HealthOmics sauts imbriqués params lors de l'analyse d'un fichier. nextflow_schema.json Par exemple, si vous définissez le nextflow_schema.json fichier suivant :

{ "properties": { "input": { "properties": { "input_file": { ... }, "input_num": { ... } } }, "input_bool": { ... } } }

HealthOmics ignore input_file et input_num lorsqu'il génère le modèle de paramètres :

{ "input": { "description": None, "optional": True }, "input_bool": { "description": None, "optional": True } }

Lorsque vous exécutez ce flux de travail, HealthOmics vous vous attendez à un input.json fichier similaire au suivant :

{ "input": { "input_file": "s3://bucket/obj", "input_num": 2 }, "input_bool": false }
Paramètres imbriqués dans les fichiers de configuration

HealthOmics ne collecte pas les données imbriquées params dans un nextflow.config fichier et les ignore lors de l'analyse. Par exemple, si vous définissez le nextflow.config fichier suivant :

params.alpha = "alpha" params.nested.beta = "beta" params { gamma = "gamma" group { delta = "delta" } }

HealthOmics ignore params.nested.beta et params.group.delta lorsqu'il génère le modèle de paramètres :

{ "alpha": { "description": None, "optional": True }, "gamma": { "description": None, "optional": True } }

Exemples d'interpolation Nextflow

Le tableau suivant présente des exemples d'interpolation Nextflow pour les paramètres du fichier principal.

Paramètres Obligatoire
params.input_file Oui
params.input_file = "s3://bucket/data.json » Non
params.nested.input_file N/A
params.nested.input_file = "s3://bucket/data.json » N/A

Le tableau suivant présente des exemples d'interpolation Nextflow pour les paramètres du fichier. nextflow.config

Paramètres Obligatoire
params.input_file = "s3://bucket/data.json"
Non
params { input_file = "s3://bucket/data.json" }
Non
params { nested { input_file = "s3://bucket/data.json" } }
N/A
input_file = params.input_file
N/A