pymixef.pharmacometrics.pk module¶
Closed-form pharmacokinetic helpers and residual-error models.
The PK functions use amount, time, clearance, and volume on any mutually consistent unit system. Returned concentrations have units of amount/volume. Inputs are NumPy-broadcastable and output ordering follows the input time array. Times before a dose (including lag time) return zero.
- class pymixef.pharmacometrics.pk.AdditiveError(sigma, variance_floor=np.float64(2.2250738585072014e-308))[source]¶
Bases:
_ErrorOperationsGaussian additive residual standard deviation.
- Parameters:
sigma (float | int | floating | str | Any)
variance_floor (float)
- sigma: float | int | floating | str | Any¶
- variance_floor: float¶
- class pymixef.pharmacometrics.pk.CombinedError(additive_sigma, proportional_sigma, power=1.0, variance_floor=np.float64(2.2250738585072014e-308))[source]¶
Bases:
_ErrorOperationsIndependent additive and prediction-dependent Gaussian errors.
Component variances are added; standard deviations are not.
- Parameters:
additive_sigma (float | int | floating | str | Any)
proportional_sigma (float | int | floating | str | Any)
power (float | int | floating | str | Any)
variance_floor (float)
- additive_sigma: float | int | floating | str | Any¶
- proportional_sigma: float | int | floating | str | Any¶
- power: float | int | floating | str | Any¶
- variance_floor: float¶
- classmethod from_components(first, second)[source]¶
- Parameters:
first (ObservationError)
second (ObservationError)
- Return type:
- class pymixef.pharmacometrics.pk.LogNormalError(sigma)[source]¶
Bases:
objectMultiplicative log-normal observation error.
log(observed) ~ Normal(log(prediction), sigma).logpdfincludes the Jacobian for density on the original observation scale.- Parameters:
sigma (float | int | floating | str | Any)
- sigma: float | int | floating | str | Any¶
- variance(prediction, parameters=None)[source]¶
- Parameters:
prediction (ArrayLike)
parameters (Mapping[str, float] | None)
- Return type:
NDArray[float64]
- logpdf(observed, prediction, parameters=None)[source]¶
- Parameters:
observed (ArrayLike)
prediction (ArrayLike)
parameters (Mapping[str, float] | None)
- Return type:
NDArray[float64]
- class pymixef.pharmacometrics.pk.ObservationError(*args, **kwargs)[source]¶
Bases:
ProtocolProtocol implemented by residual-error declarations.
- class pymixef.pharmacometrics.pk.OneCompartmentPK(clearance, volume)[source]¶
Bases:
objectReusable parameter bundle for one-compartment closed forms.
- Parameters:
clearance (float)
volume (float)
- clearance: float¶
- volume: float¶
- exception pymixef.pharmacometrics.pk.PKValidationError[source]¶
Bases:
ValueErrorRaised when PK parameters are outside their mathematical domain.
- code = 'PK-INVALID-001'¶
- class pymixef.pharmacometrics.pk.PowerError(sigma, power=1.0, variance_floor=np.float64(2.2250738585072014e-308))[source]¶
Bases:
_ErrorOperationsGaussian residual SD
sigma * abs(prediction) ** power.- Parameters:
sigma (float | int | floating | str | Any)
power (float | int | floating | str | Any)
variance_floor (float)
- sigma: float | int | floating | str | Any¶
- power: float | int | floating | str | Any¶
- variance_floor: float¶
- class pymixef.pharmacometrics.pk.ProportionalError(sigma, variance_floor=np.float64(2.2250738585072014e-308))[source]¶
Bases:
_ErrorOperationsGaussian residual SD equal to
sigma * abs(prediction).- Parameters:
sigma (float | int | floating | str | Any)
variance_floor (float)
- sigma: float | int | floating | str | Any¶
- variance_floor: float¶
- class pymixef.pharmacometrics.pk.TwoCompartmentPK(clearance, central_volume, intercompartmental_clearance, peripheral_volume)[source]¶
Bases:
objectReusable parameter bundle for two-compartment closed forms.
- Parameters:
clearance (float)
central_volume (float)
intercompartmental_clearance (float)
peripheral_volume (float)
- clearance: float¶
- central_volume: float¶
- intercompartmental_clearance: float¶
- peripheral_volume: float¶
- class pymixef.pharmacometrics.pk.TwoCompartmentRates(k10, k12, k21, alpha, beta)[source]¶
Bases:
objectMicro- and macro-rate constants for a linear two-compartment model.
- Parameters:
k10 (float)
k12 (float)
k21 (float)
alpha (float)
beta (float)
- k10: float¶
- k12: float¶
- k21: float¶
- alpha: float¶
- beta: float¶
- pymixef.pharmacometrics.pk.additive(sigma)[source]¶
Declare an additive Gaussian error model.
- Parameters:
sigma (float | int | floating | str | Any)
- Return type:
- pymixef.pharmacometrics.pk.combined(additive_sigma, proportional_sigma, *, exponent=1.0)[source]¶
Declare an additive-plus-power residual-error model.
- Parameters:
additive_sigma (float | int | floating | str | Any)
proportional_sigma (float | int | floating | str | Any)
exponent (float | int | floating | str | Any)
- Return type:
- pymixef.pharmacometrics.pk.interval_censored_loglikelihood(lower, upper, prediction, error, *, parameters=None)[source]¶
Stable log probability for an interval-censored observation.
- Parameters:
lower (ArrayLike)
upper (ArrayLike)
prediction (ArrayLike)
error (ObservationError)
parameters (Mapping[str, float] | None)
- Return type:
NDArray[float64]
- pymixef.pharmacometrics.pk.left_censored_loglikelihood(limit, prediction, error, *, parameters=None)[source]¶
Stable log-CDF contribution for observations below
limit.- Parameters:
limit (ArrayLike)
prediction (ArrayLike)
error (ObservationError)
parameters (Mapping[str, float] | None)
- Return type:
NDArray[float64]
- pymixef.pharmacometrics.pk.lognormal(sigma)[source]¶
Declare an original-scale log-normal error model.
- Parameters:
sigma (float | int | floating | str | Any)
- Return type:
- pymixef.pharmacometrics.pk.one_compartment_bolus(time, *, dose, clearance, volume, bioavailability=1.0, lag=0.0)¶
Concentration after a single IV bolus in a one-compartment model.
- Parameters:
time (ArrayLike)
dose (float)
clearance (float)
volume (float)
bioavailability (float)
lag (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.one_compartment_infusion(time, *, clearance, volume, dose=None, rate=None, duration=None, bioavailability=1.0, start=0.0)[source]¶
Concentration for a finite constant-rate one-compartment infusion.
Supply any two consistent values among
dose,rate, andduration. If all three are supplied,dose == rate * durationis checked.- Parameters:
time (ArrayLike)
clearance (float)
volume (float)
dose (float | None)
rate (float | None)
duration (float | None)
bioavailability (float)
start (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.one_compartment_iv_bolus(time, *, dose, clearance, volume, bioavailability=1.0, lag=0.0)[source]¶
Concentration after a single IV bolus in a one-compartment model.
- Parameters:
time (ArrayLike)
dose (float)
clearance (float)
volume (float)
bioavailability (float)
lag (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.one_compartment_iv_infusion(time, *, clearance, volume, dose=None, rate=None, duration=None, bioavailability=1.0, start=0.0)¶
Concentration for a finite constant-rate one-compartment infusion.
Supply any two consistent values among
dose,rate, andduration. If all three are supplied,dose == rate * durationis checked.- Parameters:
time (ArrayLike)
clearance (float)
volume (float)
dose (float | None)
rate (float | None)
duration (float | None)
bioavailability (float)
start (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.one_compartment_oral(time, *, dose, clearance, volume, absorption_rate, bioavailability=1.0, lag=0.0)[source]¶
Concentration after a first-order oral dose.
The numerically stable limiting expression is used when absorption and elimination rate constants are nearly equal.
- Parameters:
time (ArrayLike)
dose (float)
clearance (float)
volume (float)
absorption_rate (float)
bioavailability (float)
lag (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.power(sigma, exponent)[source]¶
Declare a power residual-error model.
- Parameters:
sigma (float | int | floating | str | Any)
exponent (float | int | floating | str | Any)
- Return type:
- pymixef.pharmacometrics.pk.proportional(sigma)[source]¶
Declare a proportional Gaussian error model.
- Parameters:
sigma (float | int | floating | str | Any)
- Return type:
- pymixef.pharmacometrics.pk.right_censored_loglikelihood(limit, prediction, error, *, parameters=None)[source]¶
Stable log-survival contribution for observations above
limit.- Parameters:
limit (ArrayLike)
prediction (ArrayLike)
error (ObservationError)
parameters (Mapping[str, float] | None)
- Return type:
NDArray[float64]
- pymixef.pharmacometrics.pk.two_compartment_bolus(time, *, dose, clearance, central_volume, intercompartmental_clearance, peripheral_volume, bioavailability=1.0, lag=0.0)¶
Central concentration after a single two-compartment IV bolus.
- Parameters:
time (ArrayLike)
dose (float)
clearance (float)
central_volume (float)
intercompartmental_clearance (float)
peripheral_volume (float)
bioavailability (float)
lag (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.two_compartment_infusion(time, *, clearance, central_volume, intercompartmental_clearance, peripheral_volume, dose=None, rate=None, duration=None, bioavailability=1.0, start=0.0)[source]¶
Central concentration during and after a finite two-compartment infusion.
- Parameters:
time (ArrayLike)
clearance (float)
central_volume (float)
intercompartmental_clearance (float)
peripheral_volume (float)
dose (float | None)
rate (float | None)
duration (float | None)
bioavailability (float)
start (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.two_compartment_iv_bolus(time, *, dose, clearance, central_volume, intercompartmental_clearance, peripheral_volume, bioavailability=1.0, lag=0.0)[source]¶
Central concentration after a single two-compartment IV bolus.
- Parameters:
time (ArrayLike)
dose (float)
clearance (float)
central_volume (float)
intercompartmental_clearance (float)
peripheral_volume (float)
bioavailability (float)
lag (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.two_compartment_iv_infusion(time, *, clearance, central_volume, intercompartmental_clearance, peripheral_volume, dose=None, rate=None, duration=None, bioavailability=1.0, start=0.0)¶
Central concentration during and after a finite two-compartment infusion.
- Parameters:
time (ArrayLike)
clearance (float)
central_volume (float)
intercompartmental_clearance (float)
peripheral_volume (float)
dose (float | None)
rate (float | None)
duration (float | None)
bioavailability (float)
start (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.two_compartment_oral(time, *, dose, clearance, central_volume, intercompartmental_clearance, peripheral_volume, absorption_rate, bioavailability=1.0, lag=0.0)[source]¶
Central concentration after first-order absorption into two compartments.
- Parameters:
time (ArrayLike)
dose (float)
clearance (float)
central_volume (float)
intercompartmental_clearance (float)
peripheral_volume (float)
absorption_rate (float)
bioavailability (float)
lag (float)
- Return type:
float | NDArray[float64]
- pymixef.pharmacometrics.pk.two_compartment_rates(*, clearance, central_volume, intercompartmental_clearance, peripheral_volume)[source]¶
Calculate microconstants and hybrid exponents
alphaandbeta.- Parameters:
clearance (float)
central_volume (float)
intercompartmental_clearance (float)
peripheral_volume (float)
- Return type: