View a markdown version of this page

Nextflow ワークフロー定義の詳細 - AWS HealthOmics

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Nextflow ワークフロー定義の詳細

HealthOmics は Nextflow DSL1 と DSL2 をサポートしています。詳細については、「Nextflow バージョンのサポート」を参照してください。

Nextflow DSL2 は Groovy プログラミング言語に基づいているため、パラメータは動的であり、型強制は Groovy と同じルールを使用して可能です。入力 JSON によって提供されるパラメータと値は、ワークフローのパラメータ (params) マップで使用できます。

nf-schema プラグインと nf-validation プラグインを使用する

注記

プラグインの HealthOmics サポートの概要:

  • v22.04 – プラグインのサポートなし

  • v23.10 – と をサポート nf-schema nf-validation

  • v24.10 – をサポート nf-schema

  • v25.10、v26.04 – nf-schemanf-core-utilsnf-fgbio、および をサポート nf-prov

HealthOmics は Nextflow プラグインに対して次のサポートを提供します。

  • Nextflow v23.10 の場合、HealthOmics は nf-validation@1.1.1 プラグインをプリインストールします。

  • Nextflow v23.10 および v24.10 の場合、HealthOmics は nf-schema@2.3.0 プラグインをプリインストールします。

  • Nextflow v25.10 の場合、HealthOmics は nf-schema@2.6.1、nf-core-utils@0.4.0、nf-prov@1.7.0、および nf-fgbio@1.0.1 プラグインをプリインストールします。

  • Nextflow v26.04 の場合、HealthOmics は nf-schema@2.7.2、nf-core-utils@0.4.0、nf-prov@1.7.0、および nf-fgbio@1.0.1 プラグインをプリインストールします。

  • ワークフローの実行中に追加のプラグインを取得することはできません。HealthOmics は、 nextflow.config ファイルで指定した他のプラグインバージョンを無視します。

  • Nextflow v24 以降では、 nf-schemaは廃止されたnf-validationプラグインの新しいバージョンです。詳細については、Nextflow GitHub リポジトリの「nf-schema」を参照してください。

ストレージ URIs

Amazon S3 または HealthOmics URI を使用して Nextflow ファイルまたはパスオブジェクトを作成すると、読み取りアクセスが付与されている限り、一致するオブジェクトがワークフローで使用できるようになります。Amazon S3 URIs では、プレフィックスまたはディレクトリを使用できます。例については、Amazon S3 入力パラメータ形式 を参照してください。

HealthOmics は、Amazon S3 URI または HealthOmics Storage URI での glob URIs。 URIs HealthOmics ワークフロー定義で Glob パターンを使用して、 pathまたは fileチャネルを作成します。予想される動作と正確なケースについては、「」を参照してくださいNextflow Amazon S3 入力での Glob パターンの処理

Nextflow ディレクティブ

Nextflow ディレクティブは、Nextflow 設定ファイルまたはワークフロー定義で設定します。次のリストは、HealthOmics が構成設定を適用するために使用する優先順位を、優先順位の低いものから最も高いものまで示しています。

  1. 設定ファイルのグローバル設定。

  2. ワークフロー定義のタスクセクション。

  3. 設定ファイル内のタスク固有のセレクタ。

を使用したタスク再試行戦略 errorStrategy

errorStrategy ディレクティブを使用して、タスクエラーの戦略を定義します。デフォルトでは、タスクがエラー表示 (ゼロ以外の終了ステータス) で戻ると、タスクは停止し、HealthOmics は実行全体を終了します。errorStrategy を に設定するとretry、HealthOmics は失敗したタスクを 1 回再試行します。再試行回数を増やすには、「」を参照してくださいを使用したタスクの再試行 maxRetries

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

HealthOmics が実行中にタスクの再試行を処理する方法については、「」を参照してくださいタスクの再試行

を使用したタスクの再試行 maxRetries

デフォルトでは、HealthOmics は失敗したタスクの再試行を試行しないか、 を設定すると 1 回の再試行を試行しますerrorStrategy。最大再試行回数を増やすには、 errorStrategyを に設定retryし、 maxRetriesディレクティブを使用して最大再試行回数を設定します。

次の例では、グローバル設定で最大再試行回数を 3 に設定します。

process { errorStrategy = 'retry' maxRetries = 3 }

次の例は、ワークフロー定義のタスクセクションmaxRetriesで を設定する方法を示しています。

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

次の例は、名前またはラベルセレクタに基づいて、Nextflow 設定ファイルでタスク固有の設定を指定する方法を示しています。

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

を使用してタスクの再試行をオプトアウトする omicsRetryOn5xx

Nextflow v23 以降では、サービスエラー (5XX HTTP ステータスコード) が原因でタスクが失敗した場合、HealthOmics はタスクの再試行をサポートします。デフォルトでは、HealthOmics は失敗したタスクを最大 2 回再試行します。

