View a markdown version of this page

Spesifikasi definisi alur kerja Nextflow - AWS HealthOmics

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

Spesifikasi definisi alur kerja Nextflow

HealthOmics mendukung Nextflow DSL1 dan DSL2. Lihat perinciannya di Dukungan versi Nextflow.

Nextflow DSL2 didasarkan pada bahasa pemrograman Groovy, sehingga parameternya dinamis dan paksaan tipe dimungkinkan menggunakan aturan yang sama dengan Groovy. Parameter dan nilai yang disediakan oleh input JSON tersedia di parameter (params) peta alur kerja.

Gunakan plugin nf-schema dan nf-validasi

catatan

Ringkasan HealthOmics dukungan untuk plugin:

  • v22.04 - tidak ada dukungan untuk plugin

  • v23.10 - mendukung dan nf-schema nf-validation

  • v24.10 - mendukung nf-schema

  • v25.10, v26.04 - mendukungnf-schema,,, dan nf-core-utils nf-fgbio nf-prov

HealthOmics menyediakan dukungan berikut untuk plugin Nextflow:

  • Untuk Nextflow v23.10, HealthOmics pra-instal plugin nf-validasi @1 .1.1.

  • Untuk Nextflow v23.10 dan v24.10, HealthOmics pra-instal plugin nf-schema @2 .3.0.

  • Untuk Nextflow v25.10, HealthOmics pra-instal plugin nf-schema @2 .6.1, nf-core-utils @0 .4.0, nf-prov @1 .7.0, dan nf-fgbio @1 .0.1.

  • Untuk Nextflow v26.04, HealthOmics pra-instal plugin nf-schema @2 .7.2, nf-core-utils @0 .4.0, nf-prov @1 .7.0, dan nf-fgbio @1 .0.1.

  • Anda tidak dapat mengambil plugin tambahan selama alur kerja dijalankan. HealthOmics mengabaikan versi plugin lain yang Anda tentukan dalam nextflow.config file.

  • Untuk Nextflow v24 dan yang lebih tinggi, nf-schema adalah versi baru dari plugin yang tidak digunakan lagi. nf-validation Untuk informasi selengkapnya, lihat nf-schema di repositori Next GitHub flow.

Tentukan URI penyimpanan

Ketika Amazon S3 atau HealthOmics URI digunakan untuk membuat file Nextflow atau objek jalur, objek yang cocok tersedia untuk alur kerja, selama akses baca diberikan. Penggunaan awalan atau direktori diperbolehkan untuk URI Amazon S3. Sebagai contoh, lihat Format parameter masukan Amazon S3.

HealthOmics sebagian mendukung penggunaan pola glob di URI Amazon S3 atau URI Peny HealthOmics impanan. Gunakan pola Glob dalam definisi alur kerja untuk pembuatan file saluran path atau. Untuk perilaku yang diharapkan dan kasus yang tepat, lihatNextflow Penanganan pola Glob di input Amazon S3.

Arahan Nextflow

Anda mengonfigurasi arahan Nextflow dalam file konfigurasi Nextflow atau definisi alur kerja. Daftar berikut menunjukkan urutan prioritas yang HealthOmics digunakan untuk menerapkan pengaturan konfigurasi, dari prioritas terendah hingga tertinggi:

  1. Konfigurasi global dalam file konfigurasi.

  2. Bagian tugas dari definisi alur kerja.

  3. Task-specific pemilih dalam file konfigurasi.

Strategi coba ulang tugas menggunakan ErrorStrategy

Gunakan errorStrategy direktif untuk menentukan strategi kesalahan tugas. Secara default, ketika tugas kembali dengan indikasi kesalahan (status keluar bukan nol), tugas berhenti dan meng HealthOmics akhiri seluruh proses. Jika Anda meny errorStrategy et retry el HealthOmics ke, coba sekali lagi tugas yang gagal. Untuk menambah jumlah percobaan ulang, lihatUpaya coba ulang tugas menggunakan MaxRetries .

process { label 'my_label' errorStrategy 'retry' script: """ your-command-here """ }

