コード例 #1
0
 def test_directed_raises(self):
     with pytest.raises(nx.NetworkXNotImplemented):
         dir_G = nx.gn_graph(n=5)
         prev_cc = None
         edge = self.pick_add_edge(dir_G)
         insert = True
         nx.incremental_closeness_centrality(dir_G, edge, prev_cc, insert)
コード例 #2
0
 def test_wrong_size_prev_cc_raises(self):
     G = self.undirected_G.copy()
     edge = self.pick_add_edge(G)
     insert = True
     prev_cc = self.undirected_G_cc.copy()
     prev_cc.pop(0)
     nx.incremental_closeness_centrality(G, edge, prev_cc, insert)
コード例 #3
0
 def test_wrong_nodes_prev_cc_raises(self):
     G = self.undirected_G.copy()
     edge = self.pick_add_edge(G)
     insert = True
     prev_cc = self.undirected_G_cc.copy()
     num_nodes = len(prev_cc)
     prev_cc.pop(0)
     prev_cc[num_nodes] = 0.5
     nx.incremental_closeness_centrality(G, edge, prev_cc, insert)
コード例 #4
0
 def test_zero_centrality(self):
     G = nx.path_graph(3)
     prev_cc = nx.closeness_centrality(G)
     edge = self.pick_remove_edge(G)
     test_cc = nx.incremental_closeness_centrality(G, edge, prev_cc, insertion=False)
     G.remove_edges_from([edge])
     real_cc = nx.closeness_centrality(G)
     shared_items = set(test_cc.items()) & set(real_cc.items())
     assert len(shared_items) == len(real_cc)
     assert 0 in test_cc.values()
コード例 #5
0
    def test_incremental(self):
        # Check that incremental and regular give same output
        G = self.undirected_G.copy()
        prev_cc = None
        for i in range(5):
            if i % 2 == 0:
                # Remove an edge
                insert = False
                edge = self.pick_remove_edge(G)
            else:
                # Add an edge
                insert = True
                edge = self.pick_add_edge(G)

            # start = timeit.default_timer()
            test_cc = nx.incremental_closeness_centrality(
                G, edge, prev_cc, insert)
            # inc_elapsed = (timeit.default_timer() - start)
            # print(f"incremental time: {inc_elapsed}")

            if insert:
                G.add_edges_from([edge])
            else:
                G.remove_edges_from([edge])

            # start = timeit.default_timer()
            real_cc = nx.closeness_centrality(G)
            # reg_elapsed = (timeit.default_timer() - start)
            # print(f"regular time: {reg_elapsed}")
            # Example output:
            # incremental time: 0.208
            # regular time: 0.276
            # incremental time: 0.00683
            # regular time: 0.260
            # incremental time: 0.0224
            # regular time: 0.278
            # incremental time: 0.00804
            # regular time: 0.208
            # incremental time: 0.00947
            # regular time: 0.188

            assert set(test_cc.items()) == set(real_cc.items())

            prev_cc = test_cc