

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
<a name="workflow-definition-nextflow"></a>

HealthOmics mendukung Nextflow DSL1 dan DSL2. Lihat perinciannya di [Dukungan versi Nextflow](workflows-lang-versions.md#workflows-lang-versions-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.

**Topics**
+ [Gunakan plugin nf-schema dan nf-validation](#schema-and-validation-plugins-nextflow)
+ [Tentukan URI penyimpanan](#storage-uris-nextflow)
+ [Arahan Nextflow](#workflow-nexflow-directives)
+ [Gunakan profil Nextflow](#nextflow-profiles)
+ [Ekspor konten tingkat alur kerja](#exporting-workflow-content-nextflow)
+ [Ekspor konten tugas](#exporting-task-content-nextflow)
+ [Tentukan versi sintaks Nextflow](#nextflow-syntax-version)
+ [Catatan rilis Nextflow v26.04](#nextflow-v26-release-notes)

## Gunakan plugin nf-schema dan nf-validation
<a name="schema-and-validation-plugins-nextflow"></a>

**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 - mendukung`nf-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-validation @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 skema nf @2 .6.1, nf-core-utils @0 .4.0, nf-prov @1 .7.0, dan plugin nf-fgbio @1 .0.1.
+ Untuk Nextflow v26.04, HealthOmics pra-instal skema nf @2 .7.2, nf-core-utils @0 .4.0, nf-prov @1 .7.0, dan plugin nf-fgbio @1 .0.1.
+ 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](https://github.com/nextflow-io/nf-schema) Nextflow. GitHub

## Tentukan URI penyimpanan
<a name="storage-uris-nextflow"></a>

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 URI Amazon S3. Sebagai contoh, lihat [Format parameter masukan Amazon S3](workflows-run-inputs.md#s3-run-input-formats). 

HealthOmics sebagian mendukung penggunaan pola glob di URI Amazon S3 atau URI Penyimpanan HealthOmics . Gunakan pola Glob dalam definisi alur kerja untuk pembuatan `path` atau `file` saluran. Untuk perilaku yang diharapkan dan kasus yang tepat, lihat[Nextflow Penanganan pola Glob di input Amazon S3](workflows-run-inputs.md#wd-nextflow-s3-formats).

## Arahan Nextflow
<a name="workflow-nexflow-directives"></a>

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.

1. Bagian tugas dari definisi alur kerja.

1. Task-specific penyeleksi dalam file konfigurasi.

**Topics**
+ [`Strategi coba lagi tugas menggunakan ErrorStrategy`](#workflow-nextflow-errorStrategy)
+ [`Upaya coba lagi tugas menggunakan maxRetries`](#workflow-nexflow-task-retry)
+ [Menyisih dari tugas coba lagi menggunakan `omics 5xx RetryOn`](#workflow-nextflow-retry-5xx)
+ [Durasi tugas menggunakan `direktif waktu`](#time-directive-nextflow)

### `Strategi coba lagi tugas menggunakan ErrorStrategy`
<a name="workflow-nextflow-errorStrategy"></a>

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` ke`retry`, HealthOmics coba satu coba lagi tugas yang gagal. Untuk menambah jumlah percobaan ulang, lihat[`Upaya coba lagi tugas menggunakan maxRetries`](#workflow-nexflow-task-retry).

```
process {
    label 'my_label'
    errorStrategy 'retry'

    script:
    """
    your-command-here
    """
}
```

Untuk informasi tentang cara HealthOmics menangani percobaan ulang tugas selama proses, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

### `Upaya coba lagi tugas menggunakan maxRetries`
<a name="workflow-nexflow-task-retry"></a>

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 arahan`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 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 `omics 5xx RetryOn`
<a name="workflow-nextflow-retry-5xx"></a>

Untuk Nextflow v23 dan versi lebih baru, 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, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

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 `direktif waktu`
<a name="time-directive-nextflow"></a>

HealthOmics menyediakan kuota yang dapat disesuaikan (lihat[HealthOmics kuota layanan](service-quotas.md)) untuk menentukan durasi maksimum untuk menjalankan. Untuk alur kerja Nextflow v23 dan yang lebih baru, 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](https://www.nextflow.io/docs/latest/reference/process.html#process-time) 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.

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

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

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

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

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

1. 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`, `m``h`, atau`d`.

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 label`my_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'  
    }
}
```

## Gunakan profil Nextflow
<a name="nextflow-profiles"></a>

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 proses, tentukan satu atau lebih profil menggunakan `engineSettings` parameter. HealthOmics meneruskan `-profile` bendera ke mesin Nextflow. Untuk informasi selengkapnya, lihat [Tentukan pengaturan mesin](starting-a-run.md#start-run-api-engine-settings).

```
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 yang sebelumnya untuk pengaturan yang bertentangan. Untuk versi Nextflow yang lebih rendah dari 26, profil diterapkan dalam urutan yang ditentukan dalam file konfigurasi, bukan 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 (termasuk). `manifest.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 didefinisikan 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, run menggunakan konfigurasi default (tingkat atas).
+ Saat menggunakan profil, kami sarankan menyematkan versi Nextflow dalam definisi alur kerja Anda `manifest.nextflowVersion` untuk memastikan perilaku aplikasi profil yang konsisten di seluruh proses.

## Ekspor konten tingkat alur kerja
<a name="exporting-workflow-content-nextflow"></a>

Untuk Nextflow v25.10 dan versi 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 run 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 melewati jalur ini sebagai parameter dalam input JSON run Anda. Pendekatan ini umum terjadi pada alur kerja nf-core yang digunakan. `params.outdir`

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

## Ekspor konten tugas
<a name="exporting-task-content-nextflow"></a>

Untuk alur kerja yang ditulis dalam Nextflow, 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
    """
  }
```

Untuk Nextflow v25.10 dan yang lebih baru, sebagai alternatif`publishDir`, 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 Output [alur kerja dalam dokumentasi Alur Berikutnya](https://www.nextflow.io/docs/latest/workflow.html#workflow-output-def).

## Tentukan versi sintaks Nextflow
<a name="nextflow-syntax-version"></a>

Nextflow v26.04.0 menggunakan parser sintaks ketat (v2) secara default. Ini adalah perubahan besar untuk alur kerja yang ditulis menggunakan sintaks legacy (v1), yang merupakan default di Nextflow v25.10.0 dan sebelumnya. Untuk informasi tentang sintaks v2, lihat [Sintaks ketat](https://docs.seqera.io/nextflow/strict-syntax) dalam dokumentasi Seqera Nextflow.

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

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

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

## Catatan rilis Nextflow v26.04
<a name="nextflow-v26-release-notes"></a>

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

### Fitur dan penyempurnaan baru
<a name="nextflow-v26-new-features"></a>


| Fitur | Dari versi | HealthOmics dukungan | Catatan | 
| --- | --- | --- | --- | 
| Pengurai sintaks yang ketat (default) | 26.04 | Ya | Diaktifkan secara default dari v26.04. Parser lama tersedia melalui pengaturan syntaxVersion: "v1" mesin. | 
| Jenis rekaman | 26.04 | Ya | Untuk informasi selengkapnya, lihat [Catatan](https://docs.seqera.io/nextflow/script#records) dalam dokumentasi Seqera Nextflow. | 
| Ringkasan keluaran alur kerja | 26.04 | Ya | Mencetak ringkasan output alur kerja pada penyelesaian proses. Format output dapat dikonfigurasi melalui outputFormat pengaturan mesin. Untuk informasi selengkapnya, lihat [Tentukan pengaturan mesin](starting-a-run.md#start-run-api-engine-settings). | 
| Mode pencatatan agen | 26.04 | Ya | Dapat dikonfigurasi melalui agentMode pengaturan mesin. Untuk informasi selengkapnya, lihat [Tentukan pengaturan mesin](starting-a-run.md#start-run-api-engine-settings). | 
| 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 Params koleksi dari file | 26.04 | Tidak | Membutuhkan pengetikan statis (pratinjau), yang HealthOmics tidak mendukung. | 
| Multi-revision saluran pipa checkout | 26.04 | N/A | Tidak berlaku. HealthOmics tidak menggunakan Git-based pipeline checkout. | 

### Penghentian
<a name="nextflow-v26-deprecations"></a>


| Item usang | 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 Git-based pipeline checkout dan tidak pernah mendukung opsi ini. | 