Exemple #1
0
def d1_test() -> ScoreHolder[bool]:
    def intern(x: float, y: float) -> bool:
        return isclose(x, y)

    gold1 = [{1, 2}, {3, 4}, {5, 6}]
    sys1 = [{1, 3}, {2, 4}, {5, 6}]
    gold2 = [{1, 2}, {3, 4}, {5, 6, 7, 8}]
    sys2 = [{1, 3}, {2, 4}, {5, 6, 7, 8}]
    return ScoreHolder.apply(evaluates(gold1, sys1), intern,
                             evaluates(gold2, sys2))
Exemple #2
0
def metric_1_symetry_test(gold: Partition,
                          sys: Partition) -> ScoreHolder[bool]:
    """
    evaluates whether score(gold, sys) = score(sys, gold)
    """
    def intern(x: float, y: float) -> bool:
        return isclose(x, y)

    return ScoreHolder.apply(evaluates(gold, sys), intern,
                             evaluates(sys, gold))
Exemple #3
0
def metric_4_triangle_test(a: Partition, b: Partition,
                           c: Partition) -> ScoreHolder[bool]:
    """
    evaluates whether the (similarity) triangle inequality is respected
    s(a,b) + s(b,c) <= s(b,b) + s(a,b)
    """
    def intern(x: float, y: float) -> bool:
        return isclose(x, y) or x < y

    return ScoreHolder.apply(
        evaluates(a, b) + evaluates(b, c), intern,
        evaluates(b, b) + evaluates(a, c))
Exemple #4
0
 def test_ScoreHolder_pow(self):
     assert ScoreHolder({}) == ScoreHolder({})**2
     assert ScoreHolder({'a': (1, )}) == ScoreHolder({'a': (1, )})**1
     assert ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) == ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     })**1
     assert ScoreHolder({
         'a': (1, ),
         'b': (4, 9)
     }) == ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     })**2
     assert ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) == ScoreHolder({
         'a': (1, ),
         'b': (4, 9)
     })**(1 / 2)
Exemple #5
0
 def test_ScoreHolder_truediv(self):
     assert ScoreHolder({}) == ScoreHolder({}) / 2
     assert ScoreHolder({'a': (1, )}) == ScoreHolder({'a': (1, )}) / 1
     assert ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) == ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) / 1
     assert ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) == ScoreHolder({
         'a': (2, ),
         'b': (4, 6)
     }) / 2
Exemple #6
0
 def test_ScoreHolder_mul(self):
     assert ScoreHolder({}) == ScoreHolder({}) * 2
     assert ScoreHolder({'a': (1, )}) == ScoreHolder({'a': (1, )}) * 1
     assert ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) == ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) * 1
     assert ScoreHolder({
         'a': (2, ),
         'b': (4, 6)
     }) == ScoreHolder({
         'a': (1, ),
         'b': (2, 3)
     }) * 2
Exemple #7
0
def metric_5_indiscernable(gold: Partition,
                           sys: Partition) -> ScoreHolder[bool]:
    def intern1(x: float, y: float):
        return isclose(x, y)

    def intern2(x: bool, y: bool):
        return x & y

    a = evaluates(gold, gold)
    b = evaluates(sys, sys)
    c = evaluates(gold, sys)

    x = ScoreHolder.apply(a, intern1, b)
    y = ScoreHolder.apply(a, intern1, c)
    z = ScoreHolder.apply(b, intern1, c)

    if gold == sys:
        return ScoreHolder.apply(ScoreHolder.apply(x, intern2, y), intern2, z)
    else:
        return ScoreHolder.apply(ScoreHolder.apply(x, intern2, y), intern2,
                                 z).apply_to_values(lambda k: not k)
Exemple #8
0
 def test_ScoreHolder_compare(self):
     assert ScoreHolder({}) == ScoreHolder({}).compare(ScoreHolder({}))
     assert ScoreHolder({'a': (Growth.STRICT_INCR, )}) == ScoreHolder({
         'a': (1, )
     }).compare(ScoreHolder({'a': (2, )}))
     assert ScoreHolder({'a': (Growth.STRICT_INCR, Growth.CONST, Growth.STRICT_DECR)}) == \
            ScoreHolder({'a': (1, 3, 5)}).compare(ScoreHolder({'a': (2, 3, 4)}))
     assert ScoreHolder({'a': (Growth.STRICT_INCR, Growth.CONST), 'b': (Growth.STRICT_DECR,)}) == \
            ScoreHolder({'a': (1, 3), 'b': (4,)}).compare(ScoreHolder({'a': (2, 3), 'b': (2,)}))
