View a markdown version of this page

的 WDL 引擎变更日志 HealthOmics - AWS HealthOmics

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的 WDL 引擎变更日志 HealthOmics

本页包含 WDL 严格模式和 WDL 宽松模式下的 WDL 引擎的变更日志。每个部分都总结了新功能、增强功能和弃用情况。

新功能和增强功能

下表列出了上 HealthOmics的 WDL 引擎的新功能和增强功能。

变更日期 更改姓名 更改描述 Recommended Action(建议的操作)
2026年9月22日 一致的 CRLF 行尾处理

HealthOmics trims Windows-style (\r\n) 行尾与、和之间保持一致 read_lines() read_tsv()read_map(),与标准 Linux 工具的行为相匹配。

无。无需更改工作流程。
2026年9月22日

zip()cross(),read_tsv()现在可以正确处理混合类型的输入。可以移除手动打字变通方法。

内置函数zip()cross()、和read_tsv()现在可以正确推断出其返回值的类型。在以前的版本中,这些函数在组合混合类型(例如,在zip()调用中)时可能会产生意想不到的类型错误,Array[String]需要Array[Int]在 WDL 代码中手动进行类型转换变通方法。

如果您的工作流程中添加了显式类型转换以解决zip()cross()、或中的类型错误read_tsv(),则可以将其删除。 HealthOmics 现在可以自动推断出正确的类型。

保留现有的类型转换不会导致任何错误或影响工作流程行为。

2026年9月22日

basename(path, "")fix 返回文件名而不是空字符串。

basename(path, "")现在返回文件名。

例如,basename("/path/to/file.txt", "")将返回"file.txt"而不是空字符串。

在工作流程中搜索basename(x, "")呼叫。如果存在,请验证返回文件名是否是预期的行为。

2026年9月22日

Float-key 中的碰撞检测 collect_by_key()

collect_by_key()以前,如果Float密钥匹配到小数点后 6 位,则将其视为相同。不同的值(例如0.0000001和)合并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)"

您可以使用以下三种方法中的任何一种:

  • 使用String密钥:更改Array[Pair[Float, String]]为您的密钥值Array[Pair[String, String]]并加上引号。字符串密钥始终是不同的,可以完全消除碰撞风险。

  • 使用Int密钥:将密钥类型更改为将浮点值Array[Pair[Int, String]]乘以 10 的次方,以保持所需的精度为整数。

  • 如果Float密钥不可避免,请先将它们四舍五入到一致的精度,以确保每个密钥真正不同,并且不会静默地合并任何数据。round(value * 1000000.0) / 1000000.0在传递给之前使用标准化每个密钥。collect_by_key()

即将到来(自 2026 年 9 月 22 日起 60 天内发出通知)

浮点除法 (/) 将返回小数,而不是截断的整数。

当前行为:Float操作数上的/运算符返回最接近的整数。例如,5.0 / 2退货2.0,不是2.5。如果两个操作数都是Int(例如,5 / 2),则结果返回 2。

即将进行的更改(2026 年 11 月 30 日):浮点运算数的浮点除法将以 16 十进制精度返回。在此日期之后,5.0 / 2.0将返回2.5,150.0 / 7.0将返回21.428...而不是整数值。

结果的精度取决于其使用方式:如果结果类型为Float,则计算该值的精度最高为 16 位十进制数字;如果结果被强制转换为 a,则String将其格式化为 6 位十进制数字。

例如,5.0 / 2.0将返回2.5,150.0 / 7.0并将21.4285714285714作为 a 返回Float,但21.428571如果插值为 a。String

Int / Int诸如之5 / 2类的表达式不受影响并将继续返回 2。

为了确保无论引擎版本如何都获得整数结果,请将浮点除法包裹在floor()或中ceil():

  • floor(5.0 / 2.0)→ 总是返回 2

  • ceil(5.0 / 2.0)→ 总是返回 3

如果您的工作流程故意期望浮点除法得到十进制结果,则无需进行任何更改。从 2026 年 11 月 30 日起即将推出的除法行为也将返回小数位数。

注意:当/运算符应用于整数时,仍5/2将返回 2。