サービスエラーのタスク再試行をオプトアウトomicsRetryOn5xxするように を設定できます。HealthOmics でのタスクの再試行の詳細については、「」を参照してくださいタスクの再試行

次の例では、タスクの再試行をオプトアウトするように グローバル設定omicsRetryOn5xxで を設定します。

process { omicsRetryOn5xx = false }

次の例は、ワークフロー定義のタスクセクションomicsRetryOn5xxで を設定する方法を示しています。

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

次の例は、名前またはラベルセレクタに基づいて、Nextflow 設定ファイルでタスク固有の設定omicsRetryOn5xxとして を設定する方法を示しています。

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

time ディレクティブを使用したタスク期間

HealthOmics には、実行の最大期間を指定するための調整可能なクォータが用意されています (「」を参照HealthOmics サービスクォータ)。Nextflow v23 以降のワークフローでは、Nextflow timeディレクティブを使用して最大タスク期間を指定することもできます。

新しいワークフロー開発中に最大タスク期間を設定すると、実行可能なタスクと長時間実行されるタスクをキャッチするのに役立ちます。

Nextflow 時間ディレクティブの詳細については、Nextflow リファレンスの「時間ディレクティブ」を参照してください。

HealthOmics は、Nextflow 時間ディレクティブに対して次のサポートを提供します。

  1. HealthOmics は、タイムディレクティブの 1 分の詳細度をサポートします。60 秒から最大実行期間値までの値を指定できます。

  2. 60 未満の値を入力すると、HealthOmics はそれを 60 秒に切り上げます。60 を超える値の場合、HealthOmics は最も近い分に切り下げます。

  3. ワークフローがタスクの再試行をサポートしている場合、HealthOmics はタイムアウトするとタスクを再試行します。

  4. タスクがタイムアウト (または最後の再試行がタイムアウト) すると、HealthOmics はタスクをキャンセルします。このオペレーションの期間は 1~2 分です。

  5. タスクのタイムアウト時に、HealthOmics は実行とタスクのステータスを失敗に設定し、実行中の他のタスク (開始中、保留中、または実行中のステータスのタスクの場合) をキャンセルします。HealthOmics は、タイムアウト前に完了したタスクから指定された S3 出力場所に出力をエクスポートします。

  6. タスクが保留中のステータスに費やした時間は、タスク期間にはカウントされません。

  7. 実行が実行グループの一部であり、実行グループがタスクタイマーよりも早くタイムアウトした場合、実行とタスクは失敗したステータスに移行します。

タイムアウト期間は、、ms、、mhまたは の 1 sつ以上の単位を使用して指定しますd

次の例は、Nextflow 設定ファイルでグローバル設定を指定する方法を示しています。グローバルタイムアウトを 1 時間 30 分に設定します。

process { time = '1h30m' }

次の例は、ワークフロー定義のタスクセクションでタイムディレクティブを指定する方法を示しています。この例では、タイムアウトを 3 日、5 時間、4 分に設定します。この値は、設定ファイルのグローバル値よりも優先されますが、設定ファイルmy_label内の のタスク固有の時間ディレクティブよりも優先されません。

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

次の例は、名前またはラベルセレクタに基づいて、Nextflow 設定ファイルでタスク固有の時間ディレクティブを指定する方法を示しています。この例では、グローバルタスクのタイムアウト値を 30 分に設定します。タスクの値は 2 時間に設定myTaskし、ラベルが のタスクの値は 3 時間に設定しますmy_label。セレクターに一致するタスクの場合、これらの値はグローバル値とワークフロー定義の値よりも優先されます。

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

Nextflow プロファイルを使用する

Nextflow プロファイルは、実行時に選択できる設定の名前付きセットです。nextflow.config ファイルの profilesブロックでプロファイルを定義します。

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

実行を開始するときは、 engineSettingsパラメータを使用して 1 つ以上のプロファイルを指定します。HealthOmics は Nextflow エンジンに -profileフラグを渡します。詳細については、「エンジン設定の指定」を参照してください。

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

複数のプロファイルが指定されている場合 ( など"test,docker")、Nextflow はコマンドラインで指定された順序でプロファイルを適用します。後のプロファイルは、競合する設定の以前のプロファイルを上書きします。26 より前の Nextflow バージョンでは、プロファイルはコマンドライン順ではなく設定ファイルで定義されている順序で適用されます。

