File template parameter untuk HealthOmics alur kerja - AWS HealthOmics

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

File template parameter untuk HealthOmics alur kerja

Template parameter menentukan parameter input untuk alur kerja. Anda dapat menentukan parameter input untuk membuat alur kerja Anda lebih fleksibel dan serbaguna. Misalnya, Anda dapat menentukan parameter untuk lokasi Amazon S3 dari file genom referensi. Template parameter dapat disediakan melalui layanan repositori berbasis Git atau drive lokal Anda. Pengguna kemudian dapat menjalankan alur kerja menggunakan berbagai set data.

Anda dapat membuat template parameter untuk alur kerja Anda, atau HealthOmics dapat menghasilkan template parameter untuk Anda.

Template parameter adalah file JSON. Dalam file, setiap parameter input adalah objek bernama yang harus cocok dengan nama input alur kerja. Saat Anda memulai proses, jika Anda tidak memberikan nilai untuk semua parameter yang diperlukan, proses gagal.

Objek parameter masukan mencakup atribut berikut:

  • description— Atribut wajib ini adalah string yang ditampilkan konsol di halaman Mulai jalankan. Deskripsi ini juga dipertahankan sebagai run metadata.

  • optional— Atribut opsional ini menunjukkan apakah parameter input adalah opsional. Jika Anda tidak menentukan optional bidang, parameter input diperlukan.

Contoh template parameter berikut menunjukkan bagaimana menentukan parameter masukan.

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

Menghasilkan templat parameter

HealthOmics menghasilkan template parameter dengan mengurai definisi alur kerja untuk mendeteksi parameter input. Jika Anda menyediakan file template parameter untuk alur kerja, parameter dalam file Anda akan mengganti parameter yang terdeteksi dalam definisi alur kerja.

Ada sedikit perbedaan antara logika parsing mesin CWL, WDL, dan Nextflow, seperti yang dijelaskan di bagian berikut.

Deteksi parameter untuk CWL

Di mesin alur kerja CWL, logika parsing membuat asumsi berikut:

  • Tipe yang didukung nullable ditandai sebagai parameter input opsional.

  • Tipe yang didukung non-null ditandai sebagai parameter input yang diperlukan.

  • Setiap parameter dengan nilai default ditandai sebagai parameter input opsional.

  • Deskripsi diekstraksi dari label bagian dari definisi main alur kerja. Jika tidak label ditentukan, deskripsi akan kosong (string kosong).

Tabel berikut menunjukkan contoh interpolasi CWL. Untuk setiap contoh, nama parameternya adalahx. Jika parameter diperlukan, Anda harus memberikan nilai untuk parameter. Jika parameternya opsional, Anda tidak perlu memberikan nilai.

Tabel ini menunjukkan contoh interpolasi CWL untuk tipe primitif.

Input Contoh input/output Wajib
x: type: int
1 atau 2 atau... Ya
x: type: int default: 2
Nilai default adalah 2. Masukan yang valid adalah 1 atau 2 atau... Tidak
x: type: int?
Masukan yang valid adalah None atau 1 atau 2 atau... Tidak
x: type: int? default: 2
Nilai default adalah 2. Masukan yang valid adalah None atau 1 atau 2 atau... Tidak

Tabel berikut menunjukkan contoh interpolasi CWL untuk tipe kompleks. Tipe kompleks adalah kumpulan tipe primitif.

Input Contoh input/output Wajib
x: type: array items: int
[] atau [1,2,3] Ya
x: type: array? items: int
Tidak ada atau [] atau [1,2,3] Tidak
x: type: array items: int?

[] atau [Tidak ada, 3, tidak ada]

Ya
x: type: array? items: int?

[Tidak] atau Tidak ada atau [1,2,3] atau [Tidak ada, 3] tetapi tidak []

Tidak

Deteksi parameter untuk WDL

Di mesin alur kerja WDL, logika parsing membuat asumsi berikut:

  • Tipe yang didukung nullable ditandai sebagai parameter input opsional.

  • Untuk tipe yang didukung yang tidak dapat dibatalkan:

    • Setiap variabel input dengan penetapan literal atau ekspresi ditandai sebagai parameter opsional. Misalnya:

      Int x = 2 Float f0 = 1.0 + f1
    • Jika tidak ada nilai atau ekspresi yang ditetapkan ke parameter input, mereka akan ditandai sebagai parameter yang diperlukan.

  • Deskripsi diekstraksi dari parameter_meta dalam definisi main alur kerja. Jika tidak parameter_meta ditentukan, deskripsi akan kosong (string kosong). Untuk informasi lebih lanjut, lihat spesifikasi WDL untuk metadata Parameter.

Tabel berikut menunjukkan contoh interpolasi WDL. Untuk setiap contoh, nama parameternya adalahx. Jika parameter diperlukan, Anda harus memberikan nilai untuk parameter. Jika parameternya opsional, Anda tidak perlu memberikan nilai.

Tabel ini menunjukkan contoh interpolasi WDL untuk tipe primitif.

