ChaProEV 1.0.2__tar.gz → 1.0.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.
Files changed (88) hide show
  1. {chaproev-1.0.2 → chaproev-1.0.4}/.gitignore +0 -3
  2. {chaproev-1.0.2 → chaproev-1.0.4}/PKG-INFO +15 -15
  3. {chaproev-1.0.2 → chaproev-1.0.4}/README.md +2 -1
  4. {chaproev-1.0.2 → chaproev-1.0.4}/pyproject.toml +2 -2
  5. {chaproev-1.0.2 → chaproev-1.0.4}/requirements.txt +12 -13
  6. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/define.py +114 -1
  7. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/make_variants.py +1 -1
  8. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/mobility.py +90 -7
  9. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/PKG-INFO +15 -15
  10. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/requires.txt +12 -13
  11. {chaproev-1.0.2 → chaproev-1.0.4}/.flake8 +0 -0
  12. {chaproev-1.0.2 → chaproev-1.0.4}/.vscode/ltex.dictionary.en-US.txt +0 -0
  13. {chaproev-1.0.2 → chaproev-1.0.4}/.vscode/settings.json +0 -0
  14. {chaproev-1.0.2 → chaproev-1.0.4}/ChaProEV.pptx +0 -0
  15. {chaproev-1.0.2 → chaproev-1.0.4}/ChaProEV.toml +0 -0
  16. {chaproev-1.0.2 → chaproev-1.0.4}/Gemfile +0 -0
  17. {chaproev-1.0.2 → chaproev-1.0.4}/LICENCE +0 -0
  18. {chaproev-1.0.2 → chaproev-1.0.4}/MOPO_logo_chaproev on wht.svg +0 -0
  19. {chaproev-1.0.2 → chaproev-1.0.4}/MOPO_logo_chaproev.png +0 -0
  20. {chaproev-1.0.2 → chaproev-1.0.4}/MOPO_logo_chaproev.svg +0 -0
  21. {chaproev-1.0.2 → chaproev-1.0.4}/MOPO_logo_main.svg +0 -0
  22. {chaproev-1.0.2 → chaproev-1.0.4}/MOPO_logo_main_onwhite.svg +0 -0
  23. {chaproev-1.0.2 → chaproev-1.0.4}/comparisons/comparison_template.toml +0 -0
  24. {chaproev-1.0.2 → chaproev-1.0.4}/docs/Makefile +0 -0
  25. {chaproev-1.0.2 → chaproev-1.0.4}/docs/README.md +0 -0
  26. {chaproev-1.0.2 → chaproev-1.0.4}/docs/Vehicle_Temperature_correction_factor.svg +0 -0
  27. {chaproev-1.0.2 → chaproev-1.0.4}/docs/_config.yml +0 -0
  28. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/doctrees/environment.pickle +0 -0
  29. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/doctrees/index.doctree +0 -0
  30. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/.buildinfo +0 -0
  31. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_sources/index.rst.txt +0 -0
  32. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/alabaster.css +0 -0
  33. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/basic.css +0 -0
  34. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/custom.css +0 -0
  35. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/doctools.js +0 -0
  36. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/documentation_options.js +0 -0
  37. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/file.png +0 -0
  38. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/language_data.js +0 -0
  39. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/minus.png +0 -0
  40. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/plus.png +0 -0
  41. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/pygments.css +0 -0
  42. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/searchtools.js +0 -0
  43. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/_static/sphinx_highlight.js +0 -0
  44. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/genindex.html +0 -0
  45. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/index.html +0 -0
  46. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/objects.inv +0 -0
  47. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/search.html +0 -0
  48. {chaproev-1.0.2 → chaproev-1.0.4}/docs/build/html/searchindex.js +0 -0
  49. {chaproev-1.0.2 → chaproev-1.0.4}/docs/charging.md +0 -0
  50. {chaproev-1.0.2 → chaproev-1.0.4}/docs/consumption.md +0 -0
  51. {chaproev-1.0.2 → chaproev-1.0.4}/docs/define.md +0 -0
  52. {chaproev-1.0.2 → chaproev-1.0.4}/docs/index.md +0 -0
  53. {chaproev-1.0.2 → chaproev-1.0.4}/docs/make.bat +0 -0
  54. {chaproev-1.0.2 → chaproev-1.0.4}/docs/mobility.md +0 -0
  55. {chaproev-1.0.2 → chaproev-1.0.4}/docs/scenario.md +0 -0
  56. {chaproev-1.0.2 → chaproev-1.0.4}/docs/source/index.rst +0 -0
  57. {chaproev-1.0.2 → chaproev-1.0.4}/docs/using.md +0 -0
  58. {chaproev-1.0.2 → chaproev-1.0.4}/docs/weather.md +0 -0
  59. {chaproev-1.0.2 → chaproev-1.0.4}/eu-emblem-low-res.jpg +0 -0
  60. {chaproev-1.0.2 → chaproev-1.0.4}/mkdocs.yml +0 -0
  61. {chaproev-1.0.2 → chaproev-1.0.4}/scenarios/Mopo/XX_bus.toml +0 -0
  62. {chaproev-1.0.2 → chaproev-1.0.4}/scenarios/Mopo/XX_car.toml +0 -0
  63. {chaproev-1.0.2 → chaproev-1.0.4}/scenarios/Mopo/XX_truck.toml +0 -0
  64. {chaproev-1.0.2 → chaproev-1.0.4}/scenarios/Mopo/XX_van.toml +0 -0
  65. {chaproev-1.0.2 → chaproev-1.0.4}/scenarios/local_impact_BEVs/baseline.toml +0 -0
  66. {chaproev-1.0.2 → chaproev-1.0.4}/setup.cfg +0 -0
  67. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/ChaProEV.py +0 -0
  68. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/__init__.py +0 -0
  69. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/charging.py +0 -0
  70. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/consumption.py +0 -0
  71. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/py.typed +0 -0
  72. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/run_time.py +0 -0
  73. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/weather.py +0 -0
  74. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV/writing.py +0 -0
  75. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/PKG-INFO-PC-28624 +0 -0
  76. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/PKG-INFO-PC-28624-2 +0 -0
  77. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/SOURCES-PC-28624-2.txt +0 -0
  78. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/SOURCES-PC-28624.txt +0 -0
  79. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/SOURCES.txt +0 -0
  80. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/dependency_links.txt +0 -0
  81. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/requires-PC-28624-2.txt +0 -0
  82. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/requires-PC-28624.txt +0 -0
  83. {chaproev-1.0.2 → chaproev-1.0.4}/src/ChaProEV.egg-info/top_level.txt +0 -0
  84. {chaproev-1.0.2 → chaproev-1.0.4}/tests/test_battery_space.py +0 -0
  85. {chaproev-1.0.2 → chaproev-1.0.4}/tests/test_same_output.py +0 -0
  86. {chaproev-1.0.2 → chaproev-1.0.4}/todo.txt +0 -0
  87. {chaproev-1.0.2 → chaproev-1.0.4}/variants/Mopo/XX_car.csv +0 -0
  88. {chaproev-1.0.2 → chaproev-1.0.4}/variants/Mopo.toml +0 -0
