Toolbox

The pandapipes toolbox is a collection of helper functions that are implemented for the pandapipes framework. It is designed for functions of common application that fit nowhere else. Have a look at the available functions to save yourself the effort of maybe implementing something twice. If you develop some functionality which could be interesting to other users as well and do not fit into one of the specialized packages, feel welcome to add your contribution.

There are many similarities to the pandapower toolbox functions (c.f. this chapter in the pandapower documentation), but not all functions are transferred to pandapipes. If you want to extend the toolbox, feel free to open a new pull request.

Note

If you implement a function that might be useful for others, it is mandatory to add a short docstring to make browsing the toolbox practical. Ideally further comments if appropriate and a reference of authorship should be added as well.

General Issues

element_junction_tuples(include_node_elements=True, include_branch_elements=True, include_res_elements=False, net=None)

Utility function Provides the tuples of elements and corresponding columns for junctions they are connected to

Parameters
  • include_node_elements (bool) – whether tuples for junction elements e.g. sink, source, are included

  • include_branch_elements (bool) – whether branch elements e.g. pipe, pumps, … are included

  • include_res_elements (bool) – whether to include result tables

  • net (pandapipesNet) – pandapipes net from which to derive component names

Returns

set of tuples with element names and column names

Return type

set

pp_elements(junction=True, include_node_elements=True, include_branch_elements=True, include_res_elements=False, net=None)

Provides a list of all pandapipes elements belonging to the desired element types. If a net is given, the elements are derived from the component list.

Parameters
  • junction (bool, default True) – if True, return junction table name

  • include_node_elements (bool, default True) – if True, return node element table names

  • include_branch_elements (bool, default True) – if True, return branch element table names

  • include_res_elements (bool, default False) – if True, return result table names for all the elements

  • net (pandapipesNet) – if a pandapipes network is given, the table names will be derived from its component list

Returns

pp_elms - set of table names for the desired element types

Return type

set

Result and Net Information

nets_equal(net1, net2, check_only_results=False, exclude_elms=None, **kwargs)

Compares the DataFrames of two networks.

The networks are considered equal if they share the same keys and values, except of the ‘et’ (elapsed time) entry which differs depending on runtime conditions and entries stating with ‘_’.

Parameters
  • net1 (pandapipesNet) – first net for comparison

  • net2 (pandapipesNet) – second net for comparison

  • check_only_results (bool, default False) –

  • exclude_elms (list of strings, default None) – element types that should be skipped in the comparison

  • kwargs – key word arguments

Returns

True, if nets are equal

Return type

Bool

Simulation Setup and Preparation

reindex_junctions(net, junction_lookup)

Changes the index of net.junction and considers the new junction indices in all other pandapipes element tables.

Parameters
  • net (pandapipesNet) – pandapipes network

  • junction_lookup (dict) – the keys are the old junction indices, the values the new junction indices

Returns

junction_lookup - the finally reindexed junction lookup (with corrections if necessary)

Return type

dict

create_continuous_junction_index(net, start=0, store_old_index=False)

Creates a continuous junction index starting at ‘start’ and replaces all references of old indices by the new ones.

Parameters
  • net (pandapipesNet) – pandapipes network

  • start (int, default 0) – index begins with “start”

  • store_old_index (bool, default False) – if True, stores the old index in net.junction[“old_index”]

Returns

junction_lookup - mapping of old to new index

Return type

dict

reindex_elements(net, element, new_indices, old_indices=None)

Changes the index of net[element].

Parameters
  • net (pandapipesNet) – pandapipes network

  • element (str) – name of the element table

  • new_indices (iterable) – list of new indices

  • old_indices (iterable, default None) – list of old/previous indices which will be replaced. If None, all indices are considered.

Returns

No output.

create_continuous_elements_index(net, start=0, add_df_to_reindex=None)

Creating a continuous index for all the elements, starting at zero and replaces all references of old indices by the new ones.

