View a markdown version of this page

HealthOmics の WDL エンジン変更ログ - AWS HealthOmics

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

HealthOmics の WDL エンジン変更ログ

このページには、WDL strict モードと WDL lenient モードの両方の WDL エンジンの変更ログが含まれています。各セクションには、新機能、機能強化、廃止がまとめられています。

新しい特徴と拡張機能

次の表に、HealthOmics の WDL エンジンの新機能と機能強化を示します。

変更日 名前の変更 説明の変更 [Recommended Action] (推奨されるアクション)
2026 年 9 月 22 日 一貫した CRLF ライン終了処理

HealthOmics は、Windows スタイルの (\r\n) 行の末尾を read_lines()、、および 全体で一貫してトリミングread_tsv()しread_map()、標準の Linux ツールの動作と一致します。

なし。ワークフローの変更は必要ありません。
2026 年 9 月 22 日

zip()、cross()、および が混合型入力を正しく処理するread_tsv()ようになりました。手動型キャストの回避策は削除できます。

組み込み関数 zip()、cross()、および は、戻り値の型を正しく推測するread_tsv()ようになりました。以前のバージョンでは、これらの関数は混合型 ( Array[String]や Array[Int] zip() 呼び出しなど) を組み合わせるときに予期しない型エラーを発生させる可能性があり、WDL コードで手動型キャストの回避策が必要になります。

ワークフローに zip()、、cross()または からのタイプエラーを回避するために追加された明示的なタイプキャストが含まれている場合はread_tsv()、それらを削除できます。HealthOmics は、正しいタイプを自動的に推測するようになりました。

既存の型キャストを保持しても、エラーが発生したり、ワークフローの動作に影響を与えたりすることはありません。

2026 年 9 月 22 日

basename(path, "") 修正は、 および空の文字列の代わりにファイル名を返します。

basename(path, "") がファイル名を返すようになりました。

たとえば、 basename("/path/to/file.txt", "")は空の文字列"file.txt"の代わりに を返します。

ワークフローでbasename(x, "")呼び出しを検索します。存在する場合は、ファイル名を返すことが予想される動作であることを確認します。

2026 年 9 月 22 日

での浮動小数点衝突検出 collect_by_key()

collect_by_key() 以前はFloat、キーが小数点以下第 6 位と一致した場合、キーは同一として扱われていました。0.0000001 や などの個別の値が 1 つのグループに0.0000002マージされました。

変更日以降、HealthOmics はワークフローの作成時にこの衝突を検出し、結果を破棄する代わりに GetWorkflow statusMessage フィールドで明確なエラーでワークフローを失敗させます。

異なるFloatキーのマージ中に以前に正常に完了したワークフローが、次のような衝突検出エラーで失敗するようになりました。 "statusMessage": "(collect_by_key_test.wdl Ln 17 Col 47) No such function: collect_by_key\n Map[Float, Array[String]] collected = collect_by_key(pairs_with_collision)"

次の 3 つの方法のいずれかを使用できます。

  • String キーを使用する: キー値を Array[Pair[Float, String]]に変更Array[Pair[String, String]]して引用します。文字列キーは常に異なり、衝突リスクを完全に排除します。

  • Int キーを使用する: キータイプを変更して浮動小数点値をArray[Pair[Int, String]]乗算し、必要な精度を整数として保持します。

  • Float キーが避けられない場合は、まず一貫した精度に丸めて、各キーが真に異なり、データがサイレントマージされないようにします。を に渡すround(value * 1000000.0) / 1000000.0前に、 を使用して各キーを正規化しますcollect_by_key()。

近日 (2026 年 9 月 22 日から 60 日前の通知)

浮動小数点除算 (/) は、切り捨てられた整数ではなく、小数を返します。

現在の動作: Floatオペランドの/演算子は、最も近い整数を返します。たとえば、 は 2.0ではなく 5.0 / 2を返します2.5。両方のオペランドが Int ( など5 / 2) の場合、結果は 2 を返します。

今後の変更 (2026 年 11 月 30 日): 浮動小数点オペランドの浮動小数点除算は 16 進精度で返ります。この日付以降、 5.0 / 2.0は を返し2.5、 150.0 / 7.0は整数値21.428...の代わりに を返します。

結果の精度は、消費方法によって異なります。結果タイプが の場合Float、値は最大 16 の小数の精度で計算されます。結果が に強制される場合、代わりに 6 の小数にフォーマットStringされます。

たとえば、 5.0 / 2.0は を返し2.5、 150.0 / 7.0は 21.4285714285714として返しますがFloat、 に補間21.428571された場合ですString。

Int / Int などの式5 / 2は影響を受けず、引き続き 2 を返します。

エンジンのバージョンに関係なく整数の結果を確保するには、浮動小数点除算を floor()または でラップしますceil()。

  • floor(5.0 / 2.0) → 常に を返します 2

  • ceil(5.0 / 2.0) → 常に を返します 3

ワークフローが意図的に浮動小数点除算から 10 進数の結果を想定している場合、変更は必要ありません。2026 年 11 月 30 日以降の今後の除算動作では、小数点以下も返されます。

注意: /演算子5/2が整数に適用されるため、 は引き続き 2 を返します。