simbench 1.5.2__tar.gz → 1.6.0__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.
- {simbench-1.5.2 → simbench-1.6.0}/CHANGELOG.rst +13 -0
- {simbench-1.5.2 → simbench-1.6.0}/MANIFEST.in +1 -0
- {simbench-1.5.2 → simbench-1.6.0}/PKG-INFO +5 -5
- {simbench-1.5.2 → simbench-1.6.0}/pyproject.toml +4 -5
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/auxiliary.py +44 -3
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/csv_data_manipulation.py +6 -4
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/csv_pp_converter.py +44 -31
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/format_information.py +4 -1
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/pp_net_manipulation.py +30 -9
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/profiles.py +1 -1
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_auxiliary.py +15 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_csv_pp_converter.py +5 -5
- simbench-1.6.0/simbench/test/converter/test_network_output_folder/LineType.csv +3 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/TransformerType.csv +1 -1
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_pp_net_manipulation.py +2 -6
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/networks/test_extract_grids_from_csv.py +1 -8
- {simbench-1.5.2 → simbench-1.6.0}/simbench.egg-info/PKG-INFO +5 -5
- {simbench-1.5.2 → simbench-1.6.0}/simbench.egg-info/SOURCES.txt +0 -1
- {simbench-1.5.2 → simbench-1.6.0}/simbench.egg-info/requires.txt +1 -1
- simbench-1.5.2/requirements.txt +0 -2
- simbench-1.5.2/simbench/test/converter/test_network_output_folder/LineType.csv +0 -3
- {simbench-1.5.2 → simbench-1.6.0}/AUTHORS +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/LICENSE +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/README.rst +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/setup.cfg +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/setup.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/__init__.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/__init__.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/read_and_write.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/converter/voltLvl.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Coordinates.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/ExternalNet.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Line.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/LineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Load.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/LoadProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Measurement.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Node.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/PowerPlant.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/PowerPlantProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/RES.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/RESProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/StudyCases.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Substation.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Switch.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Transformer.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/TransformerType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Coordinates.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/DCLineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/ExternalNet.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Line.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/LineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Load.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/LoadProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Measurement.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Node.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/PowerPlant.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/PowerPlantProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/RES.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/RESProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Storage.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/StorageProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/StudyCases.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Substation.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Switch.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Transformer.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/TransformerType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Coordinates.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/DCLineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/ExternalNet.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Line.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/LineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Load.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/LoadProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Measurement.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Node.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/PowerPlant.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/PowerPlantProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/RES.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/RESProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Storage.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/StorageProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/StudyCases.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Substation.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Switch.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Transformer.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/TransformerType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/__init__.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/extract_simbench_grids_from_csv.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/loadcases.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/networks/simbench_code.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/__init__.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/__init__.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Coordinates.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/DCLineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/ExternalNet.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Line.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/LineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Load.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/LoadProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Measurement.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Node.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/PowerPlant.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/PowerPlantProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/RES.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/RESProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Shunt.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Storage.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/StorageProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/StudyCases.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Substation.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Switch.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/Transformer.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/TransformerType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Coordinates.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/DCLineType.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/ExternalNet.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Line.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Load.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/LoadProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Measurement.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Node.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/PowerPlant.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/PowerPlantProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/RES.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/RESProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Shunt.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Storage.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/StorageProfile.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/StudyCases.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Substation.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Switch.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Transformer.csv +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_voltLvl.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/networks/__init__.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/networks/test_profiles.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/networks/test_simbench_code.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/networks/test_simbench_loadcases.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench/test/run_tests.py +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench.egg-info/dependency_links.txt +0 -0
- {simbench-1.5.2 → simbench-1.6.0}/simbench.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
Change Log
|
|
2
2
|
=============
|
|
3
3
|
|
|
4
|
+
[1.6.0] - 2024-04-09
|
|
5
|
+
----------------------
|
|
6
|
+
- [CHANGED] support pandapower geojson, released with pandapower version 3.0.0
|
|
7
|
+
- [ADDED] support pandapower parameters step_dependency_table and tap_dependency_table, released with pandapower version 3.0.0
|
|
8
|
+
- [CHANGED] drop python 3.8 support
|
|
9
|
+
- [FIXED] fix ValueError raise according to GitHub issue #56
|
|
10
|
+
- [CHANGED] rename parameter csv2pp parameter `no_generic_coord` by `fill_bus_geo_by_generic_data`
|
|
11
|
+
|
|
12
|
+
[1.5.3] - 2024-04-23
|
|
13
|
+
----------------------
|
|
14
|
+
- [FIXED] Bringing together develop and master with all changes of the release process
|
|
15
|
+
- [ADDED] generalization and test for auxiliary function :code:`to_numeric_ignored_errors()`
|
|
16
|
+
|
|
4
17
|
[1.5.2] - 2024-04-09
|
|
5
18
|
----------------------
|
|
6
19
|
- [CHANGED] readded copyright notice to setup.py and updated date
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: simbench
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0
|
|
4
4
|
Summary: Electrical Power System Benchmark Models.
|
|
5
5
|
Author-email: Steffen Meinecke <steffen.meinecke@uni-kassel.de>
|
|
6
6
|
Maintainer-email: simbench Developers <simbench@uni-kassel.de>
|
|
@@ -56,16 +56,15 @@ Classifier: Natural Language :: English
|
|
|
56
56
|
Classifier: Operating System :: OS Independent
|
|
57
57
|
Classifier: Programming Language :: Python
|
|
58
58
|
Classifier: Programming Language :: Python :: 3
|
|
59
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
60
59
|
Classifier: Programming Language :: Python :: 3.9
|
|
61
60
|
Classifier: Programming Language :: Python :: 3.10
|
|
62
61
|
Classifier: Programming Language :: Python :: 3.11
|
|
63
62
|
Classifier: Programming Language :: Python :: 3.12
|
|
64
|
-
Requires-Python: >=3.
|
|
63
|
+
Requires-Python: >=3.9
|
|
65
64
|
Description-Content-Type: text/x-rst
|
|
66
65
|
License-File: LICENSE
|
|
67
66
|
License-File: AUTHORS
|
|
68
|
-
Requires-Dist: pandapower>=
|
|
67
|
+
Requires-Dist: pandapower>=3.0.0
|
|
69
68
|
Provides-Extra: docs
|
|
70
69
|
Requires-Dist: numpydoc; extra == "docs"
|
|
71
70
|
Requires-Dist: sphinx; extra == "docs"
|
|
@@ -103,6 +102,7 @@ Requires-Dist: numba>=0.25; extra == "all"
|
|
|
103
102
|
Requires-Dist: lightsim2grid>=0.8.1; extra == "all"
|
|
104
103
|
Requires-Dist: geopandas; extra == "all"
|
|
105
104
|
Requires-Dist: matplotlib; extra == "all"
|
|
105
|
+
Dynamic: license-file
|
|
106
106
|
|
|
107
107
|
|
|
108
108
|
.. image:: https://simbench.de/wp-content/uploads/2019/01/logo.png
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "simbench"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.6.0"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name = "Steffen Meinecke", email = "steffen.meinecke@uni-kassel.de" }
|
|
10
10
|
]
|
|
@@ -14,7 +14,7 @@ maintainers = [
|
|
|
14
14
|
description = "Electrical Power System Benchmark Models."
|
|
15
15
|
readme = "README.rst"
|
|
16
16
|
license = { file = "LICENSE" }
|
|
17
|
-
requires-python = ">=3.
|
|
17
|
+
requires-python = ">=3.9"
|
|
18
18
|
classifiers = [
|
|
19
19
|
"Development Status :: 5 - Production/Stable",
|
|
20
20
|
"Environment :: Console",
|
|
@@ -27,14 +27,13 @@ classifiers = [
|
|
|
27
27
|
"Programming Language :: Python",
|
|
28
28
|
"Programming Language :: Python :: 3",
|
|
29
29
|
# Add the specific Python versions supported here, e.g.:
|
|
30
|
-
"Programming Language :: Python :: 3.8",
|
|
31
30
|
"Programming Language :: Python :: 3.9",
|
|
32
31
|
"Programming Language :: Python :: 3.10",
|
|
33
32
|
"Programming Language :: Python :: 3.11",
|
|
34
33
|
"Programming Language :: Python :: 3.12"
|
|
35
34
|
]
|
|
36
35
|
dependencies = [
|
|
37
|
-
"pandapower>=
|
|
36
|
+
"pandapower>=3.0.0"
|
|
38
37
|
]
|
|
39
38
|
keywords = [
|
|
40
39
|
"benchmark grid", "power system", "network", "grid planning", "grid operation", "grid generation methodology", "comparability", "reproducibility", "electricity", "energy", "engineering", "simulation", "simbench", "time series", "future scenarios"
|
|
@@ -72,4 +71,4 @@ find = {}
|
|
|
72
71
|
addopts = ["--strict-markers"]
|
|
73
72
|
markers = [
|
|
74
73
|
"slow: marks tests as slow (deselect with '-m \"not slow\"'), e.g. in run_fast_tests"
|
|
75
|
-
]
|
|
74
|
+
]
|
|
@@ -29,14 +29,55 @@ def ensure_iterability(var, len_=None):
|
|
|
29
29
|
return var
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
def to_numeric_ignored_errors(data):
|
|
32
|
+
def to_numeric_ignored_errors(data, **kwargs):
|
|
33
|
+
"""Wrapper function for pandas.to_numeric(). Needed to emulate previous behavior with deprecated
|
|
34
|
+
errors="ignore".
|
|
35
|
+
|
|
36
|
+
The issue covered by this function is discussed at https://github.com/pandas-dev/pandas/issues/54467.
|
|
37
|
+
`df2 = df1.apply(pd.to_numeric, errors='coerce')` and `df2=df2.fillna(df1)` is an alternative way.
|
|
38
|
+
|
|
39
|
+
Parameters
|
|
40
|
+
----------
|
|
41
|
+
data : Series|DataFrame
|
|
42
|
+
data to convert its dtypes
|
|
43
|
+
|
|
44
|
+
Returns
|
|
45
|
+
-------
|
|
46
|
+
Series|DataFrame
|
|
47
|
+
converted data
|
|
48
|
+
|
|
49
|
+
Examples
|
|
50
|
+
--------
|
|
51
|
+
>>> df = pd.DataFrame([[1, 2, 2.0], [1.2, 3, 4.0], ["a", "b", "D"]]).iloc[:2]
|
|
52
|
+
>>> df.dtypes # input with nonnumeric dtypes, although data values are numerics
|
|
53
|
+
0 object
|
|
54
|
+
1 object
|
|
55
|
+
2 object
|
|
56
|
+
dtype: object
|
|
57
|
+
>>> to_numeric_ignored_errors(df).dtypes # stops when numeric dtype is found
|
|
58
|
+
0 float64
|
|
59
|
+
1 int64
|
|
60
|
+
2 float64
|
|
61
|
+
dtype: object
|
|
62
|
+
>>> to_numeric_ignored_errors(df, downcast="float").dtypes # (down)casts to float dtype
|
|
63
|
+
0 float32
|
|
64
|
+
1 float32
|
|
65
|
+
2 float32
|
|
66
|
+
dtype: object
|
|
67
|
+
>>> to_numeric_ignored_errors(df, downcast="integer").dtypes # (down)casts to integer dtype if possible
|
|
68
|
+
0 float64
|
|
69
|
+
1 int8
|
|
70
|
+
2 int8
|
|
71
|
+
dtype: object
|
|
72
|
+
"""
|
|
33
73
|
if isinstance(data, pd.Series):
|
|
34
74
|
try:
|
|
35
|
-
return pd.to_numeric(data)
|
|
75
|
+
return pd.to_numeric(data, **kwargs)
|
|
36
76
|
except (ValueError, TypeError):
|
|
37
77
|
return data
|
|
38
78
|
elif isinstance(data, pd.DataFrame):
|
|
39
|
-
return pd.concat([to_numeric_ignored_errors(data[col]) for col in data.columns],
|
|
79
|
+
return pd.concat([to_numeric_ignored_errors(data[col], **kwargs) for col in data.columns],
|
|
80
|
+
axis=1)
|
|
40
81
|
else:
|
|
41
82
|
raise TypeError(f"{type(data)=} is not a pandas.Series or a pandas.DataFrame.")
|
|
42
83
|
|
|
@@ -154,10 +154,12 @@ def _add_phys_type_and_vm_va_setpoints_to_element_tables(csv_data):
|
|
|
154
154
|
def _extend_coordinates_to_node_shape(csv_data):
|
|
155
155
|
""" Extends the Coordinates table to the shape of Nodes to enable copying simply to bus_geodata.
|
|
156
156
|
"""
|
|
157
|
-
|
|
157
|
+
geo = pd.Series(None, index=csv_data["Node"].index, name="geo", dtype=object)
|
|
158
158
|
with_coord = ~csv_data["Node"]["coordID"].isnull()
|
|
159
159
|
idx_in_coordID = idx_in_2nd_array(csv_data["Node"]["coordID"].loc[with_coord].values,
|
|
160
160
|
csv_data["Coordinates"]["id"].values)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
geo.loc[with_coord] = [f'{{"type":"Point", "coordinates":[{x}, {y}]}}' for x, y in zip(
|
|
162
|
+
csv_data["Coordinates"].loc[idx_in_coordID, "x"].values,
|
|
163
|
+
csv_data["Coordinates"].loc[idx_in_coordID, "y"].values,
|
|
164
|
+
)]
|
|
165
|
+
csv_data["Node"]["geo"] = geo
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
# contributors (see AUTHORS file for details). All rights reserved.
|
|
4
4
|
|
|
5
5
|
# This is the csv_pp_converter for the simbench project.
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
# OPTIONAL IMPROVEMENTS for compatibility with future pandapower changes: constructing the
|
|
8
|
+
# dataframes net[element_table] by using the create_buses(), create_lines(), ... functions
|
|
9
|
+
# which where fast enough or not available at the time SimBench was developed.
|
|
7
10
|
|
|
8
11
|
import os
|
|
9
12
|
import pandas as pd
|
|
@@ -28,7 +31,7 @@ from simbench.converter.read_and_write import _init_csv_tables
|
|
|
28
31
|
from simbench.converter.pp_net_manipulation import _extend_pandapower_net_columns, \
|
|
29
32
|
_add_dspf_calc_type_and_phys_type_columns, _add_vm_va_setpoints_to_buses, \
|
|
30
33
|
_prepare_res_bus_table, replace_branch_switches, create_branch_switches, _add_coordID, \
|
|
31
|
-
_set_vm_setpoint_to_trafos
|
|
34
|
+
_set_vm_setpoint_to_trafos, _set_dependency_table_parameters
|
|
32
35
|
from simbench.converter.csv_data_manipulation import *
|
|
33
36
|
from simbench.converter.csv_data_manipulation import _extend_coordinates_to_node_shape, \
|
|
34
37
|
_sort_switch_nodes_and_prepare_element_and_et, \
|
|
@@ -42,7 +45,7 @@ logger = logging.getLogger(__name__)
|
|
|
42
45
|
__author__ = 'smeinecke'
|
|
43
46
|
|
|
44
47
|
|
|
45
|
-
def csv2pp(path, sep=';', add_folder_name=None, nrows=None,
|
|
48
|
+
def csv2pp(path, sep=';', add_folder_name=None, nrows=None, fill_bus_geo_by_generic_data=True):
|
|
46
49
|
"""
|
|
47
50
|
Conversion function from simbench csv format to pandapower.
|
|
48
51
|
|
|
@@ -58,8 +61,9 @@ def csv2pp(path, sep=';', add_folder_name=None, nrows=None, no_generic_coord=Fal
|
|
|
58
61
|
**nrows** (int, None) - number of rows to be read for profiles. If None, all rows will be
|
|
59
62
|
read.
|
|
60
63
|
|
|
61
|
-
**
|
|
62
|
-
missing
|
|
64
|
+
**fill_bus_geo_by_generic_data** (bool, False) - if False, no generic coordinates are
|
|
65
|
+
created in case of missing geo data. If True, generic coordinates are create when at least
|
|
66
|
+
one bus misses geo data.
|
|
63
67
|
|
|
64
68
|
OUTPUT:
|
|
65
69
|
**net** (pandapowerNet) - the created pandapower net from csv files data
|
|
@@ -79,17 +83,12 @@ def csv2pp(path, sep=';', add_folder_name=None, nrows=None, no_generic_coord=Fal
|
|
|
79
83
|
csv_data = read_csv_data(path, sep, nrows=nrows)
|
|
80
84
|
|
|
81
85
|
# run net creation
|
|
82
|
-
net = csv_data2pp(csv_data)
|
|
83
|
-
|
|
84
|
-
# ensure geodata
|
|
85
|
-
if not no_generic_coord and any(pd.isnull(net.bus_geodata.x) | pd.isnull(net.bus_geodata.y)):
|
|
86
|
-
del net.bus_geodata
|
|
87
|
-
create_generic_coordinates(net)
|
|
86
|
+
net = csv_data2pp(csv_data, fill_bus_geo_by_generic_data=fill_bus_geo_by_generic_data)
|
|
88
87
|
|
|
89
88
|
return net
|
|
90
89
|
|
|
91
90
|
|
|
92
|
-
def csv_data2pp(csv_data):
|
|
91
|
+
def csv_data2pp(csv_data, fill_bus_geo_by_generic_data=False):
|
|
93
92
|
""" Internal functionality of csv2pp, but with a given dict of csv_data as input instead of
|
|
94
93
|
csv files. """
|
|
95
94
|
# --- initializations
|
|
@@ -127,9 +126,21 @@ def csv_data2pp(csv_data):
|
|
|
127
126
|
create_branch_switches(net)
|
|
128
127
|
net.bus.loc[net.bus.type == "multi_auxiliary", "type"] = "auxiliary"
|
|
129
128
|
_set_vm_setpoint_to_trafos(net, csv_data)
|
|
129
|
+
_set_dependency_table_parameters(net)
|
|
130
130
|
_csv_types_to_pp2(net)
|
|
131
131
|
ensure_bus_index_columns_as_int(net)
|
|
132
132
|
|
|
133
|
+
# --- ensure geodata
|
|
134
|
+
if not fill_bus_geo_by_generic_data:
|
|
135
|
+
if n_missing_geo_data := sum(pd.isnull(net.bus.geo) | (net.bus.geo == "")):
|
|
136
|
+
if n_missing_geo_data != len(net.bus):
|
|
137
|
+
logger.info(f"Due to {fill_bus_geo_by_generic_data=}, new generic geo data are "
|
|
138
|
+
f"created and overwrite existing bus geo data ("
|
|
139
|
+
f"{len(net.bus)-n_missing_geo_data} buses had geo data, "
|
|
140
|
+
f"{n_missing_geo_data} buses missed geo data).")
|
|
141
|
+
net.bus["geo"] = None
|
|
142
|
+
create_generic_coordinates(net)
|
|
143
|
+
|
|
133
144
|
return net
|
|
134
145
|
|
|
135
146
|
|
|
@@ -222,23 +233,23 @@ def pp2csv_data(net1, export_pp_std_types=False, drop_inactive_elements=True,
|
|
|
222
233
|
csv_data = _init_csv_tables(['elements', 'profiles', 'types', 'res_elements'])
|
|
223
234
|
aux_nodes_are_reserved = reserved_aux_node_names is not None
|
|
224
235
|
|
|
236
|
+
if ("step_dependency_table" in net1.trafo.columns and net1.trafo.step_dependency_table.any()) \
|
|
237
|
+
or \
|
|
238
|
+
("step_dependency_table" in net1.shunt.columns and net1.shunt.step_dependency_table.any()):
|
|
239
|
+
logger.warning("'step_dependency_table' is not supported in SimBench's csv data format.")
|
|
240
|
+
|
|
225
241
|
# --- net data preparation for converting
|
|
226
242
|
_extend_pandapower_net_columns(net)
|
|
227
243
|
if drop_inactive_elements:
|
|
228
244
|
# attention: trafo3ws are not considered in current version of drop_inactive_elements()
|
|
229
245
|
pp.drop_inactive_elements(net, respect_switches=False)
|
|
230
|
-
|
|
231
|
-
if
|
|
246
|
+
dev_from_std = pp.deviation_from_std_type(net)
|
|
247
|
+
if dev_from_std:
|
|
232
248
|
logger.warning("There are deviations from standard types in elements: " +
|
|
233
|
-
str(["%s" % elm for elm in
|
|
249
|
+
str(["%s" % elm for elm in dev_from_std.keys()]) + ". Only the standard " +
|
|
234
250
|
"type values are converted to csv.")
|
|
235
251
|
convert_parallel_branches(net)
|
|
236
|
-
|
|
237
|
-
net.bus_geodata.shape[0] != net.bus.shape[0]):
|
|
238
|
-
logger.info("Since there are no or incomplete bus_geodata, generic geodata are assumed.")
|
|
239
|
-
net.bus_geodata = net.bus_geodata.iloc[0:0]
|
|
240
|
-
create_generic_coordinates(net)
|
|
241
|
-
merge_busbar_coordinates(net)
|
|
252
|
+
merge_busbar_coordinates(net, True)
|
|
242
253
|
move_slack_gens_to_ext_grid(net)
|
|
243
254
|
|
|
244
255
|
scaling_is_not_1 = []
|
|
@@ -319,7 +330,8 @@ def _log_nan_col(csv_data, tablename, col):
|
|
|
319
330
|
|
|
320
331
|
|
|
321
332
|
def _is_pp_type(data):
|
|
322
|
-
return
|
|
333
|
+
return isinstance(data, pp.auxiliary.pandapowerNet)
|
|
334
|
+
# return bool("name" in data.keys())
|
|
323
335
|
|
|
324
336
|
|
|
325
337
|
def convert_node_type(data):
|
|
@@ -679,7 +691,7 @@ def _rename_and_split_input_tables(data):
|
|
|
679
691
|
split_ppelm_into_type_and_elm = ["dcline"] if _is_pp_type(data) else []
|
|
680
692
|
input_elm_col = "pp" if _is_pp_type(data) else "csv"
|
|
681
693
|
output_elm_col = "csv" if _is_pp_type(data) else "pp"
|
|
682
|
-
corr_df = _csv_table_pp_dataframe_correspondings(pd.DataFrame)
|
|
694
|
+
corr_df = _csv_table_pp_dataframe_correspondings(pd.DataFrame, not _is_pp_type(data))
|
|
683
695
|
corr_df["comb_str"] = corr_df["csv"] + "*" + corr_df["pp"]
|
|
684
696
|
|
|
685
697
|
# all elements, which need to be converted to multiple output element tables, (dupl) need to be
|
|
@@ -726,7 +738,7 @@ def _get_split_gen_val(element):
|
|
|
726
738
|
|
|
727
739
|
def _rename_and_multiply_columns(data):
|
|
728
740
|
""" Renames the columns of all dataframes as needed in output data. """
|
|
729
|
-
to_rename_and_multiply_tuples = _get_parameters_to_rename_and_multiply()
|
|
741
|
+
to_rename_and_multiply_tuples = _get_parameters_to_rename_and_multiply(True)
|
|
730
742
|
for corr_str, tuples in to_rename_and_multiply_tuples.items():
|
|
731
743
|
# --- remove "type" from data if "std_type" exists too
|
|
732
744
|
if "std_type" in data[corr_str].columns and "type" in data[corr_str].columns and \
|
|
@@ -756,7 +768,7 @@ def _rename_and_multiply_columns(data):
|
|
|
756
768
|
data[corr_str].loc[:, col] *= factors
|
|
757
769
|
|
|
758
770
|
|
|
759
|
-
def _get_parameters_to_rename_and_multiply():
|
|
771
|
+
def _get_parameters_to_rename_and_multiply(drop_bus_geodata):
|
|
760
772
|
""" Returns a dict of tuples and a dict of dataframes where csv column names are assigned to
|
|
761
773
|
pandapower columns names which differ. """
|
|
762
774
|
# --- create dummy_net to get pp columns
|
|
@@ -770,8 +782,8 @@ def _get_parameters_to_rename_and_multiply():
|
|
|
770
782
|
dummy_net[elm]["va_degree"] = np.nan
|
|
771
783
|
|
|
772
784
|
# --- get corresponding tables and dataframes
|
|
773
|
-
corr_strings = _csv_table_pp_dataframe_correspondings(str)
|
|
774
|
-
csv_tablenames_, pp_dfnames = _csv_table_pp_dataframe_correspondings(list)
|
|
785
|
+
corr_strings = _csv_table_pp_dataframe_correspondings(str, drop_bus_geodata)
|
|
786
|
+
csv_tablenames_, pp_dfnames = _csv_table_pp_dataframe_correspondings(list, drop_bus_geodata)
|
|
775
787
|
|
|
776
788
|
# --- initialize tuples_dict
|
|
777
789
|
tuples_dict = dict.fromkeys(corr_strings, [("id", "name", None)])
|
|
@@ -803,7 +815,7 @@ def _replace_name_index(data):
|
|
|
803
815
|
indices. This function replaces the assignment of the input data. """
|
|
804
816
|
node_names = {"node", "nodeA", "nodeB", "nodeHV", "nodeMV", "nodeLV"}
|
|
805
817
|
bus_names = {"bus", "from_bus", "to_bus", "hv_bus", "mv_bus", "lv_bus"}
|
|
806
|
-
corr_strings = _csv_table_pp_dataframe_correspondings(str)
|
|
818
|
+
corr_strings = _csv_table_pp_dataframe_correspondings(str, True)
|
|
807
819
|
corr_strings.remove("Measurement*measurement") # already done in convert_measurement()
|
|
808
820
|
|
|
809
821
|
if _is_pp_type(data):
|
|
@@ -843,8 +855,9 @@ def _copy_data(input_data, output_data):
|
|
|
843
855
|
""" Copies the data from output_data[corr_strings] into input_data[element_table]. This function
|
|
844
856
|
handles that some corr_strings are not in output_data.keys() and copies all columns which
|
|
845
857
|
exists in both, output_data[corr_strings] and input_data[element_table]. """
|
|
846
|
-
|
|
847
|
-
|
|
858
|
+
out_is_pp = _is_pp_type(output_data)
|
|
859
|
+
corr_strings = _csv_table_pp_dataframe_correspondings(str, out_is_pp)
|
|
860
|
+
output_names = _csv_table_pp_dataframe_correspondings(list, out_is_pp)[int(out_is_pp)]
|
|
848
861
|
|
|
849
862
|
for corr_str, output_name in zip(corr_strings, output_names):
|
|
850
863
|
if corr_str in input_data.keys() and input_data[corr_str].shape[0]:
|
|
@@ -869,7 +882,7 @@ def _copy_data(input_data, output_data):
|
|
|
869
882
|
output_data[output_name] = pd.concat([output_data[output_name], input_data[
|
|
870
883
|
corr_str][cols_to_copy]], ignore_index=True).reindex_axis(output_data[
|
|
871
884
|
output_name].columns, axis=1)
|
|
872
|
-
if "std_types" in corr_str and
|
|
885
|
+
if "std_types" in corr_str and out_is_pp:
|
|
873
886
|
output_data[output_name].index = input_data[corr_str]["std_type"]
|
|
874
887
|
_inscribe_fix_values(output_data, output_name)
|
|
875
888
|
|
|
@@ -52,7 +52,7 @@ def csv_tablenames(which):
|
|
|
52
52
|
return csv_tablenames
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
def _csv_table_pp_dataframe_correspondings(type_):
|
|
55
|
+
def _csv_table_pp_dataframe_correspondings(type_, drop_bus_geodata):
|
|
56
56
|
csv_tablenames_ = csv_tablenames(['elements', 'types', 'res_elements'])
|
|
57
57
|
# corresponding pandapower dataframe names
|
|
58
58
|
pp_dfnames = ['ext_grid', 'line', 'load', 'shunt', 'bus', 'measurement', 'gen', 'sgen',
|
|
@@ -63,6 +63,9 @@ def _csv_table_pp_dataframe_correspondings(type_):
|
|
|
63
63
|
csv_tablenames_ += ['ExternalNet', 'ExternalNet', 'PowerPlant', 'PowerPlant', 'RES', 'RES',
|
|
64
64
|
'ExternalNet', 'ExternalNet', 'Line']
|
|
65
65
|
pp_dfnames += ['gen', 'sgen', 'ext_grid', 'sgen', 'ext_grid', 'gen', 'ward', 'xward', 'dcline']
|
|
66
|
+
if drop_bus_geodata:
|
|
67
|
+
csv_tablenames_.remove("Coordinates")
|
|
68
|
+
pp_dfnames.remove("bus_geodata")
|
|
66
69
|
assert len(csv_tablenames_) == len(pp_dfnames)
|
|
67
70
|
if type_ is list:
|
|
68
71
|
return csv_tablenames_, pp_dfnames
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# Institute for Energy Economics and Energy System Technology (IEE) Kassel and individual
|
|
3
3
|
# contributors (see AUTHORS file for details). All rights reserved.
|
|
4
4
|
|
|
5
|
+
from io import StringIO
|
|
5
6
|
import numpy as np
|
|
6
7
|
import pandas as pd
|
|
7
8
|
import pandapower as pp
|
|
@@ -181,8 +182,20 @@ def convert_parallel_branches(net, multiple_entries=True, elm_to_convert=["line"
|
|
|
181
182
|
net["switch"] = net["switch"].drop(switch_dupl)
|
|
182
183
|
|
|
183
184
|
|
|
184
|
-
def
|
|
185
|
+
def convert_geojson_to_bus_geodata_xy(net):
|
|
186
|
+
def notnone(val):
|
|
187
|
+
return isinstance(val, str) and bool(len(val))
|
|
188
|
+
net.bus_geodata = pd.DataFrame(np.nan, index=net.bus.index, columns=["x", "y"])
|
|
189
|
+
idxs = net.bus.index[net.bus.geo.apply(notnone)]
|
|
190
|
+
if len(idxs):
|
|
191
|
+
net.bus_geodata.loc[idxs, ["x", "y"]] = np.r_[[pd.read_json(StringIO(net.bus.geo.at[
|
|
192
|
+
i])).coordinates.values for i in idxs]]
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def merge_busbar_coordinates(net, on_bus_geodata):
|
|
185
196
|
""" merges x and y coordinates of busbar node connected via bus-bus switches """
|
|
197
|
+
if on_bus_geodata:
|
|
198
|
+
convert_geojson_to_bus_geodata_xy(net)
|
|
186
199
|
bb_nodes_set = set(net.bus.index[net.bus.type == "b"])
|
|
187
200
|
bb_nodes = sorted(bb_nodes_set)
|
|
188
201
|
all_connected_buses = set()
|
|
@@ -191,8 +204,11 @@ def merge_busbar_coordinates(net):
|
|
|
191
204
|
continue
|
|
192
205
|
connected_nodes = pp.get_connected_buses(net, bb_node, consider=("t", "s"))
|
|
193
206
|
if len(connected_nodes):
|
|
194
|
-
|
|
195
|
-
|
|
207
|
+
if on_bus_geodata:
|
|
208
|
+
net.bus_geodata.loc[list(connected_nodes), "x"] = net.bus_geodata.x.at[bb_node]
|
|
209
|
+
net.bus_geodata.loc[list(connected_nodes), "y"] = net.bus_geodata.y.at[bb_node]
|
|
210
|
+
else:
|
|
211
|
+
net.bus.loc[list(connected_nodes), "geo"] = net.bus.at[bb_node, "geo"]
|
|
196
212
|
all_connected_buses |= connected_nodes
|
|
197
213
|
|
|
198
214
|
|
|
@@ -392,6 +408,13 @@ def _set_vm_setpoint_to_trafos(net, csv_data):
|
|
|
392
408
|
idx_node].values
|
|
393
409
|
|
|
394
410
|
|
|
411
|
+
def _set_dependency_table_parameters(net):
|
|
412
|
+
for et in ["trafo", "trafo3w", "shunt"]:
|
|
413
|
+
param = "step_dependency_table" if et == "shunt" else "tap_dependency_table"
|
|
414
|
+
if param in net[et].columns:
|
|
415
|
+
net[et][param] = False
|
|
416
|
+
net[et][param] = net[et][param].astype(bool)
|
|
417
|
+
|
|
395
418
|
def _prepare_res_bus_table(net):
|
|
396
419
|
""" Adds columns to be converted to csv_data. """
|
|
397
420
|
if net.res_bus.shape[0]:
|
|
@@ -423,11 +446,12 @@ def replace_branch_switches(net, reserved_aux_node_names=None):
|
|
|
423
446
|
else:
|
|
424
447
|
# if replace_branch_switches() is called out of pp2csv_data(), this else statement is given
|
|
425
448
|
subnets = net.bus.zone[idx_bus].values
|
|
426
|
-
geodata = net.bus_geodata.loc[idx_bus, ["x", "y"]].values if net["bus_geodata"].shape[0] else \
|
|
427
|
-
np.empty((len(idx_bus), 2))
|
|
428
449
|
aux_buses = pp.create_buses(
|
|
429
450
|
net, n_branch_switches, net.bus.vn_kv[idx_bus].values, name=names.values, type="auxiliary",
|
|
430
|
-
|
|
451
|
+
zone=subnets)
|
|
452
|
+
if "bus_geodata" in net.keys() and net["bus_geodata"].shape[0]:
|
|
453
|
+
net.bus_geodata = pd.concat([net.bus_geodata, pd.DataFrame(net.bus_geodata.loc[
|
|
454
|
+
idx_bus, ["x", "y"]].values, index=aux_buses, columns=["x", "y"])])
|
|
431
455
|
for col in ["min_vm_pu", "max_vm_pu", "substation", "voltLvl"]:
|
|
432
456
|
if col in net.bus.columns:
|
|
433
457
|
net.bus.loc[aux_buses, col] = net.bus[col][idx_bus].values
|
|
@@ -509,9 +533,6 @@ def create_branch_switches(net):
|
|
|
509
533
|
net.bus = net.bus.drop(aux_bus_df["aux_buses"])
|
|
510
534
|
idx_in_res_bus = aux_bus_df["aux_buses"][aux_bus_df["aux_buses"].isin(net.res_bus.index)]
|
|
511
535
|
net.res_bus = net.res_bus.drop(idx_in_res_bus)
|
|
512
|
-
idx_in_bus_geodata = aux_bus_df["aux_buses"][aux_bus_df["aux_buses"].isin(
|
|
513
|
-
net.bus_geodata.index)]
|
|
514
|
-
net.bus_geodata = net.bus_geodata.drop(idx_in_bus_geodata)
|
|
515
536
|
|
|
516
537
|
|
|
517
538
|
def _add_coordID(net, highest_existing_coordinate_number):
|
|
@@ -233,7 +233,7 @@ def get_absolute_profiles_from_relative_profiles(
|
|
|
233
233
|
missing = list(applied_profiles[~applied_profiles.isin(relative_profiles.columns)])
|
|
234
234
|
if len(missing):
|
|
235
235
|
raise ValueError("These profiles are set to be applied but are missing in the profiles "
|
|
236
|
-
"data: " + str(
|
|
236
|
+
"data: " + str(missing))
|
|
237
237
|
isna = applied_profiles.isnull()
|
|
238
238
|
is_not_na_pos = np.arange(len(isna), dtype=int)[~isna.values]
|
|
239
239
|
relative_profiles_vals[:, is_not_na_pos] = \
|
|
@@ -32,6 +32,21 @@ def test_ensure_iterability():
|
|
|
32
32
|
assert bool_
|
|
33
33
|
|
|
34
34
|
|
|
35
|
+
def test_to_numeric_ignored_errors():
|
|
36
|
+
df = pd.DataFrame([[1, 2, 2.0], [1.2, 3, 4.0], ["a", "b", "D"]]).iloc[:2]
|
|
37
|
+
out1 = sb.to_numeric_ignored_errors(df)
|
|
38
|
+
out2 = sb.to_numeric_ignored_errors(df, downcast="float")
|
|
39
|
+
out3 = sb.to_numeric_ignored_errors(df, downcast="integer")
|
|
40
|
+
|
|
41
|
+
assert set(out1.select_dtypes("float").columns) == {0, 2}
|
|
42
|
+
assert set(out1.select_dtypes("integer").columns) == {1}
|
|
43
|
+
|
|
44
|
+
assert set(out2.select_dtypes("float").columns) == {0, 1, 2}
|
|
45
|
+
|
|
46
|
+
assert set(out3.select_dtypes("float").columns) == {0}
|
|
47
|
+
assert set(out3.select_dtypes("integer").columns) == {1, 2}
|
|
48
|
+
|
|
49
|
+
|
|
35
50
|
def test_idx_in_2nd_array():
|
|
36
51
|
arr1 = np.array([1, 6, 4.6, 3.4, 6, 1, "Hallo", "hallo", "Hallo"])
|
|
37
52
|
arr2 = np.array([8, 4, 1, 2, 5, 5.6, 4.6, "Hallo", "hallo", 6, 3.4])
|
|
@@ -155,7 +155,7 @@ def test_convert_parallel_branches():
|
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
def test_test_network():
|
|
158
|
-
net = csv2pp(test_network_path,
|
|
158
|
+
net = csv2pp(test_network_path, fill_bus_geo_by_generic_data=False)
|
|
159
159
|
|
|
160
160
|
# test min/max ratio
|
|
161
161
|
for elm in pp.pp_elements(bus=False, branch_elements=False, other_elements=False):
|
|
@@ -219,9 +219,9 @@ def test_example_simple():
|
|
|
219
219
|
avoid_duplicates_in_column(net, i, 'name')
|
|
220
220
|
|
|
221
221
|
# --- create geodata
|
|
222
|
-
net.
|
|
223
|
-
|
|
224
|
-
merge_busbar_coordinates(net)
|
|
222
|
+
net.bus["geo"] = list(map(lambda xy: f'{{"type":"Point", "coordinates":[{xy[0]}, {xy[1]}]}}',
|
|
223
|
+
zip([0., 1., 2., 3., 4., 5., 5., 3.63], [0.]*5+[-5., 5., 2.33])))
|
|
224
|
+
merge_busbar_coordinates(net, False)
|
|
225
225
|
|
|
226
226
|
# --- convert
|
|
227
227
|
csv_data = pp2csv_data(net, export_pp_std_types=True, drop_inactive_elements=True)
|
|
@@ -256,7 +256,7 @@ def test_example_simple():
|
|
|
256
256
|
logger.error("dtype adjustment of %s failed." % key)
|
|
257
257
|
# drop result table rows
|
|
258
258
|
if pp_is_27lower and "res_" in key:
|
|
259
|
-
if
|
|
259
|
+
if key != "res_bus":
|
|
260
260
|
net[key] = net[key].iloc[0:0]
|
|
261
261
|
else:
|
|
262
262
|
net[key].loc[:, ["p_mw", "q_mvar"]] = np.nan
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
id;sR;vmHV;vmLV;va0;vmImp;pCu;pFe;iNoLoad;tapable;tapside;dVm;dVa;tapNeutr;tapMin;tapMax
|
|
2
|
-
T1;25;110;20;150;12;70;30;0;1;HV;0;0;0;-5;5
|
|
2
|
+
T1;25.0;110.0;20.0;150.0;12.0;70.00000000000001;30.0;0.0;1;HV;0.0;0;0;-5;5
|
|
@@ -51,10 +51,8 @@ def _net_to_test():
|
|
|
51
51
|
pp.create_switch(net, lv_buses[2], l0, "l")
|
|
52
52
|
pp.create_switch(net, lv_buses[3], l1, "l")
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
net.bus_geodata["y"] = [0, 1, -1, 0, 0, 1, 0]
|
|
57
|
-
net.bus_geodata.index = list(range(6))+[8]
|
|
54
|
+
net.bus["geo"] = list(map(lambda xy: f'{{"type":"Point", "coordinates":[{xy[0]}, {xy[1]}]}}',
|
|
55
|
+
zip([1., 2., 1., 3., 0., 1., 2], [0., 1., -1., 0., 0., 1., 0])))
|
|
58
56
|
|
|
59
57
|
return net
|
|
60
58
|
|
|
@@ -65,8 +63,6 @@ def test_branch_switch_changes():
|
|
|
65
63
|
|
|
66
64
|
net1 = deepcopy(net_orig)
|
|
67
65
|
replace_branch_switches(net1)
|
|
68
|
-
net1.bus_geodata = net1.bus_geodata.astype({coord: net_orig.bus_geodata.dtypes[
|
|
69
|
-
coord] for coord in ["x", "y"]})
|
|
70
66
|
|
|
71
67
|
assert net_orig.switch.shape == net1.switch.shape
|
|
72
68
|
assert (net_orig.switch.bus == net1.switch.bus).all()
|
|
@@ -393,14 +393,7 @@ def _test_net_validity(net, sb_code_params, shortened, input_path=None):
|
|
|
393
393
|
assert net.measurement.shape[0] > 1
|
|
394
394
|
|
|
395
395
|
# bus_geodata
|
|
396
|
-
assert net.bus.
|
|
397
|
-
# check_that_all_buses_connected_by_switches_have_same_geodata
|
|
398
|
-
# for bus_group in bus_groups_connected_by_switches(net):
|
|
399
|
-
# first_bus = list(bus_group)[0]
|
|
400
|
-
# assert np.all(np.isclose(net.bus_geodata.x.loc[bus_group].astype(float),
|
|
401
|
-
# net.bus_geodata.x.loc[first_bus].astype(float))) \
|
|
402
|
-
# and np.all(np.isclose(net.bus_geodata.y.loc[bus_group].astype(float),
|
|
403
|
-
# net.bus_geodata.y.loc[first_bus].astype(float)))
|
|
396
|
+
assert not net.bus.geo.isnull().any()
|
|
404
397
|
|
|
405
398
|
# --- test data content
|
|
406
399
|
# substation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: simbench
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0
|
|
4
4
|
Summary: Electrical Power System Benchmark Models.
|
|
5
5
|
Author-email: Steffen Meinecke <steffen.meinecke@uni-kassel.de>
|
|
6
6
|
Maintainer-email: simbench Developers <simbench@uni-kassel.de>
|
|
@@ -56,16 +56,15 @@ Classifier: Natural Language :: English
|
|
|
56
56
|
Classifier: Operating System :: OS Independent
|
|
57
57
|
Classifier: Programming Language :: Python
|
|
58
58
|
Classifier: Programming Language :: Python :: 3
|
|
59
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
60
59
|
Classifier: Programming Language :: Python :: 3.9
|
|
61
60
|
Classifier: Programming Language :: Python :: 3.10
|
|
62
61
|
Classifier: Programming Language :: Python :: 3.11
|
|
63
62
|
Classifier: Programming Language :: Python :: 3.12
|
|
64
|
-
Requires-Python: >=3.
|
|
63
|
+
Requires-Python: >=3.9
|
|
65
64
|
Description-Content-Type: text/x-rst
|
|
66
65
|
License-File: LICENSE
|
|
67
66
|
License-File: AUTHORS
|
|
68
|
-
Requires-Dist: pandapower>=
|
|
67
|
+
Requires-Dist: pandapower>=3.0.0
|
|
69
68
|
Provides-Extra: docs
|
|
70
69
|
Requires-Dist: numpydoc; extra == "docs"
|
|
71
70
|
Requires-Dist: sphinx; extra == "docs"
|
|
@@ -103,6 +102,7 @@ Requires-Dist: numba>=0.25; extra == "all"
|
|
|
103
102
|
Requires-Dist: lightsim2grid>=0.8.1; extra == "all"
|
|
104
103
|
Requires-Dist: geopandas; extra == "all"
|
|
105
104
|
Requires-Dist: matplotlib; extra == "all"
|
|
105
|
+
Dynamic: license-file
|
|
106
106
|
|
|
107
107
|
|
|
108
108
|
.. image:: https://simbench.de/wp-content/uploads/2019/01/logo.png
|
simbench-1.5.2/requirements.txt
DELETED
|
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
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Coordinates.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/ExternalNet.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/LineType.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/LoadProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Measurement.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/PowerPlant.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/RESProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/StudyCases.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Substation.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Switch.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-0-sw/Transformer.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Coordinates.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/DCLineType.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/ExternalNet.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/LineType.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/LoadProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Measurement.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/PowerPlant.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/RESProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Storage.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/StudyCases.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Substation.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Switch.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-1-sw/Transformer.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Coordinates.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/DCLineType.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/ExternalNet.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/LineType.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/LoadProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Measurement.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/PowerPlant.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/RESProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Storage.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/StudyCases.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Substation.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Switch.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/networks/1-complete_data-mixed-all-2-sw/Transformer.csv
RENAMED
|
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
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network/PowerPlantProfile.csv
RENAMED
|
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
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Coordinates.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/DCLineType.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/ExternalNet.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Line.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Load.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/LoadProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Measurement.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Node.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/PowerPlant.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/RES.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/RESProfile.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Shunt.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Storage.csv
RENAMED
|
File without changes
|
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/StudyCases.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Substation.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Switch.csv
RENAMED
|
File without changes
|
{simbench-1.5.2 → simbench-1.6.0}/simbench/test/converter/test_network_output_folder/Transformer.csv
RENAMED
|
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
|