AWS HealthOmics が Nextflow と DSL のバージョン自動検出をサポートしました
AWS HealthOmics が Nextflow と DSL(Domain Specific Language)のバージョン自動検出をサポートしました。この新機能により、ワークフローの再現性と互換性を向上させることができます。
Nextflow バージョンと DSL バージョンの違い
Nextflow バージョンと DSL バージョンは、ワークフローの定義と実行に関連する要素です。
Nextflow バージョン
- ワークフロー実行エンジンのバージョンを指します
- AWS HealthOmics は現在、Nextflow v22.04.01 と v23.10.0 をサポート(2024 年 8 月 16 日時点)
DSL バージョン
- ワークフローの記述方法を定義
- DSL 1 と DSL 2 の 2 つの主要バージョンが存在
- Nextflow v22.04.01: DSL 1 および DSL 2 をサポート
- Nextflow v23.10.0: DSL 2 のみをサポート
バージョンの指定方法
DSL バージョンの指定
ワークフロー定義ファイル(main.nf
)内で指定します。
nextflow.enable.dsl=2
Nextflow バージョンの指定
nextflow.config
ファイル内で以下のいずれかの方法で指定します。
manifest.nextflowVersion = '>=23.04.0'
または
manifest {
nextflowVersion = '>=23.04.0'
}
バージョンの選択ロジック
DSL バージョン
- DSL 2 指定: HealthOmics がサポートする最新の Nextflow バージョンで実行
- DSL 1 指定: Nextflow v22.04 DSL 1 で実行
- 未指定または不明: DSL 2 をデフォルトで使用
Nextflow バージョン
- 正確なバージョン指定: 指定されたバージョンを使用(サポート範囲内の場合)
- バージョン範囲指定: 指定範囲内の最新サポートバージョンを選択
- 最小バージョン指定: 指定バージョン以上の最新サポートバージョンを選択
!
プレフィックス付き指定: 最新サポートバージョンを使用(警告ログがマニュフェストログ内に記録)- 未指定または不明: DSL 1 の場合は v22.04、それ以外は最新サポートバージョン
- 非サポートバージョン指定: 最新サポートバージョンを使用(警告ログがマニュフェストログ内に記録)
やってみた
nextflow.config
の設定が有効になるかの検証を兼ねて、プライベートワークフローを作成し実行しました。特に非サポートバージョン指定時の警告ログ記録を確認することを目的としています。
ディレクトリ構成
$ tree
.
├── nextflow-test
│ ├── main.nf
│ └── nextflow.config
├── nextflow-test.zip
└── parameter.template.json
ワークフロー本文(main.nf)
DSL 2 記法を使用しつつ、意図的にnextflow.enable.dsl=2
を明示しないシンプルなワークフローを作成しました。
params.message = null
if (!params.message) exit 1, "required parameter 'message' missing"
process PrintMessage {
publishDir '/mnt/workflow/pubdir'
input:
val message
output:
path "output", emit: output_file
script:
"""
echo "${message}" | tee output
"""
}
workflow {
PrintMessage(params.message)
}
Nextflow 設定(nextflow.config)
非サポートバージョンを指定して警告ログを発生させるため、以下の設定を使用しました。
manifest {
author = """Yasutka Ohmura"""
description = """Test Config"""
mainScript = 'main.nf'
nextflowVersion = '>=1.2, <=1.5'
version = '2.11.0'
}
実行結果
プライベートワークフローの実行は正常終了しました。マニュフェストログをダウンロードして内容を確認します。
マニフェストログには以下の警告が記録されました。この警告は、指定したバージョン範囲(1.2 ~ 1.5)が AWS HealthOmics のサポート範囲外であるため発生しています。
Aug-15 08:54:32.810 [main] WARN nextflow.Session - Nextflow version 22.04.0 does not match workflow required version: >=1.2, <=1.5 -- Execution will continue, but things may break!
マニュフェストログ全文
Aug-15 08:54:32.305 [main] INFO nextflow.cli.CmdRun - Launching `main.nf` [festering_carlsson] DSL2 - revision: 3b1865a22f
Aug-15 08:54:32.324 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: []
Aug-15 08:54:32.325 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: []
Aug-15 08:54:32.331 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.10.0 in 'development' mode
Aug-15 08:54:32.345 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-amazon@1.7.1' resolved
Version: 22.04.0 build 5718
Created: 01-08-2024 22:42 UTC
System: Linux 4.14.348-265.565.amzn2.x86_64
Runtime: Groovy 3.0.10 on OpenJDK 64-Bit Server VM 11.0.24+8-LTS
Encoding: UTF-8 (ANSI_X3.4-1968)
Process: 29@ip-10-3-252-135.ec2.internal [10.3.252.135]
CPUs: 8 - Mem: 15.1 GB (14.9 GB) - Swap: 0 (0)
Aug-15 08:54:32.810 [main] WARN nextflow.Session - Nextflow version 22.04.0 does not match workflow required version: >=1.2, <=1.5 -- Execution will continue, but things may break!
Aug-15 08:54:33.083 [Task submitter] INFO nextflow.Session - [d5/04e20f] Submitted process > PrintMessage
まとめ
AWS HealthOmics の Nextflow と DSL バージョンの自動検出サポートにより、ワークフローの再現性向上しました。また、非サポートバージョン使用時に明確な警告ログがマニュフェストログに記録され、原因切り分けに有用な情報となりました。
おわりに
nextflow.config
の設定が AWS HealthOmics でも利用可能なのかから検証することになりました。main.nf
と同階層にnextflow.config
を保存した ZIP ファイルをプライベートワークフローに登録すれば利用可能でした。