mobility-team / mobility

Mobility, an open-source library for mobility modelisation
MIT License
16 stars 10 forks source link

Add transport zones #94

Open Mind-the-Cap opened 5 months ago

Mind-the-Cap commented 5 months ago

Deux ajouts parmi ceux décrits dans https://github.com/mobility-team/mobility/issues/83

Ajout de code R pour gérer les zones de transport.

codecov[bot] commented 4 months ago

Codecov Report

Attention: Patch coverage is 30.05671% with 370 lines in your changes are missing coverage. Please review.

Project coverage is 74.64%. Comparing base (52276bf) to head (aff4a02).

:exclamation: Current head aff4a02 differs from pull request most recent head 74ce0ae. Consider uploading reports for the commit 74ce0ae to get more accurate results

Files Patch % Lines
mobility/parsers/osm.py 25.28% 65 Missing :warning:
mobility/gtfs.py 22.89% 64 Missing :warning:
mobility/transport_zones.py 27.58% 42 Missing :warning:
mobility/set_params.py 24.07% 41 Missing :warning:
mobility/parsers/admin_boundaries.py 23.40% 36 Missing :warning:
mobility/travel_costs.py 31.81% 30 Missing :warning:
mobility/asset.py 41.02% 23 Missing :warning:
mobility/parsers/download_file.py 22.22% 21 Missing :warning:
mobility/public_transport_travel_costs.py 40.62% 19 Missing :warning:
mobility/parsers/urban_units.py 46.66% 16 Missing :warning:
... and 1 more
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #94 +/- ## =========================================== - Coverage 95.64% 74.64% -21.01% =========================================== Files 21 32 +11 Lines 1103 1629 +526 =========================================== + Hits 1055 1216 +161 - Misses 48 413 +365 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Mind-the-Cap commented 4 months ago

@FlxPo j'ai cette erreur en faisant tourner l'exemple trip_localizer :

