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

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

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

  • Nextflow v23.10 以降では、HealthOmics は nf-schema@2.3.0 プラグインをプリインストールします。

  • ワークフローの実行中に追加のプラグインを取得することはできません。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 URIs での glob パターンの使用をサポートしています。 URIs HealthOmics path または fileチャネルの作成には、ワークフロー定義で 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 および v24 では、サービスエラー (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 および v24 ワークフローでは、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 で記述されたワークフローの場合、タスクコンテンツを出力 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 """ }