From b5d6ad3a3a09e4359b8846c49fa27ad69bbdca50 Mon Sep 17 00:00:00 2001 From: ocrampal Date: Sun, 22 Mar 2026 12:24:12 +0100 Subject: [PATCH] aggiunto python program con approccio tradizionale, per prendere ispirazione per l'espressione G. --- .../synapse_simulation.png | Bin 0 -> 242766 bytes .../tripartite-new-1.py | 714 ++++++++++++++++++ .../traditional_python_models/tripartite.py | 493 ++++++++++++ .../tripartite_new.py | 648 ++++++++++++++++ 4 files changed, 1855 insertions(+) create mode 100644 neuron/appunti/traditional_python_models/synapse_simulation.png create mode 100644 neuron/appunti/traditional_python_models/tripartite-new-1.py create mode 100644 neuron/appunti/traditional_python_models/tripartite.py create mode 100644 neuron/appunti/traditional_python_models/tripartite_new.py diff --git a/neuron/appunti/traditional_python_models/synapse_simulation.png b/neuron/appunti/traditional_python_models/synapse_simulation.png new file mode 100644 index 0000000000000000000000000000000000000000..75385c4ab98f3f5beb731bb940746decc4183511 GIT binary patch literal 242766 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�Tu9I9g+10hp)!B~9pmCx*8hFz^S9!A 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 literal 0 HcmV?d00001 diff --git a/neuron/appunti/traditional_python_models/tripartite-new-1.py b/neuron/appunti/traditional_python_models/tripartite-new-1.py new file mode 100644 index 0000000..254fe55 --- /dev/null +++ b/neuron/appunti/traditional_python_models/tripartite-new-1.py @@ -0,0 +1,714 @@ +# Tripartite Synapse - Multi-Scale Computational Model +# ===================================================== +# Presynaptic perspective, with all missing behaviors integrated. +# +# Change log: +# ORIG - present from the original document +# NEW - added in the missing-behavior integration pass +# DET - this pass: deterministic Ca2+-driven vesicle release +# NKA - this pass: explicit Na/K-ATPase V_pre decay and ATP cost +# +# Clock structure: +# Loop 1 - dt = 1 ms (Ca2+, vesicle release, short-term traces) +# Loop 2 - dt = 1000 ms (astrocyte clearance, eCB, mGluR feedback) +# Loop 3 - dt = 60000 ms (glutamine shuttle, metabolic health) +# +# ======================================================================= +# METABOLIC SILENCING CASCADE - variable map +# ======================================================================= +# Each step of the cascade is tagged inline with [CASCADE n]. +# +# [CASCADE 1] HIGH FIRING RATE -> VESICLE DEPLETION (fast, ~seconds) +# Driver : spike_train density -> released_NT per ms +# Victim : N_RRP, N_RP +# Bottleneck : RP->RRP recruitment cannot keep up at high rates. +# Outcome : N_RRP -> 0, released_NT -> 0, NT_cleft collapses. +# +# [CASCADE 2] HIGH FIRING RATE -> ATP DEPLETION (slow, ~minutes) +# Driver : Na/K-ATPase recharge cost per AP (NKA_cost_per_AP) +# + PMCA/SERCA pump load + vesicle re-docking +# Victim : ATP_demand accumulator -> ATP_level +# Bottleneck : Glucose_level sets replenishment ceiling. +# Outcome : ATP_level < 1, pump_scale < 1. +# +# [CASCADE 3] LOW ATP -> PUMP FAILURE (PMCA / SERCA slow) +# Driver : pump_scale = Hill(ATP_level) +# Victim : cleared_PMCA, cleared_SERCA +# Outcome : total Ca2+ clearance rate drops. +# +# [CASCADE 4] PUMP FAILURE -> RESIDUAL Ca2+ STAYS HIGH +# Driver : reduced clearance + saturated buffer +# Victim : Ca_micro +# Outcome : Ca_micro persists between spikes. +# +# [CASCADE 5] RESIDUAL Ca2+ -> CDI STAYS ACTIVE (VGCCs lock shut) +# Driver : Ca_micro > 0 between spikes +# Victim : CDI_factor +# Outcome : CDI_factor -> 1, effective_conductance -> 0. +# +# [CASCADE 6] RESULT - SYNAPSE SILENCES (excitotoxicity protection) +# Driver : CDI_factor ~= 1 +# Mechanism : effective_conductance = N_VGCC +# * (1 - eCB_level) +# * (1 - CDI_factor) +# * (1 - mGluR*alpha_mGluR) +# -> raw_influx ~= 0 -> no release. +# Auto-reset : NCX keeps clearing; CDI recovers once drive stops. +# ======================================================================= + +import numpy as np + +# ----------------------------------------------------------------------- +# PARAMETERS +# ----------------------------------------------------------------------- + +dt = 1.0 # ms - high-freq timestep +dt_slow = 1000.0 # ms - astrocyte / slow loop timestep +dt_meta = 60_000.0 # ms - metabolic loop timestep + +High_Freq_Multiplier = int(dt_slow / dt) # 1000 +Metabolic_Multiplier = int(dt_meta / dt) # 60000 + +# Unit-conversion scalar: biological rate constants in /s, timestep in ms. +# increment = k [/s] * signal * dt_s [s/step] -> dimensionless per step +dt_s = dt / 1000.0 # 0.001 s per 1 ms step + +# ----------------------------------------------------------------------- +# -- Voltage / membrane (NKA) -- +# ----------------------------------------------------------------------- +tau_V_pre = 2.0 # NKA: ms - membrane repolarisation time constant after AP + # The AP waveform decays with this time constant. + # Controls how long Ca2+ channels see a depolarised membrane. +V_pre_peak = 1.0 # NKA: normalised peak depolarisation on each AP (dimensionless) +V_rest = 0.0 # NKA: resting membrane potential (normalised) +V_pre_voltage = -10.0 # ORIG: driving force used in compute_flux (mV, kept for continuity) + +# Na/K-ATPase ATP cost +NKA_cost_per_AP = 0.002 # NKA: ATP units consumed per AP for Na/K-ATPase recharge. + # This is the largest single ATP cost per spike. + # [CASCADE 2] Accumulates in ATP_demand each time V_pre = 1; + # at 20 Hz that is 0.002 * 20 = 0.04 ATP units/s, + # dominating pump and docking costs at high rates. + +# ----------------------------------------------------------------------- +# -- Calcium influx & buffering -- +# ----------------------------------------------------------------------- +N_VGCC = 100 # ORIG: number of presynaptic VGCCs + # [CASCADE 6] Absolute ceiling of Ca2+ influx. +k_flux = 0.05 # ORIG: Ca2+ influx per open channel per unit driving force (a.u.) + +B_total = 1.0 # ORIG: total buffer capacity (normalised) + # [CASCADE 4] Saturates during bursting; B_free -> 0. +tau_buffer_rebind = 200.0 # NEW: ms - buffer recharge time constant + +# ----------------------------------------------------------------------- +# -- Ca2+ clearance rate constants (/ms, already per-millisecond) -- +# ----------------------------------------------------------------------- +# [CASCADE 3] All three define maximum clearance; PMCA and SERCA are ATP-gated. +k_PMCA = 0.03 # NEW: plasma membrane Ca-ATPase - primary, ATP-dependent +k_NCX = 0.10 # NEW: sodium-calcium exchanger - fast, NOT ATP-dependent +k_SERCA = 0.01 # NEW: ER pump - slowest, ATP-dependent +ATP_half = 0.3 # NEW: Hill half-saturation for ATP-dependent pumps + +# ATP cost of pumping (per unit Ca2+ cleared per ms) +ATP_cost_PMCA = 0.0005 # NKA: ATP units per unit Ca2+ extruded by PMCA per ms + # [CASCADE 2] Second-largest ongoing ATP drain after NKA. +ATP_cost_SERCA = 0.0002 # NKA: ATP units per unit Ca2+ pumped into ER per ms + +# ----------------------------------------------------------------------- +# -- Deterministic vesicle release (replaces stochastic_release) -- +# ----------------------------------------------------------------------- +# The Ca2+-sensor model (synaptotagmin cooperativity): +# +# release_fraction = k_rel * Ca_micro^n / (Ca_micro^n + KD_rel^n) +# * (1 - NT_suppression_weight * NT_cleft_norm) +# +# Term 1 - Hill equation: +# k_rel : maximum fraction of RRP releasable per spike (saturation ceiling) +# KD_rel : [Ca2+] at half-maximum release (half-saturation constant) +# n_rel : Hill cooperativity exponent (~4 for synaptotagmin-1) +# +# Term 2 - NT suppression modulation: +# NT_suppression_weight : how strongly accumulated cleft NT reduces the +# releasable fraction (autoreceptor-independent brake, +# represents physical occlusion of release sites and +# depletion-sensing). +# NT_cleft_norm : NT_cleft normalised to NT_suppression_sat (0 -> 1). +# +# The product is clamped to [0, 1] before multiplying by N_RRP, +# so released_NT is always a real non-negative number <= N_RRP. + +k_rel = 0.5 # DET: max releasable fraction of RRP per spike (0->1) + # Lower = more reluctant synapse at any [Ca2+]. +KD_rel = 1.0 # DET: half-saturation [Ca2+] (same a.u. as Ca_micro) + # Higher KD = release only at high [Ca2+] peaks. +n_rel = 4 # DET: Hill exponent - cooperativity of Ca2+ sensor + # n=4 matches synaptotagmin-1 (four C2 domain sites). + # Higher n = sharper threshold, more digital release. +NT_suppression_weight = 0.3 # DET: strength of NT_cleft feedback on release fraction + # 0 = no suppression; 1 = full block at saturation. +NT_suppression_sat = 50.0 # DET: NT_cleft level that saturates the suppression term + # (same units as NT_cleft vesicle count) +ATP_cost_docking = 0.001 # NKA: ATP units per vesicle docked (RP -> RRP per step) + # [CASCADE 2] Docking is ATP-dependent (NSF/SNAPs); + # adds to ATP_demand proportionally to refill_amount. + +# ----------------------------------------------------------------------- +# -- CDI (calcium-dependent inactivation) -- +# ----------------------------------------------------------------------- +k_CDI_rise = 0.8 # ORIG: CDI build rate (/s per unit Ca_micro) +Ca_micro_saturation = 2.0 # NEW: normalisation ceiling for CDI recovery +k_CDI_rec = 0.015 # NEW: CDI de-inactivation rate (/s) + # Both expressed in /s; applied with * dt_s in the loop. + +# ----------------------------------------------------------------------- +# -- Vesicle pools -- +# ----------------------------------------------------------------------- +Max_RRP = 20 # ORIG: [CASCADE 1] ceiling of the firing-ready pool +Max_RP = 200 # ORIG: [CASCADE 1] ceiling of the reserve pool + +# ----------------------------------------------------------------------- +# -- Trace integrator (RP->RRP recruitment speed) -- +# ----------------------------------------------------------------------- +tau_Tr_Ca = 1000.0 # ORIG: ms - calcium trace decay +T_high = 0.6 # ORIG: trace threshold -> fast recruitment +T_low = 0.2 # ORIG: trace threshold -> slow recruitment +k_rec_fast = 5.0 # /s — fast RP->RRP recruitment rate + # At high Tr_Ca: refills ~5% of headroom per second. + # Full RRP recovery from empty takes ~4-5 s of sustained activity. +k_rec_slow = 0.5 # /s — slow RP->RRP recruitment rate + # At low Tr_Ca: refills ~0.5% of headroom per second. + # Matches the ~30-60 s recovery seen after deep depletion. + +dt_slow_s = dt_slow / 1000.0 # 1.0 s — the slow loop timestep in seconds + +# ----------------------------------------------------------------------- +# -- Postsynaptic -- +# ----------------------------------------------------------------------- +tau_membrane = 20.0 # ORIG: ms +tau_desensitization = 500.0 # ORIG: ms + +# ----------------------------------------------------------------------- +# -- eCB retrograde brake -- +# ----------------------------------------------------------------------- +# [CASCADE 6] Slow retrograde suppressor of effective_conductance. +tau_eCB_rise = 2000.0 # ORIG: ms +tau_eCB_decay = 10_000.0 # ORIG: ms +eCB_threshold = 0.7 # ORIG: V_post level that triggers eCB synthesis + +# ----------------------------------------------------------------------- +# -- mGluR presynaptic autoreceptor -- +# ----------------------------------------------------------------------- +# [CASCADE 6] Fastest conductance brake; reads NT_cleft directly. +Km_mGluR = 0.5 # NEW: Michaelis-Menten half-saturation for NT_cleft +tau_mGluR = 2000.0 # NEW: ms +alpha_mGluR = 0.4 # NEW: max fractional VGCC suppression + +# ----------------------------------------------------------------------- +# -- Astrocyte / IP3 -- +# ----------------------------------------------------------------------- +tau_IP3 = 3000.0 # ORIG: ms +IP3_threshold = 0.8 # ORIG + +# ----------------------------------------------------------------------- +# -- Glutamine shuttle -- +# ----------------------------------------------------------------------- +conversion_efficiency_base = 0.8 # ORIG: fraction of Gln pool converted per cycle + +# ----------------------------------------------------------------------- +# -- NT cleft -- +# ----------------------------------------------------------------------- +tau_NT_decay = 5.0 # ms - passive NT diffusion / dilution out of cleft + + +# ----------------------------------------------------------------------- +# HELPER FUNCTIONS +# ----------------------------------------------------------------------- + +def compute_flux(conductance, voltage): + # ORIG: Ca2+ influx into microdomain. + # [CASCADE 4] Collapses to near zero once CASCADE 6 locks conductance. + return k_flux * conductance * abs(voltage) + + +def deterministic_release(N_RRP, Ca_micro, NT_cleft): + # DET: Deterministic Ca2+-driven vesicle release. + # + # Replaces stochastic_release (binomial with p = p_base * Ca_micro). + # + # Biology: synaptotagmin-1 is the fast Ca2+ sensor. Its four C2-domain + # Ca2+-binding sites give steep, cooperative Ca2+ sensitivity (Hill n~4). + # Release is not random per vesicle but is driven by the microdomain [Ca2+] + # that the sensor actually sees. At low [Ca2+] essentially no vesicles fuse; + # at high [Ca2+] a saturating fraction fuses within the AP window. + # + # Step 1: Hill equation gives Ca2+-dependent release fraction (0 -> k_rel). + Ca_n = Ca_micro ** n_rel + release_frac = k_rel * Ca_n / (Ca_n + KD_rel ** n_rel) + # + # Step 2: NT suppression modulation (0 -> 1, then inverted). + # Accumulated NT_cleft represents: (a) depletion sensing via presynaptic + # autoreceptors that are faster than the mGluR loop, and (b) physical + # competition for release site access at the active zone. + # This is distinct from the mGluR brake which reduces VGCC conductance; + # this term reduces the fraction of already-docked vesicles that fuse. + NT_norm = min(1.0, NT_cleft / NT_suppression_sat) + suppression = NT_suppression_weight * NT_norm + release_frac = release_frac * (1.0 - suppression) + release_frac = np.clip(release_frac, 0.0, 1.0) + # + # Step 3: Apply to pool size and floor at zero. + released = release_frac * N_RRP + return max(0.0, released) + + +def map_trace_to_speed(Tr_Ca): + # ORIG: Maps calcium trace to RP->RRP recruitment rate. + # [CASCADE 1] k_rec_fast lags release at high firing; collapse is + # self-accelerating as N_RP and headroom both shrink. + if Tr_Ca > T_high: + return k_rec_fast + elif Tr_Ca < T_low: + return k_rec_slow + else: + t = (Tr_Ca - T_low) / (T_high - T_low) + return k_rec_slow + t * (k_rec_fast - k_rec_slow) + + +def map_calcium_to_inactivation(Ca_micro): + # ORIG: Ca2+ drives CDI increment each ms. + # k_CDI_rise is /s; * dt_s gives dimensionless per-step increment. + # [CASCADE 5] Accumulates between spikes under pump failure. + return k_CDI_rise * Ca_micro * dt_s + + +def compute_pump_atp_factor(ATP_level): + # NEW: Hill function - ATP gates PMCA and SERCA speed. + # [CASCADE 3] Bridge from ATP_level (Loop 3) to clearance rate (Loop 1). + # ATP=1.0 -> ~0.92 (near full) | ATP=0.3 -> 0.50 | ATP=0.1 -> ~0.10 + return (ATP_level ** 2) / (ATP_level ** 2 + ATP_half ** 2) + + +def compute_EPSP(receptor_conductance): + # ORIG: postsynaptic potential increment. + return receptor_conductance * 0.1 + + +def compute_postsynaptic_eCB_signal(V_post_history): + # ORIG: eCB synthesis from sustained postsynaptic activity. + # [CASCADE 6] Slow retrograde brake; persists 10 s after burst ends. + recent_mean = (np.mean(V_post_history[-2000:]) + if len(V_post_history) >= 2000 + else np.mean(V_post_history)) + if recent_mean > eCB_threshold: + return recent_mean - eCB_threshold + return 0.0 + + +def compute_astrocyte_metabolic_health(Glucose_level, ATP_demand_accumulated): + # ORIG + NKA: Converts Glucose_level and accumulated ATP demand into: + # ATP_level -> [CASCADE 2->3 bridge] read every ms in Loop 1 + # conversion_efficiency -> [CASCADE 1] gates glutamine shuttle throughput + # + # NKA change: ATP_demand_accumulated (summed in Loop 1 each ms) is now + # subtracted from health before clamping, so high firing rates visibly + # reduce ATP_level within the same metabolic window. + # The demand term is normalised by a scale factor so that a physiological + # 20 Hz burst causes a ~20% ATP drop over one minute. + ATP_demand_scale = 50.0 # normalisation: demand at 20 Hz over 60 s ~ 1.0 + health = np.clip(Glucose_level - ATP_demand_accumulated / ATP_demand_scale, + 0.0, 1.0) + return health, health # (conversion_efficiency, ATP_level) + + +def trigger_slow_astrocyte_calcium_wave(): + # ORIG: placeholder - would release gliotransmitters over ~10 s. + pass + + +# ----------------------------------------------------------------------- +# STATE VARIABLES (initial values) +# ----------------------------------------------------------------------- + +# -- Voltage / membrane -- +V_pre_state = 0.0 # NKA: continuous membrane potential (0=rest, 1=peak AP) + # Decays with tau_V_pre after each spike. + # Controls the effective driving window for Ca2+ influx. + +# -- Presynaptic Ca2+ -- +Ca_micro = 0.0 # ORIG: free cytosolic [Ca2+] in microdomain [CASCADE 4] +Ca_ER = 0.5 # NEW: Ca2+ stored in ER +Ca_buffer_bound = 0.0 # NEW: Ca2+ bound to buffer proteins +B_free = 1.0 # NEW: free buffer sites [CASCADE 4] + +# -- CDI -- +CDI_factor = 0.0 # ORIG [CASCADE 5,6] + +# -- Vesicle pools -- +N_RRP = 15.0 # ORIG: readily-releasable pool [CASCADE 1] (float for deterministic) +N_RP = 150.0 # ORIG: reserve pool [CASCADE 1] + +# -- Calcium trace -- +Tr_Ca = 0.0 # ORIG: integrative Ca2+ memory + +# -- NT in cleft -- +NT_cleft = 0.0 # ORIG [CASCADE 6] + +# -- Postsynaptic -- +V_post = 0.0 +receptor_conductance = 0.0 +Desensitization_level = 0.0 +V_post_history = [] + +# -- Retrograde / autoreceptor -- +eCB_level = 0.0 # ORIG [CASCADE 6] +mGluR_activation = 0.0 # NEW [CASCADE 6] + +# -- Astrocyte -- +IP3 = 0.0 +Glutamine_pool = 50.0 + +# -- Metabolic -- +ATP_level = 1.0 # NEW [CASCADE 2->3] +ATP_demand = 0.0 # NKA: accumulated ATP demand within current metabolic window +conversion_efficiency = 0.8 # ORIG +Glucose_level = 1.0 # ORIG: set < 1.0 to engage metabolic silencing cascade + + +# ----------------------------------------------------------------------- +# MAIN SIMULATION LOOP +# ----------------------------------------------------------------------- + +def run_simulation(spike_train, total_steps): + """ + spike_train : list of int timestep indices at which an AP arrives + total_steps : int number of 1 ms steps to simulate + """ + + global V_pre_state + global Ca_micro, Ca_ER, Ca_buffer_bound, B_free + global CDI_factor + global N_RRP, N_RP + global Tr_Ca, NT_cleft + global V_post, receptor_conductance, Desensitization_level, V_post_history + global eCB_level, mGluR_activation + global IP3, Glutamine_pool + global ATP_level, ATP_demand, conversion_efficiency, Glucose_level + + log = {k: [] for k in [ + "V_pre_state", + "Ca_micro", "Ca_ER", "CDI_factor", "B_free", + "N_RRP", "N_RP", "Tr_Ca", "NT_cleft", + "V_post", "eCB_level", "mGluR_activation", + "released_NT", "ATP_level", "ATP_demand", + ]} + + spike_set = set(spike_train) + + for step in range(total_steps): + + # ============================================================== + # LOOP 1 - HIGH-FREQUENCY (dt = 1 ms) + # ============================================================== + + V_pre = 1 if step in spike_set else 0 + released_NT = 0.0 + + # -- 1A. MEMBRANE VOLTAGE / Na-K-ATPase ------------------------ + # + # NKA: V_pre_state is now a continuous variable. + # On each AP it jumps to V_pre_peak, then decays exponentially + # toward V_rest with time constant tau_V_pre (~2 ms). + # This models the width of the depolarisation window that keeps + # VGCCs open after the peak, giving Ca2+ influx a temporal profile + # rather than a single instantaneous pulse. + if V_pre == 1: + V_pre_state = V_pre_peak # AP fires: membrane jumps to peak + + # Exponential decay toward rest (Na/K-ATPase restores the gradient) + V_pre_state += (V_rest - V_pre_state) * dt / tau_V_pre + + # NKA: ATP cost of Na/K-ATPase recharge on each AP. + # Fired once per spike, not per ms — the cost is per action potential. + # [CASCADE 2] This is the dominant ATP drain at high firing rates. + if V_pre == 1: + ATP_demand += NKA_cost_per_AP + + # -- 1B. PRESYNAPTIC Ca2+ INFLUX & VESICLE RELEASE ------------- + # + # Ca2+ influx now uses V_pre_state (the continuous voltage) instead + # of the binary V_pre flag, so influx has the same temporal profile + # as the depolarisation window and tapers as the membrane repolarises. + # [CASCADE 6] OUTCOME: effective_conductance collapses when any of + # the three suppression terms approaches 1. + effective_conductance = ( + N_VGCC + * (1.0 - eCB_level) # [CASCADE 6] retrograde brake + * (1.0 - CDI_factor) # [CASCADE 5->6] CDI lock-out + * (1.0 - mGluR_activation * alpha_mGluR) # [CASCADE 6] autoreceptor brake + ) + + # Ca2+ influx is gated by V_pre_state: significant only while the + # membrane is depolarised; tapers to zero as V_pre_state -> V_rest. + raw_influx = compute_flux(effective_conductance, V_pre_state) + + # NEW: Buffer proteins capture a fraction of raw_influx immediately. + # [CASCADE 4] B_free -> 0 during sustained bursting (saturation). + capture_fraction = B_free / B_total + captured = raw_influx * capture_fraction + B_free = max(0.0, B_free - captured) + Ca_buffer_bound += captured + Ca_micro += (raw_influx - captured) + + # DET: Deterministic Ca2+-driven vesicle release. + # Released on every ms that Ca_micro > 0 (not only on the spike flag), + # giving a smooth release profile that follows the Ca2+ transient. + # This is more physically accurate than gating release on V_pre == 1: + # in biology, vesicles fuse throughout the Ca2+ microdomain lifetime + # (~1-2 ms), not only at the exact moment of depolarisation. + # [CASCADE 1] released_NT draws from N_RRP; the Ca2+ and NT_cleft + # dependence means release self-limits as both Ca_micro + # falls (clearance) and NT_cleft rises (suppression). + if N_RRP > 0 and Ca_micro > 0: + released_NT = deterministic_release(N_RRP, Ca_micro, NT_cleft) + released_NT = min(released_NT, N_RP) + N_RRP -= released_NT + NT_cleft += released_NT + NT_released_this_window += released_NT # NEW: accumulator for Loop 2 + + # Passive diffusion — this is fine as-is, represents lateral escape + NT_cleft *= (1.0 - dt / tau_NT_decay) + NT_cleft = max(0.0, NT_cleft) + + # -- 1C. Ca2+ CLEARANCE (every ms) ---------------------------- + # + # [CASCADE 3] pump_scale: ATP bridge from Loop 3 to clearance. + pump_scale = compute_pump_atp_factor(ATP_level) + + # [CASCADE 3->4] PMCA: primary, ATP-dependent. + cleared_PMCA = k_PMCA * Ca_micro * pump_scale + # [CASCADE 3 note] NCX: fast, NOT ATP-dependent. Floor, not rescue. + cleared_NCX = k_NCX * Ca_micro + # [CASCADE 3->4] SERCA: slowest, ATP-dependent. + cleared_SERCA = k_SERCA * Ca_micro * pump_scale + + Ca_micro -= (cleared_PMCA + cleared_NCX + cleared_SERCA) + Ca_micro = max(0.0, Ca_micro) + + Ca_ER += cleared_SERCA # ER store loaded while ATP is available + + # NKA: ATP cost of PMCA and SERCA clearing Ca2+ this step. + # [CASCADE 2] Ongoing drain proportional to Ca2+ load; highest + # during the early burst when Ca_micro peaks. + ATP_demand += ATP_cost_PMCA * cleared_PMCA + ATP_demand += ATP_cost_SERCA * cleared_SERCA + + # NEW: Buffer recharge - bound Ca2+ slowly re-releases to cytosol. + # [CASCADE 4] Sustains Ca_micro elevation during pump failure. + rebind_flux = Ca_buffer_bound * dt / tau_buffer_rebind + Ca_micro += rebind_flux + Ca_buffer_bound = max(0.0, Ca_buffer_bound - rebind_flux) + B_free = B_total - Ca_buffer_bound + + # -- 1D. CDI - RISE AND RECOVERY -------------------------------- + # + # [CASCADE 5] Rise: proportional to Ca_micro, fires every ms. + CDI_factor += map_calcium_to_inactivation(Ca_micro) + # [CASCADE 5] Recovery: suppressed when Ca_micro is high. + # Self-locking: pump failure -> Ca_micro high -> + # recovery_rate -> 0 -> CDI_factor -> 1 -> silence. + CDI_recovery_rate = k_CDI_rec * (1.0 - Ca_micro / Ca_micro_saturation) + CDI_factor = np.clip(CDI_factor - CDI_recovery_rate * dt_s, 0.0, 1.0) + + # -- 1E. TRACE INTEGRATOR ------------------------------------- + # ORIG: integrates Ca_micro; drives RP->RRP recruitment speed. + Tr_Ca = Tr_Ca + (Ca_micro - Tr_Ca / tau_Tr_Ca) * dt + + # -- 1G. POSTSYNAPTIC FAST RESPONSE --------------------------- + # ORIG: receptor activation and desensitization. + effective_NT = released_NT * (1.0 - Desensitization_level) + receptor_conductance += effective_NT * 0.05 + receptor_conductance *= (1.0 - dt / tau_membrane) + + V_post += compute_EPSP(receptor_conductance) - (V_post / tau_membrane) * dt + V_post = max(0.0, V_post) + + Desensitization_level += NT_cleft * 0.001 * dt + Desensitization_level -= (Desensitization_level / tau_desensitization) * dt + Desensitization_level = np.clip(Desensitization_level, 0.0, 1.0) + + # ORIG: NT diffuses / dilutes out of cleft each ms. + NT_cleft *= (1.0 - dt / tau_NT_decay) + NT_cleft = max(0.0, NT_cleft) + + V_post_history.append(V_post) + if len(V_post_history) > 5000: + V_post_history.pop(0) + + # -- RECORD --------------------------------------------------- + log["V_pre_state"].append(V_pre_state) + log["Ca_micro"].append(Ca_micro) + log["Ca_ER"].append(Ca_ER) + log["CDI_factor"].append(CDI_factor) + log["B_free"].append(B_free) + log["N_RRP"].append(N_RRP) + log["N_RP"].append(N_RP) + log["Tr_Ca"].append(Tr_Ca) + log["NT_cleft"].append(NT_cleft) + log["V_post"].append(V_post) + log["eCB_level"].append(eCB_level) + log["mGluR_activation"].append(mGluR_activation) + log["released_NT"].append(released_NT) + log["ATP_level"].append(ATP_level) + log["ATP_demand"].append(ATP_demand) + + # ============================================================== + # LOOP 2 - SLOW / ASTROCYTE (dt_slow = 1 s) + # ============================================================== + + if (step % High_Freq_Multiplier) == 0: + + # EAAT clearance: a fraction of what remains in the cleft + # (this is now meaningful because diffusion hasn't zeroed it yet + # at realistic tau_NT_decay values — but we also fix IP3 sourcing) + cleared_NT = NT_cleft * 0.3 + NT_cleft = max(0.0, NT_cleft - cleared_NT) + + # IP3 integrates total release load, not post-diffusion residual. + # This correctly represents the astrocyte sensing cumulative activity. + IP3 += NT_released_this_window - (IP3 / tau_IP3) * dt_slow + IP3 = max(0.0, IP3) + NT_released_this_window = 0.0 # reset accumulator for next window + + if IP3 > IP3_threshold: + trigger_slow_astrocyte_calcium_wave() + + # ORIG: eCB retrograde signal. + # [CASCADE 6] Second conductance brake (~2 s onset, 10 s decay). + eCB_signal = compute_postsynaptic_eCB_signal(V_post_history) + if eCB_signal > 0: + eCB_level += eCB_signal * (dt_slow / tau_eCB_rise) + else: + eCB_level -= eCB_level * (dt_slow / tau_eCB_decay) + eCB_level = np.clip(eCB_level, 0.0, 1.0) + + + + + # ── LOOP 2 — SLOW / ASTROCYTE (dt_slow = 1 s) ────────────────────── + + # -- RP -> RRP RECRUITMENT (with pool guards) -------------------- + # Runs once per second. k_rec_fast and k_rec_slow are in /s, + # so multiplying by dt_slow_s = 1.0 s gives a dimensionless + # per-step fraction — no hidden unit scaling needed. + # + # [CASCADE 1] Recruitment is the only counter-force to depletion. + # Even k_rec_fast fills only ~5% of headroom per second, + # lagging well behind release at high firing rates. + current_recruitment_rate = map_trace_to_speed(Tr_Ca) # /s + refill_amount = current_recruitment_rate * dt_slow_s * N_RP * (Max_RRP - N_RRP) / Max_RRP + refill_amount = max(0.0, refill_amount) + refill_amount = min(refill_amount, N_RP) + + N_RRP = min(N_RRP + refill_amount, Max_RRP) + N_RP = max(0.0, N_RP - refill_amount) + + # ATP cost of docking moves here too — it is per recruitment event, + # not per millisecond. + ATP_demand += ATP_cost_docking * refill_amount + + # ============================================================== + # LOOP 3 - METABOLIC (dt_meta = 1 min) + # ============================================================== + + if (step % Metabolic_Multiplier) == 0: + + # NKA + ORIG: ATP_level is now driven by both Glucose_level + # (supply) and ATP_demand (demand accumulated over this window). + # [CASCADE 2] ATP_demand encodes all three cost sources: + # NKA_cost_per_AP - dominant at high firing rates + # ATP_cost_PMCA/SERCA - proportional to Ca2+ load + # ATP_cost_docking - proportional to recruitment rate + conversion_efficiency, ATP_level = compute_astrocyte_metabolic_health( + Glucose_level, ATP_demand + ) + + # Reset demand accumulator for the next metabolic window. + ATP_demand = 0.0 + + # [CASCADE 1 - slow refill] Glutamine shuttle rebuilds N_RP. + refill_RP = Glutamine_pool * conversion_efficiency + N_RP = min(Max_RP, N_RP + refill_RP) + Glutamine_pool = max(0.0, Glutamine_pool - refill_RP) + + return log + + +# ----------------------------------------------------------------------- +# EXAMPLE USAGE +# ----------------------------------------------------------------------- + +if __name__ == "__main__": + import matplotlib.pyplot as plt + + total_steps = 10_000 # 10 seconds of simulated time + + # 20 Hz burst for 2 s, then silence. + # Set Glucose_level = 0.2 to engage the full metabolic cascade. + spike_train = list(range(0, 2000, 50)) + + results = run_simulation(spike_train, total_steps) + + t = np.arange(total_steps) * dt + + fig, axes = plt.subplots(7, 1, figsize=(12, 16), sharex=True) + fig.suptitle("Tripartite Synapse - Presynaptic Model", fontsize=13) + + axes[0].plot(t, results["V_pre_state"], color="slateblue", lw=0.8) + axes[0].set_ylabel("V_pre (a.u.)") + axes[0].set_title("NKA - membrane repolarises with tau_V_pre after each AP", + fontsize=9, loc="left") + + axes[1].plot(t, results["Ca_micro"], color="darkorange", lw=0.8) + axes[1].set_ylabel("[Ca2+] free (a.u.)") + axes[1].set_title("CASCADE 4 - residual Ca2+ profile follows V_pre decay", + fontsize=9, loc="left") + + axes[2].plot(t, results["CDI_factor"], color="firebrick", lw=0.8, label="CDI factor") + axes[2].plot(t, results["B_free"], color="steelblue", lw=0.8, label="Buffer free") + axes[2].set_ylabel("CDI / Buffer (0-1)") + axes[2].set_title("CASCADE 5 - CDI lock-out | CASCADE 4 - buffer saturation", + fontsize=9, loc="left") + axes[2].legend(fontsize=8) + + axes[3].plot(t, results["N_RRP"], color="teal", lw=0.8, label="RRP") + axes[3].plot(t, results["N_RP"], color="purple", lw=0.8, label="RP") + axes[3].set_ylabel("Vesicles") + axes[3].set_title("CASCADE 1 - deterministic depletion (Hill Ca2+ sensor + NT suppression)", + fontsize=9, loc="left") + axes[3].legend(fontsize=8) + + axes[4].plot(t, results["NT_cleft"], color="darkgreen", lw=0.8, label="NT cleft") + axes[4].plot(t, results["mGluR_activation"], color="saddlebrown", lw=0.8, label="mGluR") + axes[4].plot(t, results["eCB_level"], color="crimson", lw=0.8, label="eCB") + axes[4].set_ylabel("Cleft / Feedback") + axes[4].set_title("CASCADE 6 - three multiplicative brakes on effective_conductance", + fontsize=9, loc="left") + axes[4].legend(fontsize=8) + + axes[5].plot(t, results["V_post"], color="navy", lw=0.8) + axes[5].set_ylabel("V_post (a.u.)") + axes[5].set_title("CASCADE 6 result - postsynaptic silence", fontsize=9, loc="left") + + axes[6].plot(t, results["ATP_level"], color="goldenrod", lw=0.8, label="ATP level") + axes[6].plot(t, results["ATP_demand"], color="tomato", lw=0.8, label="ATP demand (cumul.)") + axes[6].set_ylabel("ATP (a.u.)") + axes[6].set_title("CASCADE 2 - NKA + pump + docking demand drives ATP depletion", + fontsize=9, loc="left") + axes[6].set_xlabel("Time (ms)") + axes[6].legend(fontsize=8) + + plt.tight_layout() + plt.savefig("./synapse_simulation.png", dpi=150) + plt.close() + print("Done.") \ No newline at end of file diff --git a/neuron/appunti/traditional_python_models/tripartite.py b/neuron/appunti/traditional_python_models/tripartite.py new file mode 100644 index 0000000..a618d33 --- /dev/null +++ b/neuron/appunti/traditional_python_models/tripartite.py @@ -0,0 +1,493 @@ +import numpy as np +import matplotlib as plt +import matplotlib.pyplot as plt # <-- this is essential +plt.rcdefaults() # Restore default rc parameters + +# ============================================================================ +# TRIPARTITE SYNAPSE MODEL +# ============================================================================ +# This code simulates a single synapse with presynapse, postsynapse, and astrocyte. +# Timescales range from milliseconds (AP, Ca2+ influx) to minutes (vesicle replenishment, +# astrocyte Ca2+ waves, synaptic weight changes). +# +# Units: +# - Time: seconds (s) or milliseconds (ms) as noted. Internal time step is in seconds. +# - Concentrations: micromolar (µM) +# - Vesicle pools: number of vesicles (can be fractional) +# - Conductances: nanosiemens (nS) +# - Membrane potential: millivolts (mV) +# ============================================================================ + +# ---------------------------------------------------------------------------- +# Presynapse Class +# ---------------------------------------------------------------------------- +class Presynapse: + """ + Models the presynaptic terminal. + State variables: + Cf (float): fast calcium concentration (µM) + Cs (float): slow calcium concentration (µM) + R (float): vesicles in Readily Releasable Pool (RRP) + P (float): vesicles in Reserve Pool (RP) + N_VGCC (int): number of functional VGCCs (can be modulated by astrocyte) + release_prob (float): probability of vesicle fusion per AP (computed) + NT_released (float): amount of neurotransmitter ejected (arbitrary units) + """ + def __init__(self, params): + self.p = params # store parameters + # Initial states + self.Cf = 0.0 + self.Cs = 0.0 + self.R = self.p['R_max'] # start with full RRP + self.P = self.p['P_max'] # start with full RP + self.N_VGCC = self.p['N_VGCC0'] # baseline VGCC number + self.release_prob = 0.0 + self.NT_released = 0.0 + + def ap_event(self): + """ + Called when an action potential arrives. + Increases calcium (fast and slow components) based on available VGCCs. + Triggers vesicle release and updates pools. + """ + # 1. Calcium influx (instantaneous jump) + self.Cf += self.p['alpha'] * self.N_VGCC + self.Cs += self.p['beta'] * self.N_VGCC # small slow component + + # 2. Compute release probability (Hill function of total calcium) + C_tot = self.Cf + self.Cs + self.release_prob = self.p['p_max'] * (C_tot**self.p['n_Hill']) / \ + (C_tot**self.p['n_Hill'] + self.p['Kd']**self.p['n_Hill']) + + # 3. Vesicles released from RRP + released = self.R * self.release_prob + self.NT_released = self.p['gamma'] * released + self.R -= released + + # Ensure pools don't go negative (shouldn't happen if dt small) + self.R = max(self.R, 0) + + def step(self, dt): + """ + Update presynaptic states between APs. + - Calcium decay (fast and slow) + - Vesicle mobilization (RP -> RRP) depending on calcium trace + - RP replenishment from an infinite source + """ + # Total calcium for trace classification + C_tot = self.Cf + self.Cs + + # 1. Calcium decay (first order) + self.Cf -= dt * (self.Cf / self.p['tau_f']) + self.Cs -= dt * (self.Cs / self.p['tau_s']) + + # 2. Vesicle mobilization rate based on calcium trace + if C_tot < self.p['theta_low']: + k_mob = self.p['k_slow'] + elif C_tot < self.p['theta_high']: + k_mob = self.p['k_med'] + else: + k_mob = self.p['k_fast'] + + # Move vesicles from RP to RRP + move = k_mob * self.P * dt + self.R += move + self.P -= move + + # 3. RP replenishment (slow refilling) + replenish = self.p['k_rep'] * (self.p['P_max'] - self.P) * dt + self.P += replenish + + # Optional: keep pools within bounds + self.R = min(self.R, self.p['R_max']) + self.P = min(self.P, self.p['P_max']) + self.P = max(self.P, 0) + + def set_vgcc_modulation(self, factor): + """ + Allow astrocyte to modulate VGCC availability. + factor: multiplier (0..1) applied to baseline N_VGCC. + """ + self.N_VGCC = self.p['N_VGCC0'] * factor + + +# ---------------------------------------------------------------------------- +# Postsynapse Class +# ---------------------------------------------------------------------------- +class Postsynapse: + """ + Models the postsynaptic density and spine. + State variables: + G (float): cleft glutamate concentration (a.u.) + gA (float): AMPA conductance (nS) + gN (float): NMDA conductance (nS) + Vm (float): membrane potential (mV) + C_post (float): postsynaptic calcium (µM) + w (float): synaptic weight (dimensionless, modulates AMPAR conductance) + """ + def __init__(self, params): + self.p = params + self.G = 0.0 + self.gA = 0.0 + self.gN = 0.0 + self.Vm = self.p['E_rest'] + self.C_post = self.p['C_post_rest'] + self.w = 1.0 # initial weight + + def receive_nt(self, NT_released): + """ + Neurotransmitter released into cleft. Instantaneous rise, + then decay handled in step(). + """ + self.G += NT_released # instantaneous jump + + def step(self, dt, astrocyte_dserine_factor=1.0): + """ + Update postsynaptic states. + - Glutamate clearance + - AMPA/NMDA conductance kinetics + - Membrane potential (Euler) + - Postsynaptic calcium dynamics + - Synaptic weight plasticity (slow) + """ + # 1. Glutamate clearance (first order) + self.G -= dt * (self.G / self.p['tau_glu']) + + # 2. AMPA receptor kinetics + # Target conductance = max conductance * (G/(G+K)) * weight + target_A = self.p['gA_max'] * (self.G / (self.G + self.p['K_glu'])) * self.w + self.gA += dt * ((target_A - self.gA) / self.p['tau_AMPA']) + + # 3. NMDA receptor kinetics (with voltage-dependent Mg block) + Mg_block = 1.0 / (1.0 + (self.p['Mg'] / 3.57) * np.exp(-0.062 * self.Vm)) + # astrocyte D-serine enhances NMDA conductance (multiplying max) + target_N = self.p['gN_max'] * astrocyte_dserine_factor * \ + (self.G / (self.G + self.p['K_glu'])) * Mg_block + self.gN += dt * ((target_N - self.gN) / self.p['tau_NMDA']) + + # 4. Membrane potential (current balance) + I_syn = self.gA * (self.Vm - self.p['E_AMPA']) + self.gN * (self.Vm - self.p['E_NMDA']) + I_leak = self.p['gL'] * (self.Vm - self.p['E_rest']) + dVm = (-I_leak - I_syn) / self.p['Cm'] + self.Vm += dt * dVm + + # 5. Postsynaptic calcium influx (via NMDA and VGCCs) + # Simplified: calcium current proportional to NMDA conductance and voltage driving force + I_Ca_NMDA = self.p['eta_N'] * self.gN * (self.Vm - self.p['E_Ca']) + # VGCC contribution (activated by depolarisation) + vgcc_act = 1.0 / (1.0 + np.exp(-(self.Vm - self.p['V_half'])/self.p['k_vgcc'])) + I_Ca_VGCC = self.p['eta_V'] * vgcc_act * (self.Vm - self.p['E_Ca']) + self.C_post += dt * (I_Ca_NMDA + I_Ca_VGCC - (self.C_post - self.p['C_post_rest'])/self.p['tau_Ca_post']) + + # 6. Synaptic weight plasticity (slow, calcium-driven) + # LTP and LTD thresholds based on calcium control hypothesis + if self.C_post > self.p['theta_LTP']: + dw = self.p['gamma_LTP'] * (1.0 - self.w) * dt + elif self.C_post > self.p['theta_LTD']: + dw = -self.p['gamma_LTD'] * self.w * dt + else: + dw = 0.0 + self.w += dw + self.w = np.clip(self.w, 0.0, 2.0) # keep within bounds + + +# ---------------------------------------------------------------------------- +# Astrocyte Class +# ---------------------------------------------------------------------------- +class Astrocyte: + """ + Models an astrocytic process enwrapping the synapse. + State variables: + I (float): IP3 concentration (µM) + A_Ca (float): astrocyte calcium (µM) + S (float): gliotransmitter (ATP) concentration (a.u.) + uptake_efficiency (float): modulates glutamate clearance (not used directly) + """ + def __init__(self, params): + self.p = params + self.I = 0.0 + self.A_Ca = self.p['A_Ca_rest'] + self.S = 0.0 + self.uptake = 1.0 # can be modulated + + def sense_glutamate(self, G): + """ + Glutamate spillover activates mGluRs, producing IP3. + IP3 production is proportional to low-pass filtered glutamate. + """ + # Low-pass filter of G (simple exponential moving average) + # We'll use a separate state for filtered G for simplicity. + # For now, we directly update IP3 based on G with a delay. + # Here we use a simplified approach: IP3 production rate depends on G. + pass + + def step(self, dt, G): + """ + Update astrocyte states. + - IP3 dynamics (production from mGluR activation, decay) + - Calcium release from internal stores (IP3-dependent) + - Gliotransmitter release when calcium high + """ + # 1. IP3 production (driven by glutamate spillover) and decay + # Use a Hill function for mGluR activation + mGluR_act = (G**self.p['n_mGluR']) / (G**self.p['n_mGluR'] + self.p['K_mGluR']**self.p['n_mGluR']) + prod = self.p['beta_IP3'] * mGluR_act + self.I += dt * (prod - self.I / self.p['tau_IP3']) + + # 2. Astrocyte calcium (simplified Li-Rinzel type) + # IP3 opens ER channels; calcium-induced calcium release not explicitly modeled + # We use a simple equation: increase when IP3 high, decay otherwise. + # More detailed: dA_Ca/dt = r_IP3 * (I^n/(I^n+K_I^n)) * (A_store - A_Ca) - A_Ca/tau_A_Ca + # For simplicity, use a direct dependence: + target = self.p['A_max'] * (self.I**self.p['n_IP3']) / (self.I**self.p['n_IP3'] + self.p['K_IP3']**self.p['n_IP3']) + self.A_Ca += dt * ((target - self.A_Ca) / self.p['tau_A_rise'] - (self.A_Ca - self.p['A_Ca_rest'])/self.p['tau_A_decay']) + + # 3. Gliotransmitter release (ATP) when calcium above threshold + if self.A_Ca > self.p['theta_S']: + self.S = self.p['S_max'] # instantaneous release, can be made graded + else: + self.S = 0.0 + # Gliotransmitter decays + self.S *= np.exp(-dt / self.p['tau_S']) + + def get_vgcc_modulation(self): + """ + Compute factor to modulate presynaptic VGCCs (e.g., via adenosine). + """ + # ATP released by astrocyte is converted to adenosine, which activates A1 receptors. + # We model it as a simple inhibition: factor = 1 - delta * S/(S+K_S) + factor = 1.0 - self.p['delta_A1'] * (self.S / (self.S + self.p['K_A1'])) + return max(factor, 0.0) + + def get_dserine_modulation(self): + """ + D-serine enhances NMDA receptor function. + Return a factor >1 when astrocyte calcium is high. + """ + # Simple relation: factor = 1 + dserine_max * (A_Ca/(A_Ca+K_D)) + factor = 1.0 + self.p['dserine_max'] * (self.A_Ca / (self.A_Ca + self.p['K_D'])) + return factor + + +# ============================================================================ +# Parameter Sets (with timescales and biological references) +# ============================================================================ + +# All times are in seconds unless noted. + +presyn_params = { + # Calcium dynamics + 'alpha': 0.5, # fast Ca influx per VGCC (µM) + 'beta': 0.02, # slow Ca influx per VGCC (µM) + 'tau_f': 0.020, # fast Ca decay time constant (20 ms) + 'tau_s': 1.0, # slow Ca decay time constant (1 s) + # VGCC + 'N_VGCC0': 10, # baseline number of functional VGCCs + # Release + 'p_max': 0.8, # max release probability + 'Kd': 2.0, # Ca half-activation (µM) + 'n_Hill': 4, # Hill coefficient (cooperativity) + 'gamma': 1.0, # conversion factor from vesicles to NT units + # Vesicle pools + 'R_max': 50, # max RRP size (vesicles) + 'P_max': 200, # max RP size (vesicles) + 'k_fast': 2.0, # fast mobilization rate (s^-1) under high Ca + 'k_med': 0.5, # medium mobilization rate (s^-1) + 'k_slow': 0.1, # slow mobilization rate (s^-1) under low Ca + 'k_rep': 0.03, # RP replenishment rate (s^-1) (time constant ~33 s) + # Calcium trace thresholds (µM) + 'theta_low': 1.0, + 'theta_high': 3.0, +} + +postsyn_params = { + # Glutamate dynamics + 'tau_glu': 0.002, # glutamate decay in cleft (2 ms) + 'K_glu': 1.0, # glutamate half-activation for receptors (a.u.) + # AMPA receptors + 'gA_max': 5.0, # max AMPA conductance (nS) + 'tau_AMPA': 0.002, # AMPA rise/decay time (2 ms, simplified) + 'E_AMPA': 0.0, # reversal potential (mV) + # NMDA receptors + 'gN_max': 2.0, # max NMDA conductance (nS) + 'tau_NMDA': 0.050, # NMDA decay time (50 ms) + 'E_NMDA': 0.0, # reversal potential (mV) + 'Mg': 1.0, # extracellular Mg concentration (mM) + # Membrane parameters + 'Cm': 1.0, # membrane capacitance (µF/cm^2, scaled) + 'gL': 0.1, # leak conductance (nS) + 'E_rest': -70.0, # resting potential (mV) + 'E_Ca': 120.0, # calcium reversal potential (mV) + # Postsynaptic calcium + 'eta_N': 0.02, # NMDA calcium influx factor (µM/ms/nA? simplified) + 'eta_V': 0.01, # VGCC calcium influx factor + 'V_half': -20.0, # half-activation for VGCC (mV) + 'k_vgcc': 5.0, # slope factor for VGCC activation + 'tau_Ca_post': 0.050, # calcium decay time (50 ms) + 'C_post_rest': 0.05, # resting calcium (µM) + # Plasticity thresholds + 'theta_LTD': 0.5, # LTD threshold (µM) + 'theta_LTP': 1.5, # LTP threshold (µM) + 'gamma_LTD': 0.001, # LTD rate (s^-1) + 'gamma_LTP': 0.002, # LTP rate (s^-1) +} + +astro_params = { + # IP3 dynamics + 'beta_IP3': 0.1, # IP3 production rate per glutamate (µM/s) + 'tau_IP3': 2.0, # IP3 decay time constant (2 s) + 'K_mGluR': 0.5, # glutamate half-activation for mGluR (a.u.) + 'n_mGluR': 2, # cooperativity for mGluR + # Astrocyte calcium + 'A_max': 2.0, # max calcium release (µM) + 'K_IP3': 0.5, # IP3 half-activation (µM) + 'n_IP3': 2, # cooperativity for IP3 + 'tau_A_rise': 1.0, # rise time for Ca release (1 s) + 'tau_A_decay': 5.0, # decay time for Ca (5 s) + 'A_Ca_rest': 0.1, # resting calcium (µM) + # Gliotransmitter release + 'theta_S': 0.8, # Ca threshold for release (µM) + 'S_max': 1.0, # max gliotransmitter concentration (a.u.) + 'tau_S': 1.0, # gliotransmitter decay time (1 s) + # Feedback parameters + 'delta_A1': 0.5, # maximum inhibition of VGCCs (fraction) + 'K_A1': 0.3, # half-saturation for adenosine inhibition (a.u.) + 'dserine_max': 0.5, # maximum fractional increase in NMDA conductance + 'K_D': 0.5, # half-saturation for D-serine modulation (µM) +} + +# ============================================================================ +# Simulation Setup +# ============================================================================ + +# Create instances +pre = Presynapse(presyn_params) +post = Postsynapse(postsyn_params) +astro = Astrocyte(astro_params) + +# Simulation parameters +dt = 0.0001 # time step = 0.1 ms +T_total = 30.0 # simulate 30 seconds +time = np.arange(0, T_total, dt) +n_steps = len(time) + +# Storage for plotting +store = { + 't': [], + 'Cf': [], 'Cs': [], 'R': [], 'P': [], + 'G': [], 'gA': [], 'gN': [], 'Vm': [], 'C_post': [], 'w': [], + 'I': [], 'A_Ca': [], 'S': [], + 'AP': [] +} + +# Define spike times (example: two bursts) +spike_times = [] +# 5 spikes at 20 Hz starting at 1.0 s +spike_times.extend(np.linspace(1.0, 1.2, 5, endpoint=False)) +# 10 spikes at 50 Hz starting at 5.0 s +spike_times.extend(np.linspace(5.0, 5.18, 10, endpoint=False)) +# 3 spikes at 10 Hz starting at 15.0 s +spike_times.extend(np.linspace(15.0, 15.2, 3, endpoint=False)) +spike_times.sort() +spike_index = 0 +next_spike = spike_times[spike_index] if spike_times else np.inf + +# Main simulation loop +for i, t in enumerate(time): + # Check for AP + AP = 0 + if t >= next_spike: + AP = 1 + spike_index += 1 + next_spike = spike_times[spike_index] if spike_index < len(spike_times) else np.inf + + # --- Presynapse --- + if AP: + pre.ap_event() + pre.step(dt) + + # --- Astrocyte modulation (feedback) --- + # Astrocyte senses glutamate from cleft (post.G) + astro.step(dt, post.G) + vgcc_factor = astro.get_vgcc_modulation() + pre.set_vgcc_modulation(vgcc_factor) + dserine_factor = astro.get_dserine_modulation() + + # --- Postsynapse --- + # Transfer released NT + if AP: + post.receive_nt(pre.NT_released) + post.step(dt, dserine_factor) + + # Store data every 1 ms to save memory + if i % int(0.001/dt) == 0: + store['t'].append(t) + store['Cf'].append(pre.Cf) + store['Cs'].append(pre.Cs) + store['R'].append(pre.R) + store['P'].append(pre.P) + store['G'].append(post.G) + store['gA'].append(post.gA) + store['gN'].append(post.gN) + store['Vm'].append(post.Vm) + store['C_post'].append(post.C_post) + store['w'].append(post.w) + store['I'].append(astro.I) + store['A_Ca'].append(astro.A_Ca) + store['S'].append(astro.S) + store['AP'].append(AP) + +# ============================================================================ +# Plot Results +# ============================================================================ + +fig, axes = plt.subplots(4, 1, figsize=(10, 12), sharex=True) + +t_plot = np.array(store['t']) + +# Presynapse +axes[0].plot(t_plot, store['Cf'], label='Fast Ca', color='C0') +axes[0].plot(t_plot, store['Cs'], label='Slow Ca', color='C1') +axes[0].set_ylabel('Ca (µM)') +axes[0].legend(loc='upper right') +axes[0].set_title('Presynapse') +ax2 = axes[0].twinx() +ax2.plot(t_plot, store['R'], label='RRP', color='C2', linestyle='--') +ax2.plot(t_plot, store['P'], label='RP', color='C3', linestyle='--') +ax2.set_ylabel('Vesicles') +ax2.legend(loc='lower right') + +# Postsynapse conductances and potential +axes[1].plot(t_plot, store['gA'], label='AMPA', color='C4') +axes[1].plot(t_plot, store['gN'], label='NMDA', color='C5') +axes[1].set_ylabel('Conductance (nS)') +axes[1].legend(loc='upper left') +ax2 = axes[1].twinx() +ax2.plot(t_plot, store['Vm'], label='Vm', color='C6', linestyle='-') +ax2.set_ylabel('Vm (mV)') +ax2.legend(loc='upper right') + +# Postsynaptic calcium and weight +axes[2].plot(t_plot, store['C_post'], label='Post Ca', color='C7') +axes[2].set_ylabel('Ca (µM)') +axes[2].legend(loc='upper left') +ax2 = axes[2].twinx() +ax2.plot(t_plot, store['w'], label='Weight w', color='C8', linestyle='--') +ax2.set_ylabel('Synaptic weight') +ax2.legend(loc='upper right') + +# Astrocyte +axes[3].plot(t_plot, store['I'], label='IP3', color='C9') +axes[3].plot(t_plot, store['A_Ca'], label='Astro Ca', color='C10') +axes[3].plot(t_plot, store['S'], label='Gliotrans.', color='C11', linestyle=':') +axes[3].set_ylabel('Conc. (µM / a.u.)') +axes[3].set_xlabel('Time (s)') +axes[3].legend(loc='upper right') +axes[3].set_title('Astrocyte') + +plt.tight_layout() +plt.tight_layout() +# plt.show() # Comment out or replace +plt.savefig('tripartite_simulation.png', dpi=150, bbox_inches='tight') +print("Simulation finished. Plot saved as 'tripartite_simulation.png'.") +# plt.show() \ No newline at end of file diff --git a/neuron/appunti/traditional_python_models/tripartite_new.py b/neuron/appunti/traditional_python_models/tripartite_new.py new file mode 100644 index 0000000..626cf91 --- /dev/null +++ b/neuron/appunti/traditional_python_models/tripartite_new.py @@ -0,0 +1,648 @@ +# Tripartite Synapse - Multi-Scale Computational Model + +import numpy as np + +# ----------------------------------------------------------------------- +# PARAMETERS +# ----------------------------------------------------------------------- + +dt = 1.0 # ms - high-freq timestep +dt_slow = 1000.0 # ms - astrocyte / slow loop timestep +dt_meta = 60_000.0 # ms - metabolic loop timestep + +High_Freq_Multiplier = int(dt_slow / dt) # 1000 +Metabolic_Multiplier = int(dt_meta / dt) # 60000 + +# Unit-conversion scalar — derived once, used wherever a biological rate +# constant is expressed in /s but the loop timestep is in ms. +# Multiplying a /s rate by dt_s gives a dimensionless per-step increment: +# increment = k [/s] * Ca * dt_s [s/step] = dimensionless / step +dt_s = dt / 1000.0 # ms -> s (= 0.001 s per 1 ms step) + +# -- Calcium influx & buffering -- +N_VGCC = 100 # ORIG: number of presynaptic VGCCs + # [CASCADE 6] Sets the absolute ceiling of Ca2+ influx. + # effective_conductance can only reduce from here. +V_pre_voltage = -10.0 # ORIG: mV - membrane potential during AP +k_flux = 0.05 # ORIG: Ca2+ influx per open channel (a.u.) + +B_total = 1.0 # ORIG: total buffer capacity (normalised) + # [CASCADE 4] When B_free -> 0 (buffer saturated), + # all raw_influx enters Ca_micro directly, + # accelerating residual Ca2+ build-up. +tau_buffer_rebind = 200.0 # NEW: ms - time for saturated buffer to recharge + # [CASCADE 4] Slow recharge means buffer stays saturated + # during sustained bursting, removing its + # protective role against Ca2+ accumulation. + +# -- Ca2+ clearance rate constants (per ms) -- +# [CASCADE 3] These three constants define maximum clearance capacity. +# PMCA and SERCA are multiplied by pump_scale (ATP-gated); +# NCX runs independently but cannot fully compensate when they fail. +k_PMCA = 0.03 # NEW: plasma membrane Ca-ATPase - primary high-affinity pump + # [CASCADE 3] First pump to fail under low ATP. Its rate + # constant is the largest ATP-dependent term; + # halving pump_scale loses 0.015/ms of clearance. +k_NCX = 0.10 # NEW: sodium-calcium exchanger - fast, NOT ATP-dependent + # [CASCADE 3 note] NCX keeps clearing during pump failure, + # but k_NCX alone cannot prevent Ca2+ + # accumulation when PMCA + SERCA are both + # impaired - it is a floor, not a rescue. +k_SERCA = 0.01 # NEW: ER pump - slowest, ATP-dependent + # [CASCADE 3] Compounds PMCA failure; also stops loading + # Ca_ER, so the ER store cannot buffer spikes. +ATP_half = 0.3 # NEW: Hill half-saturation for ATP-dependent pumps + # [CASCADE 3] At ATP_level = ATP_half pumps run at 50% speed. + # Below this value pump failure is disproportionately + # severe because the Hill curve is steepest here. + +# -- CDI (calcium-dependent inactivation) -- +k_CDI_rise = 0.8 # ORIG: CDI build rate — units /s per unit Ca_micro + # Biological rate constant expressed in per-second units. + # Applied inside map_calcium_to_inactivation via * dt_s. + # [CASCADE 5] Higher value = VGCCs lock shut sooner at any [Ca2+]. +Ca_micro_saturation = 2.0 # NEW: normalisation ceiling for CDI recovery + # [CASCADE 5] When Ca_micro = Ca_micro_saturation, + # CDI_recovery_rate -> 0 completely. +k_CDI_rec = 0.015 # NEW: CDI de-inactivation rate — units /s + # Biological rate constant expressed in per-second units. + # Applied in the loop via * dt_s. + # [CASCADE 5] Lower value = slower recovery = longer silence + # window after pump failure. + +# -- Vesicle pools -- +Max_RRP = 20 # ORIG: maximum readily-releasable pool size + # [CASCADE 1] Smaller Max_RRP -> exhausted in fewer spikes. +Max_RP = 200 # ORIG: maximum reserve pool size + # [CASCADE 1] Once depleted, only the glutamine shuttle + # (Loop 3, minutes timescale) can refill it. +p_release_base = 0.1 # ORIG: base release probability per vesicle per ms + # [CASCADE 1] Multiplied by Ca_micro inside stochastic_release, + # so higher Ca_micro during a burst draws MORE + # vesicles per spike - a positive feedback that + # accelerates RRP depletion. + +# -- Trace integrator -- +tau_Tr_Ca = 1000.0 # ORIG: ms - calcium trace decay +T_high = 0.6 # ORIG: trace threshold -> fast recruitment +T_low = 0.2 # ORIG: trace threshold -> slow recruitment +k_rec_fast = 0.005 # ORIG: fast RP->RRP recruitment rate (/ms) + # [CASCADE 1] Even at maximum, recruitment lags release at + # high firing. When N_RP also falls, the term + # (rate * N_RP * headroom) shrinks on both sides, + # accelerating collapse toward N_RRP = 0. +k_rec_slow = 0.0005 # ORIG: slow RP->RRP recruitment rate (/ms) + +# -- Postsynaptic -- +tau_membrane = 20.0 # ORIG: ms - membrane time constant +tau_desensitization = 500.0 # ORIG: ms - receptor desensitization decay + +# -- eCB retrograde brake -- +tau_eCB_rise = 2000.0 # ORIG: ms - rise time constant + # [CASCADE 6] eCB is a slow-onset brake (~2 s rise). + # Provides early partial conductance + # suppression before CDI lock-out is complete. +tau_eCB_decay = 10_000.0 # ORIG: ms - decay time constant + # [CASCADE 6] Slow decay (10 s) means eCB persists as + # a partial brake even as the burst ends, + # prolonging the silence window. +eCB_threshold = 0.7 # ORIG: V_post level that triggers eCB synthesis + # [CASCADE 6] Requires sustained postsynaptic depolarisation; + # acts as an integrating safety threshold. + +# -- mGluR presynaptic autoreceptor -- +Km_mGluR = 0.5 # NEW: Michaelis-Menten half-saturation for NT_cleft + # [CASCADE 6] Lower Km -> autoreceptor saturates at smaller + # NT_cleft -> faster VGCC suppression onset. +tau_mGluR = 2000.0 # NEW: ms - mGluR activation / desensitization time constant + # [CASCADE 6] Governs how quickly the autoreceptor engages + # and releases as NT_cleft rises and falls. +alpha_mGluR = 0.4 # NEW: max fractional VGCC suppression by mGluR + # [CASCADE 6] Upper bound of this term. Combined with eCB, + # both brakes together can suppress ~70% of + # conductance before CDI becomes significant. + +# -- Astrocyte / IP3 -- +tau_IP3 = 3000.0 # ORIG: ms +IP3_threshold = 0.8 # ORIG + +# -- Glutamine shuttle -- +conversion_efficiency_base = 0.8 # ORIG: fraction of Gln pool converted per cycle + # [CASCADE 1] Sets max RP-refill rate. + # Degraded by metabolic fatigue via + # conversion_efficiency in Loop 3. + + +# ----------------------------------------------------------------------- +# HELPER FUNCTIONS +# ----------------------------------------------------------------------- + +def compute_flux(conductance, voltage): + # ORIG: Ca2+ influx into microdomain. + # [CASCADE 4] Raw influx that, after buffer capture, loads Ca_micro. + # Collapses to near zero once CASCADE 6 locks effective_conductance. + return k_flux * conductance * abs(voltage) + + +def stochastic_release(N_RRP, Ca_micro): + # ORIG: Binomial vesicle release from RRP. + # [CASCADE 1] p scales with Ca_micro: higher Ca_micro during the early burst + # draws MORE vesicles per spike than at rest - a positive feedback + # that accelerates RRP depletion beyond what recruitment can match. + p = min(1.0, p_release_base * Ca_micro) + return int(np.random.binomial(int(N_RRP), p)) + + +def map_trace_to_speed(Tr_Ca): + # ORIG: Maps calcium trace to RP->RRP recruitment rate. + # [CASCADE 1] Even at maximum (k_rec_fast = 0.005/ms), recruitment lags + # release at high firing. As N_RP and headroom both fall, + # refill_amount shrinks and N_RRP collapses. + if Tr_Ca > T_high: + return k_rec_fast + elif Tr_Ca < T_low: + return k_rec_slow + else: + t = (Tr_Ca - T_low) / (T_high - T_low) + return k_rec_slow + t * (k_rec_fast - k_rec_slow) + + +def map_calcium_to_inactivation(Ca_micro): + # ORIG: Ca2+ drives CDI increment each ms. + # k_CDI_rise is in /s. Multiplying by dt_s converts it to a + # dimensionless per-step increment: + # increment = k_CDI_rise [/s] * Ca_micro * dt_s [s/step] + # Using dt_s here (not dt) makes the unit conversion explicit and + # avoids the implicit /1000 anti-pattern. + # [CASCADE 5] Fires every ms that Ca_micro > 0, including inter-spike + # intervals under pump failure. Result: CDI_factor accumulates + # across spikes instead of resetting, climbing toward 1. + return k_CDI_rise * Ca_micro * dt_s + + +def compute_pump_atp_factor(ATP_level): + # NEW: Hill function - ATP gates PMCA and SERCA speed. + # [CASCADE 3] Mechanistic bridge from CASCADE 2 (ATP_level, written by + # Loop 3 once per minute) to CASCADE 4 (Ca_micro staying elevated). + # ATP_level = 1.0 -> pump_scale ~= 0.92 (near full speed) + # ATP_level = 0.3 -> pump_scale = 0.50 (half speed) + # ATP_level = 0.1 -> pump_scale ~= 0.10 (severe failure) + # Hill exponent of 2 gives a sigmoidal response: small drops + # have modest effect; drops below ATP_half are disproportionate. + return (ATP_level ** 2) / (ATP_level ** 2 + ATP_half ** 2) + + +def compute_EPSP(receptor_conductance): + # ORIG: postsynaptic potential increment. + return receptor_conductance * 0.1 + + +def compute_postsynaptic_eCB_signal(V_post_history): + # ORIG: eCB synthesis triggered by sustained high postsynaptic activity. + # [CASCADE 6] Integrates V_post over a 2 s window. Acts as a slow retrograde + # warning signal; its tau_eCB_decay of 10 s means it outlasts + # the burst and keeps conductance partially suppressed during recovery. + recent_mean = (np.mean(V_post_history[-2000:]) + if len(V_post_history) >= 2000 + else np.mean(V_post_history)) + if recent_mean > eCB_threshold: + return recent_mean - eCB_threshold + return 0.0 + + +def compute_astrocyte_metabolic_health(Glucose_level, step): + # ORIG + NEW ATP output. + # [CASCADE 2] Glucose_level is the root upstream variable of the slow cascade. + # Under sustained high firing, demand outpaces vascular delivery + # and Glucose_level falls. This function converts that into: + # + # ATP_level -> [CASCADE 2->3 bridge] + # Read every ms by compute_pump_atp_factor() in Loop 1. + # This is how minute-scale metabolic state reaches the + # millisecond Ca2+ clearance equations. + # + # conversion_efficiency -> [CASCADE 1, slow refill arm] + # Gates glutamine shuttle throughput; low efficiency starves + # N_RP refill, prolonging vesicle depletion. + # + # Both outputs degrade together as Glucose_level -> 0, + # tightening CASCADE 1 and CASCADE 3-5 simultaneously. + health = np.clip(Glucose_level, 0.0, 1.0) + return health, health # (conversion_efficiency, ATP_level) + + +def trigger_slow_astrocyte_calcium_wave(): + # ORIG: placeholder - would release gliotransmitters over ~10 s. + pass + + +# ----------------------------------------------------------------------- +# STATE VARIABLES (initial values) +# ----------------------------------------------------------------------- + +# -- Presynaptic Ca2+ -- +Ca_micro = 0.0 # ORIG: free cytosolic [Ca2+] in microdomain + # [CASCADE 4] Central victim variable. + # Normally returns to ~0 between spikes; + # stays elevated when pumps fail. +Ca_ER = 0.5 # NEW: Ca2+ stored in ER (loaded by SERCA) +Ca_buffer_bound = 0.0 # NEW: Ca2+ currently held by buffer proteins +B_free = 1.0 # NEW: free buffer binding sites (= B_total at rest) + # [CASCADE 4] B_free -> 0 during sustained bursting. + # Once saturated, capture_fraction -> 0 and + # raw_influx enters Ca_micro unattenuated. + +# -- CDI -- +CDI_factor = 0.0 # ORIG: fractional VGCC inactivation (0 -> 1) + # [CASCADE 5] Primary silence variable; rises with Ca_micro, + # recovery suppressed by Ca_micro. + # [CASCADE 6] Appears as (1 - CDI_factor) in effective_conductance; + # when CDI_factor -> 1 conductance collapses to 0. + +# -- Vesicle pools -- +N_RRP = 15 # ORIG: readily-releasable pool (docked vesicles) + # [CASCADE 1] Depleted in seconds at high firing rate. +N_RP = 150 # ORIG: reserve pool + # [CASCADE 1] Depleted over tens of seconds; only the glutamine + # shuttle (Loop 3) can refill it on minute timescales. + +# -- Calcium trace -- +Tr_Ca = 0.0 # ORIG: integrative calcium memory; drives RP->RRP recruitment speed. + +# -- NT in cleft -- +NT_cleft = 0.0 # ORIG: normalised NT concentration + # [CASCADE 6] Drives mGluR_activation (fastest conductance brake). + +# -- Postsynaptic -- +V_post = 0.0 # ORIG +receptor_conductance = 0.0 # ORIG +Desensitization_level = 0.0 # ORIG +V_post_history = [] # ORIG: rolling buffer for eCB computation + +# -- Retrograde / autoreceptor -- +eCB_level = 0.0 # ORIG: endocannabinoid retrograde brake (0 -> 1) + # [CASCADE 6] Second multiplicative suppressor of + # effective_conductance. Slow onset (~2 s), + # slow decay (~10 s). +mGluR_activation = 0.0 # NEW: presynaptic autoreceptor occupancy (0 -> 1) + # [CASCADE 6] Third multiplicative suppressor. Fastest + # onset because it reads NT_cleft directly, + # no postsynaptic relay required. + +# -- Astrocyte -- +IP3 = 0.0 # ORIG +Glutamine_pool = 50.0 # ORIG + +# -- Metabolic -- +ATP_level = 1.0 # NEW: normalised ATP (1 = replete) + # [CASCADE 2->3] Bridge variable: written by Loop 3 + # (minutes), read every ms in Loop 1 + # via compute_pump_atp_factor(). +conversion_efficiency = 0.8 # ORIG +Glucose_level = 1.0 # ORIG: external glucose supply (0 -> 1) + # [CASCADE 2] Root input of the slow cascade arm. + # Set < 1.0 to activate metabolic silencing. + # Try 0.2 to observe full pump failure. + +# -- NT cleft decay -- +tau_NT_decay = 5.0 # ms - passive NT diffusion / dilution out of cleft + + +# ----------------------------------------------------------------------- +# MAIN SIMULATION LOOP +# ----------------------------------------------------------------------- + +def run_simulation(spike_train, total_steps): + """ + spike_train : list of int timestep indices at which an AP arrives + total_steps : int number of 1 ms steps to simulate + """ + + global Ca_micro, Ca_ER, Ca_buffer_bound, B_free + global CDI_factor + global N_RRP, N_RP + global Tr_Ca, NT_cleft + global V_post, receptor_conductance, Desensitization_level, V_post_history + global eCB_level, mGluR_activation + global IP3, Glutamine_pool + global ATP_level, conversion_efficiency, Glucose_level + + log = {k: [] for k in [ + "Ca_micro", "Ca_ER", "CDI_factor", "B_free", + "N_RRP", "N_RP", "Tr_Ca", "NT_cleft", + "V_post", "eCB_level", "mGluR_activation", + "released_NT", "ATP_level", + ]} + + spike_set = set(spike_train) + + for step in range(total_steps): + + # ============================================================== + # LOOP 1 - HIGH-FREQUENCY (dt = 1 ms) + # ============================================================== + + V_pre = 1 if step in spike_set else 0 + released_NT = 0 + + # -- 1A. PRESYNAPTIC SPIKE HANDLING ---------------------------- + if V_pre == 1: + + # [CASCADE 6] OUTCOME of the full cascade. + # All three suppression terms must be near zero + # for significant Ca2+ influx to occur. + # + # Onset timing during a burst: + # mGluR*alpha_mGluR rises first (~seconds, reads NT_cleft) + # eCB_level rises second (~2-10 s, retrograde) + # CDI_factor locks last but is irreversible until + # Ca_micro falls (needs pump recovery) + effective_conductance = ( + N_VGCC + * (1.0 - eCB_level) # [CASCADE 6] retrograde brake + * (1.0 - CDI_factor) # [CASCADE 5->6] CDI lock-out + * (1.0 - mGluR_activation * alpha_mGluR) # [CASCADE 6] autoreceptor brake + ) + + raw_influx = compute_flux(effective_conductance, V_pre_voltage) + + # NEW: Buffer proteins capture a fraction of raw_influx immediately. + # [CASCADE 4] capture_fraction = B_free / B_total. + # Early in a burst B_free ~= B_total so most influx is + # captured and Ca_micro rises slowly (buffer is protective). + # As bursting continues B_free -> 0 (buffer saturates), + # capture_fraction -> 0 and full raw_influx enters Ca_micro, + # accelerating the residual Ca2+ accumulation of CASCADE 4. + capture_fraction = B_free / B_total + captured = raw_influx * capture_fraction + B_free = max(0.0, B_free - captured) + Ca_buffer_bound += captured + Ca_micro += (raw_influx - captured) + + # ORIG: NT release from RRP. + # [CASCADE 1] Each spike draws from N_RRP via stochastic_release. + # Draw rate (p * N_RRP) exceeds refill rate + # (k_rec_fast * N_RP * headroom) at high firing, + # driving N_RRP -> 0. + if N_RRP > 0: + released_NT = stochastic_release(N_RRP, Ca_micro) + N_RRP = max(0, N_RRP - released_NT) # floor guard + NT_cleft += released_NT + + # -- 1B. Ca2+ CLEARANCE (runs every ms, spike or not) ---------- + + # [CASCADE 3] pump_scale links CASCADE 2 (ATP depletion) to + # CASCADE 4 (residual Ca2+ accumulation). + # Written from ATP_level which is updated once per minute + # in Loop 3; read here every millisecond. + pump_scale = compute_pump_atp_factor(ATP_level) + + # [CASCADE 3->4] PMCA: primary high-affinity Ca2+ extrusion pump. + # ATP-dependent. First pump to be impaired; largest + # single loss of clearance capacity when pump_scale drops. + cleared_PMCA = k_PMCA * Ca_micro * pump_scale + + # [CASCADE 3 note] NCX: fast, NOT ATP-dependent. + # Continues clearing during metabolic failure. + # Acts as a partial floor but cannot alone prevent + # Ca2+ accumulation when PMCA + SERCA are impaired. + # Also enables the auto-reset: once high-frequency + # drive stops, NCX gradually lowers Ca_micro and + # allows CDI recovery even without restored ATP. + cleared_NCX = k_NCX * Ca_micro + + # [CASCADE 3->4] SERCA: ER pump, ATP-dependent. + # Compounds PMCA failure. Also stops loading Ca_ER, + # so the ER store cannot buffer subsequent spikes. + cleared_SERCA = k_SERCA * Ca_micro * pump_scale + + Ca_micro -= (cleared_PMCA + cleared_NCX + cleared_SERCA) + Ca_micro = max(0.0, Ca_micro) + + Ca_ER += cleared_SERCA # SERCA fills the ER store when ATP is available + + # NEW: Buffer recharge - bound Ca2+ slowly re-releases back to cytosol. + # [CASCADE 4] During pump failure, released buffer Ca2+ is not promptly + # cleared, so it adds to Ca_micro and sustains its elevation + # between spikes - a secondary positive feedback within CASCADE 4. + rebind_flux = Ca_buffer_bound * dt / tau_buffer_rebind + Ca_micro += rebind_flux + Ca_buffer_bound = max(0.0, Ca_buffer_bound - rebind_flux) + B_free = B_total - Ca_buffer_bound + + # -- 1C. CDI - RISE AND RECOVERY -------------------------------- + + # [CASCADE 5] CDI increment: fires every ms proportional to Ca_micro. + # Under normal conditions Ca_micro returns to ~0 between + # spikes and CDI is balanced by recovery below. + # Under pump failure (CASCADE 4) Ca_micro stays > 0 + # between spikes, so this increment fires continuously + # and CDI_factor climbs monotonically toward 1. + CDI_factor += map_calcium_to_inactivation(Ca_micro) + + # [CASCADE 5] CDI recovery: maximised when Ca_micro = 0, suppressed + # as Ca_micro approaches Ca_micro_saturation. + # This is the self-locking mechanism of the cascade: + # pump failure -> Ca_micro stays high + # Ca_micro high -> CDI_recovery_rate -> 0 + # CDI no recovery -> CDI_factor -> 1 + # CDI_factor -> 1 -> effective_conductance -> 0 (CASCADE 6) + # k_CDI_rec is in /s; multiply by dt_s for a per-step decrement. + CDI_recovery_rate = k_CDI_rec * (1.0 - Ca_micro / Ca_micro_saturation) + CDI_factor = np.clip(CDI_factor - CDI_recovery_rate * dt_s, 0.0, 1.0) + + # -- 1D. TRACE INTEGRATOR -------------------------------------- + # ORIG: integrates Ca_micro; drives RP->RRP recruitment speed. + Tr_Ca = Tr_Ca + (Ca_micro - Tr_Ca / tau_Tr_Ca) * dt + + # -- 1E. RP -> RRP RECRUITMENT (with pool guards) -------------- + # [CASCADE 1] Only counter-force to vesicle depletion. + # refill_amount = rate * N_RP * (Max_RRP - N_RRP) + # As N_RP falls (reservoir empties) and N_RRP -> 0 + # (headroom = Max_RRP, maximised), the N_RP term collapses + # and refill becomes negligible - depletion becomes + # self-sustaining once N_RP is exhausted. + current_recruitment_rate = map_trace_to_speed(Tr_Ca) + refill_amount = current_recruitment_rate * N_RP * (Max_RRP - N_RRP) + refill_amount = max(0.0, refill_amount) # never negative + refill_amount = min(refill_amount, N_RP) # cannot exceed RP supply + + N_RRP = min(N_RRP + refill_amount, Max_RRP) # ceiling guard + N_RP = max(0.0, N_RP - refill_amount) # floor guard + + # -- 1F. POSTSYNAPTIC FAST RESPONSE ---------------------------- + # ORIG: receptor activation and desensitization. + effective_NT = released_NT * (1.0 - Desensitization_level) + receptor_conductance += effective_NT * 0.05 + receptor_conductance *= (1.0 - dt / tau_membrane) + + V_post += compute_EPSP(receptor_conductance) - (V_post / tau_membrane) * dt + V_post = max(0.0, V_post) + + Desensitization_level += NT_cleft * 0.001 * dt + Desensitization_level -= (Desensitization_level / tau_desensitization) * dt + Desensitization_level = np.clip(Desensitization_level, 0.0, 1.0) + + # ORIG: NT diffuses / dilutes out of cleft each ms. + NT_cleft *= (1.0 - dt / tau_NT_decay) + NT_cleft = max(0.0, NT_cleft) + + V_post_history.append(V_post) + if len(V_post_history) > 5000: + V_post_history.pop(0) + + # -- RECORD ----------------------------------------------------- + log["Ca_micro"].append(Ca_micro) + log["Ca_ER"].append(Ca_ER) + log["CDI_factor"].append(CDI_factor) + log["B_free"].append(B_free) + log["N_RRP"].append(N_RRP) + log["N_RP"].append(N_RP) + log["Tr_Ca"].append(Tr_Ca) + log["NT_cleft"].append(NT_cleft) + log["V_post"].append(V_post) + log["eCB_level"].append(eCB_level) + log["mGluR_activation"].append(mGluR_activation) + log["released_NT"].append(released_NT) + log["ATP_level"].append(ATP_level) + + # ============================================================== + # LOOP 2 - SLOW / ASTROCYTE (dt_slow = 1 s) + # ============================================================== + + if (step % High_Freq_Multiplier) == 0: + + # ORIG: Astrocyte clears NT from cleft via EAATs. + cleared_NT = NT_cleft * 0.3 + NT_cleft = max(0.0, NT_cleft - cleared_NT) + + # ORIG: IP3 integrates clearance load. + IP3 += cleared_NT - (IP3 / tau_IP3) * dt_slow + IP3 = max(0.0, IP3) + + if IP3 > IP3_threshold: + trigger_slow_astrocyte_calcium_wave() + + # ORIG: eCB retrograde signal. + # [CASCADE 6] Second conductance brake. Onset ~2 s after sustained + # postsynaptic activity crosses eCB_threshold. Its slow + # decay (10 s) means it persists as a partial brake + # during the recovery window, preventing premature + # re-engagement of the synapse after a silence event. + eCB_signal = compute_postsynaptic_eCB_signal(V_post_history) + if eCB_signal > 0: + eCB_level += eCB_signal * (dt_slow / tau_eCB_rise) + else: + eCB_level -= eCB_level * (dt_slow / tau_eCB_decay) + eCB_level = np.clip(eCB_level, 0.0, 1.0) + + # NEW: mGluR presynaptic autoreceptor feedback. + # [CASCADE 6] Fastest conductance brake. Reads NT_cleft directly + # (no postsynaptic relay), so it rises within seconds + # of burst onset when NT_cleft is highest. + # At saturation it suppresses up to alpha_mGluR = 40% + # of conductance, acting as the first partial brake + # and slightly slowing Ca2+ influx before CDI builds. + # Decays rapidly when NT_cleft falls (e.g. after vesicle + # depletion in CASCADE 1), so it does not contribute to + # the irreversible lock-out - that role belongs to CDI. + mGluR_target = NT_cleft / (NT_cleft + Km_mGluR) + mGluR_activation += (mGluR_target - mGluR_activation) * (dt_slow / tau_mGluR) + mGluR_activation = np.clip(mGluR_activation, 0.0, 1.0) + + # ============================================================== + # LOOP 3 - METABOLIC (dt_meta = 1 min) + # ============================================================== + + if (step % Metabolic_Multiplier) == 0: + + # [CASCADE 2] Root of the slow cascade arm. + # Glucose_level is the external input that sets the + # pace of ATP replenishment. Under sustained demand + # it falls, reducing ATP_level. + # + # ATP_level written here is the CASCADE 2->3 bridge: + # it is read every millisecond in Loop 1 by + # compute_pump_atp_factor(), carrying the minute-scale + # metabolic state into the Ca2+ clearance equations. + # + # conversion_efficiency (also written here) is the + # CASCADE 1 slow-refill arm: low efficiency starves + # N_RP, making vesicle depletion more severe and + # prolonged after each burst episode. + conversion_efficiency, ATP_level = compute_astrocyte_metabolic_health( + Glucose_level, step + ) + + # [CASCADE 1 - slow refill] Glutamine shuttle rebuilds N_RP. + # Gated by conversion_efficiency; when low, N_RP cannot + # recover between bursts, so successive episodes deplete + # faster - a cumulative fatigue effect. + refill_RP = Glutamine_pool * conversion_efficiency + N_RP = min(Max_RP, N_RP + refill_RP) + Glutamine_pool = max(0.0, Glutamine_pool - refill_RP) + + return log + + +# ----------------------------------------------------------------------- +# EXAMPLE USAGE +# ----------------------------------------------------------------------- + +if __name__ == "__main__": + import matplotlib.pyplot as plt + + total_steps = 10_000 # 10 seconds of simulated time + + # 20 Hz burst for 2 s, then silence. + # Set Glucose_level = 0.2 before calling run_simulation() to engage + # the full metabolic cascade (CASCADES 2-5). + spike_train = list(range(0, 2000, 50)) + + results = run_simulation(spike_train, total_steps) + + t = np.arange(total_steps) * dt + + fig, axes = plt.subplots(6, 1, figsize=(12, 14), sharex=True) + fig.suptitle("Tripartite Synapse - Metabolic Silencing Cascade", fontsize=13) + + axes[0].plot(t, results["Ca_micro"], color="darkorange", lw=0.8) + axes[0].set_ylabel("[Ca2+] free (a.u.)") + axes[0].set_title("CASCADE 4 - residual Ca2+ stays high under pump failure", + fontsize=9, loc="left") + + axes[1].plot(t, results["CDI_factor"], color="firebrick", lw=0.8, label="CDI factor") + axes[1].plot(t, results["B_free"], color="steelblue", lw=0.8, label="Buffer free") + axes[1].set_ylabel("CDI / Buffer (0-1)") + axes[1].set_title("CASCADE 5 - CDI lock-out | CASCADE 4 secondary - buffer saturation", + fontsize=9, loc="left") + axes[1].legend(fontsize=8) + + axes[2].plot(t, results["N_RRP"], color="teal", lw=0.8, label="RRP") + axes[2].plot(t, results["N_RP"], color="purple", lw=0.8, label="RP") + axes[2].set_ylabel("Vesicles") + axes[2].set_title("CASCADE 1 - vesicle depletion (fast)", fontsize=9, loc="left") + axes[2].legend(fontsize=8) + + axes[3].plot(t, results["NT_cleft"], color="darkgreen", lw=0.8, label="NT cleft") + axes[3].plot(t, results["mGluR_activation"], color="saddlebrown", lw=0.8, label="mGluR (CASCADE 6)") + axes[3].plot(t, results["eCB_level"], color="crimson", lw=0.8, label="eCB (CASCADE 6)") + axes[3].set_ylabel("Cleft / Feedback") + axes[3].set_title("CASCADE 6 - three multiplicative brakes on effective_conductance", + fontsize=9, loc="left") + axes[3].legend(fontsize=8) + + axes[4].plot(t, results["V_post"], color="navy", lw=0.8) + axes[4].set_ylabel("V_post (a.u.)") + axes[4].set_title("CASCADE 6 result - postsynaptic silence", fontsize=9, loc="left") + + axes[5].plot(t, results["ATP_level"], color="goldenrod", lw=0.8) + axes[5].set_ylabel("ATP level (0-1)") + axes[5].set_title("CASCADE 2 - set Glucose_level < 1.0 to activate this arm", + fontsize=9, loc="left") + axes[5].set_xlabel("Time (ms)") + + plt.tight_layout() + plt.savefig("./synapse_simulation.png", dpi=150) + plt.close() + print("Done.") \ No newline at end of file