Skip to content

PK Model

A two-compartment CNO/CLZ model.

\[\begin{align} \dot{[CNO_{D}]} &= -k_{a_{CNO}}[CNO_{D}] \tag{1} \\ \dot{[CNO_{P}]} &= k_{a_{CNO}}[CNO_{D}] - k_{el_{CNO}}[CNO_{P}] - k_{RMet_{CNO}}[CNO_{P}] \\ &+ k_{Met_{CLZ}}[CLZ_{P}] - k_{PB_{CNO}}[CNO_{P}] + k_{BP_{CNO}}[CNO_{B}] \tag{2} \\ \dot{[CNO_{B}]} &= k_{PB_{CNO}}[CNO_{P}] - k_{BP_{CNO}}[CNO_{B}] \tag{3} \\ \dot{[CLZ_{P}]} &= k_{RMet_{CNO}}[CNO_{P}] - k_{el_{CLZ}}[CLZ_{P}] \\ &- k_{Met_{CLZ}}[CLZ_{P}] - k_{PB_{CLZ}}[CLZ_{P}] + k_{BP_{CLZ}}[CLZ_{B}] \tag{4} \\ \dot{[CLZ_{B}]} &= k_{PB_{CLZ}}[CLZ_{P}] - k_{BP_{CLZ}}[CLZ_{B}] \tag{5} \end{align} \]

See CnoPKConfig for parameter details.

rma_kinetics.models.CnoPK

CNO PK model for chemogenetic RMA models.

Attributes:

Name Type Description
config CnoPKConfig

Model configuration.

Source code in src/rma_kinetics/models/cno.py
class CnoPK(EqxModule):
    """
    CNO PK model for chemogenetic RMA models.

    Attributes:
        config (CnoPKConfig): Model configuration.
    """
    config: CnoPKConfig

    def __getattr__(self, name):
        if hasattr(self.config, name):
            return getattr(self.config, name)

        raise AttributeError(name)

    def _model(self, t: float, y: PyTree[float], args=None) -> PyTree[float]:
        """
        Two-compartment CNO kinetic model

        Arguments:
            t (float): Time point.
            y (PyTree[float]): peritoneal CNO, plasma CNO/CLZ, brain CNO/CLZ amounts.

        Returns:
            dydt (PyTree[float]): Tuple containing change in CNO and CLZ amounts.
        """
        peritoneal_cno, plasma_cno, brain_cno, plasma_clz, brain_clz = y

        peritoneal_cno_flux = self.cno_absorption_rate * peritoneal_cno
        brain_cno_influx = self.cno_brain_transport_rate * plasma_cno
        brain_cno_outflux = self.cno_plasma_transport_rate * brain_cno
        plasma_clz_influx = self.cno_reverse_metabolism_rate * plasma_cno
        plasma_clz_outflux = self.clz_metabolism_rate * plasma_clz
        brain_clz_influx = self.clz_brain_transport_rate * plasma_clz
        brain_clz_outflux = self.clz_plasma_transport_rate * brain_clz

        dperitoneal_cno = -peritoneal_cno_flux

        dplasma_cno = (peritoneal_cno_flux - (self.cno_elimination_rate * plasma_cno)
                       - brain_cno_influx + brain_cno_outflux
                       - plasma_clz_influx + plasma_clz_outflux)
        dbrain_cno = brain_cno_influx - brain_cno_outflux

        dplasma_clz = (plasma_clz_influx - plasma_clz_outflux - (self.clz_elimination_rate * plasma_clz)
                       - brain_clz_influx + brain_clz_outflux)
        dbrain_clz = brain_clz_influx - brain_clz_outflux

        return dperitoneal_cno, dplasma_cno, dbrain_cno, dplasma_clz, dbrain_clz

_model(t: float, y: PyTree[float], args=None) -> PyTree[float]

Two-compartment CNO kinetic model

Parameters:

Name Type Description Default
t float

Time point.

required
y PyTree[float]

peritoneal CNO, plasma CNO/CLZ, brain CNO/CLZ amounts.

required

Returns:

Name Type Description
dydt PyTree[float]

Tuple containing change in CNO and CLZ amounts.

Source code in src/rma_kinetics/models/cno.py
def _model(self, t: float, y: PyTree[float], args=None) -> PyTree[float]:
    """
    Two-compartment CNO kinetic model

    Arguments:
        t (float): Time point.
        y (PyTree[float]): peritoneal CNO, plasma CNO/CLZ, brain CNO/CLZ amounts.

    Returns:
        dydt (PyTree[float]): Tuple containing change in CNO and CLZ amounts.
    """
    peritoneal_cno, plasma_cno, brain_cno, plasma_clz, brain_clz = y

    peritoneal_cno_flux = self.cno_absorption_rate * peritoneal_cno
    brain_cno_influx = self.cno_brain_transport_rate * plasma_cno
    brain_cno_outflux = self.cno_plasma_transport_rate * brain_cno
    plasma_clz_influx = self.cno_reverse_metabolism_rate * plasma_cno
    plasma_clz_outflux = self.clz_metabolism_rate * plasma_clz
    brain_clz_influx = self.clz_brain_transport_rate * plasma_clz
    brain_clz_outflux = self.clz_plasma_transport_rate * brain_clz

    dperitoneal_cno = -peritoneal_cno_flux

    dplasma_cno = (peritoneal_cno_flux - (self.cno_elimination_rate * plasma_cno)
                   - brain_cno_influx + brain_cno_outflux
                   - plasma_clz_influx + plasma_clz_outflux)
    dbrain_cno = brain_cno_influx - brain_cno_outflux

    dplasma_clz = (plasma_clz_influx - plasma_clz_outflux - (self.clz_elimination_rate * plasma_clz)
                   - brain_clz_influx + brain_clz_outflux)
    dbrain_clz = brain_clz_influx - brain_clz_outflux

    return dperitoneal_cno, dplasma_cno, dbrain_cno, dplasma_clz, dbrain_clz