2024-02-28 10:53:23.175 INFO     Clustering network vertices...
Traceback (most recent call last):

  File ~\AppData\Local\miniforge3\envs\mobility\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
    exec(code, globals, locals)

  File c:\users\dubrocac\documents\github\mobility\examples\trip_localizer\example.py:25
    loc_trips = mobility.LocalizedTrips(trips)

  File ~\Documents\GitHub\mobility\mobility\localized_trips.py:20 in __init__
    car_travel_costs = TravelCosts(transport_zones, "car")

  File ~\Documents\GitHub\mobility\mobility\travel_costs.py:54 in __init__
    super().__init__(inputs, cache_path)

  File ~\Documents\GitHub\mobility\mobility\asset.py:45 in __init__
    self.get()

  File ~\Documents\GitHub\mobility\mobility\asset.py:76 in get
    asset = self.create_and_get_asset()

  File ~\Documents\GitHub\mobility\mobility\travel_costs.py:83 in create_and_get_asset
    costs = self.dodgr_costs(transport_zones, graph)

  File ~\Documents\GitHub\mobility\mobility\travel_costs.py:131 in dodgr_costs
    costs = pd.read_parquet(self.cache_path)

  File ~\AppData\Local\miniforge3\envs\mobility\Lib\site-packages\pandas\io\parquet.py:503 in read_parquet
    return impl.read(

  File ~\AppData\Local\miniforge3\envs\mobility\Lib\site-packages\pandas\io\parquet.py:244 in read
    path_or_handle, handles, kwargs["filesystem"] = _get_path_or_handle(

  File ~\AppData\Local\miniforge3\envs\mobility\Lib\site-packages\pandas\io\parquet.py:102 in _get_path_or_handle
    handles = get_handle(

  File ~\AppData\Local\miniforge3\envs\mobility\Lib\site-packages\pandas\io\common.py:865 in get_handle
    handle = open(handle, ioargs.mode)

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\dubrocac\\.mobility\\data\\projects\\97b07ce9913cc025ed6e5d2037bcf9e8-dodgr_travel_costs_car.parquet'

Est-ce que ça te dit quelque chose ?

FlxPo commented 4 months ago

Le fichier 97b07ce9913cc025ed6e5d2037bcf9e8-dodgr_travel_costs_car.parquet devrait être généré par la fonction dodgr_costs de la classe TravelCosts, qui est appelée ici dans la classe LocalizedTrips.

Les bugs dans R n’arrêtent pas l’exécution du code, donc tout continue comme si le fichier de sortie du script R allait être disponible ensuite. Il faudrait probablement tester que le fichier existe bien et stopper le code si ce n'est pas le cas.

Tu peux modifier la classe RScript ici pour logger tout l'output de R et vérifier que le code s’exécute bien. On pourrait ajouter une variable d'environnement "MOBILITY_LOG" et ajuster le niveau de verbosité en fonction (debug, warn, info...).

Mind-the-Cap commented 4 months ago

L'erreur R que je vois en faisant ça est :

2024-02-28 17:07:52.335 INFO     Error in sample.int(m, k) : invalid first argument

2024-02-28 17:07:52.336 INFO     Calls: [ ... [.data.table -> cluster_vertices -> kmeans -> sample.int

2024-02-28 17:07:52.336 INFO     Execution halted

C'est lié au fait que dans la vertices_table qui est préparée, toutes les transport_zone_id sont NA. J'ai l'impression que cela vient du spatial join qui semble ne pas fonctionner chez moi : https://github.com/mobility-team/mobility/blob/baf83ec9b103c62939e73c7393592f2ac84cd64d/mobility/prepare_dodgr_costs.R#L35

@FlxPo : codes INSEE testés : 25307, 64102, 64546

Mind-the-Cap commented 4 months ago

@FlxPo avant de faire le st_join à la ligne indiquée, en faisant tourner le code sur le code INSEE 64256 avec un rayon de 10 km, j'ai :

2024-03-05 18:11:52.102 INFO                id component n                 geometry

2024-03-05 18:11:52.102 INFO     1  2955548371         1 0 POINT (833418.8 6518730)

2024-03-05 18:11:52.103 INFO     2  1635859109         1 1 POINT (839384.7 6502962)

2024-03-05 18:11:52.103 INFO     3   443697815         1 2 POINT (839277.7 6502921)

2024-03-05 18:11:52.104 INFO     4  3868074749         1 3 POINT (845827.8 6522287)

2024-03-05 18:11:52.104 INFO     5   346678567         1 4 POINT (852843.4 6521450)

2024-03-05 18:11:52.104 INFO     6  3060622108         1 5 POINT (852832.6 6521547)

2024-03-05 18:11:52.105 INFO     7   910391477         1 6 POINT (834128.1 6531371)

2024-03-05 18:11:52.105 INFO     8   910391518         1 7 POINT (834133.5 6531305)

2024-03-05 18:11:52.106 INFO     9   279631461         1 8 POINT (849148.6 6515121)

2024-03-05 18:11:52.106 INFO     10  298632265         1 9   POINT (849175 6515057)

2024-03-05 18:11:52.127 INFO     1                 0    64134          Bonloc        city                   R

2024-03-05 18:11:52.127 INFO     2                 1    64147        Briscous        city                   R

2024-03-05 18:11:52.128 INFO     3                 2    64160 Cambo-les-Bains        city                   B

2024-03-05 18:11:52.128 INFO     4                 3    64255          Halsou        city                   B

2024-03-05 18:11:52.128 INFO     5                 4    64282          Jatxou        city                   B

2024-03-05 18:11:52.129 INFO     6                 5    64256       Hasparren        city                   I`

Ensuite il y a le st_join et ça ne se passe pas très bien :

2024-03-05 18:11:52.505 INFO                id component n 2024-03-05 18:11:52.505 INFO                id component n transport_zone_id admin_id name admin_level

2024-03-05 18:11:52.505 INFO     1  2955548371         1 0                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.506 INFO     2  1635859109         1 1                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.507 INFO     3   443697815         1 2                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.508 INFO     4  3868074749         1 3                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.508 INFO     5   346678567         1 4                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.509 INFO     6  3060622108         1 5                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.509 INFO     7   910391477         1 6                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.510 INFO     8   910391518         1 7                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.510 INFO     9   279631461         1 8                NA     <NA> <NA>        <NA>

2024-03-05 18:11:52.511 INFO     10  298632265         1 9                NA     <NA> <NA>        <NA>

Manifestement que des NA dans transport_zone_id, puisqu'après le !is.na ça donne 2024-03-05 18:11:52.682 INFO Empty data.table (0 rows and 5 cols): id,transport_zone_id,area,X,Y

J'imagine que c'est ça qui cause l'erreur ensuite, mais il va sans dire que je ne suis pas sûre de moi sur ce coup.

FlxPo commented 3 months ago

@Mind-the-Cap Je viens de faire un commit avec plusieurs corrections :

Ca tourne sur mon poste pour les communes 25307, 64102, 64546, 69382.