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
Exemple #2
0
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'))
Exemple #4
0
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'))