Ejemplo n.º 1
0
def check_ss_io(name):
    check_cm(name)
    cm = ComponentModel(name)
    cm.realize_hp()
    assert_equal(ComponentModel(name, ss=cm.dump_ss()).dump_ss(), cm.dump_ss())
    cm.add_data(cm.sample_data())
    assert_equal(ComponentModel(name, ss=cm.dump_ss()).dump_ss(), cm.dump_ss())
Ejemplo n.º 2
0
def check_ss_io(name):
    check_cm(name)
    cm = ComponentModel(name)
    cm.realize_hp()
    assert_equal(ComponentModel(name, ss=cm.dump_ss()).dump_ss(), cm.dump_ss())
    cm.add_data(cm.sample_data())
    assert_equal(ComponentModel(name, ss=cm.dump_ss()).dump_ss(), cm.dump_ss())
Ejemplo n.º 3
0
def check_ss(a, b):
    check_cm(a)
    check_cm(b)
    a = ComponentModel(a)
    a.realize_hp()
    b = ComponentModel(b, hp=a.dump_hp())
    dps = [a.sample_data() for _ in range(DPS)]
    assert_equal(a.dump_ss(), b.dump_ss())
    for y in dps:
        a.add_data(y)
        b.add_data(y)
        assert_close(a.dump_ss(), b.dump_ss())
    for y in dps:
        a.remove_data(y)
        b.remove_data(y)
        assert_close(a.dump_ss(), b.dump_ss())
Ejemplo n.º 4
0
def add_remove_add(name, raw_hps, raw_ss0=None):
    '''
    This tests add_data, remove_data, pred_prob, data_prob
    '''

    DATA_COUNT = 20

    for raw_hp in raw_hps:

        cm = ComponentModel(name, hp=raw_hp, ss=raw_ss0)
        cm.realize_hp()
        data = []
        score = 0

        for _ in range(DATA_COUNT):
            dp = cm.sample_data()
            data.append(dp)
            score += cm.pred_prob(dp)
            cm.add_data(dp)

        cm_all = ComponentModel(name, ss=cm.dump_ss())
        assert_close(
                score,
                cm.data_prob(),
                err_msg='p(x1,...,xn) != p(x1) p(x2|x1) p(xn|...)')

        random.shuffle(data)

        for dp in data:
            cm.remove_data(dp)

        cm0 = ComponentModel(name, ss=raw_ss0)
        assert_close(cm.ss, cm0.ss, err_msg='ss + data - data != ss')

        random.shuffle(data)

        for dp in data:
            cm.add_data(dp)

        assert_close(cm.ss, cm_all.ss, err_msg='ss - data + data != ss')
Ejemplo n.º 5
0
def add_remove_add(name, raw_hps, raw_ss0=None):
    '''
    This tests add_data, remove_data, pred_prob, data_prob
    '''

    DATA_COUNT = 20

    for raw_hp in raw_hps:

        cm = ComponentModel(name, hp=raw_hp, ss=raw_ss0)
        cm.realize_hp()
        data = []
        score = 0

        for _ in range(DATA_COUNT):
            dp = cm.sample_data()
            data.append(dp)
            score += cm.pred_prob(dp)
            cm.add_data(dp)

        cm_all = ComponentModel(name, ss=cm.dump_ss())
        assert_close(score,
                     cm.data_prob(),
                     err_msg='p(x1,...,xn) != p(x1) p(x2|x1) p(xn|...)')

        random.shuffle(data)

        for dp in data:
            cm.remove_data(dp)

        cm0 = ComponentModel(name, ss=raw_ss0)
        assert_close(cm.ss, cm0.ss, err_msg='ss + data - data != ss')

        random.shuffle(data)

        for dp in data:
            cm.add_data(dp)

        assert_close(cm.ss, cm_all.ss, err_msg='ss - data + data != ss')