翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Nextflow ワークフロー定義の詳細
HealthOmics は Nextflow DSL1 と DSL2 をサポートしています。詳細については、「Nextflow バージョンのサポート」を参照してください。
Nextflow DSL2 は Groovy プログラミング言語に基づいているため、パラメータは動的であり、型強制は Groovy と同じルールを使用して可能です。入力 JSON によって提供されるパラメータと値は、ワークフローのパラメータ (params) マップで使用できます。
トピック
nf-schema プラグインと nf-validation プラグインを使用する
注記
プラグインの HealthOmics サポートの概要:
v22.04 – プラグインのサポートなし
v23.10 – と をサポート
nf-schemanf-validationv24.10 – をサポート
nf-schemav25.10、v26.04 –
nf-schema、nf-core-utils、nf-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 path または fileチャネルの作成には、ワークフロー定義で Glob パターンを使用します。予想される動作と正確なケースについては、「」を参照してくださいNextflow Amazon S3 入力での Glob パターンの処理。
Nextflow ディレクティブ
Nextflow ディレクティブは、Nextflow 設定ファイルまたはワークフロー定義で設定します。次のリストは、HealthOmics が構成設定を適用するために使用する優先順位を、優先順位の低いものから最も高いものまで示しています。
-
設定ファイルのグローバル設定。
-
ワークフロー定義のタスクセクション。
-
設定ファイル内のタスク固有のセレクタ。
トピック
を使用したタスク再試行戦略 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 時間ディレクティブに対して次のサポートを提供します。
-
HealthOmics は、時間ディレクティブの 1 分の詳細度をサポートします。60 秒から最大実行期間値までの値を指定できます。
-
60 未満の値を入力すると、HealthOmics はそれを 60 秒に切り上げます。60 を超える値の場合、HealthOmics は最も近い分に切り下げます。
-
ワークフローがタスクの再試行をサポートしている場合、HealthOmics はタイムアウトするとタスクを再試行します。
-
タスクがタイムアウト (または最後の再試行がタイムアウト) すると、HealthOmics はタスクをキャンセルします。このオペレーションの期間は 1~2 分です。
-
タスクのタイムアウト時に、HealthOmics は実行ステータスとタスクステータスを失敗に設定し、実行中の他のタスク (開始中、保留中、または実行中ステータスのタスクの場合) をキャンセルします。HealthOmics は、タイムアウト前に完了したタスクから指定された S3 出力場所に出力をエクスポートします。
-
タスクが保留中のステータスに費やした時間は、タスク期間にはカウントされません。
-
実行が実行グループの一部であり、実行グループがタスクタイマーよりも早くタイムアウトした場合、実行とタスクは失敗したステータスに移行します。
タイムアウト期間は、、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フラグを渡します。詳細については、「Nextflow エンジン設定の指定」を参照してください。
aws omics start-run \ --workflow-idworkflow-id\ --role-arnrole-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 は、実行ごとに 4 つの組み込みレポートを生成できます。実行レポート (report)、タイムライン ()、トレースファイル (timeline)、ワークフロー図 (trace) ですdag。HealthOmics がこれらのファイルを実行の Amazon S3 出力場所にエクスポートするには、ファイル/mnt/workflow/output/内の に出力を書き込むように各nextflow.configファイルを設定してください。
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 は、 で書き込まれたファイルを、実行/mnt/workflow/output/の Amazon S3 出力場所の output/ プレフィックスにエクスポートします。このエクスポートパスの詳細については、「」を参照してくださいワークフローレベルのコンテンツをエクスポートする。外部に書き込まれたレポートは/mnt/workflow/output/、実行の Amazon S3 出力場所にエクスポートされません。
タスクコンテナには を含める必要があります ps
report、timeline、または traceレポートが有効になっている場合、Nextflow は各タスクコンテナps内で を呼び出してタスクごとのメトリクスを収集します。container ディレクティブで指定するコンテナイメージには、 ps コマンドが含まれている必要があります。ほとんどの Linux ディストリビューションでは、 procps (Debian/Ubuntu) または procps-ng (Amazon Linux、Red Hat、Fedora) パッケージを使用してインストールします。プロセスがcontainerディレクティブを宣言しない場合、HealthOmics は がすでに含まれているデフォルトのコンテナでタスクを実行しますps。
ワークフロー図の形式
このdagレポートは、 の拡張機能によって選択された複数の出力形式をサポートしていますdag.file。HTML、Mermaid、DOT 形式は Nextflow によって直接レンダリングされるため、追加のツールは必要ありません。PDF、PNG、および SVG 形式には、HealthOmics の Nextflow エンジンに含まれていない Graphviz が必要です。dag.file が PDF、PNG、または SVG パスに設定されている場合、Nextflow は警告をログに記録し、ワークフロー図を.dotソースファイルとして代わりに書き込みます。実行は正常に完了します。警告を回避し.html、リクエストされた形式を生成するには、 dag.fileを 、.mmd、または .dotパスに設定することをお勧めします。
Nextflow 構文バージョンを指定する
Nextflow v26.04.0 は、デフォルトで厳密な (v2) 構文パーサーを使用します。これは、Nextflow v25.10.0 以前のデフォルトであるレガシー (v1) 構文を使用して記述されたワークフローの大幅な変更です。v2 構文の詳細については、Seqera Nextflow ドキュメントの「厳格な構文
レガシー (v1) パーサーに対して作成されたワークフローを実行するには、StartRunリクエストv1で engineSettings.syntaxVersionを に設定します。
{ "engineSettings": { "syntaxVersion": "v1" } }
Nextflow v25.10.0 以前では、HealthOmics は v2 パーサーをサポートしていません。
Nextflow でスクラッチストレージを効率的に使用する
Nextflow のscratchディレクティブは、プロセスが一時的な作業ファイルを書き込む場所を制御します。エフェメラルストレージが有効になっている場合 (scratchStorageMode: LOCAL)、 scratchディレクティブを使用して、スクラッチ I/O を の高速ローカルボリュームに送信します/tmp。
次の表に、HealthOmics でサポートされているscratchディレクティブ値とその動作を示します。
| 値 | HealthOmics の動作 | 推奨事項 |
|---|---|---|
scratch true |
$TMPDIR を使用します。が scratchStorageMode の場合、スクラッチ I/O はローカルエフェメラルボリュームに送信されますLOCAL。 |
推奨 |
scratch '/some/path' |
指定されたリテラルパスをスクラッチディレクトリとして使用します。エフェメラルストレージを使用するには、パスを /tmpまたは のサブディレクトリに設定します/tmp。パスはコンテナに存在し、書き込み可能である必要があります。 |
パスが の下にある場合に機能します /tmp |
scratch 'ram-disk' |
の使用の試行 /dev/shm (RAM の tmpfs)。HealthOmics のローカルスクラッチストレージにはお勧めしません。 |
非推奨 |
推奨されるアプローチは、プロセス定義scratch trueで を設定することです。これにより、 が自動的に使用され$TMPDIR、パス設定は必要ありません。
process my_process { scratch true disk '200 GB' script: """ my-tool --input ${input} --output ${output} """ }
エフェメラルストレージと diskディレクティブの詳細については、「」を参照してくださいHealthOmics ワークフロータスク用のエフェメラルストレージ。
Nextflow v26.04 リリースノート
次の表は、Nextflow バージョン 26.04 でリリースされた新機能、機能強化、廃止に関する HealthOmics のサポートをまとめたものです。
新しい特徴と拡張機能
| 機能 | 元のバージョン | HealthOmics のサポート | 注意事項 |
|---|---|---|---|
| 厳密な構文パーサー (デフォルト) | 26.04 | はい | v26.04 からデフォルトで有効になっています。エンジン設定syntaxVersion: "v1"で を介して利用可能なレガシーパーサー。 |
| レコード型 | 26.04 | はい | 詳細については、Seqera Nextflow ドキュメントの「レコード |
| ワークフロー出力の概要 | 26.04 | はい | 実行完了時にワークフロー出力の概要を出力します。エンジン設定outputFormatで を介して設定可能な出力形式。詳細については、「Nextflow エンジン設定の指定」を参照してください。 |
| エージェントログ記録モード | 26.04 | はい | エンジン設定agentModeで を介して設定可能。詳細については、「Nextflow エンジン設定の指定」を参照してください。 |
| モジュールシステム (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 ベースのパイプラインチェックアウトを使用せず、このオプションをサポートしたこともありません。 |