Ejemplo n.º 1
0
def test_path1_inc():
    mapdb, path1, path2, path_sol = setup_map()

    matcher = SimpleMatcher(mapdb,
                            max_dist_init=1,
                            in_prob_norm=0.5,
                            obs_noise=0.5,
                            non_emitting_states=True,
                            only_edges=False,
                            max_lattice_width=1)

    print('## PHASE 1 ##')
    matcher.match(path1, unique=True)
    path_pred = matcher.path_pred_onlynodes
    if directory:
        from leuvenmapmatching import visualization as mmviz
        matcher.print_lattice_stats()
        matcher.print_lattice()
        with (directory / 'lattice_path1_inc1.gv').open('w') as ofile:
            matcher.lattice_dot(file=ofile, precision=2, render=True)
        mmviz.plot_map(mapdb,
                       matcher=matcher,
                       show_labels=True,
                       show_matching=True,
                       show_graph=True,
                       filename=str(directory /
                                    "test_nonemitting_test_path1_inc1.png"))

    print('## PHASE 2 ##')
    matcher.increase_max_lattice_width(3, unique=True)
    path_pred = matcher.path_pred_onlynodes
    if directory:
        from leuvenmapmatching import visualization as mmviz
        matcher.print_lattice_stats()
        matcher.print_lattice()
        with (directory / 'lattice_path1_inc2.gv').open('w') as ofile:
            matcher.lattice_dot(file=ofile, precision=2, render=True)
        mmviz.plot_map(mapdb,
                       matcher=matcher,
                       show_labels=True,
                       show_matching=True,
                       show_graph=True,
                       filename=str(directory /
                                    "test_nonemitting_test_path1_inc2.png"))

    assert path_pred == path_sol, f"Nodes not equal:\n{path_pred}\n{path_sol}"
Ejemplo n.º 2
0
def test_path2_inc():
    path = [(0.8, 0.7), (0.9, 0.7), (1.1, 1.0), (1.2, 1.5), (1.2, 1.6),
            (1.1, 2.0), (1.1, 2.3), (1.3, 2.9), (1.2, 3.1), (1.5, 3.2),
            (1.8, 3.5), (2.0, 3.7), (2.1, 3.3), (2.4, 3.2), (2.6, 3.1),
            (2.9, 3.1), (3.0, 3.2), (3.1, 3.8), (3.0, 4.0), (3.1, 4.3),
            (3.1, 4.6), (3.0, 4.9)]
    # path_sol = ['A', ('A', 'B'), 'B', ('B', 'D'), 'D', ('D', 'E'), 'E', ('E', 'F')]
    path_sol_nodes = ['A', 'B', 'D', 'E', 'F']
    mapdb = InMemMap("map",
                     graph={
                         "A": ((1, 1), ["B", "C", "X"]),
                         "B": ((1, 3), ["A", "C", "D", "K"]),
                         "C": ((2, 2), ["A", "B", "D", "E", "X", "Y"]),
                         "D": ((2, 4), ["B", "C", "F", "E", "K", "L"]),
                         "E": ((3, 3), ["C", "D", "F", "Y"]),
                         "F": ((3, 5), ["D", "E", "L"]),
                         "X": ((2, 0), ["A", "C", "Y"]),
                         "Y": ((3, 1), ["X", "C", "E"]),
                         "K": ((1, 5), ["B", "D", "L"]),
                         "L": ((2, 6), ["K", "D", "F"])
                     },
                     use_latlon=False)

    ## Phase 1
    print('=== PHASE 1 ===')
    matcher = SimpleMatcher(mapdb,
                            max_dist=None,
                            min_prob_norm=0.001,
                            non_emitting_states=False,
                            only_edges=False,
                            max_lattice_width=1)
    path_pred, _ = matcher.match(path, unique=True)
    if directory:
        matcher.print_lattice_stats()
        matcher.print_lattice()
        from leuvenmapmatching import visualization as mmviz
        with (directory / 'test_path2_inc_1.gv').open('w') as ofile:
            matcher.lattice_dot(file=ofile, precision=2, render=True)
        mmviz.plot_map(mapdb,
                       matcher=matcher,
                       show_labels=True,
                       show_matching=True,
                       show_lattice=True,
                       show_graph=True,
                       filename=str(directory / "test_path2_inc_1.png"))

    ## Next phases
    for phase_nb, phase_width in enumerate([2, 3]):
        print(f'=== PHASE {phase_nb + 2} ===')
        path_pred, _ = matcher.increase_max_lattice_width(phase_width,
                                                          unique=True)
        if directory:
            matcher.print_lattice_stats()
            matcher.print_lattice()
            from leuvenmapmatching import visualization as mmviz
            with (directory /
                  f'test_path2_inc_{phase_nb + 2}.gv').open('w') as ofile:
                matcher.lattice_dot(file=ofile, precision=2, render=True)
            mmviz.plot_map(mapdb,
                           matcher=matcher,
                           show_labels=True,
                           show_matching=True,
                           show_lattice=True,
                           show_graph=True,
                           filename=str(directory /
                                        f"test_path2_inc_{phase_nb + 2}.png"))

    # assert path_pred == path_sol, "Nodes not equal:\n{}\n{}".format(path_pred, path_sol)
    nodes_pred = matcher.path_pred_onlynodes
    assert nodes_pred == path_sol_nodes, f"Nodes not equal:\n{nodes_pred}\n{path_sol_nodes}"