Archivos de plantillas de parámetros para HealthOmics flujos de trabajo - AWS HealthOmics

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.

Archivos de plantillas de parámetros para HealthOmics flujos de trabajo

Las plantillas de parámetros definen los parámetros de entrada de un flujo de trabajo. Puede definir los parámetros de entrada para que su flujo de trabajo sea más flexible y versátil. Por ejemplo, puede definir un parámetro para la ubicación en Amazon S3 de los archivos del genoma de referencia. Las plantillas de parámetros se pueden proporcionar a través de un servicio de repositorio basado en Git o de su unidad local. A continuación, los usuarios pueden ejecutar el flujo de trabajo utilizando varios conjuntos de datos.

Puede crear la plantilla de parámetros para su flujo de trabajo o HealthOmics puede generar la plantilla de parámetros automáticamente.

La plantilla de parámetros es un archivo JSON. En el archivo, cada parámetro de entrada es un objeto con nombre que debe coincidir con el nombre de la entrada del flujo de trabajo. Cuando se inicia una ejecución, si no se proporcionan valores para todos los parámetros necesarios, se produce un error en la ejecución.

El objeto de parámetro de entrada incluye los siguientes atributos:

  • description— Este atributo obligatorio es una cadena que la consola muestra en la página de inicio de la ejecución. Esta descripción también se conserva como metadatos de ejecución.

  • optional— Este atributo opcional indica si el parámetro de entrada es opcional. Si no especifica el optional campo, el parámetro de entrada es obligatorio.

En el siguiente ejemplo de plantilla de parámetros se muestra cómo especificar los parámetros de entrada.

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

Generación de plantillas de parámetros

HealthOmics genera la plantilla de parámetros analizando la definición del flujo de trabajo para detectar los parámetros de entrada. Si proporciona un archivo de plantilla de parámetros para un flujo de trabajo, los parámetros del archivo anulan los parámetros detectados en la definición del flujo de trabajo.

Existen pequeñas diferencias entre la lógica de análisis de los motores CWL, WDL y Nextflow, como se describe en las siguientes secciones.

Detección de parámetros para CWL

En el motor de flujo de trabajo CWL, la lógica de análisis hace las siguientes suposiciones:

  • Todos los tipos admitidos que admiten valores NULL se marcan como parámetros de entrada opcionales.

  • Todos los tipos admitidos que no sean nulos se marcan como parámetros de entrada obligatorios.

  • Todos los parámetros con valores predeterminados se marcan como parámetros de entrada opcionales.

  • Las descripciones se extraen de la label sección de la definición del main flujo de trabajo. Si no label se especifica, la descripción estará en blanco (una cadena vacía).

En las tablas siguientes se muestran ejemplos de interpolación de CWL. Para cada ejemplo, el nombre del parámetro es. x Si el parámetro es obligatorio, debe proporcionar un valor para el parámetro. Si el parámetro es opcional, no es necesario que proporcione un valor.

En esta tabla se muestran ejemplos de interpolación de CWL para tipos primitivos.

Input Ejemplo de entrada/salida Obligatorio
x: type: int
1 o 2 o...
x: type: int default: 2
El valor predeterminado es 2. La entrada válida es 1 o 2 o... No
x: type: int?
La entrada válida es Ninguna o 1 o 2 o... No
x: type: int? default: 2
El valor predeterminado es 2. La entrada válida es Ninguna o 1 o 2 o... No

La siguiente tabla muestra ejemplos de interpolación de CWL para tipos complejos. Un tipo complejo es una colección de tipos primitivos.

Input Ejemplo de entrada/salida Obligatorio
x: type: array items: int
[] o [1,2,3]
x: type: array? items: int
Ninguno o [] o [1,2,3] No
x: type: array items: int?

[] o [Ninguno, 3, Ninguno]

x: type: array? items: int?

[Ninguno] o Ninguno o [1,2,3] o [Ninguno, 3] pero no []

No

Detección de parámetros para WDL

En el motor de flujo de trabajo de la WDL, la lógica de análisis hace las siguientes suposiciones:

  • Todos los tipos admitidos que admiten valores NULL se marcan como parámetros de entrada opcionales.

  • Para los tipos admitidos que no admiten valores nulos:

    • Cualquier variable de entrada con asignación de literales o expresiones se marca como parámetro opcional. Por ejemplo:

      Int x = 2 Float f0 = 1.0 + f1
    • Si no se ha asignado ningún valor o expresión a los parámetros de entrada, se marcarán como parámetros obligatorios.

  • Las descripciones se parameter_meta extraen de la definición del main flujo de trabajo. Si no parameter_meta se especifica, la descripción aparecerá en blanco (una cadena vacía). Para obtener más información, consulte la especificación WDL para los metadatos de los parámetros.

En las tablas siguientes se muestran ejemplos de interpolación de la WDL. Para cada ejemplo, el nombre del parámetro es. x Si el parámetro es obligatorio, debe proporcionar un valor para el parámetro. Si el parámetro es opcional, no es necesario que proporcione un valor.

En esta tabla se muestran ejemplos de interpolación de WDL para tipos primitivos.

