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)
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')