def test_add_parameters_and_statements(pheno_path, param_new, statement_new, buf_new): model = Model(pheno_path) pset = model.parameters pset.append(param_new) model.parameters = pset sset = model.statements # Insert new statement before ODE system. new_sset = ModelStatements() for s in sset: if isinstance(s, ODESystem): new_sset.append(statement_new) new_sset.append(s) model.statements = new_sset model.update_source() rec = ( f'$PK\n' f'IF(AMT.GT.0) BTIME=TIME\n' f'TAD=TIME-BTIME\n' f'TVCL=THETA(1)*WGT\n' f'TVV=THETA(2)*WGT\n' f'IF(APGR.LT.5) TVV=TVV*(1+THETA(3))\n' f'CL=TVCL*EXP(ETA(1))\n' f'V=TVV*EXP(ETA(2))\n' f'S1=V\n' f'{buf_new}\n\n' ) assert str(model.get_pred_pk_record()) == rec
def test_statements_setter(pheno_path, buf_new, len_expected): model = Model(pheno_path) parser = NMTranParser() statements_new = parser.parse(f'$PRED\n{buf_new}').records[0].statements assert len(model.statements) == 15 assert len(statements_new) == len_expected model.statements = statements_new assert len(model.statements) == len_expected assert model.statements == statements_new
def test_add_statements(pheno_path, statement_new, buf_new): model = Model(pheno_path) sset = model.statements assert len(sset) == 15 # Insert new statement before ODE system. new_sset = ModelStatements() for s in sset: if isinstance(s, ODESystem): new_sset.append(statement_new) new_sset.append(s) model.statements = new_sset model.update_source() assert len(model.statements) == 16 parser = NMTranParser() stream = parser.parse(str(model)) assert str(model.control_stream) == str(stream) rec_ref = ( f'$PK\n' f'IF(AMT.GT.0) BTIME=TIME\n' f'TAD=TIME-BTIME\n' f'TVCL=THETA(1)*WGT\n' f'TVV=THETA(2)*WGT\n' f'IF(APGR.LT.5) TVV=TVV*(1+THETA(3))\n' f'CL=TVCL*EXP(ETA(1))\n' f'V=TVV*EXP(ETA(2))\n' f'S1=V\n' f'{buf_new}\n\n' ) rec_mod = str(model.control_stream.get_records('PK')[0]) assert rec_ref == rec_mod