Repository navigation
Releases: OpenPTV/postptv
Release list
v1.7.0
New modules
flowtracks.clean: cleaning chain for raw tracker output -- repair, Savitzky-Golay smoothing, kink split, two stitching passes -- from flat arrays (clean_trajectories), withCLEAN_DEFAULTS(no default frame rate),resolve_settings(defaults <- parameter section <- overrides, with the source of every value),trajectories_from_arrays,kink_split.flowtracks.merge: merging the trajectories of two camera systems that see a common volume -- rigid map from same-frame particles (estimate_rigid_map),apply_rigid,overlap_counts,best_partners,duplicates.
Graphics
animate_trajectories_3d: off-screen 3D movie of trailing beads coloured by a velocity component, with grey back walls, grid labels, custom font and closed outlines (e.g. the rims of a cell).- Units in axis titles, colour bars and VTK field data.
Other
- Phasing: one shared bin definition (
n_frames_in_period,n_phases,phase_width), eulerian_grid aliases. - Writers record units attributes.
- Render tests skip cleanly on headless machines.
v1.6.1
Patch release: no API changes since v1.6.0.
- CI: push builds tolerate a freshly tagged HEAD instead of failing the version gate (releases publish via the release event); GitHub Actions bumped to Node24 versions.
- Packaging: postptv-combine console script moved to [project.scripts] (setuptools was silently ignoring it); license metadata corrected to GPL-3.0-only AND BSD-3-Clause.
- Licensing: original core declared GPL-3.0-only, newer Zarr/xarray modules BSD-3-Clause, with SPDX headers throughout (REUSE 3.3 compliant).
v1.6.0
Make PyTables an optional legacy dependency; Zarr is the default path.
- Legacy HDF5 backend (Scene, save_particles_table/trajectories_table, analysis output, AnalysedScene) imports lazily and raises an informative ImportError without the 'legacy-io' extra; works as before when installed.
- Zarr (save/read_zarr_trajectories, ZarrScene) imports and runs with no PyTables present.
- Tests migrated from HDF5 fixtures to Zarr: test_scene, test_io, test_zarr_scene now run ZarrScene / zarr round-trips.
- Full suite: 188 passed, 1 skipped (optional skimage).
v1.5.1
Smoothing fixes, trajectory graphics, and a new flux module.
- smoothing: Savitzky-Golay track ends are evaluated on the polynomial fitted to the first/last window (no edge bias); tracks with frame gaps are smoothed on a uniform time grid; new
min_windowkeeps short tracks (smoothed with a shorter window) instead of dropping them. - graphics: interactive PyVista 3D trajectory plot (
plot_trajectories_3d);trajectory_summaryand track selections -- longest, fastest, path (travelled distance), typical, coverage, jumps;scripts/view_trajectories_3d.py. - flux (new,
pip install flowtracks[flux]for the centreline): fluid domain from particle positions, centreline and cross-sections, section lumen, particle-based volume flow rate per section and time window with coverage, flow rate of a known velocity field, and the domain's outward boundary faces. - ruff config and CI gate.
v1.5.0
Physical gradients only + ParaView export only via writers (breaking). derived_fields() always estimates true gradients with the real (dx, dy, dz) spacings; the negated-u / dx := dz convention left postptv for openptv-analysis (private). Legacy raw-vtk writers (eulerian.export_vtk, export_vtk_rectilinear_series, vtk_export.py) removed; all ParaView export goes through flowtracks.writers (.vti/.vtr/.vtp + .pvd).
v1.4.1
Patch release:
- refactor: generic names instead of experiment-specific ones (tt13pre_derived -> reference_derived, jet_slab_masks -> y_slab_masks, no TT13/aorta/LV/hemodynamic terms, generic example names, no ocean-specific CF standard_names)
- fix(io): tolerate dangling prev links in ptv_is trajectory data instead of crashing
v1.2.2
Eulerian upgrades, unified ParaView writers, and CI-based PyPI deploy. Also live on PyPI as flowtracks 1.2.2.
Eulerian (Lagrangian → Eulerian)
- Sub-threshold voxels now NaN (never fake zero velocity) + new boolean valid mask; legacy zero-fill still available via fill_value=0.0
- Opt-in pre-binning QC gates (finite + speed range) and finite_difference_velocity helper
- chunk_frames: memory-bounded chunked accumulation, bit-identical to the single pass
- New eulerian_windowed: sliding-window means for non-periodic flows (searchsorted slices)
- derived_fields: upfront NaN/Inf cleaning, counts + fluid_min masking, PRT counts mode, matlab/physical gradient convention
Writers / pipeline
- Unified pyvista writers (.vtp/.vti/.vtr/.pvd), Zarr demo dataset, provenance tracking, vortex + wall-shear analysis, vectorized stitching; vtk/tables now optional
CI / deploy
- PyPI publish via Trusted Publishing (OIDC) from OpenPTV/postptv tags; no API-token secret needed
Full test suite green on 3.11/3.12/3.13.
New implementation of InvertedDistanceWeigthing
- see
flowtracks.interpolation - see new tests
- we can work with
uvnow instead ofpip
v1.1.0
JORS submission version
This release marks the submission to the Journal of Open Research Software.