wntr.metrics.topographic module

The wntr.metrics.topographic module contains topographic metrics that are not available directly with NetworkX. Functions in this module operate on a NetworkX MultiDiGraph, which can be created by calling G = wn.get_graph()

Contents

terminal_nodes(G)

Nodes with degree 1

bridges(G)

Bridge links

central_point_dominance(G)

Central point dominance

spectral_gap(G)

Spectral gap

algebraic_connectivity(G)

Algebraic connectivity

critical_ratio_defrag(G)

Critical ratio of defragmentation

valve_segments(G, valve_layer)

Valve segmentation

valve_segment_attributes(valve_layer, ...[, ...])

Valve segment attributes include 1) the number of valves surrounding each valve and (optionally) the increase in segment demand if a given valve is removed and the increase in segment pipe length if a given valve is removed.

wntr.metrics.topographic.terminal_nodes(G)[source]

Nodes with degree 1

Parameters

G (networkx MultiDiGraph) – Graph

Returns

List of terminal nodes

wntr.metrics.topographic.bridges(G)[source]

Bridge links

Parameters

G (networkx MultiDiGraph) – Graph

Returns

List of links that are bridges

wntr.metrics.topographic.central_point_dominance(G)[source]

Central point dominance

Parameters

G (networkx MultiDiGraph) – Graph

Returns

Central point dominance (float)

wntr.metrics.topographic.spectral_gap(G)[source]

Spectral gap

Difference in the first and second eigenvalue of the adjacency matrix

Parameters

G (networkx MultiDiGraph) – Graph

Returns

Spectral gap (float)

wntr.metrics.topographic.algebraic_connectivity(G)[source]

Algebraic connectivity

Second smallest eigenvalue of the normalized Laplacian matrix of a network

Parameters

G (networkx MultiDiGraph) – Graph

Returns

Algebraic connectivity (float)

wntr.metrics.topographic.critical_ratio_defrag(G)[source]

Critical ratio of defragmentation

Parameters

G (networkx MultiDiGraph) – Graph

Returns

Critical ratio of defragmentation (float)

wntr.metrics.topographic.valve_segments(G, valve_layer)[source]

Valve segmentation

Parameters
  • G (networkx MultiDiGraph) – Graph

  • valve_layer (pandas DataFrame) – Valve layer, defined by node and link pairs (for example, valve 0 is on link A and protects node B). The valve_layer DataFrame is indexed by valve number, with columns named ‘node’ and ‘link’.

Returns

  • node_segments (pandas Series) – Segment number for each node, indexed by node name

  • link_segments (pandas Series) – Segment number for each link, indexed by link name

  • segment_size (pandas DataFrame) – Number of nodes and links in each segment. The DataFrame is indexed by segment number, with columns named ‘node’ and ‘link’.

wntr.metrics.topographic.valve_segment_attributes(valve_layer, node_segments, link_segments, demand=None, length=None)[source]

Valve segment attributes include 1) the number of valves surrounding each valve and (optionally) the increase in segment demand if a given valve is removed and the increase in segment pipe length if a given valve is removed.

The increase in segment demand is expressed as a fraction of the max segment demand associated with that valve. Likewise, the increase in segment pipe length is expressed as a fraction of the max segment pipe length associated with that valve.

Parameters
  • valve_layer (pandas DataFrame) – Valve layer, defined by node and link pairs (for example, valve 0 is on link A and protects node B). The valve_layer DataFrame is indexed by valve number, with columns named ‘node’ and ‘link’.

  • node_segments (pandas Series) – Segment number for each node, indexed by node name. node_segments can be computed using wntr.metrics.topographic.valve_segments

  • link_segments (pandas Series) – Segment number for each link, indexed by link name. link_segments can be computed using wntr.metrics.topographic.valve_segments

  • demands (pandas Series, optional) – Node demand, the average expected node demand can be computed using wntr.metrics.average_expected_demand(wn). Demand from simulation results can also be used.

  • lengths (pandas Series, optional) – A list of ‘length’ attributes for each link in the network. The output from wn.query_link_attribute(‘length’)

Returns

pandas DataFrame – Valve segement attributes, indexed by valve number, that contains:

  • num_surround: number of valves surrounding each valve

  • demand_increase: increase in segment demand if a given valve is removed, expressed as a fraction

  • length_increase: increase in segment pipe length if a given valve is removed, expressed as a fraction