NOMAD: Network for Open Mobility Analysis and Data

Python 3.9+ MIT License

NOMAD is an open-source Python library for end-to-end processing of large-scale GPS mobility data. Part of the NSF-funded NOMAD research infrastructure project, it provides production-ready tools for mobility data analysis with seamless scaling from local workstations to Spark clusters.

NOMAD builds on previous software resources—like scikit-mobility, mobilkit, and trackintel—with the goal of providing a single, production-ready library that covers the entire processing pipeline in a form suitable for analysis of massive datasets and to aid in the replicability of existing research.

All functions are implemented in Python with parallel equivalents in PySpark, enabling the same analysis notebook to run on a workstation or a Spark cluster without API changes.

Installation

pip install git+https://github.com/Watts-Lab/nomad.git

Modules Overview

Module

Description

Data Ingestion

Read CSV, Parquet, GeoJSON; validate schemas; return Pandas or Spark DataFrames

Filtering & Completeness

Assess coverage; filter by completeness, geography, time; handle projections

Tessellation

Map pings to H3, S2, or custom grids for grid-based algorithms

Stop Detection

DBSCAN, HDBSCAN, grid-based, and sequential (Lachesis) algorithms

Visit Attribution

Frequency and time-window heuristics for home/workplace inference

Mobility Metrics

Radius of gyration, travel distance, entropy, and related indicators

Co-location & Contact Networks

Build proximity graphs from POI visits or spatial-temporal proximity

Aggregation & Debiasing

Differential privacy, k-anonymity, debiasing, and post-stratification

Synthetic Data Generation

EPR models and point process samplers for trajectory generation

Community & Support

  • Issues: Report bugs on GitHub Issues

  • Contribute: See our contribution guidelines

  • License: MIT © University of Pennsylvania 2025

Indices and tables