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:
Positionfixes→Staypoints→Triplegs→Trips→Tours, plusLocations(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, andsegment()withangle_change/observation_gap/speed/stop/value_changemethods. - Trajectory tools:
smooth()(Kalman constant-velocity filter/RTS smoother), interpolation, pairwise distance metrics, andcluster_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 optionalfastmob-vispackage 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_lengthsat 4M rows, this is 2.5-4x faster in wall time versus the previous dual-path binding, for both pandas and Polars inputs. pandasis no longer a hard dependency offastmob; onlynarwhalsis required by default. Installpandasyourself (or usepip install "fastmob[...]"extras that need it) if your workflow depends on it directly.
Removed
- The public
presortedflags accepted by several preprocessing/measure functions have been removed. Presortedness is now auto-detected internally; callers that explicitly passedpresorted=True/Falseshould 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.