コード例 #1
0
def test_remove_iov(testdata):
    model = Model(testdata / 'nonmem/pheno_block.mod')

    model_str = str(model)
    model_with_iov = re.sub(
        r'\$OMEGA 0.031128  ; IVV\n\$OMEGA 0.1',
        r'$OMEGA BLOCK(1)\n0.1\n$OMEGA BLOCK(1) SAME\n',
        model_str,
    )

    model.control_stream = NMTranParser().parse(model_with_iov)

    remove_iov(model)
    model.update_source()

    assert (str(model.get_pred_pk_record()) == '$PK\n'
            'CL=THETA(1)*EXP(ETA(1))\n'
            'V = THETA(2)\n'
            'S1 = ETA(2) + ETA(3) + V\n\n')

    rec_omega = ''.join(
        str(rec) for rec in model.control_stream.get_records('OMEGA'))

    assert (rec_omega == '$OMEGA 0.0309626  ; IVCL\n'
            '$OMEGA BLOCK(2)\n'
            '0.0309626\n'
            '0.0005 0.031128\n')

    model = Model(testdata / 'nonmem/pheno_block.mod')

    with pytest.warns(UserWarning):
        remove_iov(model)
コード例 #2
0
def test_iiv_on_ruv(pheno_path, epsilons, same_eta, err_ref, omega_ref):
    model = Model(pheno_path)

    model_str = str(model)
    model_more_eps = re.sub('IPRED=F\nIRES=DV-IPRED',
                            'IPRED=F+EPS(2)\nIRES=DV-IPRED+EPS(3)', model_str)
    model_sigma = re.sub(r'\$SIGMA 0.013241',
                         '$SIGMA 0.013241\n$SIGMA 0.1\n$SIGMA 0.1',
                         model_more_eps)
    model.control_stream = NMTranParser().parse(model_sigma)

    iiv_on_ruv(model, epsilons, same_eta)
    model.update_source()

    err_rec = model.control_stream.get_records('ERROR')[0]

    assert str(
        err_rec) == f'$ERROR\n' f'W=F\n' f'{err_ref}' f'IWRES=IRES/W\n\n'

    omega_rec = ''.join(
        str(rec) for rec in model.control_stream.get_records('OMEGA'))

    assert omega_rec == (f'$OMEGA DIAGONAL(2)\n'
                         f' 0.0309626  ;       IVCL\n'
                         f' 0.031128  ;        IVV\n\n'
                         f'{omega_ref}\n')