示例#1
0
def test_save_load(tmpdir):
    path = os.path.join(tmpdir, "dissimilarity_matrix.npy")
    matrix = np.asarray([[1, 0], [0.5, 0.25]], dtype=np.float32)
    reference = cf.DissimilarityMatrix(matrix)
    reference.save(path)
    loaded = cf.DissimilarityMatrix.load(path)
    assert np.all(matrix == loaded.get_dissimilarity_matrix())
示例#2
0
def to_prec_fit(args):
    matrix = cc.DissimilarityMatrix(args[4])
    return (
        args[0],
        args[1],
        args[2],
        args[3],
        matrix.calc_precision(),
        matrix.calc_fitness(),
    )
示例#3
0
def test_calc_fitness_precision_1():
    matrix = cf.DissimilarityMatrix(
        np.asarray([
            # dissimilarities are maximal for all model/real trace pairs
            # thus, precision and fitness is minimal
            [1.0, 1.0],
            [1.0, 1.0],
        ]))
    assert matrix.calc_precision() == pytest.approx(0.0)
    assert matrix.calc_fitness() == pytest.approx(0.0)
示例#4
0
def test_calc_fitness_precision_5():
    # this example just checks for floating point semantics
    # all dissimilarities are high, thus precision and fitness is low
    matrix = cf.DissimilarityMatrix(
        np.asarray([
            [1 - 1e-9, 1 - 1e-9],
            [1 - 1e-9, 1 - 1e-9],
        ]))
    assert matrix.calc_precision() == pytest.approx(1e-9)
    assert matrix.calc_fitness() == pytest.approx(1e-9)
示例#5
0
def test_calc_fitness_precision_4():
    matrix = cf.DissimilarityMatrix(
        np.asarray([
            # each model trace (row) is equal to a real trace (column)
            # but the model does not cover all real traces
            # thus, precision is maximal but fitness is low
            [1.0, 0.0],
            [1.0, 0.0],
        ]))
    assert matrix.calc_precision() == pytest.approx(1.0)
    assert matrix.calc_fitness() == pytest.approx(0.5)
示例#6
0
def test_calc_fitness_precision_3():
    matrix = cf.DissimilarityMatrix(
        np.asarray([
            # each real trace (column) can be represented by the model (rows),
            # but the model allows for extra traces not covered by the real log
            # thus, fitness is maximal but precision is low
            [0.0, 0.0],
            [1.0, 1.0],
        ]))
    assert matrix.calc_precision() == pytest.approx(0.5)
    assert matrix.calc_fitness() == pytest.approx(1.0)