Input Contoh input/output Wajib
Int x 1 atau 2 atau... Ya
Int x = 2 2 Tidak
Int x = 1+2 3 Tidak
Int x = y+z y+z Tidak
Int? x Tidak ada atau 1 atau 2 atau... Ya
Int? x = 2 Tidak ada atau 2 Tidak
Int? x = 1+2 Tidak ada atau 3 Tidak
Int? x = y+z Tidak ada atau y+z Tidak

Tabel berikut menunjukkan contoh interpolasi WDL untuk tipe kompleks. Tipe kompleks adalah kumpulan tipe primitif.

Input Contoh input/output Wajib
Array [Int] x [1,2,3] atau [] Ya
Array [Int] + x [1], tetapi tidak [] Ya
Array [Int]? x Tidak ada atau [] atau [1,2,3] Tidak
Array [Int?] x [] atau [Tidak ada, 3, tidak ada] Ya
Array [Int?] =? x [Tidak] atau Tidak ada atau [1,2,3] atau [Tidak ada, 3] tetapi tidak [] Tidak
Contoh struktur {String a, Int y}

nanti di input: Contoh MySample

String a = mySample.a Int y = mySample.y
Ya
Contoh struktur {String a, Int y}

nanti di input: Sampel? MySample

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

Deteksi parameter untuk Nextflow

Untuk Nextflow, HealthOmics buat template parameter dengan mengurai file. nextflow_schema.json Jika definisi alur kerja tidak menyertakan file skema, HealthOmics parsing file definisi alur kerja utama.

Mengurai file skema

Agar parsing berfungsi dengan benar, pastikan file skema memenuhi persyaratan berikut:

HealthOmics nextflow_schema.jsonmem-parsing file untuk menghasilkan template parameter:

  • Ekstrak semua properties yang didefinisikan dalam skema.

  • Termasuk properti description jika tersedia untuk properti.

  • Mengidentifikasi apakah setiap parameter opsional atau wajib, berdasarkan required bidang properti.

Contoh berikut menunjukkan file definisi dan file parameter yang dihasilkan.

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

Template parameter yang dihasilkan:

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

Mengurai file utama

Jika definisi alur kerja tidak menyertakan nextflow_schema.json file, HealthOmics parsing file definisi alur kerja utama.

HealthOmics menganalisis params ekspresi yang ditemukan di file definisi alur kerja utama dan dalam file. nextflow.config Semua params dengan nilai default ditandai sebagai opsional.

Agar parsing berfungsi dengan benar, perhatikan persyaratan berikut:

  • HealthOmics hanya mem-parsing file definisi alur kerja utama. Untuk memastikan semua parameter ditangkap, kami sarankan Anda menghubungkan semua params submodul dan alur kerja yang diimpor.

  • File konfigurasi adalah opsional. Jika Anda mendefinisikannya, beri nama nextflow.config dan letakkan di direktori yang sama dengan file definisi alur kerja utama.

Contoh berikut menunjukkan file definisi dan template parameter yang dihasilkan.

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

Template parameter yang dihasilkan:

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

Untuk nilai default yang didefinisikan dalam nextflow.config, HealthOmics mengumpulkan params tugas dan parameter yang dideklarasikan dalamparams {}, seperti yang ditunjukkan pada contoh berikut. Dalam pernyataan penugasan, params harus muncul di sisi kiri pernyataan.

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

Template parameter yang dihasilkan:

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

Parameter bersarang

Keduanya nextflow_schema.json dan nextflow.config memungkinkan parameter bersarang. Namun, template HealthOmics parameter hanya membutuhkan parameter tingkat atas. Jika alur kerja Anda menggunakan parameter bersarang, Anda harus menyediakan objek JSON sebagai input untuk parameter tersebut.

Parameter bersarang dalam file skema

HealthOmics melewatkan bersarang params saat mengurai file. nextflow_schema.json Misalnya, jika Anda mendefinisikan nextflow_schema.json file berikut:

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

HealthOmics mengabaikan input_file dan input_num ketika menghasilkan template parameter:

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

Saat Anda menjalankan alur kerja ini, HealthOmics mengharapkan input.json file yang mirip dengan berikut ini:

{ "input": { "input_file": "s3://bucket/obj", "input_num": 2 }, "input_bool": false }
Parameter bersarang dalam file konfigurasi

HealthOmics tidak mengumpulkan bersarang params dalam nextflow.config file, dan melewatkannya selama penguraian. Misalnya, jika Anda mendefinisikan nextflow.config file berikut:

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

HealthOmics mengabaikan params.nested.beta dan params.group.delta ketika menghasilkan template parameter:

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

Contoh interpolasi Nextflow

Tabel berikut menunjukkan contoh interpolasi Nextflow untuk params di file utama.

Parameter Wajib
params.input_file Ya
params.input_file = "s3://bucket/data.json” Tidak
params.nested.input_file N/A
params.nested.input_file = "s3://bucket/data.json” N/A

Tabel berikut menunjukkan contoh interpolasi Nextflow untuk params dalam file. nextflow.config

Parameter Wajib
params.input_file = "s3://bucket/data.json"
Tidak
params { input_file = "s3://bucket/data.json" }
Tidak
params { nested { input_file = "s3://bucket/data.json" } }
N/A
input_file = params.input_file
N/A