opendose_poppk.pk_model
opendose_poppk.pk_model
Core pharmacokinetic and pharmacodynamic models.
Classes
PKModel : 1-compartment PK model with first-order absorption PDModel : Emax pharmacodynamic model with Hill equation
- class opendose_poppk.pk_model.PDModel(EC50: float, n: float = 1.0, Emax: float = 100.0)
Bases:
objectModelo farmacodinâmico Emax com equação de Hill (sigmoidal).
E(C) = Emax · C^n / (EC50^n + C^n)
Parâmetros
EC50 : concentração de efeito meio-máximo (µg/mL) n : coeficiente de Hill (1 = hiperbólico; >1 = sigmoidal) Emax : efeito máximo (default 100 %)
- ec_x(fraction: float) float
Concentração que produz fração·Emax (inverso de Hill).
Ex.: ec_x(0.5) → EC50, ec_x(0.9) → EC90
- effect(C: ndarray) ndarray
Efeito farmacodinâmico E(C) em % do Emax.
- class opendose_poppk.pk_model.PKModel(F: float = 0.8, ka: float = 1.8, ke: float = 0.28, Vd: float = 65.0, Q: float = 10.0, V2: float = 20.0, CL: float | None = None, V: float | None = None, phys_half_life_h: float | None = None)
Bases:
object1-compartment pharmacokinetic model with first-order absorption.
Supports 2-compartment system with inter-compartmental flows and radioactive decay.
- Parameters:
F (bioavailability (0–1))
ka (absorption rate constant (h⁻¹))
ke (elimination rate constant (h⁻¹))
Vd (volume of distribution (L))
Q (inter-compartmental flow (L/h))
V2 (peripheral compartment volume (L))
CL (systemic clearance (L/h) - alternative to ke)
V (central volume (L) - alternative to Vd)
phys_half_life_h (physical decay half-life (h) for radioactive isotopes)
- auc(D: float = 1000.0) float
AUC₀→∞ analítica para modelo linear: AUC = F·D / CL.
- cmax(D: float = 1000.0) tuple[float, float]
Retorna (Cmax, Tmax) numéricos usando concentration.
- concentration(t: ndarray, D: float = 1000.0) ndarray
Plasma concentration profile C(t) after extravascular-like dose input.
The amount entering central compartment at t=0 is
F * D.
- concentration_iv_bolus(t: ndarray, dose: float = 1000.0) ndarray
Concentration profile after an IV bolus in the central compartment.
- concentration_iv_infusion(t: ndarray, rate: float, duration_h: float, start_h: float = 0.0) ndarray
Concentration profile for IV infusion with constant rate.
- concentration_multiple_dose(t: ndarray, D: float = 1000.0, interval_h: float = 8.0, n_doses: int = 3) ndarray
Concentração para regime de múltiplas doses em intervalos fixos.
A dose é aplicada nos tempos: 0, interval_h, 2*interval_h, …
- concentration_nonlinear(t: ndarray, D: float = 1000.0, vmax: float = 80.0, km: float = 20.0) ndarray
Concentration profile with one-compartment Michaelis-Menten elimination.
- This method models saturable elimination:
dA/dt = -(vmax * C / (km + C)) - lambda_phys * A C = A / V1
- Parameters:
t (np.ndarray) – Time vector in hours.
D (float) – Administered dose/activity.
vmax (float) – Maximum elimination rate (amount/h).
km (float) – Michaelis-Menten constant (amount/L).
- simulate_population(t: ndarray, D: float = 1000.0, n_subjects: int = 1000, cv_ke: float = 0.3, cv_ka: float = 0.25, cv_Vd: float = 0.3, cv_Q: float = 0.25, cv_V2: float = 0.25, seed: int = 42) tuple[ndarray, ndarray, ndarray]
Simulação Monte Carlo de IIV sem covariáveis.
- Cada parâmetro é amostrado log-normalmente:
param_i = param_pop · exp(η_i), η_i ~ N(0, cv²)
Retorna
(mediana, p5, p95) : percentis do perfil populacional
- state_space() dict
Retorna as matrizes do sistema em espaço de estados.
Retorna
dict com A, B, eigenvalues, is_stable
- steady_state_metrics(D: float = 1000.0, interval_h: float = 8.0, n_doses: int = 20, n_points: int = 4000) dict
Estimate steady-state metrics from repeated fixed-interval dosing.