Skip to content

v0.2.0

This release folds in roughly a month of active development on nightly that had not yet reached a tagged release: a full trackintel-style trajectory hierarchy, several new preprocessing algorithm families, mobility models, social/network analysis, and a broad Rust performance pass. It is the largest release since v0.1.0.

Added

  • Trajectory hierarchy: PositionfixesStaypointsTriplegsTripsTours, plus Locations (DBSCAN-clustered recurring stops), home/work/other identification, and transport-mode classification.
  • Preprocessing algorithms: named outlier-detection methods for filter() (hampel, greedy, smart_greedy, zheng), seven named trajectory-simplification algorithms, and segment() with angle_change/observation_gap/speed/stop/value_change methods.
  • Trajectory tools: smooth() (Kalman constant-velocity filter/RTS smoother), interpolation, pairwise distance metrics, and cluster_trajectory_shapes() (distance-geometry shape clustering).
  • Models: NextLocationPredictor (order-k Markov with backoff), MarkovDiaryGenerator, and RECAST social-relationship classification.
  • Social and network analysis: co-presence contact-network toolkit with social-tie inference, collective interest network measure, daily-motif discovery, and road/rail-network-constrained distance measures with map matching.
  • Fitting: scipy-free truncated power-law fit, daily-location lognormal fit, and OD-matrix-from-trajectory construction.
  • fastmob[vis]: new optional fastmob-vis package for ECharts/Leaflet-based visualization of measures and trajectories.

Changed

  • Rust bindings for dense numeric measure data (coordinates, timestamps, and similar arrays) now go through an Arrow-only path end to end instead of dual-dispatching between NumPy and Arrow. Measured on radius_of_gyration/jump_lengths at 4M rows, this is 2.5-4x faster in wall time versus the previous dual-path binding, for both pandas and Polars inputs.
  • pandas is no longer a hard dependency of fastmob; only narwhals is required by default. Install pandas yourself (or use pip install "fastmob[...]" extras that need it) if your workflow depends on it directly.

Removed

  • The public presorted flags accepted by several preprocessing/measure functions have been removed. Presortedness is now auto-detected internally; callers that explicitly passed presorted=True/False should drop the argument.

Upgrade notes

If you depend on pandas being installed transitively by fastmob, add it to your own project's dependencies. If you were passing a presorted keyword argument to any preprocessing or measure function, remove it — the library now detects presortedness automatically. Review the API reference for the current public contract.