기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
HealthOmics에 대한 WDL 엔진 변경 로그
이 페이지에는 WDL 엄격 모드와 WDL 관대 모드 모두에 대한 WDL 엔진의 변경 로그가 포함되어 있습니다. 각 섹션에는 새로운 기능, 개선 사항 및 사용 중단이 요약되어 있습니다.
새로운 기능 및 개선 사항
다음 표에는 HealthOmics의 WDL 엔진에 대한 새로운 기능과 향상된 기능이 나열되어 있습니다.
| 변경 날짜 |
이름 변경 |
설명 변경 |
권장 조치 |
| 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] 및 zip() 호출)을 결합할 때 예기치 않은 유형 오류를 생성하여 WDL 코드Array[Int]에서 수동 유형캐스트 해결 방법을 필요로 할 수 있습니다.
|
워크플로에 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일 |
의 부동 키 충돌 감지 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 키 사용: 키 유형을 플로트 값에 10을 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이 지정됩니다.
예를 들어 2.55.0 / 2.0는를 반환하고 150.0 / 7.0는 21.4285714285714로 반환하지만 Float로 보간된 21.428571 경우를 반환합니다String.
Int / Int와 같은 표현5 / 2식은 영향을 받지 않으며 2를 계속 반환합니다.
|
엔진 버전에 관계없이 정수 결과를 보장하려면 floor() 또는에서 부동 소수점 분할을 래핑합니다ceil().
워크플로가 의도적으로 부동 소수점 분할의 결과를 예상하는 경우 변경할 필요가 없습니다. 2026년 11월 30일부터 예정된 분할 동작은 소수 자릿수도 반환합니다.
참고: 연/산5/2자가 정수에 적용되므로는 여전히 2를 반환합니다.
|