Ejemplo n.º 1
0
def test_observed():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter()
        X = tp.Normal(mu, sigma)
    model.observed(X)
    assert(X in model._observed)
Ejemplo n.º 2
0
def test_observed_in_model():
    model = tp.Model()
    with model:
        mu = tp.Parameter(lower=-5, upper=5)
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
        model.observed(X)
Ejemplo n.º 3
0
def test_initialise_with_list():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
    model.observed(X)
    model.initialize([5, 2])
Ejemplo n.º 4
0
def test_assign_empty_dict():
    model = tp.Model()
    with model:
        mu = tp.Parameter(lower=-5, upper=5)
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
    model.observed(X)
    model.assign({})
Ejemplo n.º 5
0
def test_assign_wrong_container():
    model = tp.Model()
    with model:
        mu = tp.Parameter(lower=-5, upper=5)
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
    model.observed(X)
    model.assign([1, 2, 3])
Ejemplo n.º 6
0
def test_assign_in_before_observed():
    model = tp.Model()
    with model:
        mu = tp.Parameter(lower=-5, upper=5)
        sigma = tp.Parameter(lower=0)
        tp.Normal(mu, sigma)

    model.assign({mu: 1, sigma: 0})
Ejemplo n.º 7
0
def test_variable_independent():
    with tp.Model() as model:
        a = tp.Parameter()
        b = tp.Parameter()
    model.observed(b)
    model.initialize({
        a: 1,
    })
    model.fit([1, 2, 3])
Ejemplo n.º 8
0
def test_initalize_in_model_block():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter(lower=0)
        tp.Normal(mu, sigma)
        model.initialize({
            mu: 5,
            sigma: 2
        })
Ejemplo n.º 9
0
def test_initialise_before_observed():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter(lower=0)
        tp.Normal(mu, sigma)
    model.initialize({
        mu: 5,
        sigma: 2
    })
Ejemplo n.º 10
0
def test_initialise_with_too_few_variables():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
    model.observed(X)
    model.initialize({
        mu: 5
    })
Ejemplo n.º 11
0
def test_assign_in_model_block():
    model = tp.Model()
    with model:
        mu = tp.Parameter(lower=-5, upper=5)
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
        model.assign({mu: 1, sigma: 0})

    model.observed(X)
    model.initialize({mu: 42, sigma: 1})
Ejemplo n.º 12
0
def test_initialise_with_invalid_keys():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
    model.observed(X)
    model.initialize({
        'Parameter_1': 5,
        'Parameter_2': 2
    })
Ejemplo n.º 13
0
def test_fit():
    model = tp.Model()
    with model:
        mu = tp.Parameter(lower=-5, upper=5)
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)

    model.observed(X)
    model.initialize({mu: 2, sigma: 2})
    np.random.seed(0)
    data = np.random.normal(0, 1, 100)
    results = model.fit(data)
    assert results.success
Ejemplo n.º 14
0
def test_nll():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter()
        X = tp.Normal(mu, sigma)
    model.observed(X)

    xs = np.linspace(-5, 5, 100)
    model.initialize({
        mu: 0,
        sigma: 1
    })
    out1 = model.nll(xs)
    out2 = -sum(st.norm.logpdf(xs, 0, 1))
    assert_almost_equal(out1, out2, 10)
Ejemplo n.º 15
0
def test_assign():
    model = tp.Model()
    with model:
        mu = tp.Parameter(lower=-5, upper=5)
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)

    model.observed(X)
    feed = {mu: 42, sigma: 1}
    model.initialize(feed)
    model.assign({mu: 1, sigma: 0})
    model.assign({mu: -100, sigma: 0})
    assert model.state == {mu: -100, sigma: 0}
    model.assign(feed)
    assert model.state == feed
Ejemplo n.º 16
0
def test_distribution_creation_global_graph():
    # Distribution creation doesn't modify the global graph
    before = tf.get_default_graph().as_graph_def()
    with tp.Model():
        tp.Parameter()
    after = tf.get_default_graph().as_graph_def()
    assert before == after
Ejemplo n.º 17
0
def test_pdf():
    with tp.Model() as m:
        dummy = tp.Parameter()
        X = tp.Uniform(lower=dummy, upper=1)

    m.observed(X)
    m.initialize({dummy: -2})

    xs = np.linspace(-1, 1, 1)
    out1 = st.uniform.pdf(xs, -2, 3)
    out2 = m.pdf(xs)
    assert_array_almost_equal(out1, out2, 16)
Ejemplo n.º 18
0
def test_internal_graph_no_growth():
    # Calling assign or fit doesn't grow the execution graph
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)

    model.observed(X)
    model.initialize({
        mu: 1,
        sigma: 1,
    })

    before = model.session.graph_def
    model.assign({
        mu: 0,
        sigma: 2,
    })
    model.fit([1, 2, 3])
    after = model.session.graph_def

    assert before == after
Ejemplo n.º 19
0
def make_normal():
    mu = tp.Parameter(name='mu')
    sigma = tp.Parameter(name='sigma', lower=0)
    X = tp.Normal(mu, sigma)
    return mu, sigma, X
Ejemplo n.º 20
0
def test_distribution_creation_outside_with():
    with tp.Model():
        mu = tp.Parameter(name='mu')
        sigma = tp.Parameter(name='sigma', lower=0)
    tp.Normal(mu, sigma)
Ejemplo n.º 21
0
def test_scalar_creation_outside_with():
    tp.Parameter(name='mu')
Ejemplo n.º 22
0
def test_observed_erorr_on_non_distribution():
    with tp.Model() as model:
        mu = tp.Parameter()
        sigma = tp.Parameter()
        X = tp.Normal(mu, sigma)
    model.observed(X, int(42))
Ejemplo n.º 23
0
def test_prepare_without_observed():
    with tp.Model() as model:
        mu = tp.Parameter()
    model.initialize({mu: 42})
Ejemplo n.º 24
0
def test_observed_in_model_block():
    with tp.Model():
        mu = tp.Parameter()
        sigma = tp.Parameter(lower=0)
        X = tp.Normal(mu, sigma)
        tp.observed(X)