Untuk informasi tentang cara HealthOmics menangani percobaan ulang tugas selama proses, lihatTugas Mencoba Ulang.

Upaya coba ulang tugas menggunakan MaxRetries

Secara default, HealthOmics tidak mencoba lagi tugas yang gagal, atau mencoba sekali lagi jika Anda mengonfigurasi. errorStrategy Untuk meningkatkan jumlah maksimum percobaan ulang, atur retry dan konfigur errorStrategy asikan jumlah maksimum percobaan ulang menggunakan direktif. maxRetries

Contoh berikut menetapkan jumlah maksimum percobaan ulang ke 3 dalam konfigurasi global.

process { errorStrategy = 'retry' maxRetries = 3 }

Contoh berikut menunjukkan cara mengatur maxRetries di bagian tugas dari definisi alur kerja.

process myTask { label 'my_label' errorStrategy 'retry' maxRetries 3 script: """ your-command-here """ }

Contoh berikut menunjukkan cara menentukan konfigurasi khusus tugas dalam file konfigurasi Nextflow, berdasarkan nama atau pemilih label.

process { withLabel: 'my_label' { errorStrategy = 'retry' maxRetries = 3 } withName: 'myTask' { errorStrategy = 'retry' maxRetries = 3 } }

Memilih keluar dari percobaan ulang tugas menggunakan omics 5xx RetryOn

Untuk Nextflow v23 dan yang lebih baru, HealthOmics mendukung percobaan ulang tugas jika tugas gagal karena kesalahan layanan (kode status HTTP 5XX). Secara default, HealthOmics mencoba hingga dua kali percobaan ulang dari tugas yang gagal.

Anda dapat mengonfigurasi omicsRetryOn5xx untuk memilih keluar dari percobaan ulang tugas untuk kesalahan layanan. Untuk informasi selengkapnya tentang coba lagi tugas HealthOmics, lihatTugas Mencoba Ulang.

Contoh berikut mengonfigurasi konfigurasi omicsRetryOn5xx global untuk memilih keluar dari percobaan ulang tugas.

process { omicsRetryOn5xx = false }

Contoh berikut menunjukkan cara mengonfigurasi omicsRetryOn5xx di bagian tugas dari definisi alur kerja.

process myTask { label 'my_label' omicsRetryOn5xx = false script: """ your-command-here """ }

Contoh berikut menunjukkan cara mengatur omicsRetryOn5xx sebagai konfigurasi khusus tugas di file konfigurasi Nextflow, berdasarkan nama atau pemilih label.

process { withLabel: 'my_label' { omicsRetryOn5xx = false } withName: 'myTask' { omicsRetryOn5xx = false } }

Durasi tugas menggunakan direk tif waktu

HealthOmics menyediakan kuota yang dapat disesuaikan (lihatHealthOmics kuota layanan) untuk menentukan durasi maksimum untuk menjalankan. Untuk Nextflow v23 dan alur kerja yang lebih baru, Anda juga dapat menentukan durasi tugas maksimum menggunakan direktif Nextflow. time

Selama pengembangan alur kerja baru, pengaturan durasi tugas maksimum membantu Anda menangkap tugas yang tidak dapat dijalankan dan tugas yang berjalan lama.

Untuk informasi lebih lanjut tentang direktif waktu Nextflow, lihat direktif waktu di referensi Nextflow.

HealthOmics memberikan dukungan berikut untuk direktif waktu Nextflow:

  1. HealthOmics mendukung granularitas 1 menit untuk direktif waktu. Anda dapat menentukan nilai antara 60 detik dan nilai durasi berjalan maksimum.

  2. Jika Anda memasukkan nilai kurang dari 60, HealthOmics bulatkan hingga 60 detik. Untuk nilai di atas 60, HealthOmics bulatkan ke bawah ke menit terdekat.

  3. Jika alur kerja mendukung percobaan ulang untuk tugas, coba HealthOmics lagi tugas jika waktunya habis.

  4. Jika waktu tugas habis (atau waktu percobaan ulang terakhir habis), tugas akan HealthOmics dibatalkan. Operasi ini dapat memiliki durasi satu hingga dua menit.

  5. Pada batas waktu tugas, HealthOmics setel status run dan task menjadi gagal, dan membatalkan tugas lain yang sedang dijalankan (untuk tugas dalam status Mulai, Tertunda, atau Berjalan). HealthOmics mengekspor output dari tugas yang diselesaikan sebelum batas waktu ke lokasi keluaran S3 yang Anda tentukan.

  6. Waktu yang dihabiskan tugas dalam status tertunda tidak dihitung dalam durasi tugas.

  7. Jika run adalah bagian dari grup run dan waktu grup run habis lebih cepat daripada pengatur waktu tugas, transisi run dan tugas ke status gagal.

