def test_get_hypertree_from_predecessors(): H = DirectedHypergraph() H.read("tests/data/basic_directed_hypergraph.txt") # Test with a weighting Pv, W, valid_ordering = \ directed_paths.shortest_b_tree( H, 's', directed_paths.sum_function, True) sub_H = directed_paths.get_hypertree_from_predecessors(H, Pv, 's', W) sub_H._check_consistency() assert sub_H.get_node_set() == set(['s', 'x', 'y', 'z', 't', 'u']) assert sub_H.get_node_attribute('s', 'weight') == 0 assert sub_H.get_node_attribute('x', 'weight') == 1 assert sub_H.get_node_attribute('y', 'weight') == 2 assert sub_H.get_node_attribute('z', 'weight') == 2 assert sub_H.get_node_attribute('u', 'weight') == 8 assert sub_H.get_node_attribute('t', 'weight') == 8 assert Pv['s'] == None assert Pv['x'] == "e1" assert Pv['y'] == "e2" assert Pv['z'] == "e3" assert (Pv['u'], Pv['t']) == ("e4", "e4") assert (Pv['a'], Pv['b']) == (None, None) assert len(sub_H.get_hyperedge_id_set()) == 4 assert sub_H.has_hyperedge(['s'], ['x']) assert sub_H.has_hyperedge(['s'], ['x', 'y']) assert sub_H.has_hyperedge(['s'], ['z']) assert sub_H.has_hyperedge(['x', 'y', 'z'], ['u', 't']) # Test without a weighting Pv, W = directed_paths.shortest_f_tree(H, 't', directed_paths.sum_function) sub_H = directed_paths.get_hypertree_from_predecessors(H, Pv, 't') sub_H._check_consistency() assert sub_H.get_node_set() == set(['t', 's', 'x']) assert len(sub_H.get_hyperedge_id_set()) == 2 assert sub_H.has_hyperedge(['x'], ['s']) assert sub_H.has_hyperedge(['s'], ['t']) # Try an invalid hypergraph try: directed_paths.shortest_b_tree('s', 't') assert False except TypeError: pass except BaseException as e: assert False, e
def test_get_hypertree_from_predecessors(): H = DirectedHypergraph() H.read("tests/data/basic_directed_hypergraph.txt") # Test with a weighting Pv, W, valid_ordering = \ directed_paths.shortest_b_tree( H, 's', directed_paths.sum_function, True) sub_H = directed_paths.get_hypertree_from_predecessors(H, Pv, 's', W) sub_H._check_consistency() assert sub_H.get_node_set() == set(['s', 'x', 'y', 'z', 't', 'u']) assert sub_H.get_node_attribute('s', 'weight') == 0 assert sub_H.get_node_attribute('x', 'weight') == 1 assert sub_H.get_node_attribute('y', 'weight') == 2 assert sub_H.get_node_attribute('z', 'weight') == 2 assert sub_H.get_node_attribute('u', 'weight') == 8 assert sub_H.get_node_attribute('t', 'weight') == 8 assert Pv['s'] == None assert Pv['x'] == "e1" assert Pv['y'] == "e2" assert Pv['z'] == "e3" assert (Pv['u'], Pv['t']) == ("e4", "e4") assert (Pv['a'], Pv['b']) == (None, None) assert len(sub_H.get_hyperedge_id_set()) == 4 assert sub_H.has_hyperedge(['s'], ['x']) assert sub_H.has_hyperedge(['s'], ['x', 'y']) assert sub_H.has_hyperedge(['s'], ['z']) assert sub_H.has_hyperedge(['x', 'y', 'z'], ['u', 't']) # Test without a weighting Pv, W = directed_paths.shortest_f_tree(H, 't', directed_paths.sum_function) sub_H = directed_paths.get_hypertree_from_predecessors(H, Pv, 't') sub_H._check_consistency() assert sub_H.get_node_set() == set(['t', 's', 'x']) assert len(sub_H.get_hyperedge_id_set()) == 2 assert sub_H.has_hyperedge(['x'], ['s']) assert sub_H.has_hyperedge(['s'], ['t']) # Try an invalid hypergraph try: directed_paths.shortest_b_tree('s', 't') assert False except TypeError: pass except BaseException as e: assert False, e
def test_shortest_sum_f_tree(): H = DirectedHypergraph() H.read("tests/data/basic_directed_hypergraph.txt") Pv, W = directed_paths.shortest_f_tree(H, 't', directed_paths.sum_function) assert Pv['s'] == 'e8' assert Pv['x'] == 'e6' assert (Pv['y'], Pv['z'], Pv['t'], Pv['u'], Pv['a'], Pv['b']) == \ (None, None, None, None, None, None) assert W['t'] == 0 assert W['s'] == 100 assert W['x'] == 101 assert (W['y'], W['z'], W['u'], W['a'], W['b']) == \ (float('inf'), float('inf'), float('inf'), float('inf'), float('inf'))
def test_shortest_sum_f_tree(): H = DirectedHypergraph() H.read("tests/data/basic_directed_hypergraph.txt") Pv, W = directed_paths.shortest_f_tree(H, 't', directed_paths.sum_function) assert Pv['s'] == 'e8' assert Pv['x'] == 'e6' assert (Pv['y'], Pv['z'], Pv['t'], Pv['u'], Pv['a'], Pv['b']) == \ (None, None, None, None, None, None) assert W['t'] == 0 assert W['s'] == 100 assert W['x'] == 101 assert (W['y'], W['z'], W['u'], W['a'], W['b']) == \ (float('inf'), float('inf'), float('inf'), float('inf'), float('inf'))