Skip to content

suny-downstate-medical-center/PK_model_L-DOPA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 

Repository files navigation

Norepinephrine (NE) Model — README

This repository contains a compact, phenomenological model of L‑DOPA pharmacokinetics (PK), dopamine (DA) dynamics, and norepinephrine (NE) synthesis/regulation. The implementation uses NumPy, SciPy, and matplotlib and supports multiple Parkinson’s disease (PD) capacity scenarios, with or without an L‑DOPA infusion.


1) Overview

  • PK (3 compartments) for L‑DOPA: central/plasma (C1), peripheral/tissue (C2), brain/biophase (C3).
  • DA dynamics: endogenous production + L‑DOPA–driven synthesis; saturable reuptake; first‑order removal.
  • NE dynamics: DA→NE conversion with product inhibition; first‑order removal.
  • Scenarios: Healthy, Early PD, Late PD via capacity scalars f_dop, f_ne.
  • Inputs: a no‑infusion function and a 0–30 min infusion (constant rate).

All baselines are set deterministically via steady‑state solves (fsolve).


2) Code structure

  • get_common_params(k0_func): Returns parameter dictionary and the L‑DOPA input k0.
  • model(t, y, p): ODEs for [C1, C2, C3, Cdop, Cne].
  • compute_initial(p): Solves steady states for DA and NE (no infusion) to set initial conditions.
  • tune(f_dop, target): Chooses IDA_endogenous so DA baseline equals the target value.
  • simulate(k0_func, f_dop, f_ne, target): Runs the ODE and returns (t, y) for plotting.

L‑DOPA inputs

def k0_inf(t):  # constant infusion during 0–30 min
    return 2.0 if t <= 30 else 0.0

def k0_zero(t):  # no infusion
    return 0.0

3) States and units

The state vector is y = [C1, C2, C3, Cdop, Cne]. Time is in minutes; concentrations are in µM (concentration‑equivalents under the chosen volumes/flows).

Symbol Description
C1 L‑DOPA in central/plasma
C2 L‑DOPA in peripheral/tissue
C3 L‑DOPA in brain/biophase
Cdop Dopamine (brain/biophase)
Cne Norepinephrine (brain/biophase)

Flows/clearances (Qij, CL_e*) and volumes (V*) are set so each ODE term has units of concentration/time. If you change units, maintain dimensional consistency.


4) Model equations

4.1 L‑DOPA PK (3‑compartment)

Let V1, V2, V3 be volumes; Q12, Q21, Q13 intercompartmental flows; CL_e1, CL_e3 eliminations.

$$\frac{dC_1}{dt} = \frac{k_0(t) + Q_{21}C_2 - (Q_{12} + CL_{e1} + Q_{13})C_1}{V_1}$$

$$\frac{dC_2}{dt} = \frac{Q_{12}C_1 - Q_{21}C_2}{V_2}$$

$$\frac{dC_3}{dt} = \frac{Q_{13}C_1 - CL_{e3}C_3}{V_3}$$

4.2 DA dynamics

  • Endogenous + L‑DOPA‑driven synthesis:
    $f_{\mathrm{dop}},(IDA_{\mathrm{endogenous}} + k_{3dop},C_3)$
  • Saturable reuptake (Michaelis–Menten):
    $$\mathrm{Reuptake} = \frac{V_{\max},C_{\mathrm{dop}}}{K_m + C_{\mathrm{dop}}}$$
  • First‑order removal:
    $k_{\mathrm{rem}},C_{\mathrm{dop}}$

Full DA ODE: $$\frac{dC_{\mathrm{dop}}}{dt} = f_{\mathrm{dop}}(IDA_{\mathrm{endogenous}} + k_{3dop},C_3) - f_{\mathrm{dop}}\cdot \mathrm{Reuptake} - k_{\mathrm{rem}},C_{\mathrm{dop}}$$

