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.
Topik
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-schemanf-validationv24.10 - mendukung
nf-schemav25.10, v26.04 - mendukung
nf-schema,,, dannf-core-utilsnf-fgbionf-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.configfile. -
Untuk Nextflow v24 dan yang lebih tinggi,
nf-schemaadalah versi baru dari plugin yang tidak digunakan lagi.nf-validationUntuk informasi selengkapnya, lihat nf-schemadi 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:
-
Konfigurasi global dalam file konfigurasi.
-
Bagian tugas dari definisi alur kerja.
-
Task-specific pemilih dalam file konfigurasi.
Topik
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
HealthOmics memberikan dukungan berikut untuk direktif waktu Nextflow:
-
HealthOmics mendukung granularitas 1 menit untuk direktif waktu. Anda dapat menentukan nilai antara 60 detik dan nilai durasi berjalan maksimum.
-
Jika Anda memasukkan nilai kurang dari 60, HealthOmics bulatkan hingga 60 detik. Untuk nilai di atas 60, HealthOmics bulatkan ke bawah ke menit terdekat.
-
Jika alur kerja mendukung percobaan ulang untuk tugas, coba HealthOmics lagi tugas jika waktunya habis.
-
Jika waktu tugas habis (atau waktu percobaan ulang terakhir habis), tugas akan HealthOmics dibatalkan. Operasi ini dapat memiliki durasi satu hingga dua menit.
-
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.
-
Waktu yang dihabiskan tugas dalam status tertunda tidak dihitung dalam durasi tugas.
-
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-idworkflow-id\ --role-arnrole-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,
includeConfigpernyataan, 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
standardprofil 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.nextflowVersionuntuk 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
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
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 |
| 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. |