模型构建相关 API#

mas.model.theta()#

theta(init_value=None, bounds=None, fixed=False) Theta#

创建固定效应参数 \(\theta\)

参数:

  • init_value (ValueType, optional):参数初值。若为 None 则视初值为 0。默认值为 None

  • bounds (BoundsType, optional):最小化过程中参数估计的上下边界值。若为 None 则无边界约束。默认值为 None

  • fixed (bool, optional):是否固定参数值。默认值为 False

返回值:

\(\theta\) 参数(固定效应)。

返回类型:

Theta

示例:

Class DemoModel(Module)
    def __init__(self):
        self.cl = theta(0.5, bounds=(0, 10))
        self.v = theta(10, bounds=(0, None))
        self.emax = theta(-20, bounds=(-100, 100))
        self.ec50 = theta(5, fixed=True)

mas.model.omega()#

omega(init_omega=None, fixed=False) Eta | list[Eta]#

创建个体间变异参数 \(\eta\)

参数:

  • init_omega (ValueType | Block | list[list[ValueType]] | NDArray[float64], optional):参数初值或参数初值矩阵。若为 None 则视初值为 1。默认值为 None。可以下三角矩阵(Block)或对称矩阵的形式(list[list[ValueType]] | NDArray[float64])传入。非对角线元素将被视为协方差。

  • fixed (bool, optional):是否固定参数矩阵。默认值为 False

返回值:

方差为 \(\Omega\)\(\eta\) 参数(个体间变异)或者一组方差与协方差关系符合 \(\Omega\) 矩阵的 \(\eta\) 参数。

返回类型:

Eta | list[Eta]

示例:

Class DemoModel(Module)
    def __init__(self):
        self.cl = theta(0.5, bounds=(0, 10))
        self.v = theta(10, bounds=(0, None))
        self.emax = theta(-20, bounds=(-100, 100))
        self.ec50 = theta(5, bounds=(0, None))
        self.eta_cl = omega(0.09)
        self.eta_v = omega(0, fixed=True)
        self.eta_emax, self.eta_ec50 = omega(Block(tril=[0.05, 0, 0.08], dimension=2))

mas.model.sigma()#

sigma(init_sigma=None, fixed=False) Eps | list[Eps]#

创建个体内变异(残差)参数 \(\epsilon\)

参数:

  • init_sigma (ValueType | Block | list[list[ValueType]] | NDArray[float64], optional):参数初值或参数初值矩阵。若为 None 则视初值为 1。默认值为 None。可以下三角矩阵(Block)或对称矩阵的形式(list[list[ValueType]] | NDArray[float64])传入。非对角线元素将被视为协方差。

  • fixed (bool, optional):是否固定参数矩阵。默认值为 False

返回值:

方差为 \(\Sigma\)\(\epsilon\) 参数(个体内变异)或者一组方差与协方差关系符合 \(\Sigma\) 矩阵的 \(\epsilon\) 参数。

返回类型:

Eps | list[Eps]

示例:

Class DemoModel(Module)
    def __init__(self):
        self.cl = theta(0.5, bounds=(0, 10))
        self.v = theta(10, bounds=(0, None))
        self.emax = theta(-20, bounds=(-100, 100))
        self.ec50 = theta(5, bounds=(0, None))
        self.eta_cl = omega(0.09)
        self.eta_v = omega(0, fixed=True)
        self.eta_emax, self.eta_ec50 = omega(Block(tril=[0.05, 0, 0.08], dimension=2))
        self.eps_prop = sigma(0.09)
        self.eps_add = sigma(3, fixed=True)

mas.model.column()#

column(col_name, typ, *, is_categorical) NumericContinuousColVar | NumericCategoricalColVar | StrCategoricalColVar#

创建一个变量来代表数据集中的某一列。

参数:

  • col_name (str):列名。

  • typ (ColumnDtype, optional):列内数据的类型。可以为数值类型("numeric")或字符串类型("str")。默认值为 "numeric"

  • is_categorical (bool, optional):是否为分类变量。默认值为 False

返回值:

一个代表数据集某一列的变量(常被视为协变量)。

返回类型:

NumericContinuousColVar | NumericCategoricalColVar | StrCategoricalColVar

示例:

Class DemoModel(Module)
    def __init__(self):
        self.cl = theta(0.5, bounds=(0, 10))
        self.v = theta(10, bounds=(0, None))
        self.eta_cl = omega(0.09)
        self.eta_v = omega(0.16)
        self.eps_prop = sigma(0.09)
        self.age = column("AGE")
        self.sex = column("SEX", is_categorical=True)

mas.model.multicolumn()#

multicolumn(col_name, typ, *, is_categorical) NumericContinuousColVarCollection | NumericCategoricalColVarCollection | StrCategoricalColVarCollection#

创建一个变量来代表数据集中的某些列(常用于协变量筛选)。

参数:

  • col_name (list[str]):列名列表。

  • typ (ColumnDtype, optional):列内数据的类型。可以为数值类型("numeric")或字符串类型("str")。默认值为 "numeric"

  • is_categorical (bool, optional):是否为分类变量。默认值为 False

返回值:

一个代表数据集某些列的变量。

返回类型:

NumericContinuousColVarCollection | NumericCategoricalColVarCollection | StrCategoricalColVarCollection

示例:

Class DemoModel(Module)
    def __init__(self):
        self.cl = theta(0.5, bounds=(0, 10))
        self.v = theta(10, bounds=(0, None))
        self.eta_cl = omega(0.09)
        self.eta_v = omega(0.16)
        self.eps_prop = sigma(0.09)
        self.con_cov = multicolumn(["AGE", "WT"], is_categorical=False)

mas.model.compartment()#

compartment(init_value=0.0, alag=0.0, fraction=1.0, default_dose=False, default_obs=False) Compartment#

创建一个房室变量。

参数:

  • init_value (ValueType, optional):房室药量初值。默认值为 0

  • alag (ValueType, optional):房室吸收延迟时间。默认值为 0

  • fraction (ValueType, optional):房室吸收分数。默认值为 1

  • default_dose (bool, optional):是否为默认给药房室。默认值为 False

  • default_obs (bool, optional):是否为默认观测房室。默认值为 False

返回值:

一个代表某一房室的变量。

返回类型:

Compartment

示例:

class TestModel(OdeModule):
    def __init__(self):
        super().__init__()
        self.cmt_depot = compartment(init_value=0, default_dose=True, default_obs=False)
        self.cmt_central = compartment(init_value=0, default_dose=False, default_obs=True)
        ...

房室结构与微分方程模型结合运用的示例可见 OdeModule

mas.model.Module#

class mas.model.Module#

构建各类 Masmod 模型的基础类。可以用构建自定义模型。

重要

所有 Masmod 模型都必需继承 Module

pred()#

pred() Expression#

从模型参数构建关于因变量预测值的模型。

返回值:

因变量预测值的表达式。

返回类型:

Expression

示例:

使用 Module 构建药效学 Emax 模型:

class EmaxModel(Module):
    def __init__(self, emax, et50, eta_emax, eta_et50, eps) -> None:
        self.theta_emax = theta(emax, bounds=(-10*emax, 10*emax))
        self.theta_et50 = theta(et50, bounds=(0, 10*et50))

        self.eta_emax = omega(eta_emax)
        self.eta_et50 = omega(eta_et50)

        self.eps = sigma(eps)

        self.t = column("TIME")

    def pred(self):
        emax = self.theta_emax * exp(self.eta_emax)
        et50 = self.theta_et50 * exp(self.eta_et50)

        eff = (emax * self.t) / (et50 + self.t)
        ipred = eff

        y = ipred + self.eps

        return y

mas.model.IvOneCmtLinear#

class mas.model.IvOneCmtLinear#

基类:Module

一室血管内给药线性消除模型。

mas.model.IvOneCmtLinear.pred_micro#

class mas.model.IvOneCmtLinear.pred_micro(k, alag1=None, s1=None, f1=None, r1=None, d1=None)#

使用微观药动学参数预测因变量。