4.3 NE dynamics

  • Product inhibition on DA→NE:
    $$k_{db,\mathrm{eff}} = k_{db}\left(1 - \frac{C_{\mathrm{ne}}}{IC_{50} + C_{\mathrm{ne}}}\right)$$
  • First‑order removal:
    $k_{\mathrm{rene}},C_{\mathrm{ne}}$

Full NE ODE: $$\frac{dC_{\mathrm{ne}}}{dt} = f_{\mathrm{ne}},k_{db,\mathrm{eff}},C_{\mathrm{dop}} - k_{\mathrm{rene}},C_{\mathrm{ne}}$$

Scaling interpretation: f_dop scales DA synthetic/reuptake capacity; f_ne scales NE synthetic capacity. Removals are first‑order (capacity‑independent).


5) Baseline solves and initial conditions

5.1 DA baseline tuning

Given a target DA baseline (µM), IDA_endogenous is chosen so the steady‑state DA equation holds at rest (no infusion): $$0 = f_{\mathrm{dop}},IDA_{\mathrm{endogenous}} - f_{\mathrm{dop}}\frac{V_{\max},C_{\mathrm{dop}}}{K_m + C_{\mathrm{dop}}} - k_{\mathrm{rem}},C_{\mathrm{dop}}$$

5.2 NE baseline

With tuned $C_{\mathrm{dop},0}$, the NE steady state solves: $$0 = f_{\mathrm{ne}},k_{db,\mathrm{eff}}(C_{\mathrm{ne}}),C_{\mathrm{dop},0} - k_{\mathrm{rene}},C_{\mathrm{ne}} \quad\text{where}\quad k_{db,\mathrm{eff}}(C_{\mathrm{ne}})=k_{db}!\left(1-\frac{C_{\mathrm{ne}}}{IC_{50}+C_{\mathrm{ne}}}\right)$$

These steady states initialize the simulation.


6) Scenarios and simulation settings

baseline_params = {
    'Healthy': (1.0, 1.0, 0.015),
    'Early PD': (0.5, 0.5, 0.012),
    'Late PD': (0.1, 0.1, 0.005),
}
infuse_params = {
    'Early PD + L-DOPA': (0.5, 0.5, 0.012),
    'Late PD + L-DOPA': (0.1, 0.1, 0.005),
}
# tuples are (f_dop, f_ne, target_DA_baseline)
  • Baseline runs: k0_zero (no infusion).
  • Infusion runs: k0_inf (0–30 min constant rate).
  • Time grid: t = np.linspace(0, 300, 300) (minutes).

Plotting note: Baseline NE reference lines are drawn from the model‑computed steady state for each scenario.


7) How to run

Requirements

python>=3.9
numpy
scipy
matplotlib

Execute

Save your script (e.g., ne_model.py) and run:

python ne_model.py

Two figures will display (DA panels and NE panels). To save figures, call plt.savefig("figure_name.png", dpi=300) before plt.show().


8) Assumptions

  • PK is a reduced linear 3‑compartment model; BBB transport is lumped and not saturable.
  • DA reuptake is Michaelis–Menten; other DA losses are captured by a first‑order removal term.
  • NE synthesis is driven by DA with a single product inhibition; α2‑autoreceptors/firing are not modeled.
  • f_dop, f_ne are phenomenological capacity scalars affecting synthesis, not removals.
  • Single pooled “brain/biophase” compartments for DA and NE (no region specificity).

9) Default parameters (reference)

IDA_endogenous  # tuned per scenario
k3dop = 5.0
Vmax  = 4.0
km    = 0.16
krem  = 0.04
Cne0  = 0.002     # initial guess for NE steady state
kdb   = 0.05
krene = 0.04
IC50  = 0.0115
Q12=9.11, Q21=10.0, Q13=0.0021
CL_e1=0.50, CL_e3=0.006
V1=12.0, V2=32.0, V3=2.0

10) Quick checks

  • Lower f_dop → lower DA baseline and smaller DA transients to infusion.
  • Lower f_ne → lower NE baseline and response amplitude; removal kinetics unchanged (first‑order).
  • During infusion, DA rises first; NE follows with sublinear growth due to product inhibition.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages