Repository navigation
vdjtools 3.12.1
A k-mer space no longer loads through pickle
save_kmer_spaces stored the locus list and the V-gene list as dtype=object, so load_kmer_spaces had to pass allow_pickle=True — which makes reading a space someone sent you arbitrary code execution. These files exist to travel; that is their entire purpose, so the loader has to be safe on a file it did not write.
Strings are now fixed-width unicode (<U) and the loader passes allow_pickle=False. A space written before this release carries object arrays and will raise on load, with numpy's own message naming the cause — re-save it with save_kmer_spaces to convert.
Spaces are stored in float32, halving them
The IDF vector and the rotation are stored as float32 rather than float64. Measured across all seven loci, projecting a repertoire through the float32 basis instead of the float64 one moves the result by at most 4.9e-9 relative — nine orders of magnitude below the noise in any repertoire measurement — and it takes the fitted artifact from 14.2 MiB to 7.0 MiB, which is the difference between shipping it inside a wheel and not shipping it at all.
mirpy-lib 3.15.0 bundles the fitted spaces and pins vdjtools >= 3.12.1 for this reason.
1,181 tests pass, 11 skipped.