Metadata-Version: 2.4
Name: fastmob
Version: 0.1.2
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Dist: narwhals>=1.0
Requires-Dist: pandas>=1.5
Requires-Dist: simsimd>=5.3
Requires-Dist: scikit-learn>=1.3.2 ; extra == 'ai'
Requires-Dist: geopandas ; extra == 'data'
Requires-Dist: shapely ; extra == 'data'
Requires-Dist: pyproj ; extra == 'data'
Requires-Dist: requests ; extra == 'data'
Requires-Dist: pre-commit ; extra == 'dev'
Requires-Dist: maturin>=1.13,<2.0 ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: pyarrow ; extra == 'dev'
Requires-Dist: polars ; extra == 'dev'
Requires-Dist: ruff ; extra == 'dev'
Requires-Dist: scalene ; extra == 'dev'
Requires-Dist: memray ; extra == 'dev'
Requires-Dist: scikit-learn>=1.3.2 ; extra == 'dev'
Requires-Dist: tqdm ; extra == 'dev'
Requires-Dist: scipy ; extra == 'dev'
Requires-Dist: powerlaw ; extra == 'dev'
Requires-Dist: statsmodels ; extra == 'dev'
Requires-Dist: python-igraph ; extra == 'dev'
Requires-Dist: pydivsufsort ; extra == 'dev'
Requires-Dist: geopandas ; extra == 'dev'
Requires-Dist: shapely ; extra == 'dev'
Requires-Dist: pyproj ; extra == 'dev'
Requires-Dist: h3 ; extra == 'dev'
Requires-Dist: requests ; extra == 'dev'
Requires-Dist: psutil ; extra == 'dev'
Requires-Dist: movingpandas ; extra == 'dev-movingpandas'
Requires-Dist: geopandas ; extra == 'dev-movingpandas'
Requires-Dist: fiona ; extra == 'dev-skmob'
Requires-Dist: scikit-mobility ; extra == 'dev-skmob'
Requires-Dist: pydivsufsort ; extra == 'diversity'
Requires-Dist: zensical>=0.0.41 ; python_full_version >= '3.10' and extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.25 ; extra == 'docs'
Requires-Dist: scipy ; extra == 'fitting'
Requires-Dist: scipy ; extra == 'generation'
Requires-Dist: powerlaw ; extra == 'generation'
Requires-Dist: statsmodels ; extra == 'generation'
Requires-Dist: python-igraph ; extra == 'generation'
Requires-Dist: tqdm ; extra == 'generation'
Requires-Dist: geopandas ; extra == 'tessellation'
Requires-Dist: shapely ; extra == 'tessellation'
Requires-Dist: pyproj ; extra == 'tessellation'
Requires-Dist: h3 ; extra == 'tessellation'
Requires-Dist: requests ; extra == 'tessellation'
Requires-Dist: folium ; extra == 'visualization'
Requires-Dist: matplotlib ; extra == 'visualization'
Requires-Dist: geojson ; extra == 'visualization'
Provides-Extra: ai
Provides-Extra: data
Provides-Extra: dev
Provides-Extra: dev-movingpandas
Provides-Extra: dev-skmob
Provides-Extra: diversity
Provides-Extra: docs
Provides-Extra: fitting
Provides-Extra: generation
Provides-Extra: tessellation
Provides-Extra: visualization
License-File: LICENSE
Summary: High-performance mobility analysis with a Rust-accelerated core and backend-agnostic DataFrame API.
Author: Gustavo Henrique Bruno dos Santos
License-Expression: BSD-3-Clause
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://gefgu.github.io/fastmob/
Project-URL: Homepage, https://github.com/gefgu/fastmob
Project-URL: Issues, https://github.com/gefgu/fastmob/issues
Project-URL: Repository, https://github.com/gefgu/fastmob

# fastmob

High-performance mobility analysis with backend-agnostic dataframe support and Rust-accelerated compute kernels.

## Key Features

- **Backend-agnostic dataframes**: use pandas, Polars, or other eager Narwhals-compatible dataframes as inputs.
- **Rust-accelerated kernels**: run compute-heavy mobility operations through a compiled PyO3 extension.
- **Trajectory preprocessing**: filter noisy trajectories, compress movement records, detect stay locations, cluster stops, and transform CDR records.
- **Mobility measures**: compute jump lengths, radius of gyration, waiting times, location frequencies, entropy, predictability, origin-destination matrices, and related individual or collective metrics.
- **Modeling and generation**: build gravity, radiation, EPR, DITRAS, Markov diary, GeoSim, and spatial-temporal social trajectory models.
- **Privacy analysis**: evaluate mobility-data privacy risk with location, frequency, dataframe, and attack-oriented utilities.
- **Tessellation and IO helpers**: work with spatial tiles, trajectory dataframes, flow dataframes, datasets, and file-based mobility inputs.
- **Validation-focused development**: maintain correctness tests, benchmark outputs, profiling support, and compatibility checks for performance-sensitive workflows.

## Installation

```bash
pip install fastmob
```

For development from source:

```bash
uv sync --extra dev
env -u CONDA_PREFIX uv run maturin develop
```

## Quick Example

```python
import pandas as pd
from fastmob import jump_lengths

df = pd.DataFrame(
    {
        "uid": ["alice", "alice", "alice", "bob", "bob"],
        "datetime": pd.date_range("2020-01-01", periods=5, freq="h"),
        "lat": [41.9, 42.0, 42.1, 40.7, 40.8],
        "lng": [12.5, 12.5, 12.5, -74.0, -74.0],
    }
)

result = jump_lengths(df)
print(result)
```

## Development Checks

```bash
uv run pytest
uv run ruff check
```

