def test_extend(self): node = magicgraph.WeightedNode() self.assertEqual(node.weights, []) node.extend([1, 2, 3, 4], [1., 0.5, 0.25, 0.125]) self.assertEqual(node, [1, 2, 3, 4]) self.assertEqual(node.weights, [1., 0.5, 0.25, 0.125])
def test_append(self): node = magicgraph.WeightedNode() self.assertEqual(node.weights, []) node.append(1, 1.0) self.assertEqual(node, [1]) self.assertEqual(node.weight(0), 1.0)
def test_pop(self): node = magicgraph.WeightedNode() node.extend([1, 2, 3, 4], [1., 0.5, 0.25, 0.125]) dst_removed, weight_removed = node.pop(2) self.assertEqual(dst_removed, 3) self.assertEqual(weight_removed, 0.25) self.assertEqual(node, [1, 2, 4]) self.assertEqual(node.weights, [1., 0.5, 0.125])
def test_choice(self): node = magicgraph.WeightedNode() node.extend([1, 2, 3, 4], [1., 0.5, 0.25, 0.125]) rand = random.Random(0) times_chose = {x: 0 for x in node} for x in range(0, 100): times_chose[node.choice(rand)] += 1 self.assertLess(times_chose[2], times_chose[1]) self.assertLess(times_chose[3], times_chose[2]) self.assertLess(times_chose[4], times_chose[3])
def __init__(self, init_graph = None): super(WeightedDiGraph, self).__init__(node_class=WeightedNode) self.weighted_nodes = magicgraph.WeightedNode() if init_graph is not None: for node, adj_list in init_graph.adjacency_iter(): if hasattr(adj_list, 'weights'): self[node].extend(adj_list, adj_list.weights) else: self[node].extend(adj_list, [1. for adj_node in adj_list]) if hasattr(init_graph, 'weighted_nodes'): self.weighted_nodes.extend(init_graph.nodes(), init_graph.weighted_nodes.weights) else: self.weighted_nodes.extend(init_graph.nodes(), [1. for node in init_graph.nodes()]) self.visited = {node: False for node in self.nodes()}