added new graph metrics
This commit is contained in:
@@ -2,7 +2,12 @@ import networkx as nx
|
||||
import pytest
|
||||
|
||||
from lang_main.analysis import graphs
|
||||
from lang_main.errors import EmptyEdgesError, EmptyGraphError, EdgePropertyNotContainedError
|
||||
from lang_main.errors import (
|
||||
EdgePropertyNotContainedError,
|
||||
EmptyEdgesError,
|
||||
EmptyGraphError,
|
||||
NodePropertyNotContainedError,
|
||||
)
|
||||
|
||||
TK_GRAPH_NAME = 'TEST_TOKEN_GRAPH'
|
||||
|
||||
@@ -231,6 +236,49 @@ def test_add_weighted_degree():
|
||||
assert graph_obj.nodes[3][property_name] == 6
|
||||
|
||||
|
||||
def test_add_betweenness_centrality():
|
||||
graph_obj = build_init_graph(token_graph=False)
|
||||
property_name = 'betweenness_centrality'
|
||||
graphs.add_betweenness_centrality(graph_obj, property_name=property_name)
|
||||
assert round(graph_obj.nodes[1][property_name], 4) == pytest.approx(0.1667)
|
||||
assert graph_obj.nodes[2][property_name] == 0
|
||||
assert graph_obj.nodes[3][property_name] == 0
|
||||
|
||||
|
||||
def test_add_importance_metric():
|
||||
graph_obj = build_init_graph(token_graph=False)
|
||||
property_name_WD = 'degree_weighted'
|
||||
graphs.add_weighted_degree(graph_obj, 'weight', property_name_WD)
|
||||
property_name_BC = 'betweenness_centrality'
|
||||
graphs.add_betweenness_centrality(graph_obj, property_name=property_name_BC)
|
||||
property_name = 'importance'
|
||||
graphs.add_importance_metric(
|
||||
graph_obj,
|
||||
property_name=property_name,
|
||||
property_name_weighted_degree=property_name_WD,
|
||||
property_name_betweenness=property_name_BC,
|
||||
)
|
||||
assert round(graph_obj.nodes[1][property_name], 4) == pytest.approx(2.3333)
|
||||
assert graph_obj.nodes[2][property_name] == 0
|
||||
assert graph_obj.nodes[3][property_name] == 0
|
||||
|
||||
with pytest.raises(NodePropertyNotContainedError):
|
||||
graphs.add_importance_metric(
|
||||
graph_obj,
|
||||
property_name=property_name,
|
||||
property_name_weighted_degree='prop_not_contained',
|
||||
property_name_betweenness=property_name_BC,
|
||||
)
|
||||
|
||||
with pytest.raises(NodePropertyNotContainedError):
|
||||
graphs.add_importance_metric(
|
||||
graph_obj,
|
||||
property_name=property_name,
|
||||
property_name_weighted_degree=property_name_WD,
|
||||
property_name_betweenness='prop_not_contained',
|
||||
)
|
||||
|
||||
|
||||
def test_static_graph_analysis():
|
||||
graph_obj = build_init_graph(token_graph=True)
|
||||
(graph_obj,) = graphs.static_graph_analysis(graph_obj) # type: ignore
|
||||
@@ -254,6 +302,20 @@ def test_pipe_add_graph_metrics():
|
||||
assert graph_collection[1].nodes[1][property_name] == 14
|
||||
assert graph_collection[1].nodes[2][property_name] == 10
|
||||
assert graph_collection[1].nodes[3][property_name] == 6
|
||||
property_name = 'betweenness_centrality'
|
||||
assert round(graph_collection[0].nodes[1][property_name], 4) == pytest.approx(0.1667)
|
||||
assert graph_collection[0].nodes[2][property_name] == 0
|
||||
assert graph_collection[0].nodes[3][property_name] == 0
|
||||
assert round(graph_collection[1].nodes[1][property_name], 4) == pytest.approx(0.1667)
|
||||
assert graph_collection[1].nodes[2][property_name] == 0
|
||||
assert graph_collection[1].nodes[3][property_name] == 0
|
||||
property_name = 'importance'
|
||||
assert round(graph_collection[0].nodes[1][property_name], 4) == pytest.approx(2.3333)
|
||||
assert graph_collection[0].nodes[2][property_name] == 0
|
||||
assert graph_collection[0].nodes[3][property_name] == 0
|
||||
assert round(graph_collection[1].nodes[1][property_name], 4) == pytest.approx(2.3333)
|
||||
assert graph_collection[1].nodes[2][property_name] == 0
|
||||
assert graph_collection[1].nodes[3][property_name] == 0
|
||||
|
||||
|
||||
def test_pipe_rescale_graph_edge_weights(tk_graph):
|
||||
|
||||
Reference in New Issue
Block a user