参数:

  • k (Expression):消除速率常数。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

备注

换算系数即 Scale Parameters,用于转化房室药量为浓度且使它们的单位量纲保持一致。三者关系为

\[ 浓度 = 药量 / 浓度转化系数 \]

可详见:焦正. (2019). 基础群体药动学和药效学分析. 科学出版社.

property F#

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvOneCmtLinearIndexType]

property A#

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvOneCmtLinearIndexType]

mas.model.IvOneCmtLinear.pred_physio#

class mas.model.IvOneCmtLinear.pred_physio(cl, v, alag1=None, s1=None, f1=None, r1=None, d1=None)#

使用生理药动学参数预测因变量。

参数:

  • cl (Expression):清除率。

  • v (Expression):表观分布容积。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvOneCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvOneCmtLinearIndexType]

mas.model.EvOneCmtLinear#

class mas.model.EvOneCmtLinear#

基类:Module

一室血管外给药线性消除模型。

mas.model.EvOneCmtLinear.pred_micro#

class mas.model.EvOneCmtLinear.pred_micro(k, ka, alag=None, alag2=None, s1=None, s2=None, f1=None, f2=None, r1=None, r2=None, d1=None, d2=None)

使用微观药动学参数预测因变量。

参数:

  • k (Expression):消除速率常数。

  • ka (Expression):吸收速率常数。

  • alag1 (Expression, optional):贮藏室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):贮藏室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):贮藏室吸收分数。默认值为 None

  • f2 (Expression, optional):中央室吸收分数。默认值为 None

  • r1 (Expression, optional):贮藏室给药速率。默认值为 None

  • r2 (Expression, optional):中央室给药速率。默认值为 None

  • d1 (Expression, optional):贮藏室给药持续时间。默认值为 None

  • d2 (Expression, optional):中央室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[EvOneCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[EvOneCmtLinearIndexType]

mas.model.EvOneCmtLinear.pred_physio#

class mas.model.EvOneCmtLinear.pred_physio(cl, v, ka, alag1=None, alag2=None, s1=None, s2=None, f1=None, f2=None, r1=None, r2=None, d1=None, d2=None)

使用生理药动学参数预测因变量。

参数:

  • cl (Expression):清除率。

  • v (Expression):表观分布容积。

  • ka (Expression):吸收速率常数。

  • alag1 (Expression, optional):贮藏室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):贮藏室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):贮藏室吸收分数。默认值为 None

  • f2 (Expression, optional):中央室吸收分数。默认值为 None

  • r1 (Expression, optional):贮藏室给药速率。默认值为 None

  • r2 (Expression, optional):中央室给药速率。默认值为 None

  • d1 (Expression, optional):贮藏室给药持续时间。默认值为 None

  • d2 (Expression, optional):中央室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[EvOneCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[EvOneCmtLinearIndexType]

示例:

华法林一室口服 PK 模型:

class WarfarinPk(EvOneCmtLinear):
    def __init__(self) -> None:
        super().__init__()
        self.tv_cl = theta(0.134, bounds=(0, None))
        self.tv_v = theta(7.81, bounds=(0, None))
        self.tv_ka = theta(0.571, bounds=(0, None))
        self.tv_alag = theta(0.823, bounds=(0, None))

        self.eta_cl = omega(0.049)
        self.eta_v = omega(0.0802)
        self.eta_ka = omega(0.047)
        self.eta_alag = omega(0.156)

        self.eps_prop = sigma(0.0104)
        self.eps_add = sigma(0.554)

    def pred(self) -> Expression:
        cl = self.tv_cl * exp(self.eta_cl)
        v = self.tv_v * exp(self.eta_v)
        ka = self.tv_ka * exp(self.eta_ka)
        alag = self.tv_alag * exp(self.eta_alag)

        pred_res = self.pred_physio(cl=cl, v=v, ka=ka, alag1=alag, s2=v)
        ipred = pred_res.F

        y = ipred * (1 + self.eps_prop) + self.eps_add

        return y

mas.model.IvTwoCmtLinear#

class mas.model.IvTwoCmtLinear#

基类:Module

二室血管内给药线性消除模型。

mas.model.IvTwoCmtLinear.pred_micro#

class mas.model.IvTwoCmtLinear.pred_micro(k, k12, k21, alag1=None, alag2=None, s1=None, s2=None, f1=None, f2=None, r1=None, r2=None, d1=None, d2=None)

使用微观药动学参数预测因变量。

参数:

  • k (Expression):消除速率常数。

  • k12 (Expression):中央室向周边室的转运速率参数。

  • k21 (Expression):周边室向中央室的转运速率参数。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • f2 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • r2 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

  • d2 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvTwoCmtLinearIndexType]

mas.model.IvTwoCmtLinear.pred_physio_vss#

class mas.model.IvTwoCmtLinear.pred_physio_vss(cl, v, q, vss, alag1=None, alag2=None, s1=None, s2=None, f1=None, f2=None, r1=None, r2=None, d1=None, d2=None)#

使用生理药动学参数与稳态表观分布容积(vss)预测因变量。

参数:

  • cl (Expression):清除率。

  • v (Expression):中央室表观分布容积。

  • q (Expression):房室间清除率。

  • vss (Expression):稳态表观分布容积。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • f2 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • r2 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

  • d2 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvTwoCmtLinearIndexType]

mas.model.IvTwoCmtLinear.pred_physio#

class mas.model.IvTwoCmtLinear.pred_physio(cl, v1, q, v2, alag1=None, alag2=None, s1=None, s2=None, f1=None, f2=None, r1=None, r2=None, d1=None, d2=None)

使用生理药动学参数预测因变量。

参数:

  • cl (Expression):清除率。

  • v1 (Expression):中央室表观分布容积。

  • q (Expression):房室间清除率。

  • v2 (Expression):周边室表观分布容积。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • f2 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • r2 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

  • d2 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvTwoCmtLinearIndexType]

mas.model.IvTwoCmtLinear.pred_macro_aob#

class mas.model.IvTwoCmtLinear.pred_macro_aob(alpha, beta, aob, alag1=None, alag2=None, s1=None, s2=None, f1=None, f2=None, r1=None, r2=None, d1=None, d2=None)#

使用宏观药动学参数预测因变量。

参数:

  • alpha (Expression)二室模型药代动力学方程中的指数 \(\alpha\)

  • beta (Expression)二室模型药代动力学方程中的指数 \(\beta\)

  • aob (Expression)\(A/B\)。其中 \(A\)\(B\)二室模型药代动力学方程中的系数。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • f2 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • r2 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

  • d2 (Expression, optional):周边室给药持续时间。默认值为 None

备注

二室模型药代动力学方程指:

\[ C(t) = Dose \times (Ae^{-\alpha t} + Be^{-\beta t}) \]

其中 \(C(t)\)\(t\) 时刻的中央室药物浓度,\(Dose\) 为给药剂量。

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvTwoCmtLinearIndexType]

mas.model.IvTwoCmtLinear.pred_macro_micro#

class mas.model.IvTwoCmtLinear.pred_macro_micro(alpha, beta, k21, alag1=None, alag2=None, s1=None, s2=None, f1=None, f2=None, r1=None, r2=None, d1=None, d2=None)#

使用宏观药动学参数与微观药动学参数(k21)预测因变量。

参数:

  • alpha (Expression)二室模型药代动力学方程中的指数 \(\alpha\)

  • beta (Expression)二室模型药代动力学方程中的指数 \(\beta\)

  • k21 (Expression):周边室向中央室的转运速率参数。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • f2 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • r2 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

  • d2 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvTwoCmtLinearIndexType]

mas.model.EvTwoCmtLinear#

class mas.model.EvTwoCmtLinear#

基类:Module

二室血管外给药线性消除模型。

mas.model.EvTwoCmtLinear.pred_micro#

class mas.model.EvTwoCmtLinear.pred_micro(k, k23, k32, ka, alag1=None, alag2=None, alag3=None, s1=None, s2=None, s3=None, f1=None, f2=None, f3=None, r1=None, r2=None, r3=None, d1=None, d2=None, d3=None)

