Skip to content

Releases: OpenPTV/postptv

v1.7.0

Choose a tag to compare

@alexlib alexlib released this 11 Oct 22:14

New modules

  • flowtracks.clean: cleaning chain for raw tracker output -- repair, Savitzky-Golay smoothing, kink split, two stitching passes -- from flat arrays (clean_trajectories), with CLEAN_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

Choose a tag to compare

@alexlib alexlib released this 30 Sep 10:47

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

Choose a tag to compare

@alexlib alexlib released this 29 Sep 22:28

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

Choose a tag to compare

@alexlib alexlib released this 29 Sep 13:05

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_window keeps short tracks (smoothed with a shorter window) instead of dropping them.
  • graphics: interactive PyVista 3D trajectory plot (plot_trajectories_3d); trajectory_summary and 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

Choose a tag to compare

@alexlib alexlib released this 26 Sep 11:04

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

Choose a tag to compare

@alexlib alexlib released this 18 Sep 20:02

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

Choose a tag to compare

@alexlib alexlib released this 13 Sep 11:18

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

Choose a tag to compare

@alexlib alexlib released this 23 Sep 14:21
  • see flowtracks.interpolation
  • see new tests
  • we can work with uv now instead of pip

v1.1.0

Choose a tag to compare

@alexlib alexlib released this 14 Apr 13:45
9e2bb6b
  • see changes from alexlib/postptv
  • new tests, updated dtype for newer numpy

JORS submission version

Choose a tag to compare

@yosefm yosefm released this 13 Oct 11:28

This release marks the submission to the Journal of Open Research Software.