Parameters
  • net (pandapipesNet) – pandapipes network with unodered indices

  • start (int) – new index begins with “start”

  • add_df_to_reindex (iterable, default None) – by default all useful pandapower elements for power flow will be selected. Customized DataFrames can also be considered here.

Returns

net - pandapipes network with odered and continuous indices

Return type

pandapipesNet

Topology Modification

fuse_junctions(net, j1, j2, drop=True)

Reroutes any connections to junctions in j2 to the given junction j1. Additionally drops the junctions j2, if drop=True (default).

Parameters
  • net (pandapipesNet) – pandapipes network

  • j1 (int) – junction into which to fuse the other junction(s)

  • j2 (Iterable or int) – junction(s) that shall be fused into junction 1

  • drop (boolean, default True) – if True, junction(s) j2 will be dropped after fusing all elements

Returns

net - the new pandapipes network

Return type

pandapipesNet

drop_junctions(net, junctions, drop_elements=True)

Drops specified junctions, their junction_geodata and by default drops all elements connected to them as well.

Parameters
  • net (pandapipesNet) – pandapipes network

  • junctions (Iterable) – junctions to drop

  • drop_elements (bool, default True) – if True, all elements connected to the junction will be dropped as well

Returns

No output.

drop_elements_at_junctions(net, junctions, node_elements=True, branch_elements=True)

drop elements connected to given junctions

Parameters
  • net (pandapipesNet) – pandapipes network

  • junctions (Iterable) – junctions from which to remove all elements

  • node_elements (bool, default True) – flag stating if node elements (such as sinks or sources) shall be dropped

  • branch_elements (bool, default True) – flag stating if branch elements (such as pipes or valves) shall be dropped

Returns

No output.

drop_pipes(net, pipes)

Deletes all pipes and their geodata in the given list of indices.

Parameters
  • net (pandapipesNet) – pandapipes network

  • pipes (Iterable) – pipes to be dropped from the network

Returns

No output.

pandapower toolbox functions

Some toolbox functions can be used directly from pandapower, for example:

clear_result_tables(net)

Clears all ‘res_…’ DataFrames in net.

compare_arrays(x, y)

Returns an array of bools whether array x is equal to array y. Strings are allowed in x or y. NaN values are assumed as equal.

dataframes_equal(x_df, y_df, tol=1e-14, ignore_index_order=True)

Returns a boolean whether the nets are equal or not.

drop_elements_simple(net, element, idx)

Drop elements and result entries from pandapower net.

get_element_index(net, element, name, exact_match=True)

Returns the element(s) identified by a name or regex and its element-table.

INPUT:

net - pandapower network

element - Table to get indices from (“line”, “bus”, “trafo” etc.)

name - Name of the element to match.

OPTIONAL:
exact_match (boolean, True) - True: Expects exactly one match, raises

UserWarning otherwise.

False: returns all indices containing the name

OUTPUT:

index - The indices of matching element(s).

get_element_indices(net, element, name, exact_match=True)

Returns a list of element(s) identified by a name or regex and its element-table -> Wrapper function of get_element_index()

INPUT:

net - pandapower network

element (str or iterable of strings) - Element table to get indices from (“line”, “bus”,

“trafo” etc.)

name (str or iterable of strings) - Name of the element to match.

OPTIONAL:
exact_match (boolean, True) - True: Expects exactly one match, raises

UserWarning otherwise.

False: returns all indices containing the name

OUTPUT:

index (list) - List of the indices of matching element(s).

EXAMPLE:

import pandapower.networks as pn import pandapower as pp net = pn.example_multivoltage() idx1 = pp.get_element_indices(net, “bus”, [“Bus HV%i” % i for i in range(1, 4)]) idx2 = pp.get_element_indices(net, [“bus”, “line”], “HV”, exact_match=False) idx3 = pp.get_element_indices(net, [“bus”, “line”], [“Bus HV3”, “MV Line6”])

ensure_iterability(var, len_=None)

Ensures iterability of a variable (and optional length).