Exemple #9
0
 def test_ScoreHolder_avg_std(self):
     func = ScoreHolder.avg_std
     assert (ScoreHolder({}), ScoreHolder({})) == func(
         (ScoreHolder({}) for _ in range(1)))
     assert (ScoreHolder({}), ScoreHolder({})) == func(
         (ScoreHolder({}) for _ in range(2)))
     assert (ScoreHolder({'a': (1,)}), ScoreHolder({'a': (0,)})) == \
            func(iter([ScoreHolder({'a': (1,)}), ScoreHolder({'a': (1,)})]))
     assert (ScoreHolder({'a': (3,)}), ScoreHolder({'a': (1,)})) == \
            func(iter([ScoreHolder({'a': (2,)}), ScoreHolder({'a': (4,)})]))
     assert (ScoreHolder({'a': (3, 5)}), ScoreHolder({'a': (1, 1)})) == \
            func(iter([ScoreHolder({'a': (2, 4)}), ScoreHolder({'a': (4, 6)})]))
     assert (ScoreHolder({'a': (4, 5), 'b': (0, 1)}), ScoreHolder({'a': (2, 1), 'b': (1, 1)})) == \
            func(iter([ScoreHolder({'a': (2, 4), 'b': (-1, 2)}), ScoreHolder({'a': (6, 6), 'b': (1, 0)})]))
     assert (ScoreHolder({'a': (1,)}), ScoreHolder({'a': (0,)})) == \
            func(iter([ScoreHolder({'a': (1,)})]))
Exemple #10
0
 def test_ScoreHolder_sub(self):
     assert ScoreHolder({}) == ScoreHolder({}) - ScoreHolder({})
     assert ScoreHolder({'a': (-2,), 'b': (-3, -3)}) == \
            ScoreHolder({'a': (1,), 'b': (1, 2)}) - ScoreHolder({'a': (3,), 'b': (4, 5)})
     assert ScoreHolder({'a': tuple()}) == \
            ScoreHolder({'a': tuple()}) - ScoreHolder({'a': tuple()})
Exemple #11
0
 def test_ScoreHolder_add(self):
     assert ScoreHolder({}) == ScoreHolder({}) + ScoreHolder({})
     assert ScoreHolder({'a': (4,), 'b': (5, 7)}) == \
            ScoreHolder({'a': (1,), 'b': (1, 2)}) + ScoreHolder({'a': (3,), 'b': (4, 5)})
     assert ScoreHolder({'a': tuple()}) == \
            ScoreHolder({'a': tuple()}) + ScoreHolder({'a': tuple()})
Exemple #12
0
 def test_ScoreHolder_eq(self):
     assert ScoreHolder({}) == ScoreHolder({})
     assert ScoreHolder({}) != ScoreHolder({'a': (1, )})
     assert ScoreHolder({'a': (1, )}) == ScoreHolder({'a': (1, )})
     assert ScoreHolder({
         'a': (1, ),
         'b': (1, 2)
     }) == ScoreHolder({
         'a': (1, ),
         'b': (1, 2)
     })
     assert ScoreHolder({
         'a': (1, ),
         'b': (1, )
     }) != ScoreHolder({
         'a': (1, ),
         'b': (1, 2)
     })
     assert ScoreHolder({
         'a': (1, ),
         'b': (1, 2)
     }) != ScoreHolder({
         'a': (1, ),
         'b': (1, 3)
     })
     assert ScoreHolder({
         'a': (1, ),
         'b': (1, 2)
     }) != ScoreHolder({
         'b': (1, 2),
         'a': (1, )
     })
Exemple #13
0
def metric_3(gold: Partition, sys: Partition) -> ScoreHolder[bool]:
    def intern(x: float, y: float) -> bool:
        return isclose(x, y) or x > y

    return ScoreHolder.apply(evaluates(gold, gold), intern,
                             evaluates(gold, sys))
Exemple #14
0
def f_test(gold: Partition, sys: Partition) -> ScoreHolder[bool]:
    def intern(x: float) -> bool:
        return isclose(x, 0)

    return ScoreHolder.apply_to_values(evaluates(gold, sys), intern)