fastmob 0.3.2__tar.gz → 0.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastmob-0.3.2 → fastmob-0.3.4}/Cargo.lock +2 -2
- fastmob-0.3.4/PKG-INFO +164 -0
- fastmob-0.3.4/README.md +123 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/base.py +2 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/flow_dataframe.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/locations_dataframe.py +16 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/positionfixes_dataframe.py +4 -4
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/staypoints_dataframe.py +18 -10
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/tours_dataframe.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/trajectory_dataframe.py +8 -8
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/triplegs_dataframe.py +5 -5
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/trips_dataframe.py +3 -3
- fastmob-0.3.4/fastmob/data/__init__.py +16 -0
- fastmob-0.3.4/fastmob/data/_remote.py +55 -0
- fastmob-0.3.4/fastmob/data/brightkite.py +77 -0
- fastmob-0.3.4/fastmob/data/datasets/__init__.py +1 -0
- fastmob-0.3.4/fastmob/data/geolife.py +74 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/load.py +1 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/integration/events.py +5 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/integration/poi.py +12 -4
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/io/file.py +1 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/homes_per_location.py +4 -4
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/interest_network.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/mean_square_displacement.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/od.py +6 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/random_location_entropy.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/stvd.py +10 -10
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/uncorrelated_location_entropy.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/visits_per_location.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/visits_per_time_unit.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/evaluation/compare.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/evaluation/cpc.py +54 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/evaluation/metrics.py +18 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/evaluation/spatial.py +7 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/fitting/daily_location_lognormal.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/fitting/visitation_law.py +28 -10
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/activity.py +30 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/distance_straight_line.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/diversity.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/entropy.py +4 -4
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/frequency_rank.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/home_location.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/individual_mobility_network.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/jump_lengths.py +2 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/k_radius_of_gyration.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/location_frequency.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/max_distance_from_home.py +6 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/maximum_distance.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/mobility_profiling.py +8 -8
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/motifs.py +19 -4
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/network_distance.py +30 -19
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/number_of_locations.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/number_of_visits.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/profile_classification.py +15 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/radius_of_gyration.py +3 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/random_entropy.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/real_entropy.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/recency_rank.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/regularity.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/uncorrelated_entropy.py +2 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/waiting_times.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/work_location.py +26 -5
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/epr.py +35 -33
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/geosim.py +6 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/gravity.py +7 -5
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/markov_diary_generator.py +7 -7
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/next_location.py +11 -11
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/radiation.py +3 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/sts_epr.py +10 -10
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/_nearest.py +6 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/builder.py +110 -4
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/match.py +47 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/od_flow.py +6 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/road_graph.py +23 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/snap.py +4 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_activity.py +9 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_compress.py +7 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_filter.py +20 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_h3.py +7 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_segment.py +7 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_simplify.py +7 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_stay_locations.py +7 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_trajectory_od.py +17 -8
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_transport_mode.py +6 -6
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/cdr.py +1 -1
- fastmob-0.3.4/fastmob/privacy/frequency.py +396 -0
- fastmob-0.3.4/fastmob/privacy/location.py +248 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/social/contact_network.py +122 -12
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/social/recast.py +106 -13
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/tessellation/tilers.py +8 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/trajectory/_distance.py +18 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/trajectory/_interpolate.py +7 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/trajectory/_interpolate_at.py +9 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/trajectory/_shape_cluster.py +9 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/trajectory/_smooth.py +8 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/utils/_common.py +12 -3
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/vis.py +1 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/cpc.rs +5 -2
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/Cargo.toml +1 -1
- {fastmob-0.3.2 → fastmob-0.3.4}/pyproject.toml +3 -2
- fastmob-0.3.2/PKG-INFO +0 -164
- fastmob-0.3.2/README.md +0 -123
- fastmob-0.3.2/fastmob/data/__init__.py +0 -7
- fastmob-0.3.2/fastmob/data/datasets/__init__.py +0 -1
- fastmob-0.3.2/fastmob/privacy/frequency.py +0 -166
- fastmob-0.3.2/fastmob/privacy/location.py +0 -105
- {fastmob-0.3.2 → fastmob-0.3.4}/Cargo.toml +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/LICENSE +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/_hierarchy_common.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/core/dispatch.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/_frames.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/flow_foursquare_nyc/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/flow_foursquare_nyc/flow_foursquare_nyc.json +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/flow_foursquare_nyc/flow_foursquare_nyc.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/foursquare_nyc/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/foursquare_nyc/foursquare_nyc.json +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/foursquare_nyc/foursquare_nyc.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/nyc_boundaries/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/nyc_boundaries/nyc_boundaries.json +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/nyc_boundaries/nyc_boundaries.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/parking_san_francisco/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/parking_san_francisco/parking_san_francisco.json +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/parking_san_francisco/parking_san_francisco.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/taxi_san_francisco/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/taxi_san_francisco/taxi_san_francisco.json +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/data/datasets/taxi_san_francisco/taxi_san_francisco.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/integration/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/io/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/_common.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/collective/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/evaluation/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/evaluation/information.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/evaluation/regression.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/fitting/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/fitting/truncated_powerlaw.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/measures/individual/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/models/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/network/speeds.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/preprocessing/_cluster.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/privacy/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/privacy/_engine.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/social/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/tessellation/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/tessellation/_constants.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/tessellation/_utils.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/trajectory/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/utils/__init__.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/utils/_arrow_io.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob/utils/_profiling.py +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/Cargo.toml +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/LICENSE +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/LICENSE-APACHE-MOVETK +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/README.md +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/THIRD_PARTY_NOTICES.md +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/hierarchy/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/hierarchy/trips.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/integration/events.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/integration/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/lib.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/collective/interest_network.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/collective/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/collective/square_displacement.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/collective/stvd.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/collective/visitation_law.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/jsd.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/kl_divergence.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/stvd_candidate_graph.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/stvd_emd.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/stvd_sparse_sinkhorn.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/evaluation/wasserstein.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/fitting/daily_location_lognormal.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/fitting/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/fitting/truncated_powerlaw.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/fitting/visitation_law.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/activity.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/diversity.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/entropy.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/home_location.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/individual_mobility_network.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/jump_lengths.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/k_radius_of_gyration.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/location_frequency.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/max_distance_from_point.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/maximum_distance.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/motifs.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/radius_of_gyration.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/recency_rank.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/spatial_counts.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/time_ordering.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/total_distance.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/uncorrelated_entropy.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/individual/waiting_times.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/measures/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/distance.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/ditras.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/epr.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/geosim.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/markov_diary.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/next_location.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/od.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/radiation.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/shared.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/social_graph.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/models/sts_epr.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/network/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/network/road_graph.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/cdr.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/clustering.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/compress_traj.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/expand_trajectory.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/filter_traj.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/h3.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/h3_cluster.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/outliers/greedy.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/outliers/hampel.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/outliers/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/outliers/zheng.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/segment/angle_change.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/segment/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/segment/observation_gap.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/segment/speed.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/segment/stop.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/segment/value_change.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/simplify/chan_chin.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/simplify/corridor.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/simplify/distance_time_threshold.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/simplify/douglas_peucker.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/simplify/imai_iri.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/simplify/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/simplify/top_down_time_ratio.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/stay_locations.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/stay_locations_rs.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/preprocessing/trajectory_od.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/privacy.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/social/co_presence_network.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/social/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/trajectory/distance.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/trajectory/interpolate.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/trajectory/interpolate_at.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/trajectory/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/trajectory/shape_cluster.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/trajectory/shape_signature.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/trajectory/smooth.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/utils/haversine.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/utils/helpers.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-core/src/utils/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/adapters/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/adapters/trajectory.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/hierarchy_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/integration/events_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/integration/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/lib.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/collective/interest_network.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/collective/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/collective/square_displacement.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/collective/stvd.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/collective/visitation_law.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/evaluation/cpc.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/evaluation/jsd.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/evaluation/kl_divergence.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/evaluation/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/evaluation/stvd_emd.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/evaluation/wasserstein.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/fitting/daily_location_lognormal.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/fitting/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/fitting/truncated_powerlaw.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/activity.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/diversity.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/entropy.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/factorization.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/home_location.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/indexed_user_indices.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/individual_mobility_network.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/jump_lengths.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/k_radius_of_gyration.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/location_frequency.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/max_distance_from_point.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/maximum_distance.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/motifs.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/radius_of_gyration.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/recency_rank.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/spatial_counts.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/time_ordering.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/total_distance.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/uncorrelated_entropy.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/individual/waiting_times.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/measures/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/distance.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/ditras.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/epr.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/geosim.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/markov_diary.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/next_location_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/od.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/radiation.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/social_graph.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/models/sts_epr.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/network/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/network/road_graph_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/cdr.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/clustering.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/compress_traj_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/expand_trajectory_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/filter_traj_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/h3_cluster_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/h3_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/outliers_traj_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/segment_traj_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/simplify_traj_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/stay_locations_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/preprocessing/trajectory_od_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/privacy.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/social/co_presence_network.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/social/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/trajectory/distance_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/trajectory/interpolate_at_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/trajectory/interpolate_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/trajectory/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/trajectory/shape_cluster_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/trajectory/smooth_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/utils/haversine_py.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/utils/mod.rs +0 -0
- {fastmob-0.3.2 → fastmob-0.3.4}/fastmob-py/src/utils/py_helpers.rs +0 -0
|
@@ -1030,7 +1030,7 @@ dependencies = [
|
|
|
1030
1030
|
|
|
1031
1031
|
[[package]]
|
|
1032
1032
|
name = "fastmob-py"
|
|
1033
|
-
version = "0.3.
|
|
1033
|
+
version = "0.3.4"
|
|
1034
1034
|
dependencies = [
|
|
1035
1035
|
"ahash",
|
|
1036
1036
|
"arrow-array",
|
|
@@ -1061,7 +1061,7 @@ dependencies = [
|
|
|
1061
1061
|
|
|
1062
1062
|
[[package]]
|
|
1063
1063
|
name = "fastmob-vis"
|
|
1064
|
-
version = "0.1.
|
|
1064
|
+
version = "0.1.1"
|
|
1065
1065
|
dependencies = [
|
|
1066
1066
|
"charming",
|
|
1067
1067
|
"numpy",
|
fastmob-0.3.4/PKG-INFO
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fastmob
|
|
3
|
+
Version: 0.3.4
|
|
4
|
+
Classifier: Development Status :: 3 - Alpha
|
|
5
|
+
Classifier: Intended Audience :: Developers
|
|
6
|
+
Classifier: Intended Audience :: Science/Research
|
|
7
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
8
|
+
Classifier: Operating System :: OS Independent
|
|
9
|
+
Classifier: Programming Language :: Rust
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
18
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
21
|
+
Requires-Dist: narwhals>=1.0
|
|
22
|
+
Requires-Dist: numpy
|
|
23
|
+
Requires-Dist: pyarrow>=14
|
|
24
|
+
Requires-Dist: geopandas ; extra == 'geo'
|
|
25
|
+
Requires-Dist: shapely ; extra == 'geo'
|
|
26
|
+
Requires-Dist: pyproj ; extra == 'geo'
|
|
27
|
+
Requires-Dist: fastmob-vis>=0.1.1,<0.2 ; extra == 'vis'
|
|
28
|
+
Provides-Extra: geo
|
|
29
|
+
Provides-Extra: vis
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Summary: High-performance mobility analysis with a Rust-accelerated core and backend-agnostic DataFrame API.
|
|
32
|
+
Author: Gustavo Henrique Bruno dos Santos
|
|
33
|
+
License-Expression: BSD-3-Clause
|
|
34
|
+
Requires-Python: >=3.9
|
|
35
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
36
|
+
Project-URL: Documentation, https://gefgu.github.io/fastmob/
|
|
37
|
+
Project-URL: Homepage, https://github.com/gefgu/fastmob
|
|
38
|
+
Project-URL: Issues, https://github.com/gefgu/fastmob/issues
|
|
39
|
+
Project-URL: Repository, https://github.com/gefgu/fastmob
|
|
40
|
+
|
|
41
|
+
<p align="center">
|
|
42
|
+
<img src="docs/src/assets/logo_filled.svg" alt="Fastkit-Mobility logo" width="280">
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
# Fastkit-Mobility
|
|
46
|
+
|
|
47
|
+
[](https://pypi.org/project/fastmob/)
|
|
48
|
+
[](https://pepy.tech/projects/fastmob)
|
|
49
|
+
[](https://pypi.org/project/fastmob/)
|
|
50
|
+
[](LICENSE)
|
|
51
|
+
|
|
52
|
+
**Fastkit-Mobility** helps researchers turn location data into insights about how
|
|
53
|
+
people move. Clean GPS traces, find stops and trips, measure travel patterns,
|
|
54
|
+
and simulate mobility using familiar Python dataframes. Its Rust engine handles
|
|
55
|
+
compute-intensive work while you work with pandas or Polars.
|
|
56
|
+
|
|
57
|
+
[Get started](https://gefgu.github.io/fastmob/learn/) · [Explore the examples](https://gefgu.github.io/fastmob/learn/) · [API reference](https://gefgu.github.io/fastmob/reference/) · [Benchmarks](https://gefgu.github.io/fastmob/features/benchmarks/)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
<p align="center">
|
|
61
|
+
<img src="docs/src/assets/images/home/home-geolife-staypoints-triplegs.png" alt="GPS fixes, detected stops and trips for one day of a GeoLife participant in Beijing" width="650">
|
|
62
|
+
</p>
|
|
63
|
+
|
|
64
|
+
One day of GeoLife GPS data: grey points are GPS fixes, gold circles are detected
|
|
65
|
+
stops (staypoints), and coloured lines show movement between them (triplegs). Follow the [complete GeoLife example](https://gefgu.github.io/fastmob/learn/notebooks/stay-point-detection-geolife/).
|
|
66
|
+
|
|
67
|
+
## Try it
|
|
68
|
+
|
|
69
|
+
Install Fastkit-Mobility and pandas for this example (Python 3.9 or newer):
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pip install fastmob pandas
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Calculate each person's **radius of gyration**: a measure, in kilometres, of
|
|
76
|
+
how widely their observed locations spread around their centre of movement.
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
import pandas as pd
|
|
80
|
+
from fastmob import radius_of_gyration
|
|
81
|
+
|
|
82
|
+
df = pd.DataFrame({
|
|
83
|
+
"uid": ["alice"] * 3 + ["bob"] * 3,
|
|
84
|
+
"datetime": pd.to_datetime(["2020-01-01 08:00", "2020-01-01 09:00", "2020-01-01 10:00"] * 2),
|
|
85
|
+
"lat": [41.9, 42.0, 42.1, 40.7, 40.8, 41.0],
|
|
86
|
+
"lng": [12.5, 12.5, 12.6, -74.0, -74.0, -73.9],
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
print(radius_of_gyration(df))
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
uid radius_of_gyration
|
|
94
|
+
0 alice 9.878827
|
|
95
|
+
1 bob 14.423721
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
In this small example, Bob's observed locations are more spread out than
|
|
99
|
+
Alice's. Explore more [individual and collective measures](https://gefgu.github.io/fastmob/learn/individual-and-collective-measures/).
|
|
100
|
+
|
|
101
|
+
## What can you study?
|
|
102
|
+
|
|
103
|
+
- **Clean and segment traces:** filter noisy GPS data and separate movement from stops. [Learn how](https://gefgu.github.io/fastmob/learn/clean-and-segment/).
|
|
104
|
+
- **Find stops and recurring places:** identify where people spend time and group repeated visits to locations. [Learn how](https://gefgu.github.io/fastmob/learn/staypoints-and-locations/).
|
|
105
|
+
- **Measure movement:** study individual ranges and travel patterns, or flows across a population. [Explore measures](https://gefgu.github.io/fastmob/learn/individual-and-collective-measures/).
|
|
106
|
+
- **Work with transport networks:** route and match GPS traces to road and rail networks. [Explore network analysis](https://gefgu.github.io/fastmob/learn/network-analysis/).
|
|
107
|
+
- **Model mobility:** generate synthetic trajectories or flows and compare models with observations. [Explore models](https://gefgu.github.io/fastmob/reference/models/).
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## Performance and compatibility
|
|
111
|
+
|
|
112
|
+
Fastkit-Mobility uses Rust for compute-intensive operations and supports pandas,
|
|
113
|
+
Polars and other eager dataframes through Narwhals. Many measure names and
|
|
114
|
+
signatures follow [scikit-mobility](https://github.com/scikit-mobility/scikit-mobility).
|
|
115
|
+
|
|
116
|
+
<p align="center">
|
|
117
|
+
<img src="docs/src/assets/images/home/home-benchmark-speedup.png" alt="Execution times for five mobility measures: Fastkit-Mobility with pandas compared with scikit-mobility on approximately four million Brightkite check-ins" width="800">
|
|
118
|
+
</p>
|
|
119
|
+
|
|
120
|
+
Average execution time for five measures on approximately 4 million time-sorted
|
|
121
|
+
Brightkite check-ins. Fastkit-Mobility uses pandas; the comparison is with
|
|
122
|
+
scikit-mobility. Times are averages of three runs on an Intel Core i7-10700 with
|
|
123
|
+
Python 3.12, and the chart uses a logarithmic scale. The scikit-mobility input
|
|
124
|
+
contained 3,999,891 rows and the Fastkit-Mobility input 4,000,000. Results depend
|
|
125
|
+
on the operation, data and environment. See the [raw benchmark record](https://github.com/gefgu/fastmob_benchmarks/blob/main/benchmarks/measures/results/py312_intel_core_i7_10700_16c_brightkite4M/measures_benchmarks.json)
|
|
126
|
+
and [more comparisons](https://gefgu.github.io/fastmob/features/benchmarks/).
|
|
127
|
+
|
|
128
|
+
For citing a specific software release, see the [citation guide](https://gefgu.github.io/fastmob/about/#cite-fastkit-mobility).
|
|
129
|
+
|
|
130
|
+
## More resources
|
|
131
|
+
|
|
132
|
+
- [Guides and tutorials](https://gefgu.github.io/fastmob/learn/) · [API reference](https://gefgu.github.io/fastmob/reference/) · [Release notes](https://gefgu.github.io/fastmob/release_notes/)
|
|
133
|
+
- [Contributing and development setup](docs/CONTRIBUTING.md)
|
|
134
|
+
- [Report an issue](https://github.com/gefgu/fastmob/issues): include package versions, dataframe backend, a minimal example, expected behavior and the full error.
|
|
135
|
+
|
|
136
|
+
For a fastmob release, set the version in `fastmob-py/Cargo.toml`, run the
|
|
137
|
+
release checks, and tag the tested commit `fastmob-v<version>` (for example,
|
|
138
|
+
`fastmob-v0.3.4`). Push that tag to trigger the wheel builds and PyPI release.
|
|
139
|
+
Tags named only `v<version>` do not trigger the fastmob release workflow.
|
|
140
|
+
|
|
141
|
+
## Status and support
|
|
142
|
+
|
|
143
|
+
Fastmob is actively developed. Please include versions, dataframe backend, a
|
|
144
|
+
minimal reproducible input, expected behavior, and the full error when opening
|
|
145
|
+
an issue.
|
|
146
|
+
|
|
147
|
+
## Citation
|
|
148
|
+
|
|
149
|
+
If you use Fastkit-Mobility in research, please cite the
|
|
150
|
+
[NetMob 2026 paper](https://inria.hal.science/hal-05755990):
|
|
151
|
+
|
|
152
|
+
```bibtex
|
|
153
|
+
@inproceedings{santos2026fastkit,
|
|
154
|
+
author = {Santos, Gustavo H. and Viana, Aline Carneiro and
|
|
155
|
+
Pappalardo, Luca and Silva, Thiago H.},
|
|
156
|
+
title = {Fastkit-Mobility: A High-Performance, DataFrame-Agnostic Library for Mobility Analysis},
|
|
157
|
+
booktitle = {NetMob 2026},
|
|
158
|
+
address = {Niter{\'o}i, Brazil},
|
|
159
|
+
year = {2026},
|
|
160
|
+
month = oct,
|
|
161
|
+
url = {https://inria.hal.science/hal-05755990}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
fastmob-0.3.4/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/src/assets/logo_filled.svg" alt="Fastkit-Mobility logo" width="280">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# Fastkit-Mobility
|
|
6
|
+
|
|
7
|
+
[](https://pypi.org/project/fastmob/)
|
|
8
|
+
[](https://pepy.tech/projects/fastmob)
|
|
9
|
+
[](https://pypi.org/project/fastmob/)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
|
|
12
|
+
**Fastkit-Mobility** helps researchers turn location data into insights about how
|
|
13
|
+
people move. Clean GPS traces, find stops and trips, measure travel patterns,
|
|
14
|
+
and simulate mobility using familiar Python dataframes. Its Rust engine handles
|
|
15
|
+
compute-intensive work while you work with pandas or Polars.
|
|
16
|
+
|
|
17
|
+
[Get started](https://gefgu.github.io/fastmob/learn/) · [Explore the examples](https://gefgu.github.io/fastmob/learn/) · [API reference](https://gefgu.github.io/fastmob/reference/) · [Benchmarks](https://gefgu.github.io/fastmob/features/benchmarks/)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<img src="docs/src/assets/images/home/home-geolife-staypoints-triplegs.png" alt="GPS fixes, detected stops and trips for one day of a GeoLife participant in Beijing" width="650">
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
One day of GeoLife GPS data: grey points are GPS fixes, gold circles are detected
|
|
25
|
+
stops (staypoints), and coloured lines show movement between them (triplegs). Follow the [complete GeoLife example](https://gefgu.github.io/fastmob/learn/notebooks/stay-point-detection-geolife/).
|
|
26
|
+
|
|
27
|
+
## Try it
|
|
28
|
+
|
|
29
|
+
Install Fastkit-Mobility and pandas for this example (Python 3.9 or newer):
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install fastmob pandas
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Calculate each person's **radius of gyration**: a measure, in kilometres, of
|
|
36
|
+
how widely their observed locations spread around their centre of movement.
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
import pandas as pd
|
|
40
|
+
from fastmob import radius_of_gyration
|
|
41
|
+
|
|
42
|
+
df = pd.DataFrame({
|
|
43
|
+
"uid": ["alice"] * 3 + ["bob"] * 3,
|
|
44
|
+
"datetime": pd.to_datetime(["2020-01-01 08:00", "2020-01-01 09:00", "2020-01-01 10:00"] * 2),
|
|
45
|
+
"lat": [41.9, 42.0, 42.1, 40.7, 40.8, 41.0],
|
|
46
|
+
"lng": [12.5, 12.5, 12.6, -74.0, -74.0, -73.9],
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
print(radius_of_gyration(df))
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
uid radius_of_gyration
|
|
54
|
+
0 alice 9.878827
|
|
55
|
+
1 bob 14.423721
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
In this small example, Bob's observed locations are more spread out than
|
|
59
|
+
Alice's. Explore more [individual and collective measures](https://gefgu.github.io/fastmob/learn/individual-and-collective-measures/).
|
|
60
|
+
|
|
61
|
+
## What can you study?
|
|
62
|
+
|
|
63
|
+
- **Clean and segment traces:** filter noisy GPS data and separate movement from stops. [Learn how](https://gefgu.github.io/fastmob/learn/clean-and-segment/).
|
|
64
|
+
- **Find stops and recurring places:** identify where people spend time and group repeated visits to locations. [Learn how](https://gefgu.github.io/fastmob/learn/staypoints-and-locations/).
|
|
65
|
+
- **Measure movement:** study individual ranges and travel patterns, or flows across a population. [Explore measures](https://gefgu.github.io/fastmob/learn/individual-and-collective-measures/).
|
|
66
|
+
- **Work with transport networks:** route and match GPS traces to road and rail networks. [Explore network analysis](https://gefgu.github.io/fastmob/learn/network-analysis/).
|
|
67
|
+
- **Model mobility:** generate synthetic trajectories or flows and compare models with observations. [Explore models](https://gefgu.github.io/fastmob/reference/models/).
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Performance and compatibility
|
|
71
|
+
|
|
72
|
+
Fastkit-Mobility uses Rust for compute-intensive operations and supports pandas,
|
|
73
|
+
Polars and other eager dataframes through Narwhals. Many measure names and
|
|
74
|
+
signatures follow [scikit-mobility](https://github.com/scikit-mobility/scikit-mobility).
|
|
75
|
+
|
|
76
|
+
<p align="center">
|
|
77
|
+
<img src="docs/src/assets/images/home/home-benchmark-speedup.png" alt="Execution times for five mobility measures: Fastkit-Mobility with pandas compared with scikit-mobility on approximately four million Brightkite check-ins" width="800">
|
|
78
|
+
</p>
|
|
79
|
+
|
|
80
|
+
Average execution time for five measures on approximately 4 million time-sorted
|
|
81
|
+
Brightkite check-ins. Fastkit-Mobility uses pandas; the comparison is with
|
|
82
|
+
scikit-mobility. Times are averages of three runs on an Intel Core i7-10700 with
|
|
83
|
+
Python 3.12, and the chart uses a logarithmic scale. The scikit-mobility input
|
|
84
|
+
contained 3,999,891 rows and the Fastkit-Mobility input 4,000,000. Results depend
|
|
85
|
+
on the operation, data and environment. See the [raw benchmark record](https://github.com/gefgu/fastmob_benchmarks/blob/main/benchmarks/measures/results/py312_intel_core_i7_10700_16c_brightkite4M/measures_benchmarks.json)
|
|
86
|
+
and [more comparisons](https://gefgu.github.io/fastmob/features/benchmarks/).
|
|
87
|
+
|
|
88
|
+
For citing a specific software release, see the [citation guide](https://gefgu.github.io/fastmob/about/#cite-fastkit-mobility).
|
|
89
|
+
|
|
90
|
+
## More resources
|
|
91
|
+
|
|
92
|
+
- [Guides and tutorials](https://gefgu.github.io/fastmob/learn/) · [API reference](https://gefgu.github.io/fastmob/reference/) · [Release notes](https://gefgu.github.io/fastmob/release_notes/)
|
|
93
|
+
- [Contributing and development setup](docs/CONTRIBUTING.md)
|
|
94
|
+
- [Report an issue](https://github.com/gefgu/fastmob/issues): include package versions, dataframe backend, a minimal example, expected behavior and the full error.
|
|
95
|
+
|
|
96
|
+
For a fastmob release, set the version in `fastmob-py/Cargo.toml`, run the
|
|
97
|
+
release checks, and tag the tested commit `fastmob-v<version>` (for example,
|
|
98
|
+
`fastmob-v0.3.4`). Push that tag to trigger the wheel builds and PyPI release.
|
|
99
|
+
Tags named only `v<version>` do not trigger the fastmob release workflow.
|
|
100
|
+
|
|
101
|
+
## Status and support
|
|
102
|
+
|
|
103
|
+
Fastmob is actively developed. Please include versions, dataframe backend, a
|
|
104
|
+
minimal reproducible input, expected behavior, and the full error when opening
|
|
105
|
+
an issue.
|
|
106
|
+
|
|
107
|
+
## Citation
|
|
108
|
+
|
|
109
|
+
If you use Fastkit-Mobility in research, please cite the
|
|
110
|
+
[NetMob 2026 paper](https://inria.hal.science/hal-05755990):
|
|
111
|
+
|
|
112
|
+
```bibtex
|
|
113
|
+
@inproceedings{santos2026fastkit,
|
|
114
|
+
author = {Santos, Gustavo H. and Viana, Aline Carneiro and
|
|
115
|
+
Pappalardo, Luca and Silva, Thiago H.},
|
|
116
|
+
title = {Fastkit-Mobility: A High-Performance, DataFrame-Agnostic Library for Mobility Analysis},
|
|
117
|
+
booktitle = {NetMob 2026},
|
|
118
|
+
address = {Niter{\'o}i, Brazil},
|
|
119
|
+
year = {2026},
|
|
120
|
+
month = oct,
|
|
121
|
+
url = {https://inria.hal.science/hal-05755990}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
@@ -47,6 +47,7 @@ class BaseDataFrame:
|
|
|
47
47
|
return self.df.columns
|
|
48
48
|
|
|
49
49
|
def to_native(self):
|
|
50
|
+
"""Return the stored native dataframe (a PyArrow table for tables built by the library's own readers)."""
|
|
50
51
|
return self.df
|
|
51
52
|
|
|
52
53
|
def to_pandas(self):
|
|
@@ -60,7 +61,7 @@ class BaseDataFrame:
|
|
|
60
61
|
def compare_to(self, other, value_col, *, group_col=None, metric=None):
|
|
61
62
|
"""Compare ``value_col`` against ``other``, optionally grouped by ``group_col``.
|
|
62
63
|
|
|
63
|
-
See
|
|
64
|
+
See `fastmob.measures.evaluation.compare.compare_to`.
|
|
64
65
|
"""
|
|
65
66
|
from fastmob.measures.evaluation.compare import compare_to as _compare_to
|
|
66
67
|
|
|
@@ -26,7 +26,7 @@ class FlowDataFrame(BaseDataFrame):
|
|
|
26
26
|
|
|
27
27
|
Parameters
|
|
28
28
|
----------
|
|
29
|
-
df :
|
|
29
|
+
df : dataframe, optional
|
|
30
30
|
Source data. Accepted types: ``pandas.DataFrame``,
|
|
31
31
|
``polars.DataFrame``, any Narwhals-compatible eager frame, ``list``,
|
|
32
32
|
``numpy.ndarray``, or ``dict``.
|
|
@@ -333,7 +333,7 @@ class FlowDataFrame(BaseDataFrame):
|
|
|
333
333
|
):
|
|
334
334
|
"""Plot origin-destination flows on an interactive Folium map.
|
|
335
335
|
|
|
336
|
-
Requires a tessellation to be attached (see
|
|
336
|
+
Requires a tessellation to be attached (see `to_flowdataframe`).
|
|
337
337
|
|
|
338
338
|
Parameters
|
|
339
339
|
----------
|
|
@@ -42,7 +42,7 @@ class Locations(BaseDataFrame):
|
|
|
42
42
|
|
|
43
43
|
Parameters
|
|
44
44
|
----------
|
|
45
|
-
df :
|
|
45
|
+
df : dataframe
|
|
46
46
|
Source data; any Narwhals-compatible eager backend.
|
|
47
47
|
uid_col : str, optional
|
|
48
48
|
User-ID column name for user-scoped locations. Must be ``None`` for
|
|
@@ -52,7 +52,11 @@ class Locations(BaseDataFrame):
|
|
|
52
52
|
scheme : {"cluster", "h3", "external"}, optional
|
|
53
53
|
Location-ID scheme. User locations default to ``"cluster"`` and
|
|
54
54
|
global locations default to ``"external"``.
|
|
55
|
-
location_id_col
|
|
55
|
+
location_id_col : str, optional
|
|
56
|
+
Column name overrides.
|
|
57
|
+
center_lat_col : str, optional
|
|
58
|
+
Column name overrides.
|
|
59
|
+
center_lng_col : str, optional
|
|
56
60
|
Column name overrides.
|
|
57
61
|
validate : bool, optional
|
|
58
62
|
When True (default), check that required columns are present.
|
|
@@ -120,9 +124,15 @@ class Locations(BaseDataFrame):
|
|
|
120
124
|
|
|
121
125
|
Parameters
|
|
122
126
|
----------
|
|
123
|
-
tessellation :
|
|
127
|
+
tessellation : dataframe
|
|
124
128
|
Tile table with IDs and centres or geometries.
|
|
125
|
-
tile_id_col
|
|
129
|
+
tile_id_col : str, optional
|
|
130
|
+
Source column names.
|
|
131
|
+
lat_col : str, optional
|
|
132
|
+
Source column names.
|
|
133
|
+
lng_col : str, optional
|
|
134
|
+
Source column names.
|
|
135
|
+
geometry_col : str, optional
|
|
126
136
|
Source column names.
|
|
127
137
|
|
|
128
138
|
Returns
|
|
@@ -194,11 +204,11 @@ class Locations(BaseDataFrame):
|
|
|
194
204
|
def identify(self, staypoints: Any, method: str = "freq", **kwargs: Any) -> Locations:
|
|
195
205
|
"""Label each location as ``"home"``, ``"work"``, or ``"other"``.
|
|
196
206
|
|
|
197
|
-
See
|
|
207
|
+
See `fastmob.preprocessing.identify_locations`.
|
|
198
208
|
|
|
199
209
|
Parameters
|
|
200
210
|
----------
|
|
201
|
-
staypoints :
|
|
211
|
+
staypoints : dataframe or Staypoints
|
|
202
212
|
Location-assigned visits.
|
|
203
213
|
method : str, optional
|
|
204
214
|
Purpose-identification method. Default is ``"freq"``.
|
|
@@ -36,7 +36,7 @@ class Positionfixes(TrajDataFrame):
|
|
|
36
36
|
Parameters
|
|
37
37
|
----------
|
|
38
38
|
**kwargs
|
|
39
|
-
Forwarded to
|
|
39
|
+
Forwarded to `fastmob.preprocessing.stay_locations`
|
|
40
40
|
(``minutes_for_a_stop``, ``spatial_radius_km``, etc.).
|
|
41
41
|
|
|
42
42
|
Returns
|
|
@@ -106,16 +106,16 @@ class Positionfixes(TrajDataFrame):
|
|
|
106
106
|
----------
|
|
107
107
|
staypoints : Staypoints
|
|
108
108
|
Staypoints previously generated from this same trajectory (ideally
|
|
109
|
-
via
|
|
109
|
+
via `generate_staypoints`, so stop-detection parameters
|
|
110
110
|
match).
|
|
111
111
|
gap_threshold_min : float, optional
|
|
112
112
|
Reserved for future gap-based tripleg splitting; unused by the
|
|
113
113
|
current ``"between_staypoints"`` method. Default ``15.0``.
|
|
114
114
|
**stop_kwargs
|
|
115
115
|
Stop-detection parameter overrides forwarded to
|
|
116
|
-
|
|
116
|
+
`fastmob.preprocessing.segment` (``stop_radius_km``,
|
|
117
117
|
``minutes_for_a_stop``, ...). Defaults to the parameters recorded
|
|
118
|
-
on ``staypoints`` (from
|
|
118
|
+
on ``staypoints`` (from `generate_staypoints`) when not
|
|
119
119
|
given.
|
|
120
120
|
|
|
121
121
|
Returns
|
|
@@ -34,9 +34,17 @@ class Staypoints(BaseDataFrame):
|
|
|
34
34
|
|
|
35
35
|
Parameters
|
|
36
36
|
----------
|
|
37
|
-
df :
|
|
37
|
+
df : dataframe
|
|
38
38
|
Source data; any Narwhals-compatible eager backend.
|
|
39
|
-
uid_col
|
|
39
|
+
uid_col : str, optional
|
|
40
|
+
Explicit column name overrides; auto-detected when None.
|
|
41
|
+
lat_col : str, optional
|
|
42
|
+
Explicit column name overrides; auto-detected when None.
|
|
43
|
+
lng_col : str, optional
|
|
44
|
+
Explicit column name overrides; auto-detected when None.
|
|
45
|
+
started_at_col : str, optional
|
|
46
|
+
Explicit column name overrides; auto-detected when None.
|
|
47
|
+
finished_at_col : str, optional
|
|
40
48
|
Explicit column name overrides; auto-detected when None.
|
|
41
49
|
validate : bool, optional
|
|
42
50
|
When True (default), check that required columns are present and
|
|
@@ -82,12 +90,12 @@ class Staypoints(BaseDataFrame):
|
|
|
82
90
|
|
|
83
91
|
Existing instances are returned unchanged. Raw dataframe-like inputs
|
|
84
92
|
are constructed with the same column detection and validation as
|
|
85
|
-
|
|
93
|
+
`Staypoints`, so measures can share one explicit boundary for
|
|
86
94
|
accepting raw staypoint data.
|
|
87
95
|
|
|
88
96
|
Parameters
|
|
89
97
|
----------
|
|
90
|
-
value : Staypoints or
|
|
98
|
+
value : Staypoints or dataframe
|
|
91
99
|
Existing wrapper or raw interval table.
|
|
92
100
|
**column_overrides
|
|
93
101
|
Explicit column names, accepted only for a raw table.
|
|
@@ -117,7 +125,7 @@ class Staypoints(BaseDataFrame):
|
|
|
117
125
|
|
|
118
126
|
Parameters
|
|
119
127
|
----------
|
|
120
|
-
df :
|
|
128
|
+
df : dataframe
|
|
121
129
|
Staypoint interval table.
|
|
122
130
|
started_at_col : str
|
|
123
131
|
Start-time column.
|
|
@@ -193,7 +201,7 @@ class Staypoints(BaseDataFrame):
|
|
|
193
201
|
def create_activity_flag(self, method: str = "time_threshold", time_threshold_min: float = 15.0) -> Staypoints:
|
|
194
202
|
"""Flag each staypoint as a genuine "activity" by dwell time.
|
|
195
203
|
|
|
196
|
-
See
|
|
204
|
+
See `fastmob.preprocessing.create_activity_flag`.
|
|
197
205
|
|
|
198
206
|
Parameters
|
|
199
207
|
----------
|
|
@@ -395,14 +403,14 @@ class Staypoints(BaseDataFrame):
|
|
|
395
403
|
def build_stvd(self, locations: Locations, **kwargs: Any) -> Any:
|
|
396
404
|
"""Aggregate these staypoints against a global Locations catalogue into an STVD frame.
|
|
397
405
|
|
|
398
|
-
See
|
|
406
|
+
See `fastmob.measures.collective.build_stvd`.
|
|
399
407
|
|
|
400
408
|
Parameters
|
|
401
409
|
----------
|
|
402
410
|
locations : Locations
|
|
403
411
|
Global location catalogue.
|
|
404
412
|
**kwargs
|
|
405
|
-
Forwarded to
|
|
413
|
+
Forwarded to `fastmob.measures.collective.build_stvd`.
|
|
406
414
|
|
|
407
415
|
Returns
|
|
408
416
|
-------
|
|
@@ -420,7 +428,7 @@ class Staypoints(BaseDataFrame):
|
|
|
420
428
|
def interest_network(self, locations: Locations) -> Any:
|
|
421
429
|
"""Return the collective interest network over global ``locations``.
|
|
422
430
|
|
|
423
|
-
See
|
|
431
|
+
See `fastmob.measures.collective.interest_network`.
|
|
424
432
|
|
|
425
433
|
Returns
|
|
426
434
|
-------
|
|
@@ -441,7 +449,7 @@ class Staypoints(BaseDataFrame):
|
|
|
441
449
|
) -> Any:
|
|
442
450
|
"""Compute one home-anchored mobility motif per user and day.
|
|
443
451
|
|
|
444
|
-
See
|
|
452
|
+
See `fastmob.measures.individual.motifs.daily_motifs_from_staypoints`.
|
|
445
453
|
|
|
446
454
|
Parameters
|
|
447
455
|
----------
|
|
@@ -38,7 +38,7 @@ class Tours(BaseDataFrame):
|
|
|
38
38
|
|
|
39
39
|
Parameters
|
|
40
40
|
----------
|
|
41
|
-
df :
|
|
41
|
+
df : dataframe
|
|
42
42
|
Source data; any Narwhals-compatible eager backend.
|
|
43
43
|
uid_col : str, optional
|
|
44
44
|
User-ID column name.
|
|
@@ -59,7 +59,7 @@ class Tours(BaseDataFrame):
|
|
|
59
59
|
def from_trips(trips: Any, staypoints_with_location: Any) -> Tours:
|
|
60
60
|
"""Group consecutive trips into tours.
|
|
61
61
|
|
|
62
|
-
See
|
|
62
|
+
See `fastmob.core.trips_dataframe.Trips.generate_tours`.
|
|
63
63
|
|
|
64
64
|
Parameters
|
|
65
65
|
----------
|
|
@@ -44,7 +44,7 @@ class TrajDataFrame(BaseDataFrame):
|
|
|
44
44
|
|
|
45
45
|
Parameters
|
|
46
46
|
----------
|
|
47
|
-
df :
|
|
47
|
+
df : dataframe
|
|
48
48
|
Source data. Accepted types: ``pandas.DataFrame``, ``polars.DataFrame``,
|
|
49
49
|
any Narwhals-compatible eager frame, plain ``list``, ``numpy.ndarray``, or
|
|
50
50
|
``dict``.
|
|
@@ -302,13 +302,13 @@ class TrajDataFrame(BaseDataFrame):
|
|
|
302
302
|
def work_location(self, **kwargs):
|
|
303
303
|
"""Infer the most-visited weekday daytime location for each user.
|
|
304
304
|
|
|
305
|
-
Delegates to
|
|
305
|
+
Delegates to `fastmob.measures.individual.work_location` using
|
|
306
306
|
this dataframe's resolved column metadata and sorted fast path.
|
|
307
307
|
|
|
308
308
|
Parameters
|
|
309
309
|
----------
|
|
310
310
|
**kwargs
|
|
311
|
-
Forwarded to
|
|
311
|
+
Forwarded to `fastmob.measures.individual.work_location`.
|
|
312
312
|
|
|
313
313
|
Returns
|
|
314
314
|
-------
|
|
@@ -343,7 +343,7 @@ class TrajDataFrame(BaseDataFrame):
|
|
|
343
343
|
before an interpolated point is inserted. Default ``3600.0``.
|
|
344
344
|
**method_kwargs
|
|
345
345
|
Method-specific parameters; see
|
|
346
|
-
|
|
346
|
+
`fastmob.trajectory.interpolate`.
|
|
347
347
|
|
|
348
348
|
Returns
|
|
349
349
|
-------
|
|
@@ -387,7 +387,7 @@ class TrajDataFrame(BaseDataFrame):
|
|
|
387
387
|
def smooth(self, method: str = "kalman_cv", **method_kwargs) -> TrajDataFrame:
|
|
388
388
|
"""Smooth the trajectory's positions using a named algorithm.
|
|
389
389
|
|
|
390
|
-
Unlike
|
|
390
|
+
Unlike `interpolate`, row count and row order are unchanged --
|
|
391
391
|
every point's ``(lat, lng)`` is replaced with a denoised estimate at
|
|
392
392
|
its original timestamp.
|
|
393
393
|
|
|
@@ -397,7 +397,7 @@ class TrajDataFrame(BaseDataFrame):
|
|
|
397
397
|
Only ``"kalman_cv"`` is shipped currently. Default ``"kalman_cv"``.
|
|
398
398
|
**method_kwargs
|
|
399
399
|
Method-specific parameters; see
|
|
400
|
-
|
|
400
|
+
`fastmob.trajectory.smooth`.
|
|
401
401
|
|
|
402
402
|
Returns
|
|
403
403
|
-------
|
|
@@ -491,7 +491,7 @@ class TrajDataFrame(BaseDataFrame):
|
|
|
491
491
|
Default ``"dtw"``.
|
|
492
492
|
**method_kwargs
|
|
493
493
|
Method-specific parameters; see
|
|
494
|
-
|
|
494
|
+
`fastmob.trajectory.trajectory_distance`.
|
|
495
495
|
|
|
496
496
|
Returns
|
|
497
497
|
-------
|
|
@@ -1018,7 +1018,7 @@ class TrajDataFrame(BaseDataFrame):
|
|
|
1018
1018
|
"""Plot detected stop locations on an interactive Folium map.
|
|
1019
1019
|
|
|
1020
1020
|
Requires a TrajDataFrame with a ``leaving_datetime`` column
|
|
1021
|
-
(output of
|
|
1021
|
+
(output of `fastmob.preprocessing.stay_locations`).
|
|
1022
1022
|
|
|
1023
1023
|
Parameters
|
|
1024
1024
|
----------
|
|
@@ -55,7 +55,7 @@ class Triplegs(BaseDataFrame):
|
|
|
55
55
|
|
|
56
56
|
Parameters
|
|
57
57
|
----------
|
|
58
|
-
df :
|
|
58
|
+
df : dataframe
|
|
59
59
|
Source data; any Narwhals-compatible eager backend.
|
|
60
60
|
uid_col : str, optional
|
|
61
61
|
User-ID column name.
|
|
@@ -75,7 +75,7 @@ class Triplegs(BaseDataFrame):
|
|
|
75
75
|
def predict_transport_mode(self, method: str = "simple-coarse", categories: dict | None = None) -> Triplegs:
|
|
76
76
|
"""Classify each tripleg's transport mode from its average speed.
|
|
77
77
|
|
|
78
|
-
See
|
|
78
|
+
See `fastmob.preprocessing.predict_transport_mode`.
|
|
79
79
|
|
|
80
80
|
Parameters
|
|
81
81
|
----------
|
|
@@ -106,7 +106,7 @@ class Triplegs(BaseDataFrame):
|
|
|
106
106
|
) -> Any:
|
|
107
107
|
"""Aggregate this ``mode``-labeled table into a modal-split table.
|
|
108
108
|
|
|
109
|
-
See
|
|
109
|
+
See `fastmob.preprocessing.calculate_modal_split`.
|
|
110
110
|
|
|
111
111
|
Returns
|
|
112
112
|
-------
|
|
@@ -124,7 +124,7 @@ class Triplegs(BaseDataFrame):
|
|
|
124
124
|
def generate_trips(self, staypoints: Any, gap_threshold_min: float = 15.0) -> Any:
|
|
125
125
|
"""Group consecutive triplegs into trips.
|
|
126
126
|
|
|
127
|
-
See
|
|
127
|
+
See `fastmob.core.trips_dataframe.Trips.from_triplegs`.
|
|
128
128
|
|
|
129
129
|
Examples
|
|
130
130
|
--------
|
|
@@ -143,7 +143,7 @@ class Triplegs(BaseDataFrame):
|
|
|
143
143
|
) -> Triplegs:
|
|
144
144
|
"""Derive triplegs from positionfixes + already-generated staypoints.
|
|
145
145
|
|
|
146
|
-
See
|
|
146
|
+
See `fastmob.core.positionfixes_dataframe.Positionfixes.generate_triplegs`.
|
|
147
147
|
|
|
148
148
|
Returns
|
|
149
149
|
-------
|