Input Ejemplo de entrada/salida Obligatorio
Int x 1 o 2 o...
Int x = 2 2 No
Int x = 1+2 3 No
Int x = y+z y+z No
¿Int? x Ninguno o 1 o 2 o...
¿Int? x = 2 Ninguno o 2 No
¿Int? x = 1+2 Ninguno o 3 No
¿Int? x = y+z Ninguno o y+z No

La siguiente tabla muestra ejemplos de interpolación de WDL para tipos complejos. Un tipo complejo es un conjunto de tipos primitivos.

Input Ejemplo de entrada/salida Obligatorio
Array [Int] x [1,2,3] o []
Matriz [Int] + x [1], pero no []
¿Matriz [Int]? x Ninguno o [] o [1,2,3] No
Matriz [Int?] x [] o [Ninguno, 3, Ninguno]
Matriz [Int?] =? x [Ninguno] o Ninguno o [1,2,3] o [Ninguno, 3] pero no [] No
Ejemplo de estructura {String a, Int y}

más adelante en las entradas: Sample mySample

String a = mySample.a Int y = mySample.y
Ejemplo de estructura {String a, Int y}

más adelante en las entradas: ¿Ejemplo? ¿Mi muestra

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

Detección de parámetros para Nextflow

En el caso de Nextflow, HealthOmics genera la plantilla de parámetros analizando el archivo. nextflow_schema.json Si la definición del flujo de trabajo no incluye un archivo de esquema, HealthOmics analiza el archivo de definición del flujo de trabajo principal.

Analizar el archivo de esquema

Para que el análisis funcione correctamente, asegúrese de que el archivo de esquema cumpla los siguientes requisitos:

HealthOmics analiza el nextflow_schema.json archivo para generar la plantilla de parámetros:

  • Extrae todo properties lo que está definido en el esquema.

  • Incluye la propiedad description si está disponible para la propiedad.

  • Identifica si cada parámetro es opcional u obligatorio, en función del required campo de la propiedad.

El siguiente ejemplo muestra un archivo de definición y el archivo de parámetros generado.

{ "$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" } ] }

La plantilla de parámetros generada:

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

Analizando el archivo principal

Si la definición del flujo de trabajo no incluye un nextflow_schema.json archivo, HealthOmics analiza el archivo de definición del flujo de trabajo principal.

HealthOmics analiza las params expresiones que se encuentran en el archivo principal de definición del flujo de trabajo y en el nextflow.config archivo. Todas params las que tengan valores predeterminados se marcan como opcionales.

Para que el análisis funcione correctamente, tenga en cuenta los siguientes requisitos:

  • HealthOmics analiza solo el archivo de definición del flujo de trabajo principal. Para garantizar que se capturen todos los parámetros, le recomendamos que los conecte todos los params submódulos y flujos de trabajo importados.

  • El archivo de configuración es opcional. Si define uno, asígnele un nombre nextflow.config y colóquelo en el mismo directorio que el archivo de definición del flujo de trabajo principal.

El siguiente ejemplo muestra un archivo de definición y la plantilla de parámetros generada.

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

La plantilla de parámetros generada:

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

Para los valores predeterminados que se definen en nextflow.config, HealthOmics recopila params las asignaciones y los parámetros declarados en ellosparams {}, como se muestra en el siguiente ejemplo. En las sentencias de asignación, params debe aparecer en el lado izquierdo de la sentencia.

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

La plantilla de parámetros generada:

{ // 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 } }

Parámetros anidados

Ambos nextflow.config permiten nextflow_schema.json parámetros anidados. Sin embargo, la plantilla de HealthOmics parámetros solo requiere los parámetros de nivel superior. Si su flujo de trabajo utiliza un parámetro anidado, debe proporcionar un objeto JSON como entrada para ese parámetro.

Parámetros anidados en archivos de esquema

HealthOmics omite los anidados params al analizar un archivo. nextflow_schema.json Por ejemplo, si define el siguiente archivo: nextflow_schema.json

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

HealthOmics ignora input_file y input_num cuando genera la plantilla de parámetros:

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

Al ejecutar este flujo de trabajo, HealthOmics espera un input.json archivo similar al siguiente:

{ "input": { "input_file": "s3://bucket/obj", "input_num": 2 }, "input_bool": false }
Parámetros anidados en los archivos de configuración

HealthOmics no recopila los anidados params en un nextflow.config archivo y los omite durante el análisis. Por ejemplo, si define el siguiente archivo: nextflow.config

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

HealthOmics ignora params.nested.beta y params.group.delta cuando genera la plantilla de parámetros:

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

Ejemplos de interpolación de Nextflow

La siguiente tabla muestra ejemplos de interpolación de Nextflow para los parámetros del archivo principal.

Parámetros Obligatorio
params.input_file
params.input_file = "s3://bucket/data.json» No
params.nested.input_file N/A
params.nested.input_file = "s3://bucket/data.json» N/A

La siguiente tabla muestra ejemplos de interpolación de Nextflow para los parámetros del archivo. nextflow.config

Parámetros Obligatorio
params.input_file = "s3://bucket/data.json"
No
params { input_file = "s3://bucket/data.json" }
No
params { nested { input_file = "s3://bucket/data.json" } }
N/A
input_file = params.input_file
N/A