Tentukan durasi batas waktu menggunakan satu atau lebih unit berikut:ms,,s, mh, ataud.

Contoh berikut menunjukkan cara menentukan konfigurasi global dalam file konfigurasi Nextflow. Ini menetapkan batas waktu global 1 jam 30 menit.

process { time = '1h30m' }

Contoh berikut menunjukkan cara menentukan direktif waktu di bagian tugas dari definisi alur kerja. Contoh ini menetapkan batas waktu 3 hari, 5 jam, dan 4 menit. Nilai ini diutamakan daripada nilai global dalam file konfigurasi, tetapi tidak diutamakan daripada direktif waktu khusus tugas untuk my_label dalam file konfigurasi.

process myTask { label 'my_label' time '3d5h4m' script: """ your-command-here """ }

Contoh berikut menunjukkan cara menentukan arahan waktu khusus tugas dalam file konfigurasi Nextflow, berdasarkan nama atau pemilih label. Contoh ini menetapkan nilai batas waktu tugas global 30 menit. Ini menetapkan nilai 2 jam untuk tugas myTask dan menetapkan nilai 3 jam untuk tugas dengan labelmy_label. Untuk tugas yang cocok dengan pemilih, nilai-nilai ini diutamakan daripada nilai global dan nilai dalam definisi alur kerja.

process { time = '30m' withLabel: 'my_label' { time = '3h' } withName: 'myTask' { time = '2h' } }

Gunakan profil Nextflow

Profil Nextflow diberi nama set pengaturan konfigurasi yang dapat Anda pilih saat runtime. Tentukan profil di profiles blok nextflow.config file Anda:

profiles { standard { process.cpus = 2 process.memory = '4 GB' } production { process.cpus = 16 process.memory = '64 GB' params.input = 's3://bucket/production-data.bam' } }

Saat Anda memulai menjalankan, tentukan satu atau lebih profil menggunakan engineSettings parameter. HealthOmics meneruskan ben -profile dera ke mesin Nextflow. Untuk informasi selengkapnya, lihat Tentukan pengaturan mesin Nextflow.

aws omics start-run \ --workflow-id workflow-id \ --role-arn role-arn \ --output-uri s3://bucket/prefix/ \ --engine-settings '{"profile": "production"}'

Ketika beberapa profil ditentukan (misalnya,"test,docker"), Nextflow menerapkannya dalam urutan yang ditentukan di baris perintah. Profil selanjutnya mengganti profil sebelumnya untuk pengaturan yang bertentangan. Untuk versi Nextflow yang lebih rendah dari 26, profil diterapkan dalam urutan yang ditentukan dalam file konfigurasi alih-alih urutan baris perintah.

Perhatikan hal-hal berikut:

  • Dukungan profil tersedia untuk semua versi Nextflow yang HealthOmics didukung.

  • Profil dapat berisi parameter, arahan proses, includeConfig pernyataan, dan penggantian manifes (termasukmanifest.nextflowVersion).

  • Parameter run eksplisit lebih diutamakan daripada nilai parameter yang ditentukan profil.

  • Jika Anda menentukan profil yang tidak ada, HealthOmics mengembalikan kesalahan validasi.

  • Profil harus ditentukan dalam file zip definisi alur kerja. HealthOmics tidak mendukung pengambilan definisi profil dari sumber eksternal.

  • Jika Anda tidak menentukan profil, proses akan menggunakan standard profil jika ditentukan di bawah profil dalam definisi alur kerja. Jika tidak, proses menggunakan konfigurasi default (tingkat atas).

  • Saat menggunakan profil, sebaiknya sematkan versi Nextflow dalam definisi alur kerja Anda menggunakan manifest.nextflowVersion untuk memastikan perilaku aplikasi profil yang konsisten di seluruh proses.

