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.
Rubriques
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 dumain
flux de travail. Silabel
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 |
---|---|---|
|
1 ou 2 ou... | Oui |
|
La valeur par défaut est 2. L'entrée valide est 1 ou 2 ou... | Non |
|
L'entrée valide est None ou 1 ou 2 ou... | Non |
|
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 |
---|---|---|
|
[] ou [1,2,3] | Oui |
|
Aucun ou [] ou [1,2,3] | Non |
|
[] ou [Aucun, 3, Aucun] |
Oui |
|
[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 dumain
flux de travail. Siparameter_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 |
|
Oui |
Exemple de structure {String a, Int y} plus tard dans les entrées : Sample ? Mon échantillon |
|
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.
Rubriques
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 :
-
Le fichier de schéma est nommé
nextflow_schema.json
et se trouve dans le même répertoire que le fichier de flux de travail principal. -
Le fichier de schéma est un fichier JSON valide tel que défini dans l'un des schémas suivants :
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 |
---|---|
|
Non |
|
Non |
|
N/A |
|
N/A |