Source code for pharmpy.modeling.remove_iiv
"""
:meta private:
"""
from typing import List, Optional, Union
from pharmpy.deps import sympy
from pharmpy.model import Model
from pharmpy.modeling import remove_unused_parameters_and_rvs
from pharmpy.modeling.help_functions import _format_input_list, _get_etas
[docs]def remove_iiv(model: Model, to_remove: Optional[Union[List[str], str]] = None):
"""
Removes all IIV etas given a list with eta names and/or parameter names.
Parameters
----------
model : Model
Pharmpy model to create block effect on.
to_remove : str, list
Name/names of etas and/or name/names of individual parameters to remove.
If None, all etas that are IIVs will be removed. None is default.
Return
------
Model
Pharmpy model object
Examples
--------
>>> from pharmpy.modeling import *
>>> model = load_example_model("pheno")
>>> model = remove_iiv(model)
>>> model.statements.find_assignment("CL")
CL = TVCL
>>> model = load_example_model("pheno")
>>> model = remove_iiv(model, "V")
>>> model.statements.find_assignment("V")
V = TVV
See also
--------
remove_iov
add_iiv
add_iov
add_pk_iiv
"""
rvs, sset = model.random_variables, model.statements
to_remove = _format_input_list(to_remove)
etas = _get_etas(model, to_remove, include_symbols=True)
for eta in etas:
sset = sset.subs({sympy.Symbol(eta): 0})
keep = [name for name in model.random_variables.names if name not in etas]
model = model.replace(random_variables=rvs[keep], statements=sset)
model = remove_unused_parameters_and_rvs(model)
model = model.update_source()
return model