@@ -7,6 +7,3 @@ documentation/
7
7
  site/
8
8
  .venv/
9
9
  reference_run/
10
- reference_run 2/
11
- reference_run prev/
12
- reference_run X/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ChaProEV
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: ChaProEV: Charging Profiles of Electric Vehicles
5
5
  Author-email: Omar Usmani <Omar.Usmani@TNO.nl>
6
6
  Project-URL: Homepage, https://github.com/TNO/ChaProEV
@@ -10,12 +10,12 @@ Classifier: Operating System :: OS Independent
10
10
  Requires-Python: >=3.11
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENCE
13
- Requires-Dist: attrs==23.2.0
13
+ Requires-Dist: attrs==24.2.0
14
14
  Requires-Dist: beautifulsoup4==4.12.3
15
15
  Requires-Dist: black==24.10.0
16
16
  Requires-Dist: build==1.2.1
17
- Requires-Dist: cads-api-client==1.1.0
18
- Requires-Dist: cdsapi==0.7.0
17
+ Requires-Dist: cads-api-client==1.4.6
18
+ Requires-Dist: cdsapi==0.7.3
19
19
  Requires-Dist: certifi==2024.6.2
20
20
  Requires-Dist: charset-normalizer==3.3.2
21
21
  Requires-Dist: click==8.1.7
@@ -25,11 +25,11 @@ Requires-Dist: cycler==0.12.1
25
25
  Requires-Dist: docutils==0.21.2
26
26
  Requires-Dist: docx==0.2.4
27
27
  Requires-Dist: et-xmlfile==1.1.0
28
- Requires-Dist: ETS_CookBook==1.0.31
28
+ Requires-Dist: ETS_CookBook==1.0.32
29
29
  Requires-Dist: fonttools==4.53.0
30
30
  Requires-Dist: geopandas==1.0.1
31
31
  Requires-Dist: ghp-import==2.1.0
32
- Requires-Dist: idna==3.7
32
+ Requires-Dist: idna==3.10
33
33
  Requires-Dist: importlib_metadata==8.0.0
34
34
  Requires-Dist: iniconfig==2.0.0
35
35
  Requires-Dist: jaraco.classes==3.4.0
@@ -48,7 +48,7 @@ Requires-Dist: mergedeep==1.3.4
48
48
  Requires-Dist: mkdocs==1.6.0
49
49
  Requires-Dist: mkdocs-get-deps==0.2.0
50
50
  Requires-Dist: more-itertools==10.3.0
51
- Requires-Dist: multiurl==0.3.1
51
+ Requires-Dist: multiurl==0.3.2
52
52
  Requires-Dist: mypy==1.10.1
53
53
  Requires-Dist: mypy-extensions==1.0.0
54
54
  Requires-Dist: nh3==0.2.17