次の点に注意してください。

  • プロファイルのサポートは、サポートされているすべての HealthOmics Nextflow バージョンで利用できます。

  • プロファイルには、パラメータ、プロセスディレクティブ、includeConfigステートメント、マニフェストオーバーライド ( を含むmanifest.nextflowVersion) を含めることができます。

  • 明示的な実行パラメータは、プロファイル定義のパラメータ値よりも優先されます。

  • 存在しないプロファイルを指定すると、HealthOmics は検証エラーを返します。

  • プロファイルは、ワークフロー定義 zip ファイルで定義する必要があります。HealthOmics は、外部ソースからのプロファイル定義の取得をサポートしていません。

  • プロファイルを指定しない場合、ワークフロー定義のstandardプロファイルで定義されている場合、実行はプロファイルを使用します。それ以外の場合、実行はデフォルトの (最上位) 設定を使用します。

  • プロファイルを使用する場合は、 を使用してワークフロー定義で Nextflow バージョンを固定manifest.nextflowVersionし、実行間で一貫したプロファイルアプリケーション動作を確保することをお勧めします。

ワークフローレベルのコンテンツをエクスポートする

Nextflow v25.10 以降では、出所レポートやパイプライン DAGs など、個々のタスクの外部で生成されたファイルをエクスポートできます。これらのファイルをエクスポートするには、 に書き込みます/mnt/workflow/output/。HealthOmics は、このディレクトリに配置されたファイルを、実行の Amazon S3 出力場所の output/ プレフィックスにエクスポートします。

次の例は、 に出典レポートを書き込むようにnf-provプラグインを設定する方法を示しています/mnt/workflow/output/

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

このパスは、実行の入力 JSON のパラメータとして渡すこともできます。このアプローチは、 を使用する nf-core ワークフローで一般的ですparams.outdir

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

タスクコンテンツのエクスポート

Nextflow で記述されたワークフローの場合、タスクコンテンツを出力 Amazon S3 バケットにエクスポートする publishDir ディレクティブを定義します。次の例に示すように、publishDir 値を に設定します/mnt/workflow/pubdir。Amazon S3 にファイルをエクスポートするには、ファイルがこのディレクトリにある必要があります。

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

Nextflow v25.10 以降publishDirでは、 の代わりにワークフロー出力を使用してタスクコンテンツをエクスポートできます。次の例は、タスク結果を Amazon S3 にエクスポートするワークフローoutputブロックを定義する方法を示しています。

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

ワークフロー出力の詳細については、Nextflow ドキュメントの「ワークフロー出力」を参照してください。

Nextflow 構文バージョンを指定する

Nextflow v26.04.0 は、デフォルトで厳密な (v2) 構文パーサーを使用します。これは、Nextflow v25.10.0 以前のデフォルトであるレガシー (v1) 構文を使用して記述されたワークフローの大幅な変更です。v2 構文の詳細については、Seqera Nextflow ドキュメントの「厳格な構文」を参照してください。

レガシー (v1) パーサーに対して作成されたワークフローを実行するには、StartRunリクエストv1engineSettings.syntaxVersionを に設定します。

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

Nextflow v25.10.0 以前では、HealthOmics は v2 パーサーをサポートしていません。

Nextflow v26.04 リリースノート

次の表は、Nextflow バージョン 26.04 でリリースされた新機能、機能強化、廃止に関する HealthOmics のサポートをまとめたものです。

新しい特徴と拡張機能

機能 元のバージョン HealthOmics のサポート 注意事項
厳密な構文パーサー (デフォルト) 26.04 はい v26.04 からデフォルトで有効になっています。エンジン設定syntaxVersion: "v1"で を介して利用可能なレガシーパーサー。
レコード型 26.04 はい 詳細については、Seqera Nextflow ドキュメントの「レコード」を参照してください。
ワークフロー出力の概要 26.04 はい 実行完了時のワークフロー出力の概要を出力します。エンジン設定outputFormatで を介して設定可能な出力形式。詳細については、「エンジン設定の指定」を参照してください。
エージェントログ記録モード 26.04 はい エンジン設定agentModeで を介して設定可能。詳細については、「エンジン設定の指定」を参照してください。
モジュールシステム (Nextflow レジストリ) 26.04 いいえ HealthOmics ワークフローは、アウトバウンドインターネットアクセスのない独立したネットワークで実行されます。ワークフロー zip にモジュールを直接含めることができます。
静的型付け (プレビュー) 26.04 いいえ HealthOmics はプレビュー機能をサポートしていません。
ファイルからコレクションパラメータを自動ロードする 26.04 いいえ HealthOmics がサポートしていない静的型付け (プレビュー) が必要です。
マルチリビジョンパイプラインのチェックアウト 26.04 該当なし 該当なし。HealthOmics は Git ベースのパイプラインチェックアウトを使用しません。

非推奨

非推奨の項目 元のバージョン Impact 推奨されるアクション
listFiles() 方法 26.04 非推奨の警告 を に置き換えますlistDirectory()
nextflow.enable.strict フラグ 26.04 不要 設定から を削除します。Strict モードがデフォルトになりました。
manifest.defaultBranch 26.04 不要 設定から を削除します。HealthOmics は Git ベースのパイプラインチェックアウトを使用せず、このオプションをサポートしていません。