AWS HealthOmics が Nextflow と DSL のバージョン自動検出をサポートしました

AWS HealthOmics が Nextflow と DSL のバージョン自動検出をサポートしました

Clock Icon2024.08.17

AWS HealthOmics が Nextflow と DSL(Domain Specific Language)のバージョン自動検出をサポートしました。この新機能により、ワークフローの再現性と互換性を向上させることができます。

https://aws.amazon.com/jp/about-aws/whats-new/2024/08/aws-healthomics-dsl-nextflow-version-detection/

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)内で指定します。

main.nf
nextflow.enable.dsl=2

Nextflow バージョンの指定

nextflow.configファイル内で以下のいずれかの方法で指定します。

nextflow.confg
manifest.nextflowVersion = '>=23.04.0'

または

nextflow.confg
manifest {
    nextflowVersion = '>=23.04.0'
}

バージョンの選択ロジック

DSL バージョン

  1. DSL 2 指定: HealthOmics がサポートする最新の Nextflow バージョンで実行
  2. DSL 1 指定: Nextflow v22.04 DSL 1 で実行
  3. 未指定または不明: DSL 2 をデフォルトで使用

Nextflow バージョン

  1. 正確なバージョン指定: 指定されたバージョンを使用(サポート範囲内の場合)
  2. バージョン範囲指定: 指定範囲内の最新サポートバージョンを選択
  3. 最小バージョン指定: 指定バージョン以上の最新サポートバージョンを選択
  4. !プレフィックス付き指定: 最新サポートバージョンを使用(警告ログがマニュフェストログ内に記録)
  5. 未指定または不明: DSL 1 の場合は v22.04、それ以外は最新サポートバージョン
  6. 非サポートバージョン指定: 最新サポートバージョンを使用(警告ログがマニュフェストログ内に記録)

やってみた

nextflow.configの設定が有効になるかの検証を兼ねて、プライベートワークフローを作成し実行しました。特に非サポートバージョン指定時の警告ログ記録を確認することを目的としています。

ディレクトリ構成

$ tree
.
├── nextflow-test
│   ├── main.nf
│   └── nextflow.config
├── nextflow-test.zip
└── parameter.template.json

ワークフロー本文(main.nf)

DSL 2 記法を使用しつつ、意図的にnextflow.enable.dsl=2を明示しないシンプルなワークフローを作成しました。

main.nf
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)

非サポートバージョンを指定して警告ログを発生させるため、以下の設定を使用しました。

nextflow.config
manifest {
    author          = """Yasutka Ohmura"""
    description     = """Test Config"""
    mainScript      = 'main.nf'
    nextflowVersion = '>=1.2, <=1.5'
    version         = '2.11.0'
}

実行結果

プライベートワークフローの実行は正常終了しました。マニュフェストログをダウンロードして内容を確認します。

Run_9741649___AWS_HealthOmics___us-east-1

マニフェストログには以下の警告が記録されました。この警告は、指定したバージョン範囲(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 ファイルをプライベートワークフローに登録すれば利用可能でした。

参考

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.