@@ -65,7 +65,7 @@ Requires-Dist: platformdirs==4.2.2
65
65
  Requires-Dist: plotly==5.22.0
66
66
  Requires-Dist: pluggy==1.5.0
67
67
  Requires-Dist: Pygments==2.18.0
68
- Requires-Dist: pyogrio==0.9.0
68
+ Requires-Dist: pyogrio==0.10.0
69
69
  Requires-Dist: pyparsing==3.1.2
70
70
  Requires-Dist: pyproj==3.6.1
71
71
  Requires-Dist: pyproject_hooks==1.1.0
@@ -81,19 +81,18 @@ Requires-Dist: requests==2.32.3
81
81
  Requires-Dist: requests-toolbelt==1.0.0
82
82
  Requires-Dist: rfc3986==2.0.0
83
83
  Requires-Dist: rich==13.7.1
84
- Requires-Dist: setuptools==70.2.0
85
84
  Requires-Dist: shapely==2.0.4
86
85
  Requires-Dist: six==1.16.0
87
- Requires-Dist: soupsieve==2.5
86
+ Requires-Dist: soupsieve==2.6
88
87
  Requires-Dist: tenacity==8.4.2
89
88
  Requires-Dist: toml==0.10.2
90
- Requires-Dist: tqdm==4.66.4
91
- Requires-Dist: types-beautifulsoup4==4.12.0.20240511
92
- Requires-Dist: types-html5lib==1.1.11.20240228
89
+ Requires-Dist: tomli==2.0.1
90
+ Requires-Dist: tqdm==4.66.5
91
+ Requires-Dist: types-beautifulsoup4==4.12.0.20241020
92
+ Requires-Dist: types-html5lib==1.1.11.20241018
93
93
  Requires-Dist: types-openpyxl==3.1.5.20240630
94
94
  Requires-Dist: types-pytz==2024.1.0.20240417
95
95
  Requires-Dist: types-requests==2.32.0.20240622
96
- Requires-Dist: types-toml==0.10.8.20240310
97
96
  Requires-Dist: typing_extensions==4.12.2
98
97
  Requires-Dist: tzdata==2024.1
99
98
  Requires-Dist: urllib3==2.2.2