Ekspor konten tingkat alur kerja

Untuk Nextflow v25.10 dan yang lebih baru, Anda dapat mengekspor file yang dihasilkan di luar tugas individual, seperti laporan asal atau DAG pipeline. Untuk mengekspor file-file ini, tulis ke/mnt/workflow/output/. HealthOmics mengekspor file yang ditempatkan di direktori ini ke output/ awalan di lokasi keluaran Amazon S3 Anda.

Contoh berikut menunjukkan cara mengkonfigurasi nf-prov plugin untuk menulis laporan asal. /mnt/workflow/output/

prov { formats { bco { file = "/mnt/workflow/output/pipeline_info/manifest.bco.json" } } }

Anda juga dapat meneruskan jalur ini sebagai parameter dalam input JSON run Anda. Pendekatan ini umum dengan alur kerja nf-core yang menggunakan. params.outdir

{ "outdir": "/mnt/workflow/output/" }

Ekspor konten tugas

Untuk alur kerja yang ditulis dalam Nextflow, tentukan direktif PublishDir untuk meng ekspor konten tugas ke bucket Amazon S3 keluaran Anda. Seperti yang ditunjukkan pada contoh berikut, atur nilai PublishDir ke. /mnt/workflow/pubdir Untuk mengekspor file ke Amazon S3, file harus ada di direktori ini.

