Spesifikasi definisi alur kerja alur berikutnya - 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 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.

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-schema nf-validation

  • v24.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.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 skema nf di repositori Nextflow. 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:

  1. Konfigurasi global dalam file konfigurasi.

  2. Bagian tugas dari definisi alur kerja.

  3. Selektor khusus tugas dalam file konfigurasi.

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 di referensi Nextflow.

HealthOmics memberikan dukungan berikut untuk arahan waktu Nextflow:

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

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

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

  4. Jika tugas habis waktu (atau waktu coba lagi terakhir habis), HealthOmics batalkan tugas. Operasi ini dapat memiliki durasi satu hingga dua menit.

  5. 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.

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

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