View a markdown version of this page

Log perubahan mesin WDL untuk HealthOmics - AWS HealthOmics

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Log perubahan mesin WDL untuk HealthOmics

Halaman ini berisi log perubahan untuk mesin WDL untuk mode ketat WDL dan mode lunak WDL. Setiap bagian merangkum fitur baru, penyempurnaan, dan penghentian.

Fitur dan penyempurnaan baru

Tabel berikut mencantumkan fitur dan penyempurnaan baru untuk mesin WDL aktif. HealthOmics

Tanggal Perubahan Ubah Nama Deskripsi Perubahan Tindakan yang Direkomendasikan
September 22, 2026 Penanganan akhir baris CRLF yang konsisten

HealthOmics memangkas Windows-style (\r\n) ujung baris secara konsisten di seluruhread_lines(),read_tsv(), danread_map(), mencocokkan perilaku alat Linux standar.

Tidak ada. Tidak ada perubahan alur kerja yang diperlukan.
September 22, 2026

zip(),cross(), dan read_tsv() sekarang menangani input tipe campuran dengan benar. solusi tipe-cast manual dapat dihapus.

Fungsi bawaanzip(),cross(), dan read_tsv() sekarang menyimpulkan dengan benar jenis nilai pengembaliannya. Pada versi sebelumnya, fungsi-fungsi ini dapat menghasilkan kesalahan tipe yang tidak terduga saat menggabungkan tipe campuran (misalnya, Array[String] dan Array[Int] dalam zip() panggilan), yang memerlukan solusi pemecahan tipe manual dalam kode WDL.

Jika alur kerja Anda menyertakan jenis cast eksplisit yang ditambahkan untuk mengatasi kesalahan jenis dari zip()cross(),, atauread_tsv(), Anda dapat menghapusnya. HealthOmics sekarang menyimpulkan jenis yang benar secara otomatis.

Menjaga jenis cast yang ada tidak akan menyebabkan kesalahan atau memengaruhi perilaku alur kerja.

September 22, 2026

basename(path, "")fix mengembalikan nama file alih-alih dan string kosong.

basename(path, "")sekarang mengembalikan nama file.

Misalnya, basename("/path/to/file.txt", "") akan kembali al "file.txt" ih-alih string kosong.

Cari alur kerja Anda untuk basename(x, "") panggilan. Jika ada, verifikasi bahwa mengembalikan nama file adalah perilaku yang diharapkan.

September 22, 2026

Float-key deteksi tabrakan di collect_by_key()

collect_by_key()sebelumnya memperlakukan Float kunci sebagai identik jika cocok dengan 6 tempat desimal. Nilai-nilai yang berbeda seperti 0.0000001 dan 0.0000002 digabungkan menjadi satu grup.

Mulai tanggal perubahan dan seterusnya, HealthOmics mendeteksi tabrakan ini pada waktu pembuatan alur kerja dan gagal alur kerja dengan kesalahan yang jelas di bidang GetWorkflow StatusMessage alih-alih membuang hasil.

Alur kerja yang sebelumnya berhasil diselesaikan saat menggabungkan Float kunci yang berbeda sekarang akan gagal dengan kesalahan deteksi tabrakan seperti "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)"

Anda dapat menggunakan salah satu dari tiga pendekatan:

  • Gunakan String tombol: Ubah Array[Pair[Float, String]] ke Array[Pair[String, String]] dan kutip nilai kunci Anda. Tombol string selalu berbeda dan menghilangkan risiko tabrakan sepenuhnya.

  • Gunakan Int tombol: Ubah jenis kunci untuk Kal Array[Pair[Int, String]] ikan nilai float Anda dengan pangkat 10 untuk mempertahankan presisi yang diperlukan sebagai bilangan bulat.

  • Jika Float kunci tidak dapat dihindari, bulatkan ke presisi yang konsisten terlebih dahulu untuk memastikan setiap kunci benar-benar berbeda dan tidak ada data yang digabungkan secara diam-diam. Normalisasi setiap tombol yang digunakan round(value * 1000000.0) / 1000000.0 sebelum diteruskan kecollect_by_key().

Mendatang (pemberitahuan 60 hari dari 22 Sep 2026)

Divisi float (/) akan mengembalikan desimal, bukan bilangan bulat terpotong.

Perilaku saat ini: / Operator pada Float operan mengembalikan bilangan bulat terdekat. Misalnya, pengem 5.0 / 2 balian2.0, tidak2.5. Jika kedua operan adalah Int (misalnya,5 / 2), hasilnya mengembalikan 2.

Perubahan mendatang (30 November 2026): Divisi float pada operan float akan kembali dengan presisi 16 desimal. Setelah tanggal ini, 5.0 / 2.0 akan kembali2.5, 150.0 / 7.0 akan kembali al 21.428... ih-alih nilai integer.

Ketepatan hasil tergantung pada bagaimana hasilnya dikonsumsi: jika jenis hasilnya adalahFloat, nilainya dihitung hingga 16 digit desimal presisi; jika hasilnya dipaksa ke a maka diformat menjadi 6 digit desimal sebagai gant String inya.

Misalnya, 5.0 / 2.0 akan kembali2.5, dan 150.0 / 7.0 akan kembali 21.4285714285714 sebagai aFloat, tetapi 21.428571 jika diinterpolasi menjadi a. String

Int / Intekspresi seperti tidak 5 / 2 terpengaruh dan akan terus mengembalikan 2.

Untuk memastikan hasil bilangan bulat terlepas dari versi mesin, bungkus divisi float dalam floor() atauceil():

  • floor(5.0 / 2.0)→ selalu kembali 2

  • ceil(5.0 / 2.0)→ selalu kembali 3

Jika alur kerja Anda sengaja mengharapkan hasil desimal dari pembagian float, tidak diperlukan perubahan. Perilaku pembagian yang akan datang dari 30 November 2026 akan mengembalikan tempat desimal juga.

Catatan: masih 5/2 akan mengembalikan 2 karena / operator diterapkan pada bilangan bulat.