@@ -154,7 +153,8 @@ The docmentation can be found [here](https://tno.github.io/ChaProEV/)
154
153
 
155
154
  ### **Driver**
156
155
  The primary driver for the publication and development of ChaProEV in this
157
- repository is the participation in the Mopo project (funded from
156
+ repository is the participation in the
157
+ [Mopo](https://www.tools-for-energy-system-modelling.org/) project (funded from
158
158
  European Climate,
159
159
  Infrastructure and Environment Executive Agency under the European Union’s
160
160
  HORIZON Research and Innovation Actions under grant agreement N°101095998).
@@ -51,7 +51,8 @@ The docmentation can be found [here](https://tno.github.io/ChaProEV/)
51
51
 
52
52
  ### **Driver**
53
53
  The primary driver for the publication and development of ChaProEV in this
54
- repository is the participation in the Mopo project (funded from
54
+ repository is the participation in the
55
+ [Mopo](https://www.tools-for-energy-system-modelling.org/) project (funded from
55
56
  European Climate,
56
57
  Infrastructure and Environment Executive Agency under the European Union’s
57
58
  HORIZON Research and Innovation Actions under grant agreement N°101095998).
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'ChaProEV'
7
- version = '1.0.2'
7
+ version = '1.0.4'
8
8
  authors = [
9
9
  { name='Omar Usmani', email='Omar.Usmani@TNO.nl' },
10
10
  ]
@@ -33,6 +33,6 @@ pythonpath = ['src/ChaProEV']
33
33
  'Homepage' = 'https://github.com/TNO/ChaProEV'
34
34
 
35
35
  [[tool.mypy.overrides]]
36
- module = ['geopandas/*', 'plotly/*', 'tomllib/*', 'tomli/*', 'cdsapi/*']
36
+ module = ['geopandas/*', 'plotly/*', 'tomllib/*', 'tomli/*', 'cdsapi/*', 'toml/*']
37
37
  ignore_missing_imports = true
38
38
 
@@ -1,9 +1,9 @@
1
- attrs==23.2.0
1
+ attrs==24.2.0
2
2
  beautifulsoup4==4.12.3
3
3
  black==24.10.0
4
4
  build==1.2.1
5
- cads-api-client==1.1.0
6
- cdsapi==0.7.0
5
+ cads-api-client==1.4.6
6
+ cdsapi==0.7.3
7
7
  certifi==2024.6.2
8
8
  charset-normalizer==3.3.2
9
9
  click==8.1.7
@@ -13,11 +13,11 @@ cycler==0.12.1
13
13
  docutils==0.21.2
14
14
  docx==0.2.4
15
15
  et-xmlfile==1.1.0
16
- ETS_CookBook==1.0.31
16
+ ETS_CookBook==1.0.32
17
17
  fonttools==4.53.0
18
18
  geopandas==1.0.1
19
19
  ghp-import==2.1.0
20
- idna==3.7
20
+ idna==3.10
21
21
  importlib_metadata==8.0.0
22
22
  iniconfig==2.0.0
23
23
  jaraco.classes==3.4.0
@@ -36,7 +36,7 @@ mergedeep==1.3.4
36
36
  mkdocs==1.6.0
37
37
  mkdocs-get-deps==0.2.0
38
38
  more-itertools==10.3.0
39
- multiurl==0.3.1
39
+ multiurl==0.3.2
40
40
  mypy==1.10.1
41
41
  mypy-extensions==1.0.0
42
42
  nh3==0.2.17
@@ -53,7 +53,7 @@ platformdirs==4.2.2
53
53
  plotly==5.22.0
54
54
  pluggy==1.5.0
55
55
  Pygments==2.18.0
56
- pyogrio==0.9.0
56
+ pyogrio==0.10.0
57
57
  pyparsing==3.1.2
58
58
  pyproj==3.6.1
59
59
  pyproject_hooks==1.1.0
@@ -69,19 +69,18 @@ requests==2.32.3
69
69
  requests-toolbelt==1.0.0
70
70
  rfc3986==2.0.0
71
71
  rich==13.7.1
72
- setuptools==70.2.0
73
72
  shapely==2.0.4
74
73
  six==1.16.0
75
- soupsieve==2.5
74
+ soupsieve==2.6
76
75
  tenacity==8.4.2
77
76
  toml==0.10.2
78
- tqdm==4.66.4
79
- types-beautifulsoup4==4.12.0.20240511
80
- types-html5lib==1.1.11.20240228
77
+ tomli==2.0.1
78
+ tqdm==4.66.5
79
+ types-beautifulsoup4==4.12.0.20241020
80
+ types-html5lib==1.1.11.20241018
81
81
  types-openpyxl==3.1.5.20240630
82
82
  types-pytz==2024.1.0.20240417
83
83
  types-requests==2.32.0.20240622
84
- types-toml==0.10.8.20240310
85
84
  typing_extensions==4.12.2
86
85
  tzdata==2024.1
87
86
  urllib3==2.2.2
@@ -1301,6 +1301,46 @@ class Trip:
1301
1301
  'Arrivals amount'
1302
1302
  ].loc[start_location, end_location]
1303
1303
 
1304
+ trip.next_leg_charge_to_vehicle: pd.DataFrame = (
1305
+ trip.next_leg_kilometers.copy()
1306
+ )
1307
+ trip.next_leg_charge_from_network: pd.DataFrame = (
1308
+ trip.next_leg_kilometers.copy()
1309
+ )
1310
+ trip.next_leg_charge_to_vehicle_cumulative: pd.DataFrame = (
1311
+ trip.next_leg_kilometers_cumulative.copy()
1312
+ )
1313
+ trip.next_leg_charge_from_network_cumulative: pd.DataFrame = (
1314
+ trip.next_leg_kilometers_cumulative.copy()
1315
+ )
1316
+
1317
+ for location_name in trip.location_names:
1318
+ vehicle_consumption_per_km: float = scenario['vehicle'][
1319
+ 'base_consumption_per_km'
1320
+ ]['electricity_kWh']
1321
+ charger_efficiency = scenario['locations'][location_name][
1322
+ 'charger_efficiency'
1323
+ ]
1324
+ draw_from_network_per_km: float = (
1325
+ vehicle_consumption_per_km / charger_efficiency
1326
+ )
1327
+ trip.next_leg_charge_to_vehicle[location_name] = (
1328
+ trip.next_leg_charge_to_vehicle[location_name]
1329
+ * vehicle_consumption_per_km
1330
+ )
1331
+ trip.next_leg_charge_to_vehicle_cumulative[location_name] = (
1332
+ trip.next_leg_charge_to_vehicle_cumulative[location_name]
1333
+ * vehicle_consumption_per_km
1334
+ )
1335
+ trip.next_leg_charge_from_network[location_name] = (
1336
+ trip.next_leg_charge_from_network[location_name]
1337
+ * draw_from_network_per_km
1338
+ )
1339
+ trip.next_leg_charge_from_network_cumulative[location_name] = (
1340
+ trip.next_leg_charge_from_network_cumulative[location_name]
1341
+ * draw_from_network_per_km
1342
+ )
1343
+
1304
1344
  trip.run_next_leg_kilometers: pd.DataFrame = run_time.from_day_to_run(
1305
1345
  trip.next_leg_kilometers,
1306
1346
  run_time_tags,
@@ -1318,6 +1358,44 @@ class Trip:
1318
1358
  )
1319
1359
  )
1320
1360
 
1361
+ trip.run_next_leg_charge_to_vehicle: pd.DataFrame = (
1362
+ run_time.from_day_to_run(
1363
+ trip.next_leg_charge_to_vehicle,
1364
+ run_time_tags,
1365
+ trip.day_start_hour,
1366
+ scenario,
1367
+ general_parameters,
1368
+ )
1369
+ )
1370
+ trip.run_next_leg_charge_to_vehicle_cumulative: pd.DataFrame = (
1371
+ run_time.from_day_to_run(
1372
+ trip.next_leg_charge_to_vehicle_cumulative,
1373
+ run_time_tags,
1374
+ trip.day_start_hour,
1375
+ scenario,
1376
+ general_parameters,
1377
+ )
1378
+ )
1379
+
1380
+ trip.run_next_leg_charge_from_network: pd.DataFrame = (
1381
+ run_time.from_day_to_run(
1382
+ trip.next_leg_charge_from_network,
1383
+ run_time_tags,
1384
+ trip.day_start_hour,
1385
+ scenario,
1386
+ general_parameters,
1387
+ )
1388
+ )
1389
+ trip.run_next_leg_charge_from_network_cumulative: pd.DataFrame = (
1390
+ run_time.from_day_to_run(
1391
+ trip.next_leg_charge_from_network_cumulative,
1392
+ run_time_tags,
1393
+ trip.day_start_hour,
1394
+ scenario,
1395
+ general_parameters,
1396
+ )
1397
+ )
1398
+
1321
1399
 
1322
1400
  def declare_class_instances(
1323
1401
  Chosen_class: ty.Type, scenario: ty.Dict, general_parameters: ty.Dict
@@ -1450,6 +1528,41 @@ def declare_all_instances(
1450
1528
  f'{output_folder}/{scenario_name}_'
1451
1529
  f'{trip.name}_run_next_leg_kilometers_cumulative.pkl'
1452
1530
  )
1531
+ trip.next_leg_charge_to_vehicle.to_pickle(
1532
+ f'{output_folder}/{scenario_name}_'
1533
+ f'{trip.name}_next_leg_charge_to_vehicle.pkl'
1534
+ )
1535
+ trip.next_leg_charge_from_network.to_pickle(
1536
+ f'{output_folder}/{scenario_name}_'
1537
+ f'{trip.name}_next_leg_charge_from_network.pkl'
1538
+ )
1539
+ trip.run_next_leg_charge_to_vehicle.to_pickle(
1540
+ f'{output_folder}/{scenario_name}_'
1541
+ f'{trip.name}_run_next_leg_charge_to_vehicle.pkl'
1542
+ )
1543
+ trip.run_next_leg_charge_from_network.to_pickle(
1544
+ f'{output_folder}/{scenario_name}_'
1545
+ f'{trip.name}_run_next_leg_charge_from_network.pkl'
1546
+ )
1547
+ trip.next_leg_charge_to_vehicle_cumulative.to_pickle(
1548
+ f'{output_folder}/{scenario_name}_'
1549
+ f'{trip.name}_next_leg_charge_to_vehicle_cumulative.pkl'
1550
+ )
1551
+ trip.next_leg_charge_from_network_cumulative.to_pickle(
1552
+ f'{output_folder}/{scenario_name}_'
1553
+ f'{trip.name}'
1554
+ f'_next_leg_charge_from_network_cumulative.pkl'
1555
+ )
1556
+ trip.run_next_leg_charge_to_vehicle_cumulative.to_pickle(
1557
+ f'{output_folder}/{scenario_name}_'
1558
+ f'{trip.name}'
1559
+ f'_run_next_leg_charge_to_vehicle_cumulative.pkl'
1560
+ )
1561
+ trip.run_next_leg_charge_from_network_cumulative.to_pickle(
1562
+ f'{output_folder}/{scenario_name}_'
1563
+ f'{trip.name}'
1564
+ f'_run_next_leg_charge_from_network_cumulative.pkl'
1565
+ )
1453
1566
  trip.location_split.to_pickle(
1454
1567
  f'{output_folder}/{scenario_name}_'
1455
1568
  f'{trip.name}_location_split.pkl'
@@ -1609,7 +1722,7 @@ if __name__ == '__main__':
1609
1722
  general_parameters_file_name
1610
1723
  )
1611
1724
  case_name = 'Mopo'
1612
- test_scenario_name: str = 'XX_bus'
1725
+ test_scenario_name: str = 'XX_car'
1613
1726
  scenario_file_name: str = (
1614
1727
  f'scenarios/{case_name}/{test_scenario_name}.toml'
1615
1728
  )
@@ -18,7 +18,7 @@ def make_csv_variants(case_name: str) -> None:
18
18
  '''
19
19
  This uses a csv, with commas as separators.
20
20
  If you want to put a list as a value, do it as such:
21
- "[1, 2.5, 5]"
21
+ "[1, 2.5, 5]"
22
22
  (with the quotes: note that this is not necessary in Excel, where you can
23
23
  just put the list with brackets without the quotes)
24
24
  '''
@@ -1515,6 +1515,26 @@ def get_kilometers_for_next_leg(
1515
1515
  columns=location_names,
1516
1516
  index=run_trip_probabilities.index,
1517
1517
  )
1518
+ run_next_leg_charge_to_vehicle: pd.DataFrame = pd.DataFrame(
1519
+ np.zeros((len(run_trip_probabilities.index), len(location_names))),
1520
+ columns=location_names,
1521
+ index=run_trip_probabilities.index,
1522
+ )
1523
+ run_next_leg_charge_from_network: pd.DataFrame = pd.DataFrame(
1524
+ np.zeros((len(run_trip_probabilities.index), len(location_names))),
1525
+ columns=location_names,
1526
+ index=run_trip_probabilities.index,
1527
+ )
1528
+ run_next_leg_charge_to_vehicle_cumulative: pd.DataFrame = pd.DataFrame(
1529
+ np.zeros((len(run_trip_probabilities.index), len(location_names))),
1530
+ columns=location_names,
1531
+ index=run_trip_probabilities.index,
1532
+ )
1533
+ run_next_leg_charge_from_network_cumulative: pd.DataFrame = pd.DataFrame(
1534
+ np.zeros((len(run_trip_probabilities.index), len(location_names))),
1535
+ columns=location_names,
1536
+ index=run_trip_probabilities.index,
1537
+ )
1518
1538
 
1519
1539
  trip_parameters: ty.Dict = scenario['trips']
1520
1540
  trip_names: ty.List[str] = [
@@ -1533,18 +1553,67 @@ def get_kilometers_for_next_leg(
1533
1553
  f'run_next_leg_kilometers_cumulative.pkl',
1534
1554
  )
1535
1555
 
1556
+ trip_run_next_leg_charge_to_vehicle: pd.DataFrame = pd.read_pickle(
1557
+ f'{output_folder}/{scenario_name}_'
1558
+ f'{trip_name}_run_next_leg_charge_to_vehicle.pkl'
1559
+ )
1560
+ trip_run_next_leg_charge_from_network: pd.DataFrame = pd.read_pickle(
1561
+ f'{output_folder}/{scenario_name}_'
1562
+ f'{trip_name}_run_next_leg_charge_from_network.pkl'
1563
+ )
1564
+ trip_run_next_leg_charge_to_vehicle_cumulative: pd.DataFrame = (
1565
+ pd.read_pickle(
1566
+ f'{output_folder}/{scenario_name}_'
1567
+ f'{trip_name}_run_next_leg_charge_to_vehicle_cumulative.pkl'
1568
+ )
1569
+ )
1570
+ trip_run_next_leg_charge_from_network_cumulative: pd.DataFrame = (
1571
+ pd.read_pickle(
1572
+ f'{output_folder}/{scenario_name}_'
1573
+ f'{trip_name}_run_next_leg_charge_from_network_cumulative.pkl'
1574
+ )
1575
+ )
1576
+
1536
1577
  this_trip_probabilities: pd.Series[float] = pd.Series(
1537
1578
  run_trip_probabilities[trip_name]
1538
1579
  )
1580
+ for location_name in trip_run_next_leg_kilometers.columns:
1539
1581
 
1540
- run_next_leg_kilometers += trip_run_next_leg_kilometers.mul(
1541
- this_trip_probabilities, axis=0
1542
- )
1543
- run_next_leg_kilometers_cumulative += (
1544
- trip_run_next_leg_kilometers_cumulative.mul(
1582
+ run_next_leg_kilometers[
1583
+ location_name
1584
+ ] += trip_run_next_leg_kilometers[location_name].mul(
1585
+ this_trip_probabilities, axis=0
1586
+ )
1587
+ run_next_leg_kilometers_cumulative[
1588
+ location_name
1589
+ ] += trip_run_next_leg_kilometers_cumulative[location_name].mul(
1590
+ this_trip_probabilities, axis=0
1591
+ )
1592
+ run_next_leg_charge_to_vehicle[
1593
+ location_name
1594
+ ] += trip_run_next_leg_charge_to_vehicle[location_name].mul(
1595
+ this_trip_probabilities, axis=0
1596
+ )
1597
+
1598
+ run_next_leg_charge_from_network[
1599
+ location_name
1600
+ ] += trip_run_next_leg_charge_from_network[location_name].mul(
1601
+ this_trip_probabilities, axis=0
1602
+ )
1603
+ run_next_leg_charge_to_vehicle_cumulative[
1604
+ location_name
1605
+ ] += trip_run_next_leg_charge_to_vehicle_cumulative[
1606
+ location_name
1607
+ ].mul(
1608
+ this_trip_probabilities, axis=0
1609
+ )
1610
+ run_next_leg_charge_from_network_cumulative[
1611
+ location_name
1612
+ ] += trip_run_next_leg_charge_from_network_cumulative[
1613
+ location_name
1614
+ ].mul(
1545
1615
  this_trip_probabilities, axis=0
1546
1616
  )
1547
- )
1548
1617
 
1549
1618
  run_next_leg_kilometers.to_pickle(
1550
1619
  f'{output_folder}/{scenario_name}_next_leg_kilometers.pkl'
@@ -1552,6 +1621,20 @@ def get_kilometers_for_next_leg(
1552
1621
  run_next_leg_kilometers_cumulative.to_pickle(
1553
1622
  f'{output_folder}/{scenario_name}_next_leg_kilometers_cumulative.pkl'
1554
1623
  )
1624
+ run_next_leg_charge_to_vehicle.to_pickle(
1625
+ f'{output_folder}/{scenario_name}_next_leg_charge_to_vehicle.pkl'
1626
+ )
1627
+ run_next_leg_charge_from_network.to_pickle(
1628
+ f'{output_folder}/{scenario_name}_next_leg_charge_from_network.pkl'
1629
+ )
1630
+ run_next_leg_charge_to_vehicle_cumulative.to_pickle(
1631
+ f'{output_folder}/{scenario_name}'
1632
+ f'_next_leg_charge_to_vehicle_cumulative.pkl'
1633
+ )
1634
+ run_next_leg_charge_from_network_cumulative.to_pickle(
1635
+ f'{output_folder}/{scenario_name}'
1636
+ f'_next_leg_charge_from_network_cumulative.pkl'
1637
+ )
1555
1638
 
1556
1639
 
1557
1640
  def make_mobility_data(
@@ -1633,7 +1716,7 @@ def make_mobility_data(
1633
1716
  if __name__ == '__main__':
1634
1717
  start_time: datetime.datetime = datetime.datetime.now()
1635
1718
  case_name = 'Mopo'
1636
- test_scenario_name: str = 'XX_bus'
1719
+ test_scenario_name: str = 'XX_car'
1637
1720
  scenario_file_name: str = (
1638
1721
  f'scenarios/{case_name}/{test_scenario_name}.toml'
1639
1722
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ChaProEV
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: ChaProEV: Charging Profiles of Electric Vehicles
5
5
  Author-email: Omar Usmani <Omar.Usmani@TNO.nl>
6
6
  Project-URL: Homepage, https://github.com/TNO/ChaProEV
@@ -10,12 +10,12 @@ Classifier: Operating System :: OS Independent
10
10
  Requires-Python: >=3.11
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENCE
13
- Requires-Dist: attrs==23.2.0
13
+ Requires-Dist: attrs==24.2.0
14
14
  Requires-Dist: beautifulsoup4==4.12.3
15
15
  Requires-Dist: black==24.10.0
16
16
  Requires-Dist: build==1.2.1
17
- Requires-Dist: cads-api-client==1.1.0
18
- Requires-Dist: cdsapi==0.7.0
17
+ Requires-Dist: cads-api-client==1.4.6
18
+ Requires-Dist: cdsapi==0.7.3
19
19
  Requires-Dist: certifi==2024.6.2
20
20
  Requires-Dist: charset-normalizer==3.3.2
21
21
  Requires-Dist: click==8.1.7
@@ -25,11 +25,11 @@ Requires-Dist: cycler==0.12.1
25
25
  Requires-Dist: docutils==0.21.2
26
26
  Requires-Dist: docx==0.2.4
27
27
  Requires-Dist: et-xmlfile==1.1.0
28
- Requires-Dist: ETS_CookBook==1.0.31
28
+ Requires-Dist: ETS_CookBook==1.0.32
29
29
  Requires-Dist: fonttools==4.53.0
30
30
  Requires-Dist: geopandas==1.0.1
31
31
  Requires-Dist: ghp-import==2.1.0
32
- Requires-Dist: idna==3.7
32
+ Requires-Dist: idna==3.10
33
33
  Requires-Dist: importlib_metadata==8.0.0
34
34
  Requires-Dist: iniconfig==2.0.0
35
35
  Requires-Dist: jaraco.classes==3.4.0
@@ -48,7 +48,7 @@ Requires-Dist: mergedeep==1.3.4
48
48
  Requires-Dist: mkdocs==1.6.0
49
49
  Requires-Dist: mkdocs-get-deps==0.2.0
50
50
  Requires-Dist: more-itertools==10.3.0
51
- Requires-Dist: multiurl==0.3.1
51
+ Requires-Dist: multiurl==0.3.2
52
52
  Requires-Dist: mypy==1.10.1
53
53
  Requires-Dist: mypy-extensions==1.0.0
54
54
  Requires-Dist: nh3==0.2.17
@@ -65,7 +65,7 @@ Requires-Dist: platformdirs==4.2.2
65
65
  Requires-Dist: plotly==5.22.0
66
66
  Requires-Dist: pluggy==1.5.0
67
67
  Requires-Dist: Pygments==2.18.0
68
- Requires-Dist: pyogrio==0.9.0
68
+ Requires-Dist: pyogrio==0.10.0
69
69
  Requires-Dist: pyparsing==3.1.2
70
70
  Requires-Dist: pyproj==3.6.1
71
71
  Requires-Dist: pyproject_hooks==1.1.0
@@ -81,19 +81,18 @@ Requires-Dist: requests==2.32.3
81
81
  Requires-Dist: requests-toolbelt==1.0.0
82
82
  Requires-Dist: rfc3986==2.0.0
83
83
  Requires-Dist: rich==13.7.1
84
- Requires-Dist: setuptools==70.2.0
85
84
  Requires-Dist: shapely==2.0.4
86
85
  Requires-Dist: six==1.16.0
87
- Requires-Dist: soupsieve==2.5
86
+ Requires-Dist: soupsieve==2.6
88
87
  Requires-Dist: tenacity==8.4.2
89
88
  Requires-Dist: toml==0.10.2
90
- Requires-Dist: tqdm==4.66.4
91
- Requires-Dist: types-beautifulsoup4==4.12.0.20240511
92
- Requires-Dist: types-html5lib==1.1.11.20240228
89
+ Requires-Dist: tomli==2.0.1
90
+ Requires-Dist: tqdm==4.66.5
91
+ Requires-Dist: types-beautifulsoup4==4.12.0.20241020
92
+ Requires-Dist: types-html5lib==1.1.11.20241018
93
93
  Requires-Dist: types-openpyxl==3.1.5.20240630
94
94
  Requires-Dist: types-pytz==2024.1.0.20240417
95
95
  Requires-Dist: types-requests==2.32.0.20240622
96
- Requires-Dist: types-toml==0.10.8.20240310
97
96
  Requires-Dist: typing_extensions==4.12.2
98
97
  Requires-Dist: tzdata==2024.1
99
98
  Requires-Dist: urllib3==2.2.2
@@ -154,7 +153,8 @@ The docmentation can be found [here](https://tno.github.io/ChaProEV/)
154
153
 
155
154
  ### **Driver**
156
155
  The primary driver for the publication and development of ChaProEV in this
157
- repository is the participation in the Mopo project (funded from
156
+ repository is the participation in the
157
+ [Mopo](https://www.tools-for-energy-system-modelling.org/) project (funded from
158
158
  European Climate,
159
159
  Infrastructure and Environment Executive Agency under the European Union’s
160
160
  HORIZON Research and Innovation Actions under grant agreement N°101095998).
@@ -1,9 +1,9 @@
1
- attrs==23.2.0
1
+ attrs==24.2.0
2
2
  beautifulsoup4==4.12.3
3
3
  black==24.10.0
4
4
  build==1.2.1
5
- cads-api-client==1.1.0
6
- cdsapi==0.7.0
5
+ cads-api-client==1.4.6
6
+ cdsapi==0.7.3
7
7
  certifi==2024.6.2
8
8
  charset-normalizer==3.3.2
9
9
  click==8.1.7
@@ -13,11 +13,11 @@ cycler==0.12.1
13
13
  docutils==0.21.2
14
14
  docx==0.2.4
15
15
  et-xmlfile==1.1.0
16
- ETS_CookBook==1.0.31
16
+ ETS_CookBook==1.0.32
17
17
  fonttools==4.53.0
18
18
  geopandas==1.0.1
19
19
  ghp-import==2.1.0
20
- idna==3.7
20
+ idna==3.10
21
21
  importlib_metadata==8.0.0
22
22
  iniconfig==2.0.0
23
23
  jaraco.classes==3.4.0
@@ -36,7 +36,7 @@ mergedeep==1.3.4
36
36
  mkdocs==1.6.0
37
37
  mkdocs-get-deps==0.2.0
38
38
  more-itertools==10.3.0
39
- multiurl==0.3.1
39
+ multiurl==0.3.2
40
40
  mypy==1.10.1
41
41
  mypy-extensions==1.0.0
42
42
  nh3==0.2.17
@@ -53,7 +53,7 @@ platformdirs==4.2.2
53
53
  plotly==5.22.0
54
54
  pluggy==1.5.0
55
55
  Pygments==2.18.0
56
- pyogrio==0.9.0
56
+ pyogrio==0.10.0
57
57
  pyparsing==3.1.2
58
58
  pyproj==3.6.1
59
59
  pyproject_hooks==1.1.0
@@ -69,19 +69,18 @@ requests==2.32.3
69
69
  requests-toolbelt==1.0.0
70
70
  rfc3986==2.0.0
71
71
  rich==13.7.1
72
- setuptools==70.2.0
73
72
  shapely==2.0.4
74
73
  six==1.16.0
75
- soupsieve==2.5
74
+ soupsieve==2.6
76
75
  tenacity==8.4.2
77
76
  toml==0.10.2
78
- tqdm==4.66.4
79
- types-beautifulsoup4==4.12.0.20240511
80
- types-html5lib==1.1.11.20240228
77
+ tomli==2.0.1
78
+ tqdm==4.66.5
79
+ types-beautifulsoup4==4.12.0.20241020
80
+ types-html5lib==1.1.11.20241018
81
81
  types-openpyxl==3.1.5.20240630
82
82
  types-pytz==2024.1.0.20240417
83
83
  types-requests==2.32.0.20240622
84
- types-toml==0.10.8.20240310
85
84
  typing_extensions==4.12.2
86
85
  tzdata==2024.1
87
86
  urllib3==2.2.2
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes