Пример #1
0
def test_add_random_variables(pheno_path, rv_new, buf_new):
    model = Model(pheno_path)
    rvs = model.random_variables
    pset = model.parameters

    eta = RandomVariable.normal('eta_new', 'iiv', 0, S(rv_new.name))

    rvs.append(eta)
    pset.append(rv_new)

    model.random_variables = rvs
    model.parameters = pset

    model.update_source()

    rec_ref = (
        f'$OMEGA DIAGONAL(2)\n'
        f' 0.0309626  ;       IVCL\n'
        f' 0.031128  ;        IVV\n\n'
        f'{buf_new} ; omega\n'
    )

    rec_mod = ''
    for rec in model.control_stream.get_records('OMEGA'):
        rec_mod += str(rec)

    assert rec_mod == rec_ref

    rv = model.random_variables['eta_new']

    assert rv.sympy_rv.pspace.distribution.mean == 0
    assert (rv.sympy_rv.pspace.distribution.std ** 2).name == 'omega'
Пример #2
0
def test_add_random_variables_and_statements(pheno_path):
    model = Model(pheno_path)

    rvs = model.random_variables
    pset = model.parameters

    eta = RandomVariable.normal('ETA_NEW', 'iiv', 0, S('omega'))
    rvs.append(eta)
    pset.append(Parameter('omega', 0.1))

    eps = RandomVariable.normal('EPS_NEW', 'ruv', 0, S('sigma'))
    rvs.append(eps)
    pset.append(Parameter('sigma', 0.1))

    model.random_variables = rvs
    model.parameters = pset

    sset = model.get_pred_pk_record().statements

    statement_new = Assignment(S('X'), 1 + S(eps.name) + S(eta.name))
    sset.append(statement_new)
    model.get_pred_pk_record().statements = sset

    model.update_source()

    assert str(model.get_pred_pk_record()).endswith('X = 1 + ETA(3) + EPS(2)\n\n')
Пример #3
0
def test_add_random_variables(pheno_path, rv_new, buf_new):
    model = Model(pheno_path)
    rvs = model.random_variables
    pset = model.parameters

    eta = sympy.stats.Normal('eta_new', 0, sympy.sqrt(S(rv_new.name)))
    eta.variability_level = VariabilityLevel.IIV

    rvs.add(eta)
    pset.add(rv_new)

    model.random_variables = rvs
    model.parameters = pset

    model.update_source()

    rec_ref = (
        f'$OMEGA DIAGONAL(2)\n'
        f' 0.0309626  ;       IVCL\n'
        f' 0.031128  ;        IVV\n\n'
        f'{buf_new} ; omega\n'
    )

    rec_mod = ''
    for rec in model.control_stream.get_records('OMEGA'):
        rec_mod += str(rec)

    assert rec_mod == rec_ref

    rv = model.random_variables['eta_new']

    assert rv.pspace.distribution.mean == 0
    assert rv.pspace.distribution.std ** 2 == rv_new.symbol