Coverage for src/abm_colony_collection/calculate_distance_measures.py: 100%
9 statements
« prev ^ index » next coverage.py v7.1.0, created at 2025-09-15 20:34 +0000
« prev ^ index » next coverage.py v7.1.0, created at 2025-09-15 20:34 +0000
1from __future__ import annotations
3import networkx as nx
4import pandas as pd
7def calculate_distance_measures(network: nx.Graph) -> pd.DataFrame:
8 """
9 Calculate distance measures for each node in network.
11 Measures include:
13 - Eccentricity = maximum distance from node to all other nodes
15 Parameters
16 ----------
17 network
18 The network object.
20 Returns
21 -------
22 :
23 Distance measures for each node in the network.
24 """
26 measures: list[dict[str, int | float]] = []
28 for component in nx.connected_components(network):
29 # Calculate eccentricity for connected subnetwork.
30 eccentricity = nx.eccentricity(network.subgraph(component))
32 # Extract distance measures for each node in subnetwork.
33 measures = measures + [
34 {
35 "ID": node,
36 "ECCENTRICITY": eccentricity[node],
37 }
38 for node in component
39 ]
41 return pd.DataFrame(measures)