File modello di parametri per i flussi HealthOmics di lavoro - AWS HealthOmics

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

File modello di parametri per i flussi HealthOmics di lavoro

I modelli di parametri definiscono i parametri di input per un flusso di lavoro. È possibile definire i parametri di input per rendere il flusso di lavoro più flessibile e versatile. Ad esempio, puoi definire un parametro per la posizione in Amazon S3 dei file del genoma di riferimento. I modelli di parametri possono essere forniti tramite un servizio di repository basato su Git o l'unità locale. Gli utenti possono quindi eseguire il flusso di lavoro utilizzando vari set di dati.

È possibile creare il modello di parametri per il flusso di lavoro HealthOmics oppure generare il modello di parametri automaticamente.

Il modello di parametro è un file JSON. Nel file, ogni parametro di input è un oggetto denominato che deve corrispondere al nome dell'input del flusso di lavoro. Quando si avvia un'esecuzione, se non si forniscono valori per tutti i parametri richiesti, l'esecuzione ha esito negativo.

L'oggetto del parametro di input include i seguenti attributi:

  • description— Questo attributo obbligatorio è una stringa che la console visualizza nella pagina Start run. Questa descrizione viene conservata anche come metadati di esecuzione.

  • optional— Questo attributo opzionale indica se il parametro di input è facoltativo. Se non si specifica il optional campo, il parametro di input è obbligatorio.

Il seguente modello di parametri di esempio mostra come specificare i parametri di input.

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

Generazione di modelli di parametri

HealthOmics genera il modello di parametri analizzando la definizione del flusso di lavoro per rilevare i parametri di input. Se fornite un file modello di parametri per un flusso di lavoro, i parametri del file sostituiscono i parametri rilevati nella definizione del flusso di lavoro.

Esistono lievi differenze tra la logica di analisi dei motori CWL, WDL e Nextflow, come descritto nelle sezioni seguenti.

Rilevamento dei parametri per CWL

Nel motore di workflow CWL, la logica di analisi si basa sui seguenti presupposti:

  • Tutti i tipi nullable supportati sono contrassegnati come parametri di input opzionali.

  • Tutti i tipi supportati non nulli sono contrassegnati come parametri di input obbligatori.

  • Tutti i parametri con valori predefiniti sono contrassegnati come parametri di input opzionali.

  • Le descrizioni vengono estratte dalla label sezione della definizione del main flusso di lavoro. Se non label è specificato, la descrizione sarà vuota (una stringa vuota).

Le tabelle seguenti mostrano esempi di interpolazione CWL. Per ogni esempio, il nome del parametro è. x Se il parametro è obbligatorio, è necessario fornire un valore per il parametro. Se il parametro è facoltativo, non è necessario fornire un valore.

Questa tabella mostra esempi di interpolazione CWL per tipi primitivi.

Input Esempio di input/output Richiesto
x: type: int
1 o 2 o...
x: type: int default: 2
Il valore predefinito è 2. L'input valido è 1 o 2 o... No
x: type: int?
L'input valido è Nessuno o 1 o 2 o... No
x: type: int? default: 2
Il valore predefinito è 2. L'input valido è Nessuno o 1 o 2 o... No

La tabella seguente mostra esempi di interpolazione CWL per tipi complessi. Un tipo complesso è una raccolta di tipi primitivi.

Input Esempio di input/output Richiesto
x: type: array items: int
[] o [1,2,3]
x: type: array? items: int
Nessuno oppure [] o [1,2,3] No
x: type: array items: int?

[] o [Nessuno, 3, Nessuno]

x: type: array? items: int?

[Nessuno] o Nessuno o [1,2,3] o [Nessuno, 3] ma non []

No

Rilevamento dei parametri per WDL

Nel motore di workflow WDL, la logica di analisi si basa sui seguenti presupposti:

  • Tutti i tipi nullable supportati sono contrassegnati come parametri di input opzionali.

  • Per i tipi supportati che non possono essere annullati:

    • Qualsiasi variabile di input con assegnazione di valori letterali o espressioni è contrassegnata come parametri opzionali. Per esempio:

      Int x = 2 Float f0 = 1.0 + f1
    • Se non sono stati assegnati valori o espressioni ai parametri di input, questi verranno contrassegnati come parametri obbligatori.

  • Le descrizioni vengono estratte dalla definizione parameter_meta del main flusso di lavoro. Se non parameter_meta è specificato, la descrizione sarà vuota (una stringa vuota). Per ulteriori informazioni, vedete la specifica WDL per i metadati dei parametri.

Le tabelle seguenti mostrano esempi di interpolazione WDL. Per ogni esempio, il nome del parametro è. x Se il parametro è obbligatorio, è necessario fornire un valore per il parametro. Se il parametro è facoltativo, non è necessario fornire un valore.