使用微观药动学参数预测因变量。

参数:

  • k (Expression):消除速率常数。

  • k23 (Expression):中央室向周边室的转运速率参数。

  • k32 (Expression):周边室向中央室的转运速率参数。

  • ka (Expression):吸收速率参数。

  • alag1 (Expression, optional):贮藏室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag3 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):贮藏室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s3 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):贮藏室吸收分数。默认值为 None

  • f2 (Expression, optional):中央室吸收分数。默认值为 None

  • f3 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):贮藏室给药速率。默认值为 None

  • r2 (Expression, optional):中央室给药速率。默认值为 None

  • r3 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):贮藏室给药持续时间。默认值为 None

  • d2 (Expression, optional):中央室给药持续时间。默认值为 None

  • d3 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[EvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[EvTwoCmtLinearIndexType]

mas.model.EvTwoCmtLinear.pred_physio_vss#

class mas.model.EvTwoCmtLinear.pred_physio_vss(cl, v, q, vss, ka, alag1=None, alag2=None, alag3=None, s1=None, s2=None, s3=None, f1=None, f2=None, f3=None, r1=None, r2=None, r3=None, d1=None, d2=None, d3=None)

使用生理药动学参数与稳态表观分布容积(vss)预测因变量。

参数:

  • cl (Expression):清除率。

  • v (Expression):中央室表观分布容积。

  • q (Expression):房室间清除率。

  • vss (Expression):稳态表观分布容积。

  • ka (Expression):吸收速率参数。

  • alag1 (Expression, optional):贮藏室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag3 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):贮藏室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s3 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):贮藏室吸收分数。默认值为 None

  • f2 (Expression, optional):中央室吸收分数。默认值为 None

  • f3 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):贮藏室给药速率。默认值为 None

  • r2 (Expression, optional):中央室给药速率。默认值为 None

  • r3 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):贮藏室给药持续时间。默认值为 None

  • d2 (Expression, optional):中央室给药持续时间。默认值为 None

  • d3 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[EvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[EvTwoCmtLinearIndexType]

mas.model.EvTwoCmtLinear.pred_physio#

class mas.model.EvTwoCmtLinear.pred_physio(cl, v2, q, v3, ka, alag1=None, alag2=None, alag3=None, s1=None, s2=None, s3=None, f1=None, f2=None, f3=None, r1=None, r2=None, r3=None, d1=None, d2=None, d3=None)

使用生理药动学参数预测因变量。

参数:

  • cl (Expression):清除率。

  • v2 (Expression):中央室表观分布容积。

  • q (Expression):房室间清除率。

  • v3 (Expression):周边室表观分布容积。

  • ka (Expression):吸收速率参数。

  • alag1 (Expression, optional):贮藏室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag3 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):贮藏室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s3 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):贮藏室吸收分数。默认值为 None

  • f2 (Expression, optional):中央室吸收分数。默认值为 None

  • f3 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):贮藏室给药速率。默认值为 None

  • r2 (Expression, optional):中央室给药速率。默认值为 None

  • r3 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):贮藏室给药持续时间。默认值为 None

  • d2 (Expression, optional):中央室给药持续时间。默认值为 None

  • d3 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[EvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[EvTwoCmtLinearIndexType]

mas.model.EvTwoCmtLinear.pred_macro_aob#

class mas.model.EvTwoCmtLinear.pred_macro_aob(alpha, beta, aob, ka, alag1=None, alag2=None, alag3=None, s1=None, s2=None, s3=None, f1=None, f2=None, f3=None, r1=None, r2=None, r3=None, d1=None, d2=None, d3=None)

使用宏观药动学参数预测因变量。

参数:

  • alpha (Expression)二室模型药代动力学方程中的指数 \(\alpha\)

  • beta (Expression)二室模型药代动力学方程中的指数 \(\beta\)

  • aob (Expression)\(A/B\)。其中 \(A\)\(B\)二室模型药代动力学方程中的系数。

  • ka (Expression):吸收速率参数。

  • alag1 (Expression, optional):贮藏室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag3 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):贮藏室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s3 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):贮藏室吸收分数。默认值为 None

  • f2 (Expression, optional):中央室吸收分数。默认值为 None

  • f3 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):贮藏室给药速率。默认值为 None

  • r2 (Expression, optional):中央室给药速率。默认值为 None

  • r3 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):贮藏室给药持续时间。默认值为 None

  • d2 (Expression, optional):中央室给药持续时间。默认值为 None

  • d3 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[EvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[EvTwoCmtLinearIndexType]

mas.model.EvTwoCmtLinear.pred_macro_micro#

class mas.model.EvTwoCmtLinear.pred_macro_micro(alpha, beta, k32, ka, alag1=None, alag2=None, alag3=None, s1=None, s2=None, s3=None, f1=None, f2=None, f3=None, r1=None, r2=None, r3=None, d1=None, d2=None, d3=None)

使用宏观药动学参数与微观药动学参数(k32)预测因变量。

参数:

  • alpha (Expression)二室模型药代动力学方程中的指数 \(\alpha\)

  • beta (Expression)二室模型药代动力学方程中的指数 \(\beta\)

  • k32 (Expression):周边室向中央室的转运速率参数。

  • ka (Expression):吸收速率参数。

  • alag1 (Expression, optional):贮藏室吸收延迟时间。默认值为 None

  • alag2 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • alag3 (Expression, optional):周边室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):贮藏室药量-浓度换算系数。默认值为 None

  • s2 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • s3 (Expression, optional):周边室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):贮藏室吸收分数。默认值为 None

  • f2 (Expression, optional):中央室吸收分数。默认值为 None

  • f3 (Expression, optional):周边室吸收分数。默认值为 None

  • r1 (Expression, optional):贮藏室给药速率。默认值为 None

  • r2 (Expression, optional):中央室给药速率。默认值为 None

  • r3 (Expression, optional):周边室给药速率。默认值为 None

  • d1 (Expression, optional):贮藏室给药持续时间。默认值为 None

  • d2 (Expression, optional):中央室给药持续时间。默认值为 None

  • d3 (Expression, optional):周边室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[EvTwoCmtLinearIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[EvTwoCmtLinearIndexType]

mas.model.IvOneCmtMichaelisMenten#

class mas.model.IvOneCmtMichaelisMenten#

基类:Module

一室血管外给药非线性消除(Michaelis-Menten 消除)模型。

mas.model.IvOneCmtMichaelisMenten.pred_micro#

class mas.model.IvOneCmtMichaelisMenten.pred_micro(km, vm, alag1=None, s1=None, f1=None, r1=None, d1=None)

使用微观药动学参数预测因变量。

参数:

  • km (Expression):米氏常数。

  • vm (Expression):最大速率。

  • alag1 (Expression, optional):中央室吸收延迟时间。默认值为 None

  • s1 (Expression, optional):中央室药量-浓度换算系数。默认值为 None

  • f1 (Expression, optional):中央室吸收分数。默认值为 None

  • r1 (Expression, optional):中央室给药速率。默认值为 None

  • d1 (Expression, optional):中央室给药持续时间。默认值为 None

property F

预测的观测室药物浓度。

类型:

SubroutineSolvedF[IvOneCmtMichaelisMentenIndexType]

property A

各房室预测药量

类型:

SubroutineSolvedAIndexer[IvOneCmtMichaelisMentenIndexType]

mas.model.OdeModule#

class mas.model.OdeModule(solver: AnyOdeSolverConfiguration = odeint.DVERK)#

基类:Module

常微分方程模型。

property t#

符号 “t”,代表常微分方程中的时间。

类型:

IntegralT

示例:

华法林 PK-PD 模型示例:

class WarfarinPkPd(OdeModule):
    def __init__(self) -> None:
        super().__init__()
        self.dose_cmt = compartment(default_dose=True)
        self.central_cmt = compartment(default_obs=True)
        self.effect_cmt = compartment()

        self.tv_v = theta(7.81, bounds=(0, None))
        self.tv_cl = theta(0.134, bounds=(0, None))
        self.tv_ka = theta(0.571, bounds=(0, None))

        self.tv_e0 = theta(96.7216, bounds=(0.01, 200))
        self.tv_emax = theta(-254.891, bounds=(-500, 0))
        self.tv_ec50 = theta(11.0351, bounds=(0.01, 20))
        self.tv_ke0 = theta(0.176, bounds=(0.001, 3))

        self.eta_v = omega(0.049)
        self.eta_cl = omega(0.0802)
        self.eta_ka = omega(0.047)

        self.eta_emax = omega(0, fixed=True)
        self.eta_e0 = omega(0.003)
        self.eta_ec50 = omega(0.452)
        self.eta_ke0 = omega(0.303)

        self.eps_prop_pk = sigma(0.0104)
        self.eps_add_pk = sigma(0.554)
        self.eps_add_pd = sigma(14.4)

        self.dvid = column("DVID")

    def pred(self) -> Expression:
        # PK parameters
        cl = self.tv_cl * exp(self.eta_cl)
        v = self.tv_v * exp(self.eta_v)
        ka = self.tv_ka * exp(self.eta_ka)
        k = cl / v
        s2 = v

        # PD parameters
        e0 = self.tv_e0 * exp(self.eta_e0)
        emax = self.tv_emax * exp(self.eta_emax)
        ec50 = self.tv_ec50 * exp(self.eta_ec50)
        ke0 = self.tv_ke0 * exp(self.eta_ke0)

        cp = self.central_cmt.A / s2
        ce = self.effect_cmt.A

        self.dose_cmt.dAdt = -ka * self.dose_cmt.A
        self.central_cmt.dAdt = ka * self.dose_cmt.A - k * self.central_cmt.A
        self.effect_cmt.dAdt = ke0 * (cp - ce)

        eff = e0 + (emax * ce) / (ec50 + ce)

        if self.dvid == 1:
            # PK observations
            y = cp * (1 + self.eps_prop_pk) + self.eps_add_pk
        else:
            # PD observations
            y = eff + self.eps_add_pd

        return y

mas.model.odeint#

class mas.model.odeint#

常微分方程求解器。

DVERK()#

static DVERK(tol=1e-06, err_typ='combined', floor=1e-05, max_fun_calls=100000) DVERKSettings#

Verner 五阶和六阶 Runge-Kutta 方法,用于求解非刚性一阶常微分方程。

参数:

  • tol (float, optional):收敛界值。默认值为 1e-06

  • err_typ (Literal["absolute", "relative", "combined"], optional):误差形式。若为 "absolute" 则使用绝对误差,即误差权重为 1。若为 "relative" 则使用相对误差,误差权重为 \(\frac{1}{\mid y(k) \mid}\)。若为 "combined" 则使用结合性误差,此时如果 \(\mid y(k) \mid < \mid floor \mid \),误差权重为 \(\frac{1}{max(\mid floor \mid)}\);否则为 \(\frac{1}{max(\mid y(k) \mid)}\)。默认值为 "combined"

  • floor (float, optional):容差。默认值为 1e-05

  • max_fun_calls (int, optional):最大函数调用次数。默认值为 100000

返回值:

DVERK 设置。

返回类型:

DVERKSettings

参考文献

Hull, T. & Enright, W.H. & Jackson, Kenneth. (1976). User's guide for DVERK-a subroutine for solving non-stiff ODEs.

LSODA()#

static LSODA(rel_tol=1e-12, abs_tol=1e-12) LSODASettings#

由 Linda Petzold 和 Alan Hindmarsh 提出的 LSODA 算法,用于求解刚性或非刚性的一阶常微分方程。

参数:

  • rel_tol (float, optional):相对收敛界值。默认值为 1e-12

  • abs_tol (float, optional):绝对收敛界值。默认值为 1e-12

返回值:

LSODA 设置。

返回类型:

LSODASettings

参考文献

Petzold, L. . (1983). Automatic selection of methods for solving stiff and nonstiff systems of ordinary differential equations. Siam J.sci.stat.comput, 4(1), 136-148.