Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion simbench/converter/csv_pp_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
from pandapower.plotting import create_generic_coordinates
import warnings

try:
from pandapower.toolbox.grid_modification import drop_inactive_elements as pp_drop_inactive_elements
except ImportError:
from pandapower import drop_inactive_elements as pp_drop_inactive_elements

import logging

from simbench.converter.auxiliary import (
Expand Down Expand Up @@ -327,7 +332,7 @@ def pp2csv_data(
_extend_pandapower_net_columns(net)
if drop_inactive_elements:
# attention: trafo3ws are not considered in current version of drop_inactive_elements()
pp.drop_inactive_elements(net, respect_switches=False)
pp_drop_inactive_elements(net, respect_switches=False)
dev_from_std = DeviationFromStdType().diagnostic(net)
if dev_from_std:
logger.warning(
Expand Down
26 changes: 16 additions & 10 deletions simbench/converter/pp_net_manipulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
from simbench.converter.voltLvl import get_voltlvl
from simbench.converter.format_information import get_columns

try:
from pandapower.toolbox.element_selection import get_connected_buses
from pandapower.toolbox.data_modification import add_column_from_node_to_elements, add_column_from_element_to_elements
except ImportError:
from pandapower import get_connected_buses, add_column_from_node_to_elements, add_column_from_element_to_elements

logger = logging.getLogger(__name__)

__author__ = "smeinecke"
Expand Down Expand Up @@ -336,7 +342,7 @@ def merge_busbar_coordinates(net, on_bus_geodata):
for bb_node in bb_nodes:
if bb_node in all_connected_buses:
continue
connected_nodes = pp.get_connected_buses(
connected_nodes = get_connected_buses(
net, bb_node, consider=("t", "s")
)
if len(connected_nodes):
Expand Down Expand Up @@ -383,23 +389,23 @@ def provide_subnet_col(net):

# --- If both, subnet and zone, are not available, take subnet from bus
# add subnet column from node to all elements but "trafo"
pp.add_column_from_node_to_elements(
add_column_from_node_to_elements(
net,
"subnet",
replace=False,
elements=pp.pp_elements(bus=False) - {"trafo"},
branch_bus=["from_bus", "lv_bus"],
)
# add subnet column from node to trafo without verbose
pp.add_column_from_node_to_elements(
add_column_from_node_to_elements(
net,
"subnet",
replace=False,
elements={"trafo"},
branch_bus=["from_bus", "lv_bus"],
verbose=False,
)
pp.add_column_from_element_to_elements(
add_column_from_element_to_elements(
net, "subnet", replace=False, elements=["measurement"]
)

Expand Down Expand Up @@ -434,23 +440,23 @@ def provide_voltLvl_col(net):

# --- provide voltLvl parameters for all elements
# add voltLvl column from node to all elements but "trafo"
pp.add_column_from_node_to_elements(
add_column_from_node_to_elements(
net,
"voltLvl",
replace=False,
elements=pp.pp_elements(bus=False) - {"trafo"},
branch_bus=["to_bus", "hv_bus"],
)
# add voltLvl column from node to trafo without verbose
pp.add_column_from_node_to_elements(
add_column_from_node_to_elements(
net,
"voltLvl",
replace=False,
elements={"trafo"},
branch_bus=["to_bus", "hv_bus"],
verbose=False,
)
pp.add_column_from_element_to_elements(
add_column_from_element_to_elements(
net, "voltLvl", replace=False, elements=["measurement"]
)
# correct voltLvl for trafos
Expand All @@ -466,17 +472,17 @@ def provide_voltLvl_col(net):
def provide_substation_cols(net):
# --- providing 'substation' column in switches and trafos
if "substation" in net.bus.columns:
pp.add_column_from_node_to_elements(
add_column_from_node_to_elements(
net, "substation", replace=False, elements=["switch"]
)
pp.add_column_from_node_to_elements(
add_column_from_node_to_elements(
net,
"substation",
replace=False,
elements=["trafo"],
branch_bus=["from_bus", "lv_bus"],
)
pp.add_column_from_element_to_elements(
add_column_from_element_to_elements(
net, "substation", replace=False, elements=["measurement"]
)

Expand Down
10 changes: 8 additions & 2 deletions simbench/networks/extract_simbench_grids_from_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
from simbench import csv_data2pp, read_csv_data, csv_tablenames, idx_in_2nd_array, \
ensure_iterability, pp_profile_names

try:
from pandapower.toolbox.element_selection import get_connected_buses
from pandapower.toolbox.grid_modification import fuse_buses
except ImportError:
from pandapower import get_connected_buses, fuse_buses

import logging

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -287,7 +293,7 @@ def _get_connected_buses_via_bus_bus_switch(net, buses):
buses = set(ensure_iterability(buses))
add_buses = [1] # set anything to add_buses to start the while loop
while(len(add_buses)):
add_buses = pp.get_connected_buses(net, buses, consider=("s"))
add_buses = get_connected_buses(net, buses, consider=("s"))
buses |= add_buses
return buses

Expand Down Expand Up @@ -316,7 +322,7 @@ def generate_no_sw_variant(net):

# fuse buses which are connected via bus-bus switches
for b1, b2 in to_fuse.items():
pp.fuse_buses(net, b1, b2)
fuse_buses(net, b1, b2)

# replace auxiliary type of buses with no switch connected anymore
aux_buses = net.bus.index[net.bus.type == "auxiliary"]
Expand Down
24 changes: 14 additions & 10 deletions simbench/test/converter/test_auxiliary.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
from copy import deepcopy
from packaging import version
import pandapower as pp
try:
from pandapower.toolbox.comparison import compare_arrays, dataframes_equal
except ImportError:
from pandapower import compare_arrays, dataframes_equal

import simbench as sb

Expand Down Expand Up @@ -72,7 +76,7 @@ def test_column_indices():
df = pd.DataFrame([[0, 3, 2, 4, 5, 6]], columns=["b", "q", "a", "g", "f", "c"])
query_cols = ["b", "g", "f", "c", "q", "a", "q", "a", "f"]
col_idx = sb.column_indices(df, query_cols)
assert all(pp.compare_arrays(col_idx, np.array([0, 3, 4, 5, 1, 2, 1, 2, 4])))
assert all(compare_arrays(col_idx, np.array([0, 3, 4, 5, 1, 2, 1, 2, 4])))


def test_get_unique_duplicated_dict():
Expand Down Expand Up @@ -111,7 +115,7 @@ def test_reindex_dict_dataframes():
expected = {1: df0, 2: df0}
sb.reindex_dict_dataframes(dict_)
for k in dict_.keys():
assert pp.dataframes_equal(dict_[k], expected[k])
assert dataframes_equal(dict_[k], expected[k])


def test_avoid_duplicates_in_column():
Expand Down Expand Up @@ -194,14 +198,14 @@ def test_merge_dataframes():
["01.02.2016 00:00:00", -1, 3.2, None, 2],
["02.02.2016 13:45:00", 3, 1, None, 4]],
columns=["time", "A", "B", "C", "D"])
assert pp.dataframes_equal(return1, res1)
assert dataframes_equal(return1, res1)

# ordered index and column, df2 with precedence, time as index
return2 = sb.merge_dataframes([df1, df2], column_to_sort="time", keep="last",
index_time_str="%d.%m.%Y %H:%M:%S")
res2 = deepcopy(res1)
res2.loc[0, ["A", "B"]] = df2.loc[1, ["A", "B"]]
assert pp.dataframes_equal(return2, res2)
assert dataframes_equal(return2, res2)

# --- changed input
new_df1_idx = [1, 3, 4]
Expand All @@ -219,13 +223,13 @@ def test_merge_dataframes():
else:
res5 = res5.reindex_axis(["A", "B", "C", "D", "time"], axis=1)
res5.index = [1, 2, 3, 4, 11, 12]
assert pp.dataframes_equal(return5, res5)
assert dataframes_equal(return5, res5)

# ordered index and column, df2 with precedence, no extra index
return6 = sb.merge_dataframes([df1, df2], keep="last")
res6 = deepcopy(res5)
res6.loc[1, ["A", "B"]] = df2.loc[1, ["A", "B"]]
assert pp.dataframes_equal(return6, res6)
assert dataframes_equal(return6, res6)

# beware idx order, df1 with precedence, no extra index
return7 = sb.merge_dataframes([df1, df2], keep="first", sort_index=False, sort_column=False)
Expand All @@ -234,7 +238,7 @@ def test_merge_dataframes():
except TypeError: # legacy for pandas <0.21
res7 = deepcopy(res5).reindex_axis(unsorted_index)
res7 = res7.reindex_axis(unsorted_columns, axis=1)
assert pp.dataframes_equal(return7, res7)
assert dataframes_equal(return7, res7)

# beware idx order, df1 with precedence, no extra index
return8 = sb.merge_dataframes([df1, df2], keep="last", sort_index=False, sort_column=False)
Expand All @@ -243,20 +247,20 @@ def test_merge_dataframes():
except TypeError: # legacy for pandas <0.21
res8 = deepcopy(res6).reindex_axis(unsorted_index)
res8 = res8.reindex_axis(unsorted_columns, axis=1)
assert pp.dataframes_equal(return8, res8)
assert dataframes_equal(return8, res8)

# merge 3 dfs while keeping first duplicates
return9 = sb.merge_dataframes([df1, df2, df3], keep="first", column_to_sort="time",
index_time_str="%d.%m.%Y %H:%M:%S")
assert pp.dataframes_equal(return9, res1)
assert dataframes_equal(return9, res1)

# merge 3 dfs while keeping last duplicates
return10 = sb.merge_dataframes([df1, df2, df3], keep="last", column_to_sort="time",
index_time_str="%d.%m.%Y %H:%M:%S")
res10 = deepcopy(res1)
df3_col_except_time = df3.columns.difference(["time"])
res10.loc[0, df3_col_except_time] = df3.loc[0, df3_col_except_time].values
assert pp.dataframes_equal(return10, res10)
assert dataframes_equal(return10, res10)

# merge 3 dfs while keeping all duplicates
return11 = sb.merge_dataframes([df1, df2, df3], keep="all")
Expand Down
19 changes: 13 additions & 6 deletions simbench/test/converter/test_csv_pp_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@
repl_nans_in_obj_cols_to_empty_str,
)

try:
from pandapower.toolbox.comparison import dataframes_equal, nets_equal
from pandapower.toolbox.grid_modification import drop_buses
except ImportError:
from pandapower import dataframes_equal, drop_buses, nets_equal


import logging

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -127,8 +134,8 @@ def test_convert_to_parallel_branches():
convert_parallel_branches(
net2, multiple_entries=False, elm_to_convert=["line"]
)
assert pp.dataframes_equal(net2.line, net1.line)
assert pp.dataframes_equal(net2.trafo, net.trafo)
assert dataframes_equal(net2.line, net1.line)
assert dataframes_equal(net2.trafo, net.trafo)

# only exclude "max_loading_percent"
convert_parallel_branches(
Expand Down Expand Up @@ -233,7 +240,7 @@ def test_test_network():
if version.parse(pp.__version__) <= version.parse("2.7.0")
else dict()
)
eq = pp.dataframes_equal(
eq = dataframes_equal(
csv_orig[tablename], csv_exported[tablename], **params
)
if not eq:
Expand Down Expand Up @@ -320,7 +327,7 @@ def test_example_simple():
# --- adjust net appearance / define what should be compared
pp_is_27lower = version.parse(pp.__version__) <= version.parse("2.7.0")

pp.drop_buses(net, [to_drop])
drop_buses(net, [to_drop])
if "power_station_trafo" in net.gen.columns:
assert net.gen["power_station_trafo"].isnull().all()
del net.gen["power_station_trafo"]
Expand Down Expand Up @@ -375,7 +382,7 @@ def test_example_simple():
)
else:
name_selection.append(elm)
eq = pp.nets_equal(
eq = nets_equal(
net,
net_from_csv_data,
name_selection=name_selection,
Expand All @@ -391,7 +398,7 @@ def test_example_simple():
del net["std_types"]
del net_from_csv_data["std_types"]

eq = pp.nets_equal(net, net_from_csv_data, tol=1e-7)
eq = nets_equal(net, net_from_csv_data, tol=1e-7)
assert eq


Expand Down
9 changes: 7 additions & 2 deletions simbench/test/converter/test_pp_net_manipulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
from simbench.converter import replace_branch_switches, create_branch_switches, \
repl_nans_in_obj_cols_to_empty_str

try:
from pandapower.toolbox.comparison import nets_equal
except ImportError:
from pandapower import nets_equal

import logging

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -79,9 +84,9 @@ def test_branch_switch_changes():
repl_nans_in_obj_cols_to_empty_str(net2)

if version.parse(pp.__version__) <= version.parse("2.7.0"):
assert pp.nets_equal(net_orig, net2, tol=1e-7)
assert nets_equal(net_orig, net2, tol=1e-7)
else:
assert pp.nets_equal(net_orig, net2)
assert nets_equal(net_orig, net2)


if __name__ == "__main__":
Expand Down
12 changes: 9 additions & 3 deletions simbench/test/networks/test_extract_grids_from_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@
import simbench as sb
from simbench.networks.extract_simbench_grids_from_csv import \
_get_extracted_csv_data_from_dict

try:
from pandapower.toolbox.comparison import dataframes_equal
except ImportError:
from pandapower import dataframes_equal

import logging

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -277,9 +283,9 @@ def test_generate_no_sw_variant():
_preserve_dtypes(net[elm], net_orig[elm].dtypes)
assert (net.bus.name.values == net_orig.bus.name.loc[net.bus.index.difference(
[1, 6])].values).all()
assert pp.dataframes_equal(net.line, net_orig.line)
assert pp.dataframes_equal(net.trafo, net_orig.trafo)
assert pp.dataframes_equal(net.switch, net_orig.switch.loc[[6, 9, 10, 11, 13, 14]])
assert dataframes_equal(net.line, net_orig.line)
assert dataframes_equal(net.trafo, net_orig.trafo)
assert dataframes_equal(net.switch, net_orig.switch.loc[[6, 9, 10, 11, 13, 14]])


def bus_groups_connected_by_switches(net):
Expand Down
Loading