Questa tabella mostra esempi di interpolazione WDL per tipi primitivi.

Input Esempio di input/output Richiesto
Int x 1 o 2 o...
Int x = 2 2 No
Intx = 1+2 3 No
Int x = y+z y+z No
Int? x Nessuno o 1 o 2 o...
Int? x = 2 Nessuno o 2 No
Int? x = 1+2 Nessuno o 3 No
Int? x = y+z Nessuno o y+z No

La tabella seguente mostra esempi di interpolazione WDL per tipi complessi. Un tipo complesso è una raccolta di tipi primitivi.

Input Esempio di input/output Richiesto
Array [Int] x [1,2,3] o []
Matrice [Int] + x [1], ma non []
Array [Int]? x Nessuno o [] o [1,2,3] No
Array [Int?] x [] o [Nessuno, 3, Nessuno]
Array [Int?] =? x [Nessuno] o Nessuno o [1,2,3] o [Nessuno, 3] ma non [] No
Esempio di struttura {String a, Int y}

più avanti negli input: Sample MySample

String a = mySample.a Int y = mySample.y
Esempio di struttura {String a, Int y}

più avanti negli input: Sample? MySample

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

Rilevamento dei parametri per Nextflow

Per Nextflow, HealthOmics genera il modello di parametro analizzando il file. nextflow_schema.json Se la definizione del flusso di lavoro non include un file di schema, HealthOmics analizza il file di definizione del flusso di lavoro principale.

Analisi del file di schema

Affinché l'analisi funzioni correttamente, assicurati che il file di schema soddisfi i seguenti requisiti:

HealthOmics analizza il nextflow_schema.json file per generare il modello di parametro:

  • Estrae tutto ciò properties che è definito nello schema.

  • Include la proprietà description se disponibile per la proprietà.

  • Identifica se ogni parametro è facoltativo o obbligatorio, in base al required campo della proprietà.

L'esempio seguente mostra un file di definizione e il file dei parametri generato.

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

Il modello di parametro generato:

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

Analisi del file principale

Se la definizione del flusso di lavoro non include un nextflow_schema.json file, HealthOmics analizza il file di definizione del flusso di lavoro principale.

HealthOmics analizza le params espressioni presenti nel file di definizione del flusso di lavoro principale e nel nextflow.config file. Tutte le params versioni con valori predefiniti sono contrassegnate come opzionali.

Affinché l'analisi funzioni correttamente, tieni presente i seguenti requisiti:

  • HealthOmics analizza solo il file di definizione del flusso di lavoro principale. Per garantire che tutti i parametri vengano acquisiti, ti consigliamo di collegarlo a tutti params i sottomoduli e ai flussi di lavoro importati.

  • Il file di configurazione è facoltativo. Se ne definite uno, assegnategli un nome nextflow.config e inseritelo nella stessa directory del file di definizione del flusso di lavoro principale.

L'esempio seguente mostra un file di definizione e il modello di parametri generato.

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

Il modello di parametro generato:

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

Per i valori predefiniti definiti in nextflow.config, HealthOmics raccoglie le params assegnazioni e i parametri dichiarati all'internoparams {}, come illustrato nell'esempio seguente. Nelle istruzioni di assegnazione, params deve apparire nella parte sinistra dell'istruzione.

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

Il modello di parametro generato:

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

Parametri annidati

Entrambi nextflow.config consentono nextflow_schema.json parametri annidati. Tuttavia, il modello di HealthOmics parametri richiede solo i parametri di primo livello. Se il flusso di lavoro utilizza un parametro annidato, è necessario fornire un oggetto JSON come input per quel parametro.

Parametri annidati nei file di schema

HealthOmics salti annidati params durante l'analisi di un file. nextflow_schema.json Ad esempio, se si definisce il seguente file: nextflow_schema.json

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

HealthOmics ignora input_file e input_num quando genera il modello di parametro:

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

Quando si esegue questo flusso di lavoro, HealthOmics si aspetta un input.json file simile al seguente:

{ "input": { "input_file": "s3://bucket/obj", "input_num": 2 }, "input_bool": false }
Parametri annidati nei file di configurazione

HealthOmics non raccoglie i dati annidati params in un nextflow.config file e li salta durante l'analisi. Ad esempio, se definisci il seguente file: nextflow.config

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

HealthOmics ignora params.nested.beta e params.group.delta quando genera il modello di parametro:

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

Esempi di interpolazione Nextflow

La tabella seguente mostra esempi di interpolazione Nextflow per i parametri nel file principale.

Parametri Richiesto
params.input_file
params.input_file = "s3://bucket/data.json» No
params.nested.input_file N/D
params.nested.input_file = "s3://bucket/data.json» N/D

La tabella seguente mostra esempi di interpolazione Nextflow per i parametri nel file. nextflow.config

Parametri Richiesto
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/D
input_file = params.input_file
N/D