def test_isolates(self): """Should return None if the structure model only contains isolates""" nodes = [1, 3, 5, 2, 7] sm = StructureModel() sm.add_nodes_from(nodes) assert sm.get_largest_subgraph() is None
def test_get_largest_subgraph(self, test_input, expected): """Should be able to return the largest subgraph""" sm = StructureModel() sm.add_edges_from(test_input) largest_subgraph = sm.get_largest_subgraph() expected_graph = StructureModel() expected_graph.add_edges_from(expected) assert set(largest_subgraph.nodes) == set(expected_graph.nodes) assert set(largest_subgraph.edges) == set(expected_graph.edges)
def test_more_than_one_largest(self): """Return the first largest when there are more than one largest subgraph""" edges = [(0, 1), (1, 2), (3, 4), (3, 5)] sm = StructureModel() sm.add_edges_from(edges) largest_subgraph = sm.get_largest_subgraph() expected_edges = [(0, 1), (1, 2)] expected_graph = StructureModel() expected_graph.add_edges_from(expected_edges) assert set(largest_subgraph.nodes) == set(expected_graph.nodes) assert set(largest_subgraph.edges) == set(expected_graph.edges)
def test_different_origins_and_weights(self): """The largest subgraph returned should still have the edge data preserved from the original graph""" sm = StructureModel() sm.add_weighted_edges_from([(1, 2, 2.0)], origin="unknown") sm.add_weighted_edges_from([(1, 3, 1.0)], origin="learned") sm.add_weighted_edges_from([(5, 6, 0.7)], origin="expert") largest_subgraph = sm.get_largest_subgraph() assert set(largest_subgraph.edges.data("origin")) == { (1, 2, "unknown"), (1, 3, "learned"), } assert set(largest_subgraph.edges.data("weight")) == {(1, 2, 2.0), (1, 3, 1.0)}
def test_isolates_nodes_and_edges(self): """Should be able to return the largest subgraph""" edges = [(0, 1), (1, 2), (1, 3), (5, 6)] isolated_nodes = [7, 8, 9] sm = StructureModel() sm.add_edges_from(edges) sm.add_nodes_from(isolated_nodes) largest_subgraph = sm.get_largest_subgraph() expected_edges = [(0, 1), (1, 2), (1, 3)] expected_graph = StructureModel() expected_graph.add_edges_from(expected_edges) assert set(largest_subgraph.nodes) == set(expected_graph.nodes) assert set(largest_subgraph.edges) == set(expected_graph.edges)
def test_empty(self): """Should return None if the structure model is empty""" sm = StructureModel() assert sm.get_largest_subgraph() is None