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: object

Modelo 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: object

1-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.