Skip to content

v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Jun 16:33
81b27db

New Features

  • Mobility can now be installed from PyPI as mobility-tools, while keeping the Python import name mobility. (#371)
  • Added a GitHub release workflow that builds release artifacts and publishes to PyPI with trusted publishing. (#371, #381, #382)
  • Added reproducible GTFS source selection for public transport routing, so projects can share and reuse the same GTFS source catalog. (#369)
  • Added support for Swiss data and improved French communal data. (#87, #85)
  • Added modelling support for school, leisure, studies, carpool, public transport, congestion, and multimodal workflows. (#115, #262, #200, #136, #113, #205, #203)
  • Added group day trip simulation with scenario-aware runs, iteration states, diagnostics, result tables, metrics, sensitivity analysis, and restart support. (#323, #341, #342, #348, #367, #261)
  • Added scenario-aware and time-varying parameters, parameter validation, parameter reports, and default scenario fallbacks. (#258, #282, #340, #240, #366)
  • Added transport-zone preparation improvements, sparse-zone merging, Python backend support, map helpers, and transport-zone reports. (#271, #332, #344, #331, #347)
  • Added route, traffic, public transport, and travel-cost evaluation tools. (#211, #205, #222, #203)
  • Added a Dash asset DAG viewer to inspect runtime dependencies. (#360)

Bug Fixes

  • Fixed package runtime resources so installed users get the data files needed by Mobility. (#371, #382)
  • Fixed public transport leg parameter resolution for scenario-and-iteration-dependent access and egress costs. (#370)
  • Fixed GTFS parsing and routing edge cases, including missing agency_id, malformed calendar_dates, and GTFS time-offset issues. (#180, #175, #217)
  • Fixed high memory usage and improved memory handling in long simulations. (#328, #343)
  • Fixed bugs in PopulationTrips, destination sampling, trip home returns, metrics, probability calculations, and flow reuse between runs. (#164, #238, #310, #327, #214, #215, #260, #349)
  • Fixed transport graph and congestion issues, including cleanup, OSM filtering, one-way tags, restricted roads, ferry links, and lane capacity parsing. (#306, #234, #207, #176, #320)
  • Fixed CI download progress crashes caused by overlapping Rich progress displays. (#378)
  • Fixed compatibility issues with newer pandas, pyarrow, R, and dependency versions. (#60, #67, #119, #275)

Chores

  • Reworked the release process around PyPI, GitHub releases, trusted publishing, release docs, and packaged artifact checks. (#371, #377, #380, #381, #382)
  • Simplified the release build so it no longer depends on the custom CI container image. (#381)
  • Added and improved CI workflows, coverage reporting, Codecov, Dependabot, macOS install checks, and a prebuilt CI image for normal tests. (#29, #32, #102, #139, #243, #249, #278, #355, #356, #357)
  • Improved dependency management for users, tests, Python packages, and R packages. (#275, #168, #371)
  • Added a PR template and clearer contribution workflow. (#286)
  • Reworked documentation, README files, Read the Docs setup, quickstart material, examples, model pages, API notes, and dependency notes. (#30, #33, #63, #64, #65, #66, #72, #73, #74, #75, #186, #321, #368)
  • Switched the maintained quickstart and tests to the Limoges example. (#354)

Migration Notes

Install from PyPI with:

pip install mobility-tools

Keep importing the package as before:

import mobility

Public transport routing now expects explicit GTFS routing inputs such as gtfs_reference_date and gtfs_sources_folder for reproducible runs. (#369)

Existing projects should be reviewed before rerunning because model internals, transport costs, parameters, dependencies, and public transport inputs changed substantially since v0.0.1.

Changelog

This is a broad catch-up release after several years without a formal release. The highlights above summarize the main user-facing changes; the full generated changelog below includes feature work, fixes, documentation, CI, packaging, and internal refactors.

What's Changed

  • Bases demande opportunite by @AntoineGauchot in #17
  • [example] improve Millau example by @Mind-the-Cap in #21
  • add flake8 and pytest by @Mind-the-Cap in #29
  • ajout de codecov by @Mind-the-Cap in #32
  • Create README.md by @Mind-the-Cap in #30
  • Improve docstrings by @Mind-the-Cap in #34
  • Création d'un README pour les données by @Mind-the-Cap in #33
  • Add db comparison example by @louisegontier in #40
  • Update scripts groupe 1 by @AyoubFOUNDOU in #46
  • Comments by @AyoubFOUNDOU in #50
  • Update scripts groupe 1 by @cpequign in #49
  • Update scripts groupe 1 by @cpequign in #52
  • Update scripts groupe 1 by @AnasLahmar in #53
  • Update scripts groupe 1 by @AnasLahmar in #54
  • readme update by @AnasLahmar in #55
  • Add trip type and BLOGDIST by @Mind-the-Cap in #36
  • fix bug in emp_2019 parser by @louisegontier in #56
  • Add info about INSEE data in the readme by @Mind-the-Cap in #41
  • Add numeric_only arg to pandas sum to avoid an error by @FlxPo in #60
  • Carbon by @louisegontier in #31
  • Small docstrings improvements by @Mind-the-Cap in #62
  • Add config for readthedocs by @Mind-the-Cap in #63
  • Improve doc config by @Mind-the-Cap in #64
  • Amélioration des README by @Mind-the-Cap in #65
  • Change doc config by @Mind-the-Cap in #66
  • Test doc by @Mind-the-Cap in #70
  • Test doc by @Mind-the-Cap in #71
  • Use myst_parser for readthedocs by @Mind-the-Cap in #72
  • Add a (Markdown) index in doc by @Mind-the-Cap in #73
  • Various improvements by Centrale Lyon students by @Mind-the-Cap in #58
  • Change Sphinx configuration by @Mind-the-Cap in #74
  • Add Readthedocs configuration by @Mind-the-Cap in #75
  • Ajout de pyarrow dans les packages nécessaires by @FlxPo in #67
  • Departments radiation functions are now main functions by @Mind-the-Cap in #76
  • Add badges by @Mind-the-Cap in #77
  • Change test strategy by @Mind-the-Cap in #78
  • Update test_ademe_base_carbone_api.py by @Mind-the-Cap in #86
  • [Data] Update communal data in France by @Mind-the-Cap in #85
  • Add Swiss data by @Mind-the-Cap in #87
  • Update conf.py by @Mind-the-Cap in #93
  • Localisation multimodale des trajets domicile-travail by @FlxPo in #113
  • Montée de version de R de 4.1.3 à 4.4.1 by @FlxPo in #119
  • Create install-mac.yml by @FlxPo in #139
  • Add all changes from carpool branch by @Mind-the-Cap in #136
  • Ajout de la possibilité de calibrer le modèle de radiation pour le motif domicile-travail by @FlxPo in #114
  • R packages errors by @Mind-the-Cap in #128
  • Correction de bugs dans la préparation des données GTFS by @FlxPo in #161
  • Correction d'une erreur de colonne manquante dans Population by @FlxPo in #164
  • Refactoring et documentation PopulationTrips by @FlxPo in #165
  • Suppression de la dépendance au package R readxl by @FlxPo in #168
  • Correction de la méthode de construction de la variable socio_pro_category by @FlxPo in #172
  • Forcer les noms de colonnes de la table calendar_dates des GTFS quand le parsing échoue by @FlxPo in #175
  • Suppression des voies taggées "ferry" dans OSM dans les graphes de transport by @FlxPo in #176
  • Améliorer la stratégie de gestion du cache by @FlxPo in #178
  • Ajout de la colonne agency_id si manquante by @FlxPo in #180
  • Une classe Results pour analyser les résultats de PopulationTrips by @FlxPo in #167
  • Calcul de la colonne time dans PublicTransportGeneralizedCost.get by @FlxPo in #184
  • Extraire la couche multipolygons des fichiers pbf dans prepare_transport_zones.R by @FlxPo in #182
  • Calcul de la colonne time dans DetailedCarpoolGeneralizedCost.get by @FlxPo in #187
  • Improve doc and readme by @Mind-the-Cap in #186
  • Update geofabrik reference date by @Mind-the-Cap in #190
  • Correction de conflit de types de colonnes int32 int64 by @FlxPo in #191
  • Filtrage des résultats par statut inner/outer des zones de transport + Découpage des géométries TransportZones / StudyArea by @FlxPo in #195
  • Ajout du motif “Études” à la modélisation des déplacements by @lucas-boh in #200
  • Ajout d'une classe TravelCostsEvaluation by @FlxPo in #203
  • Evaluation des estimations de trafic by @FlxPo in #205
  • [US] Ajouter une interface Dash Minimale - Carte et indicateur global by @adam-benyekkou in #188
  • Ajout de la possibilité de visualiser les itinéraires routiers du modèle avec une classe RoutingEvaluation by @FlxPo in #211
  • Filtrage des voies réservées aux poids lourds / covoiturage / service / accès restreint by @FlxPo in #207
  • Correction d'une erreur dans le calcul des probabilités lorsque les coûts sont très élevés by @FlxPo in #214
  • Correction d'une erreur dans le calcul des probabilités lorsque les coûts sont très élevés v2 by @FlxPo in #215
  • Erreur de décalage temporel entre données de GTFSRouter et de GTFSStops by @FlxPo in #217
  • Corrections et améliorations by @FlxPo in #220
  • Correction pour les modes non représentés dans les enquêtes (survey_ids=[]) by @FlxPo in #221
  • Correction d'un bug possible lors de la création de PublicTransportNetworkEvaluation by @FlxPo in #222
  • correct link for installation by @Mind-the-Cap in #224
  • update examples by @Mind-the-Cap in #225
  • Méthode alternative d'installation de pak by @FlxPo in #228
  • Force oneway tags to be either yes or no to avoid a bug in dodgr by @FlxPo in #234
  • Suppression du parallélisme dans prepare_transport_zones.R by @FlxPo in #232
  • Calcul séquentiel pour les transport zones + Fix clustering quand n buildings < n clusters by @FlxPo in #235
  • Rendre les résultats de PopulationTrips constants à seed fixe by @FlxPo in #238
  • [US] Visualiser l'offre de transport décrite par les GTFS #197 by @mariegrandclement in #230
  • Améliorer la documentation de PopulationTrips et la validation de ses arguments by @FlxPo in #239
  • add cost_per_person by @Mind-the-Cap in #236
  • Get back coverage reports by @Mind-the-Cap in #243
  • Create .coveragerc by @Mind-the-Cap in #246
  • Lower coverage targets by @Mind-the-Cap in #247
  • Use Pydantic to manage parameter metadata and validation by @FlxPo in #258
  • Fix a typo in prepare_transport_zones.R by @FlxPo in #259
  • Avoid leakage of flows data between subsequent runs by @FlxPo in #260
  • Update README.md by @Mind-the-Cap in #252
  • Align stay-home baseline utility with min_activity_time_constant by @FlxPo in #265
  • Use saturation-weighted effective sink in destination sampling by @FlxPo in #267
  • Leisures by @lucas-boh in #262
  • Replace clara clustering by kmeans + knn clustering when building transport zones by @FlxPo in #271
  • Add state-transition waterfall diagnostic by @FlxPo in #269
  • [US] Établir un rapport de tous les paramètres d'entrée #198 by @mariegrandclement in #240
  • Add checkpoints to PopulationTrips so runs restart from the last computed iteration by @FlxPo in #261
  • Add walk as default value for first and last legs in PublicTransportMode by @Mind-the-Cap in #245
  • Create motives.md by @Mind-the-Cap in #106
  • Remove now useless error raising in LeisureMotive by @FlxPo in #272
  • Tests with cov by @Mind-the-Cap in #249
  • External mobility surveys by @FlxPo in #274
  • Improve dependencies management for users and testing by @FlxPo in #275
  • Add dependabot config by @FlxPo in #278
  • align car and PT beeline OD cutoffs by @FlxPo in #273
  • Update pytest-cov requirement from <7,>=5 to >=5,<8 by @dependabot[bot] in #280
  • Update myst-parser requirement from <5,>=3 to >=3,<6 by @dependabot[bot] in #279
  • Add a PR description template by @FlxPo in #286
  • Replace data.cquest.org downloads with carte.gouv.fr downloads by @FlxPo in #291
  • Refactor by @FlxPo in #289
  • Add time varying parameters by @FlxPo in #282
  • Ability to control the allowed state transitions during a simulation by @FlxPo in #284
  • Evaluations by iteration by @FlxPo in #296
  • Host BPE24 on data.gouv.fr to avoid intermittent download issues by @FlxPo in #292
  • Oscillations by @FlxPo in #303
  • Change flow disagregation strategy in load_path_graph.R by @FlxPo in #305
  • Fix congestion artifacts clean up by @FlxPo in #306
  • Optimizations to speed up simulations by @FlxPo in #307
  • Fix last "go home" trip bug by @FlxPo in #310
  • Correct quickstart by @Mind-the-Cap in #313
  • Add SurveyPlanAssets by @FlxPo in #312
  • Add a way to skip errors for download_file by @FlxPo in #308
  • Filter out OSM buildings that are huts by @FlxPo in #315
  • Rust backend to speed up modes sequences search by @FlxPo in #317
  • Update activities duration when travel times change because of congestion by @FlxPo in #318
  • Lane capacity and traffic lights parsing by @FlxPo in #320
  • Update installation.md by @Mind-the-Cap in #321
  • Add convergence and model quality metrics by @FlxPo in #322
  • Group day trips by @FlxPo in #323
  • R runner observability by @FlxPo in #324
  • Detour penalty by @FlxPo in #326
  • Fix metrics bug by @FlxPo in #327
  • Fix high memory usage by @FlxPo in #328
  • Prevent truncated destination draws from reaching mode sequence search by @FlxPo in #329
  • Configure transport graph congestion loading by @FlxPo in #330
  • Add Python transport zone backend by @FlxPo in #332
  • Add transport zone report maps by @FlxPo in #331
  • Add destination shadow price controls by @FlxPo in #333
  • Add plan transition stability controls by @FlxPo in #334
  • Refresh active destination candidates by @FlxPo in #335
  • Forward group day trip parameters by @FlxPo in #336
  • Add group day trip diagnostics and metrics by @FlxPo in #337
  • Refine group day trip utility calibration by @FlxPo in #338
  • Add scenario-aware parameter values by @FlxPo in #340
  • Add scenario-aware group day trip runs by @FlxPo in #341
  • Add group day trip result tables API by @FlxPo in #342
  • Add transport-zone metric map helpers by @FlxPo in #347
  • Add group day trip result metrics by @FlxPo in #348
  • Add opt-in idle monitoring for R scripts by @FlxPo in #343
  • Merge sparse transport zones during preparation by @FlxPo in #344
  • Expose transport-zone study area countries by @FlxPo in #345
  • Use run parameters for iteration settings by @FlxPo in #346
  • Fix anchor destination sampling by @FlxPo in #349
  • Cache group day trip iteration states by @FlxPo in #350
  • Reuse unchanged group-day-trip iteration assets by @FlxPo in #351
  • Add group-day-trip progress feedback modes by @FlxPo in #352
  • Make group-day-trip sequence indexes cache-safe by @FlxPo in #353
  • Add CI image build workflow by @FlxPo in #355
  • Add gpg to CI image by @FlxPo in #357
  • Use prebuilt CI image for tests by @FlxPo in #356
  • Switch quickstart and tests to Limoges by @FlxPo in #354
  • Share congestion flows through asset dependencies by @FlxPo in #358
  • Fix runtime asset DAG traversal by @FlxPo in #359
  • Add Dash asset DAG viewer by @FlxPo in #360
  • Clean up travel-cost selectors by @FlxPo in #361
  • Add asset resolver context by @FlxPo in #363
  • Improve GTFS builder UX by @FlxPo in #364
  • Add no-transition behavior change scope by @FlxPo in #365
  • Use default scenario as parameter fallback by @FlxPo in #366
  • Improve user documentation by @FlxPo in #368
  • Add group day trips sensitivity analysis by @FlxPo in #367
  • Make GTFS source selection reproducible by @FlxPo in #369
  • Resolve public transport leg cost parameters by iteration by @FlxPo in #370
  • Prepare package releases by @FlxPo in #371
  • Update release CI image digest by @FlxPo in #377
  • Fix CI download progress display by @FlxPo in #378
  • Add wheel to CI build dependencies by @FlxPo in #380
  • Simplify release artifact build by @FlxPo in #381
  • Check wheel resources without importing package by @FlxPo in #382

New Contributors

Full Changelog: v0.0.1...v0.2.0