Skip to content

Commit 1db236c

Browse files
Merge pull request #171 from alliander-opensource/fix/asym-values-validate
fix asym values validate in pp
2 parents d810df1 + ce15626 commit 1db236c

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

tests/data/pandapower/pgm_input_data.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@
4949
],
5050
"asym_load":
5151
[
52-
{"id": 16, "node": 4, "status": 1, "type": 0, "id_reference": {"table": "asymmetric_load", "index": 33}}
52+
{"id": 16, "node": 4, "status": 1, "type": 0, "p_specified": [100000.0, 200000.0, 3000000.0], "q_specified": [10000.0, 10000.0, 10000.0], "id_reference": {"table": "asymmetric_load", "index": 33}}
5353
],
5454
"asym_gen":
5555
[
56-
{"id": 17, "node": 4, "status": 1, "type": 0, "id_reference": {"table": "asymmetric_sgen", "index": 32}}
56+
{"id": 17, "node": 4, "status": 1, "type": 0, "p_specified": [100000.0, 200000.0, 3000000.0], "q_specified": [10000.0, 10000.0, 10000.0], "id_reference": {"table": "asymmetric_sgen", "index": 32}}
5757
]
5858
}

tests/validation/converters/test_pandapower_converter_input.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,10 @@ def test_attributes(input_data: Tuple[SingleDataset, SingleDataset], component:
8484
actual_values, expected_values = select_values(actual_data, expected_data, component, attribute)
8585

8686
# Assert
87-
pd.testing.assert_series_equal(actual_values, expected_values)
87+
if isinstance(actual_values, pd.Series) and isinstance(expected_values, pd.Series):
88+
pd.testing.assert_series_equal(actual_values, expected_values)
89+
else:
90+
pd.testing.assert_frame_equal(actual_values, expected_values)
8891

8992

9093
@pytest.mark.parametrize(

tests/validation/utils.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,16 @@ def select_values(actual: SingleDataset, expected: SingleDataset, component: str
114114
assert attribute in expected[component].dtype.names
115115

116116
# Create an index series for both the actual data and the expected data
117-
actual_values = pd.Series(actual[component][attribute], index=actual[component]["id"]).sort_index()
118-
expected_values = pd.Series(expected[component][attribute], index=expected[component]["id"]).sort_index()
117+
actual_attr = actual[component][attribute]
118+
expected_attr = expected[component][attribute]
119+
assert actual_attr.ndim == expected_attr.ndim in [1, 2]
120+
pd_data_fn = pd.DataFrame if actual_attr.ndim == 2 else pd.Series
121+
actual_values = pd_data_fn(actual_attr, index=actual[component]["id"]).sort_index()
122+
expected_values = pd_data_fn(expected_attr, index=expected[component]["id"]).sort_index()
119123

120124
# Create a selection mask, to select only non-NaN values in the validation file
121-
if np.issubdtype(expected_values.dtype, np.integer):
122-
mask = expected_values != np.iinfo(expected_values.dtype).min
125+
if np.issubdtype(expected_values.values.dtype, np.integer):
126+
mask = expected_values != np.iinfo(expected_values.values.dtype).min
123127
else:
124128
mask = ~pd.isna(expected_values)
125129

@@ -130,7 +134,7 @@ def select_values(actual: SingleDataset, expected: SingleDataset, component: str
130134
elif len(missing_idx) > 1:
131135
raise KeyError(f"Expected {component}s {missing_idx}, but they are missing {actual_values.index.tolist()}.")
132136

133-
actual_values = actual_values[expected_values.index][mask]
137+
actual_values = actual_values.loc[expected_values.index][mask]
134138
expected_values = expected_values[mask]
135139

136140
# Return the result

0 commit comments

Comments
 (0)