Exemplo n.º 1
0
def test_simple_vector_subset(simple_modelspec_with_phi):
    packer, unpacker, _ = simple_vector(simple_modelspec_with_phi)
    phi = packer(simple_modelspec_with_phi)
    assert len(phi) == 38

    subset = [0, 2]
    packer, unpacker, _ = simple_vector(simple_modelspec_with_phi, subset)
    phi = packer(simple_modelspec_with_phi)
    assert len(phi) == 8

    vector = np.arange(8)
    new_modelspec = unpacker(vector)

    assert new_modelspec[0]['phi']['mean'].tolist() == [0, 1]
    assert new_modelspec[0]['phi']['sd'].tolist() == [2, 3]
    dexp_expected = {
        'amplitude': 4,
        'base': 5,
        'kappa': 6,
        'shift': 7
    }
    assert new_modelspec[2]['phi'] == dexp_expected

    assert new_modelspec[1]['phi']['coefficients'].tolist() == \
        new_modelspec[1]['phi']['coefficients'].tolist()

    # Check that identity is the same
    assert id(new_modelspec[1]['phi']['coefficients']) == \
        id(new_modelspec[1]['phi']['coefficients'])
    assert id(new_modelspec[0]['phi']) == id(new_modelspec[0]['phi'])
    assert id(simple_modelspec_with_phi) == id(new_modelspec)
Exemplo n.º 2
0
def test_simple_vector_bounds_subset(simple_modelspec_with_phi):
    packer, unpacker, bounds = simple_vector(simple_modelspec_with_phi)
    phi = packer(simple_modelspec_with_phi)
    lb, ub = bounds(simple_modelspec_with_phi)
    assert np.all(np.equal(lb, -np.inf))
    assert np.all(np.equal(ub, np.inf))
    assert len(lb) == 38
    assert len(ub) == len(lb)
    assert len(ub) == len(phi)

    subset = [0, 2]
    packer, unpacker, bounds = simple_vector(simple_modelspec_with_phi, subset)
    phi = packer(simple_modelspec_with_phi)
    lb, ub = bounds(simple_modelspec_with_phi)
    phi = np.array(phi)
    lb = np.array(lb)
    ub = np.array(ub)
    assert np.all(np.equal(lb, -np.inf))
    assert np.all(np.equal(ub, np.inf))
    assert len(lb) == 8
    assert len(ub) == len(lb)
    assert len(ub) == len(phi)

    simple_modelspec_with_phi[0].setdefault('bounds', {})['mean'] = (None, 1)
    lb, ub = bounds(simple_modelspec_with_phi)
    assert np.all(np.equal(lb, -np.inf))
    assert np.all(np.equal(ub[:2], 1))
    assert np.all(np.equal(ub[2:], np.inf))

    simple_modelspec_with_phi[0].setdefault('bounds', {})['mean'] = (-1, [2, 3])
    lb, ub = bounds(simple_modelspec_with_phi)
    assert np.all(np.equal(lb[:2], -1))
    assert np.all(np.equal(lb[2:], -np.inf))
    assert np.all(np.equal(ub[:2], [2, 3]))
    assert np.all(np.equal(ub[2:], np.inf))
Exemplo n.º 3
0
def test_partial_definition(bounds_modelspec):
    packer, unpacker, bounds = simple_vector(bounds_modelspec)
    bounds_modelspec[0]['bounds'] = {
        'mean': (None, 10)
    }
    # Don't need to assert anything here, just shouldn't get an error
    # for leaving 'sd' bounds undefined.
    x = bounds(bounds_modelspec)
Exemplo n.º 4
0
def test_scalar_bounds(bounds_modelspec):
    bounds_modelspec[0]['bounds'] = {
        'mean': (None, [1.1, 1.2]),
        'sd': ([0.0, 0.7], 6)
    }
    bounds_modelspec[1]['bounds'] = {
        'kappa': (-1, None),
        'base': (None, None),
        'amplitude': (0, 7),
        'shift': (None, 5)
    }

    packer, unpacker, bounds = simple_vector(bounds_modelspec)
    lb, ub = bounds(bounds_modelspec)
    lb_expected = [-np.inf, -np.inf, 0, 0.7, 0, -np.inf, -1, -np.inf]
    ub_expected = [1.1, 1.2, 6, 6, 7, np.inf, np.inf, 5]
    assert np.all(np.equal(lb, lb_expected))
    assert np.all(np.equal(ub, ub_expected))
Exemplo n.º 5
0
def test_benchmark_packer_unpacker(benchmark, simple_modelspec_with_phi):
    packer, unpacker, _ = simple_vector(simple_modelspec_with_phi)
    vector = np.arange(38)
    benchmark(unpacker, vector)