Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Spesifikasi definisi alur kerja alur berikutnya
HealthOmics mendukung DSL1 Nextflow dan. DSL2 Lihat perinciannya di Dukungan versi Nextflow.
Nextflow DSL2 didasarkan pada bahasa pemrograman Groovy, sehingga parameternya dinamis dan pemaksaan tipe dimungkinkan menggunakan aturan yang sama seperti Groovy. Parameter dan nilai yang disediakan oleh input JSON tersedia di parameter (params) peta alur kerja.
Topik
Gunakan plugin nf-schema dan nf-validation
catatan
Ringkasan HealthOmics dukungan untuk plugin:
v22.04 - tidak ada dukungan untuk plugin
v23.10 — mendukung dan
nf-schemanf-validationv24.10 - mendukung
nf-schema
HealthOmics menyediakan dukungan berikut untuk plugin Nextflow:
-
Untuk Nextflow v23.10, HealthOmics pra-instal plugin nf-validation @1 .1.1.
-
Untuk Nextflow v23.10 dan yang lebih baru, HealthOmics pra-instal plugin nf-schema @2 .3.0.
-
Anda tidak dapat mengambil plugin tambahan selama menjalankan alur kerja. 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 skema nf di repositoriNextflow. GitHub
Tentukan penyimpanan URIs
Ketika Amazon S3 atau HealthOmics URI digunakan untuk membuat file atau objek jalur Nextflow, itu membuat objek yang cocok tersedia untuk alur kerja, selama akses baca diberikan. Penggunaan awalan atau direktori diizinkan untuk Amazon S3. URIs Sebagai contoh, lihat Format parameter masukan Amazon S3.
HealthOmics mendukung penggunaan pola gumpalan di Amazon URIs S3 HealthOmics atau Penyimpanan. URIs Gunakan pola Glob dalam definisi alur kerja untuk pembuatan path atau file saluran.
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.
-
Selektor khusus tugas dalam file konfigurasi.
Topik
Strategi coba lagi tugas menggunakan errorStrategy
Gunakan errorStrategy arahan untuk menentukan strategi kesalahan tugas. Secara default, ketika tugas kembali dengan indikasi kesalahan (status keluar bukan nol), tugas berhenti dan HealthOmics mengakhiri seluruh proses. Jika Anda menyetel errorStrategy keretry, HealthOmics coba satu coba lagi tugas yang gagal. Untuk menambah jumlah percobaan ulang, lihatUpaya coba lagi 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 lagi tugas menggunakan maxRetries
Secara default, HealthOmics tidak mencoba mencoba ulang tugas yang gagal, atau mencoba satu percobaan lagi jika Anda mengonfigurasi. errorStrategy Untuk meningkatkan jumlah percobaan ulang maksimum, atur errorStrategy ke retry dan konfigurasikan jumlah maksimum percobaan ulang menggunakan arahanmaxRetries.
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 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 pemilih nama atau label.
process { withLabel: 'my_label' { errorStrategy = 'retry' maxRetries = 3 } withName: 'myTask' { errorStrategy = 'retry' maxRetries = 3 } }
Menyisih dari tugas coba lagi menggunakan omicsRetryOn5xx
Untuk Nextflow v23 dan v24, HealthOmics mendukung percobaan ulang tugas jika tugas gagal karena kesalahan layanan (kode status HTTP 5XX). Secara default, HealthOmics mencoba hingga dua percobaan ulang 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 mengkonfigurasi omicsRetryOn5xx dalam konfigurasi global untuk memilih keluar dari tugas coba lagi.
process { omicsRetryOn5xx = false }
Contoh berikut menunjukkan cara mengkonfigurasi omicsRetryOn5xx di bagian tugas definisi alur kerja.
process myTask { label 'my_label' omicsRetryOn5xx = false script: """ your-command-here """ }
Contoh berikut menunjukkan cara menyetel omicsRetryOn5xx konfigurasi khusus tugas dalam file konfigurasi Nextflow, berdasarkan pemilih nama atau label.
process { withLabel: 'my_label' { omicsRetryOn5xx = false } withName: 'myTask' { omicsRetryOn5xx = false } }
Durasi tugas menggunakan time direktif
HealthOmics menyediakan kuota yang dapat disesuaikan (lihatHealthOmics kuota layanan) untuk menentukan durasi maksimum untuk menjalankan. Untuk alur kerja Nextflow v23 dan v24, Anda juga dapat menentukan durasi tugas maksimum menggunakan direktif Nextflow. time
Selama pengembangan alur kerja baru, menyetel durasi tugas maksimum membantu Anda menangkap tugas runaway dan tugas yang berjalan lama.
Untuk informasi selengkapnya tentang direktif waktu Nextflow, lihat direktif waktu
HealthOmics memberikan dukungan berikut untuk arahan waktu Nextflow:
-
HealthOmics mendukung granularitas 1 menit untuk arahan waktu. Anda dapat menentukan nilai antara 60 detik dan nilai durasi lari maksimum.
-
Jika Anda memasukkan nilai kurang dari 60, HealthOmics bulatkan hingga 60 detik. Untuk nilai di atas 60, HealthOmics bulatkan ke menit terdekat.
-
Jika alur kerja mendukung percobaan ulang untuk tugas, HealthOmics coba ulang tugas jika waktu habis.
-
Jika tugas habis waktu (atau waktu coba lagi terakhir habis), HealthOmics batalkan tugas. Operasi ini dapat memiliki durasi satu hingga dua menit.
-
Pada batas waktu tugas, HealthOmics menetapkan status run dan task menjadi gagal, dan membatalkan tugas lain dalam proses (untuk tugas dalam status Mulai, Pending, atau Running). HealthOmics mengekspor output dari tugas yang diselesaikan sebelum batas waktu ke lokasi output S3 yang Anda tentukan.
-
Waktu yang dihabiskan tugas dalam status tertunda tidak dihitung terhadap durasi tugas.
-
Jika run adalah bagian dari grup run dan grup run habis lebih cepat dari pengatur waktu tugas, proses dan tugas akan beralih ke status gagal.
Tentukan durasi batas waktu menggunakan satu atau beberapa unit berikut:ms,,s, mh, ataud.
Contoh berikut menunjukkan cara menentukan konfigurasi global dalam file konfigurasi Nextflow. Ini menetapkan batas waktu global 1 jam dan 30 menit.
process { time = '1h30m' }
Contoh berikut menunjukkan cara menentukan direktif waktu di bagian tugas definisi alur kerja. Contoh ini menetapkan batas waktu 3 hari, 5 jam, dan 4 menit. Nilai ini lebih diutamakan daripada nilai global dalam file konfigurasi, tetapi tidak diutamakan daripada arahan waktu khusus tugas untuk dalam file konfigurasi. my_label
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 pemilih nama atau 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 ini lebih diutamakan daripada nilai global dan nilai dalam definisi alur kerja.
process { time = '30m' withLabel: 'my_label' { time = '3h' } withName: 'myTask' { time = '2h' } }
Ekspor konten tugas
Untuk alur kerja yang ditulis dalam Alur Berikutnya, tentukan direktif PublishDir untuk mengekspor 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 """ }