jmotif 1.3.2

jmotif 1.3.1

Version 1.3.0

Matrix Profile / MASS convention: - znorm now uses POPULATION standard deviation (divide by n) instead of sample std (n-1). Each normalized window then has empirical variance exactly 1, the assumption behind SAX’s equiprobable Gaussian breakpoints. - SAX symbol assignment maps a value exactly on a breakpoint to the symbol ABOVE the cut (cuts[j] <= ts[i]), matching the jmotif Java original and saxpy. Previously a strict < mapped on-cut values to the symbol below. - PAA: fixed a floating-point boundary bug in the fractional PAA (_paa2, the public paa() / sax_by_chunking path). The final segment break paa_num * (len/paa_num) can round above len in IEEE-754 (e.g. 7(29/7) = 29.000000000000004), which dropped the last sample from the final segment and corrupted its mean on ~5-6% of non-divisible (n, paa_num) shapes. The final break is now snapped to len, matching the saxpy / Java fractional PAA. NOTE: all three are behavioral changes – SAX words for windows whose normalized PAA values fall near a breakpoint may differ from 1.2.x output. HOT-SAX and brute-force discord discovery now measure the nearest-neighbour distance on Z-NORMED windows (the SAX premise of shape similarity): - find_discords_hotsax: the three internal _znorm() calls had been left commented out, so distances were computed on RAW subsequences – it reported raw-amplitude outliers (e.g. ecg0606 pos 411 / 1.50) instead of true z-normed shape discords (pos 430 / 5.28). The windows are now z-normed and compared with an early-abandoning Euclidean distance. - find_discords_brute_force now z-normalizes too and gained an n_threshold parameter (default 0.01); previously it had no threshold and ran on raw subsequences. It is again a valid z-normed reference for HOT-SAX. - Both now use a deterministic lowest-index tie-break and a +/-(w-1) exclusion zone, so results are reproducible and match saxpy / Java exactly (ecg0606 top discords: 430/5.279, 318/4.176, 2080/2.393). NOTE: behavioral change – discord positions/distances differ from 1.2.x, which reported raw-distance discords.

Version 1.2.1

Version 1.2.0

Version 1.1.1

Version 1.1.0

Version 1.0.3

Version 1.0.2.9000

Version 1.0.2

Version 1.0.1

Version 1.0.0