diff --git a/CHANGELOG.md b/CHANGELOG.md index 31db852..dbacf6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.8.0] — 2026-08-05 + +### Changed +- **`group_qom`, `pose_qom` and `normalized_qom` return different numbers.** They are re-exported + from `micromotion`, which released 1.0.0 today, and the change is a correctness fix rather than a + refinement. They averaged over every marker at every frame while the underlying + `band_limited_qom` interpolates gaps, so an occluded marker contributed a near-zero speed and + still counted in the divisor. The result tracked how much the cameras saw rather than how much + the body moved: 16 to 17 per cent low on a realistic dropout pattern, with the speed series + correlating up to +0.70 with the per-frame count of visible markers. + + The new default, `normalize="visible"`, excludes each marker at the frames where that marker was + absent, and lands within 0.8 per cent of the unoccluded value. Pass `normalize="worn"` to + reproduce a figure published with an earlier release, and say which you used. Pose data from a + clean, well-lit recording with no dropouts is unaffected; occluded mocap is affected most. + +- The `micromotion` floor is `>=1.0.0`, which is a correctness floor rather than a documentation + one: below it the re-exported function returns the confounded number. + ## [1.7.1] — 2026-08-05 ### Fixed diff --git a/docs/releases.md b/docs/releases.md index 05d9b36..20d693b 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1,6 +1,6 @@ # Release Notes -The current stable release is **MGT-python 1.7.1**. +The current stable release is **MGT-python 1.8.0**. Install or upgrade from PyPI: @@ -16,6 +16,15 @@ which is the single source of truth for release notes. ## Recent highlights +### 1.8.0 + +- **Quantity of motion over a group of markers returns a different number, and the old one was + confounded.** `group_qom`, `pose_qom` and `normalized_qom` come from `micromotion`, which + released 1.0.0 today. They used to average over every marker at every frame while gaps were + interpolated, so an occluded marker contributed almost no speed and still counted in the divisor, + and the result tracked camera coverage rather than movement. The new default excludes a marker at + the frames where it was absent. Pass `normalize="worn"` to reproduce an older figure. + ### 1.7.1 - **The published API pages described a band the package no longer uses.** They showed diff --git a/pyproject.toml b/pyproject.toml index e166f2e..a477c00 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "musicalgestures" -version = "1.7.1" +version = "1.8.0" description = "Musical Gestures Toolbox for Python" readme = "README.md" license = {text = "GPL-3.0-or-later"} @@ -25,9 +25,10 @@ classifiers = [ ] dependencies = [ # >=0.3 was wrong twice over: no such release exists on PyPI below 0.6, and the functions - # this package re-exports arrived much later. 0.15.2 is the floor that makes the - # committed API pages true, since they are generated from that package's docstrings. - "micromotion>=0.15.2", + # this package re-exports arrived much later. The floor is now 1.0.0, where `group_qom` + # stopped counting markers it could not see. Below that the re-exported function returns a + # different, confounded number, so this is a correctness floor and not only a docs one. + "micromotion>=1.0.0", "numpy", "pandas", "matplotlib",