nextflow.enable.dsl=2 workflow { CramToBamTask(params.ref_fasta, params.ref_fasta_index, params.ref_dict, params.input_cram, params.sample_name) ValidateSamFile(CramToBamTask.out.outputBam) } process CramToBamTask { container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud" publishDir "/mnt/workflow/pubdir" input: path ref_fasta path ref_fasta_index path ref_dict path input_cram val sample_name output: path "${sample_name}.bam", emit: outputBam path "${sample_name}.bai", emit: outputBai script: """ set -eo pipefail samtools view -h -T $ref_fasta $input_cram | samtools view -b -o ${sample_name}.bam - samtools index -b ${sample_name}.bam mv ${sample_name}.bam.bai ${sample_name}.bai """ } process ValidateSamFile { container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud" publishDir "/mnt/workflow/pubdir" input: file input_bam output: path "validation_report" script: """ java -Xmx3G -jar /usr/gitc/picard.jar \ ValidateSamFile \ INPUT=${input_bam} \ OUTPUT=validation_report \ MODE=SUMMARY \ IS_BISULFITE_SEQUENCED=false """ }

Untuk Nextflow v25.10 dan yang lebih baru, sebagai alternatifpublishDir, Anda dapat menggunakan output alur kerja untuk mengekspor konten tugas. Contoh berikut menunjukkan cara menentukan output blok alur kerja yang mengekspor hasil tugas ke Amazon S3.

process myTask { input: val data output: path 'result.txt' script: """ echo ${data} > result.txt """ } workflow { main: output_file = myTask('hello') publish: results = output_file } output { results { path '.' } }

Untuk informasi selengkapnya tentang output alur kerja, lihat Out put alur kerja di dokumentasi Nextflow.

Hasilkan laporan eksekusi Nextflow

Nextflow dapat menghasilkan empat laporan bawaan untuk setiap proses: laporan eksekusi (report), timeline (timeline), file jejak (trace), dan diagram alur kerja (dag). HealthOmics Untuk mengekspor file-file ini ke lokasi output Amazon S3 yang Anda jalankan, konfigurasikan masing-masing file untuk menulis outputnya /mnt/workflow/output/ di bawah nextflow.config file Anda:

report { enabled = true file = '/mnt/workflow/output/report.html' overwrite = true } timeline { enabled = true file = '/mnt/workflow/output/timeline.html' overwrite = true } trace { enabled = true file = '/mnt/workflow/output/trace.txt' overwrite = true } dag { enabled = true file = '/mnt/workflow/output/dag.html' overwrite = true }

HealthOmics mengekspor file yang ditulis di bawah /mnt/workflow/output/ output/ ke awalan di lokasi keluaran Amazon S3 Anda. Untuk informasi selengkapnya tentang jalur ekspor ini, lihatEkspor konten tingkat alur kerja. Laporan yang ditulis di luar tidak /mnt/workflow/output/ diekspor ke lokasi output Amazon S3 yang Anda jalankan.

Wadah tugas harus menyertakan ps

Ketikareport,timeline, atau trace laporan diaktifkan, Nextflow mengumpulkan metrik per tugas dengan memanggil ps di dalam setiap wadah tugas. Gambar wadah yang Anda tentukan dengan direk container tif harus menyertakan ps perintah. Pada sebagian besar distribusi Linux, instal dengan paket procps (Debian/Ubuntu) atau procps-ng (Amazon Linux, Red Hat, Fedora). Jika proses tidak mendeklarasikan container direktif, HealthOmics jalankan tugas dalam wadah default yang sudah termasukps.

Format diagram alur kerja

dagLaporan ini mendukung beberapa format output, dipilih oleh ekstensidag.file. Format HTML, Mermaid, dan DOT dirender langsung oleh Nextflow dan tidak memerlukan perkakas tambahan. Format PDF, PNG, dan SVG memerlukan Graphviz, yang tidak termasuk dalam HealthOmics mesin Nextflow. Jika dag.file disetel ke jalur PDF, PNG, atau SVG, Nextflow mencatat peringatan dan menulis diagram alur kerja sebagai file .dot sumber sebagai gantinya; proses masih berhasil diselesaikan. Sebaiknya set dag.file el ke .dot jalur .html.mmd,, atau untuk menghindari peringatan dan menghasilkan format yang diminta.

Tentukan versi sintaks Nextflow

Nextflow v26.04.0 menggunakan parser sintaks ketat (v2) secara default. Ini adalah perubahan besar untuk alur kerja yang ditulis menggunakan sintaks lama (v1), yang merupakan default di Nextflow v25.10.0 dan sebelumnya. Untuk informasi tentang sintaks v2, lihat Sintaks ketat dalam dokumentasi Seqera Nextflow.

Untuk menjalankan alur kerja yang ditulis terhadap parser lama (v1), setel engineSettings.syntaxVersion ke v1 dalam permintaan: StartRun

{ "engineSettings": { "syntaxVersion": "v1" } }

Untuk Nextflow v25.10.0 dan sebelumnya, HealthOmics tidak mendukung parser v2.

Validasi sintaks otomatis selama pembuatan alur kerja

HealthOmics secara otomatis menjalankan linter DSL2 ketat bawaan Nextflow (nf-lang/v2) saat Anda membuat atau memperbarui alur kerja DSL2 Nextflow. Linter ini berjalan selama CreateWorkflow danCreateWorkflowVersion. Ini berlaku untuk semua versi DSL2 yang didukung (v22.04, v23.10, v24.10, v25.10, dan v26.04). Alur kerja DSL1 tidak berserat.

Linter beroperasi dalam mode non-pemblokiran. Temuan Lint tidak mencegah alur kerja menjadi AKTIF. Temuan muncul sebagai JSON terstruktur di statusMessage bidang GetWorkflow respons.

catatan

Linter bawaan memvalidasi sintaks definisi alur kerja Anda pada waktu pembuatan. Ini berbeda dari parser sintaks ketat yang tersedia untuk Nextflow v26.04, yang dikendalikan oleh engineSettings.syntaxVersion dan memengaruhi perilaku runtime. Linter memeriksa sintaks di semua versi DSL2 pada waktu pembuatan, terlepas dari parser mana yang digunakan alur kerja saat runtime. Pada Nextflow v22.04, v23.10, dan v24.10 (tata bahasa lawas), temuan bersifat nasihat. Pada Nextflow v25.10 dan v26.04, temuan mencerminkan persyaratan sintaks mode yang ketat.

Untuk informasi selengkapnya tentang format keluaran lint dan cara mengatasi temuan, lihatPengaruh alur kerja di HealthOmics.

Menggunakan penyimpanan gores secara efisien di Nextflow

Arahan Nextflow scratch mengontrol di mana suatu proses menulis file kerja sementara. Saat penyimpanan sementara diaktifkan (scratchStorageMode: LOCAL), gunakan direktif untuk mengar scratch ahkan goresan I/O ke volume lokal cepat di. /tmp

Tabel berikut menjelaskan nilai direktif yang scratch didukung dan perilakunya di HealthOmics:

Nilai Perilaku di HealthOmics Rekomendasi
scratch true Kegun $TMPDIR aan. Scratch I/O diarahkan ke volume fana lokal ketika scratchStorageMode ada. LOCAL Disarankan
scratch '/some/path' Menggunakan jalur literal yang ditentukan sebagai direktori scratch. Untuk menggunakan penyimpanan sementara, atur jalur ke /tmp atau subdirektori. /tmp Jalur harus ada di wadah dan dapat ditulis. Bekerja saat jalur berada di bawah /tmp
scratch 'ram-disk' Upaya untuk menggunakan /dev/shm (tmpfs dalam RAM). Ini tidak disarankan untuk penyimpanan gores lokal di HealthOmics. Tidak direkomendasikan

Pendekatan yang disarankan adalah mengatur scratch true definisi proses Anda, yang secara otomatis menggunakan $TMPDIR dan tidak memerlukan konfigurasi jalur:

process my_process { scratch true disk '200 GB' script: """ my-tool --input ${input} --output ${output} """ }

Untuk informasi lebih lanjut tentang penyimpanan sementara dan arahan, disk lihat. Penyimpanan sementara untuk tugas alur kerja HealthOmics

Catatan rilis Nextflow v26.04

Tabel berikut merangkum HealthOmics dukungan untuk fitur baru, penyempurnaan, dan penghentian yang dirilis di Nextflow versi 26.04.

Fitur dan penyempurnaan baru

Fitur Dari versi HealthOmics dukungan Catatan
Parser sintaks yang ketat (default) 26.04 Ya Diaktifkan secara default dari v26.04. Parser lama tersedia melalui syntaxVersion: "v1" pengaturan mesin.
Jenis rekaman 26.04 Ya Untuk informasi selengkapnya, lihat Catatan dalam dokumentasi Seqera Nextflow.
Ringkasan keluaran alur kerja 26.04 Ya Mencetak ringkasan output alur kerja saat proses selesai. Format output dapat dikonfigurasi melalui outputFormat pengaturan mesin. Untuk informasi selengkapnya, lihat Tentukan pengaturan mesin Nextflow.
Mode pencatatan agen 26.04 Ya Dapat dikonfigurasi melalui agentMode pengaturan mesin. Untuk informasi selengkapnya, lihat Tentukan pengaturan mesin Nextflow.
Sistem modul (Nextflow Registry) 26.04 Tidak HealthOmics alur kerja berjalan di jaringan terisolasi tanpa akses internet keluar. Anda dapat menyertakan modul langsung di zip alur kerja Anda.
Pengetikan statis (pratinjau) 26.04 Tidak HealthOmics tidak mendukung fitur pratinjau.
Auto-load koleksi parameter dari file 26.04 Tidak Membutuhkan pengetikan statis (pratinjau), yang HealthOmics tidak mendukung.
Multi-revision checkout saluran pipa 26.04 N/A Tidak berlaku. HealthOmics tidak menggunakan checkout Git-based pipeline.

Penghentian

Item yang tidak digunakan lagi Dari versi Dampak Tindakan yang disarankan
Metode listFiles() 26.04 Peringatan penghentian Ganti denganlistDirectory().
nextflow.enable.strictbendera 26.04 Tidak lagi dibutuhkan Hapus dari konfigurasi. Mode ketat sekarang menjadi default.
manifest.defaultBranch 26.04 Tidak lagi dibutuhkan Hapus dari konfigurasi. HealthOmics tidak menggunakan checkout Git-based pipeline dan tidak pernah mendukung opsi ini.