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

1from __future__ import annotations 

2 

3import networkx as nx 

4import pandas as pd 

5 

6 

7def calculate_distance_measures(network: nx.Graph) -> pd.DataFrame: 

8 """ 

9 Calculate distance measures for each node in network. 

10 

11 Measures include: 

12 

13 - Eccentricity = maximum distance from node to all other nodes 

14 

15 Parameters 

16 ---------- 

17 network 

18 The network object. 

19 

20 Returns 

21 ------- 

22 : 

23 Distance measures for each node in the network. 

24 """ 

25 

26 measures: list[dict[str, int | float]] = [] 

27 

28 for component in nx.connected_components(network): 

29 # Calculate eccentricity for connected subnetwork. 

30 eccentricity = nx.eccentricity(network.subgraph(component)) 

31 

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 ] 

40 

41 return pd.DataFrame(measures)