From 2cad11b1c27b1a22530654cb09fcb89268f951fd Mon Sep 17 00:00:00 2001 From: ocrampal Date: Sat, 6 Jun 2026 13:23:42 +0200 Subject: [PATCH] Delete tripartite_synapse_budget_pseudocode.md --- .../tripartite_synapse_budget_pseudocode.md | 362 ------------------ 1 file changed, 362 deletions(-) delete mode 100644 elements/astrocyte/appunti/tripartite_synapse_budget_pseudocode.md diff --git a/elements/astrocyte/appunti/tripartite_synapse_budget_pseudocode.md b/elements/astrocyte/appunti/tripartite_synapse_budget_pseudocode.md deleted file mode 100644 index 570a7e8..0000000 --- a/elements/astrocyte/appunti/tripartite_synapse_budget_pseudocode.md +++ /dev/null @@ -1,362 +0,0 @@ -# Tripartite Synapse — Full Budget-Aware Pseudocode - -Color key: PRE = presynapse · POST = postsynapse · ASTRO = astrocyte · SIG = signal/neuromodulator · BUD = budget/resource pool - ---- - -## Shared Resource Pools — one per territory - -``` -// ── Axonal arbor: shared across all boutons on one axon ─────────────── -BUD axon_vesicle_protein_pool // RIM, Munc13, VGCC subunits for AZ expansion -BUD axon_mitochondria_capacity // ATP ceiling for vesicle release and refill -BUD axon_tagged_boutons // set of boutons competing for drifting proteins - -// ── Dendritic segment: shared across all spines on one branch ───────── -BUD dendrite_receptor_reserve // local endosomal AMPA pool — not instantly replenished -BUD dendrite_actin_machinery // Rac1/RhoA + actin monomers for spine enlargement -BUD dendrite_protein_flux // plasticity proteins arriving from soma via CREB -BUD dendrite_tagged_spines // set of spines competing for protein flux - -// ── Astrocyte territory: shared across all wrapped synapses ─────────── -BUD astro_serine_racemase_cap // enzyme ceiling for D-serine synthesis rate -BUD astro_EAAT_pool // transporter protein for glutamate clearance -BUD astro_ECM_protein_pool // Glypicans, Thrombospondins for sealing -BUD astro_process_extensions // finite perisynaptic processes — selectively allocated -BUD astro_ATP_budget // total ATP — drives clearance, synthesis, motility -BUD astro_lactate_ceiling // hard cap set by capillary glucose supply - -// ── Soma: shared across the entire neuron ───────────────────────────── -BUD soma_protein_synthesis_rate // CREB-driven — peaks during sleep -BUD soma_receptor_synthesis_rate // new AMPA subunits per hour -``` - ---- - -## Global State Variables - -``` -// ── Fast (ms–s): wave propagation ───────────────────────────────────── -// Presynapse -PRE pre_Ca_residual // leftover Ca²⁺ between spikes — short-term trace -PRE vesicle_release_prob // P(0.1–1.0) per docking slot -PRE RRP_pool // readily-releasable vesicle pool -PRE reserve_pool // chained vesicles in deep storage - -// Postsynapse -POST membrane_potential // Vm — depolarization state -POST NMDA_Mg_block // bool — mechanical clamp on/off -POST post_Ca_amplitude // peak [Ca²⁺] rise in spine -POST post_Ca_rise_speed // d(Ca)/dt — fast=LTP signal, slow=LTD signal - -// Astrocyte -ASTRO glutamate_cleft // [glu] in synaptic cleft -ASTRO glutamate_spillover // extrasynaptic [glu] — saturates mGluRs -ASTRO astro_Ca_local // IP3-triggered local rise near synapse -ASTRO astro_Ca_global // soma-wide wave — network overload flag -ASTRO D_serine_release // gliotransmitter — NMDA co-agonist pulse -ASTRO lactate_out // fuel export rate to pre and post - -// ── Intermediate (s–min): temporary tuning ──────────────────────────── -SIG mGluR2_3_activation // presynaptic Gi — autoinhibitory brake -SIG mGluR5_activation // astrocytic Gq — IP3→Ca²⁺→D-serine cascade -SIG cAMP_level // set by dopamine/NE via Gs → adenylyl cyclase -SIG PKA_activity // downstream of cAMP -SIG GluA1_Ser845_primed // bool — AMPA insertion threshold lowered by PKA -SIG DARPP32_phospho // bool — PP1 (LTD phosphatase) silenced by PKA -SIG CREB_active // bool — structural gene expression enabled - -// ── Slow (h–weeks): structural architecture ─────────────────────────── -POST AMPA_count // surface receptors — postsynaptic sensitivity -POST spine_volume // physical size of dendritic spine -PRE active_zone_size // docking slot count -PRE RRP_pool_capacity // max readily-releasable pool -PRE VGCC_clustering // Ca²⁺ channels beneath active zone -ASTRO perisynaptic_distance // how close astrocyte walls are to synapse -ASTRO ECM_integrity // extracellular matrix density -ASTRO D_serine_tonic_level // baseline co-agonist supply (sustained) -ASTRO glutamate_clearance_rate // EAAT transporter density -``` - ---- - -## Budget Allocation Functions - -``` -function request_axon_resources(bouton_id, req_AZ): - available = axon_vesicle_protein_pool × tag_priority(bouton_id, axon_tagged_boutons) - granted = min(req_AZ, available) - axon_vesicle_protein_pool -= granted - if granted < req_AZ: - trigger(heterosynaptic_depression, neighbors(bouton_id)) // passive depletion - return granted - -function request_dendrite_resources(spine_id, req_AMPA, req_actin): - priority = tag_priority(spine_id, dendrite_tagged_spines) - g_AMPA = min(req_AMPA, dendrite_receptor_reserve × priority) - g_actin = min(req_actin, dendrite_actin_machinery × priority) - dendrite_receptor_reserve -= g_AMPA - dendrite_actin_machinery -= g_actin - if g_AMPA < req_AMPA: - queue(spine_id, deficit, dendrite_protein_flux) // wait for soma delivery - trigger(heterosynaptic_depression, neighbors(spine_id)) - return (g_AMPA, g_actin) - -function request_astro_resources(syn_id, req_Ds, req_ECM, req_proc): - g_Ds = min(req_Ds, astro_serine_racemase_cap) - g_ECM = min(req_ECM, astro_ECM_protein_pool) - g_proc = min(req_proc, astro_process_extensions) - ATP_cost = compute_ATP(g_Ds, g_ECM, g_proc) - if ATP_cost > astro_ATP_budget: - scale_down(g_Ds, g_ECM, g_proc) // proportional rationing - astro_serine_racemase_cap -= g_Ds - astro_ECM_protein_pool -= g_ECM - astro_process_extensions -= g_proc - astro_ATP_budget -= ATP_cost - return (g_Ds, g_ECM, g_proc) - -function replenish_budgets(Δt): - // Pools recover over time — rates set by metabolic and synthetic capacity - axon_vesicle_protein_pool += protein_transport_rate(axon) × Δt - dendrite_receptor_reserve += soma_receptor_synthesis_rate × delivery_fraction() × Δt - dendrite_actin_machinery += actin_recovery_rate() × Δt - dendrite_protein_flux = soma_protein_synthesis_rate // set by CREB, peaks during sleep - astro_serine_racemase_cap += enzyme_synthesis_rate() × Δt - astro_ECM_protein_pool += ECM_synthesis_rate() × Δt - astro_process_extensions += process_recovery_rate() × Δt // slow — hours timescale - astro_ATP_budget += glycolysis(astro_lactate_ceiling) × Δt - astro_lactate_ceiling = capillary_glucose_supply() // vascular hard ceiling - soma_protein_synthesis_rate = CREB_driven_expression() // elevated during sleep replay -``` - ---- - -## Fast Time Scale — Wave Propagation (ms → s) - -``` -function fire_action_potential(input_freq): - - // Presynapse: release gated by ATP budget - if axon_mitochondria_capacity > release_ATP_cost: - pre_Ca_residual += spike_influx(input_freq) - pre_Ca_residual *= decay(τ ≈ 100ms) - vesicle_release_prob *= facilitation(pre_Ca_residual) - released = binomial(RRP_pool, vesicle_release_prob) - glutamate_cleft = released × quantal_content - RRP_pool -= released - axon_mitochondria_capacity -= release_ATP_cost - else: - suppress(release) // ATP-depleted bouton goes silent - - // Astrocyte: overflow sensing — D-serine draw budget-checked - glutamate_spillover = extrasynaptic_diffusion(glutamate_cleft) - if glutamate_spillover > spillover_threshold: - mGluR5_activation = True - astro_Ca_local += IP3_cascade(PLC) - (g_Ds, _, _) = request_astro_resources(syn_id, proportional_to(astro_Ca_local), 0, 0) - D_serine_release += g_Ds // may be less than ideal if budget low - mGluR2_3_activation = True // Gi arm: brake presynapse regardless - cAMP_level -= Gi_inhibition(adenylyl_cyclase) - vesicle_release_prob -= VGCC_suppression() - - // Astrocyte: global overload check - astro_Ca_global = soma_wave(astro_Ca_local > OVERLOAD_threshold) - if astro_Ca_global: trigger(shockwave_lockdown) - - // Postsynapse: AMPA current + NMDA coincidence gate - membrane_potential += glutamate_cleft × AMPA_count - if membrane_potential > -40mV and D_serine_release > threshold: - NMDA_Mg_block = False - post_Ca_amplitude += NMDA_influx(glutamate_cleft) - post_Ca_rise_speed = d(post_Ca_amplitude) / dt - - // Astrocyte: clearance + fuel — capped at vascular ceiling - glutamate_cleft -= glutamate_clearance_rate × Δt - lactate_out = min(glycolysis_rate(glutamate_clearance_rate), astro_lactate_ceiling) - membrane_potential restored by NaK_ATPase(lactate_out) - RRP_pool refilled by VATPase(lactate_out) - astro_ATP_budget -= clearance_ATP_cost(glutamate_clearance_rate) -``` - ---- - -## Intermediate Time Scale — Temporary Tuning (s → min) - -``` -function short_term_plasticity(input_freq, duration): - - // Presynapse: facilitate or depress — pool-limited - if input_freq > 20Hz: - vesicle_release_prob *= 1.3 - mobilize(reserve_pool → RRP_pool) // only if reserve_pool > 0 - elif input_freq < 5Hz: - vesicle_release_prob *= 0.7 // pool depletes faster than refill - - // Postsynapse: NMDA priming + plant synaptic tag - if input_freq >= 50Hz and duration > 1s: - NMDA_Mg_block = False - post_Ca_amplitude accumulates - dendrite_tagged_spines.add(spine_id) // enters competition for drifting proteins - - // Astrocyte: escalate D-serine — budget-checked - if astro_Ca_local > local_threshold: - (g_Ds, _, _) = request_astro_resources(syn_id, gliotransmitter_pulse(), 0, 0) - D_serine_release += g_Ds - - // Neuromodulators: set context gate + plant axonal tag - if dopamine_level > D1_threshold or NE_level > β_threshold: - cAMP_level += Gs_activation(adenylyl_cyclase) - PKA_activity = proportional_to(cAMP_level) - phosphorylate(GluA1, Ser845) → GluA1_Ser845_primed = True - phosphorylate(DARPP32) → DARPP32_phospho = True - translocate(PKA → nucleus) → CREB_active = True - axon_tagged_boutons.add(bouton_id) // captures drifting axonal proteins - - LTP_threshold *= (1 / (1 + ACh_level × mAChR_gain)) -``` - ---- - -## Slow Time Scale — Structural Commit (h → weeks) - -``` -function commit_to_structural_change(bouton_id, spine_id, syn_id): - - // Three-layer hierarchical filter - event_detected = post_Ca_amplitude > Ca_HIGH - overflow_sensed = mGluR5_activation == True - context_validated = DARPP32_phospho and GluA1_Ser845_primed - - // ── Branch 1: LTP — all budgets requested simultaneously ────────── - if event_detected and overflow_sensed and context_validated: - - g_AZ = request_axon_resources(bouton_id, AZ_expansion_cost) - (g_AMPA, g_actin) = request_dendrite_resources(spine_id, AMPA_cost, actin_cost) - (g_Ds, g_ECM, g_pr) = request_astro_resources(syn_id, Ds_cost, ECM_cost, proc_cost) - - // Postsynapse: commit proportional to granted resources - activate(CaMKII) - AMPA_count += receptor_insertion(CaMKII, g_AMPA) - spine_volume *= (1 + spine_scale(g_actin)) - - // Presynapse: commit proportional to granted resources - active_zone_size += g_AZ - RRP_pool_capacity += pool_expansion(active_zone_size) - VGCC_clustering += cluster_beneath_AZ(g_AZ) - vesicle_release_prob += scale_with(g_AZ) - - // Astrocyte: commit proportional to granted resources - perisynaptic_distance -= g_pr // walls IN → tighter wrap - ECM_integrity += g_ECM - D_serine_tonic_level += g_Ds - glutamate_clearance_rate *= (1 - clearance_scale(g_pr)) - - // Partial grants: queue deficit — fulfilled when soma replenishes pools - if g_AMPA < AMPA_cost or g_AZ < AZ_expansion_cost: - queue(bouton_id, spine_id, deficit, dendrite_protein_flux) - - axon_tagged_boutons.remove(bouton_id) - dendrite_tagged_spines.remove(spine_id) - return "potentiated" // may be partial if budgets constrained - - // ── Branch 2: temporary only — no structural budget drawn ───────── - elif event_detected and not context_validated: - AMPA_count += transient_insertion() // reverses — reserve not permanently drawn - vesicle_release_prob += transient_facilitation() - dendrite_tagged_spines.remove(spine_id) // tag expires without save signal - axon_tagged_boutons.remove(bouton_id) - return "temporary facilitation only" - - // ── Branch 3: LTD — resources returned to pool ──────────────────── - elif event_detected and not overflow_sensed and not context_validated: - - // Postsynapse: internalize receptors — returned to reserve - activate(PP1) - rec_AMPA = receptor_internalization(PP1) - AMPA_count -= rec_AMPA - dendrite_receptor_reserve += rec_AMPA // returned to local pool - spine_volume *= 0.7 - dendrite_actin_machinery += actin_depolymerization() // freed actin returned - - // Presynapse: dismantle launchpad — proteins returned to axonal pool - rec_AZ = docking_slot_removal() - active_zone_size -= rec_AZ - axon_vesicle_protein_pool += rec_AZ // returned for reuse elsewhere - RRP_pool_capacity -= pool_contraction() - VGCC_clustering -= scatter_VGCCs() - vesicle_release_prob *= 0.6 - - // Astrocyte: dissolve matrix — resources partially recycled - rec_ECM = secrete(MMPs) - ECM_integrity -= rec_ECM - astro_ECM_protein_pool += rec_ECM × recycling_fraction // partial recovery - D_serine_tonic_level = 0 - perisynaptic_distance += process_extension() - astro_process_extensions += freed_process // process freed for reallocation - glutamate_clearance_rate *= 1.2 - return "depressed" - - // ── Branch 4: baseline ──────────────────────────────────────────── - else: - return "baseline — no change" -``` - ---- - -## Heterosynaptic Depression — Passive Resource Depletion - -``` -function heterosynaptic_depression(neighbor_ids): - // Triggered when a tagged synapse exhausts the shared pool - // No active signal required — purely a consequence of budget depletion - for n in neighbor_ids: - if n not in dendrite_tagged_spines and n not in axon_tagged_boutons: - AMPA_count[n] -= passive_depletion_rate() - vesicle_release_prob[n] -= passive_depletion_rate() -``` - ---- - -## Special Case — Shockwave Lockdown (>100Hz uncoordinated) - -``` -function shockwave_lockdown(): - astro_Ca_global = GLOBAL_WAVE - release(GABA, ATP) // emergency flood — bypasses normal budget gate - rec_AMPA = mass_internalization() - AMPA_count -= rec_AMPA - dendrite_receptor_reserve += rec_AMPA // receptors returned to reserve - membrane_potential = HYPERPOLARIZED - cluster(VGCC → beneath_active_zone) // overdrive — bypasses normal budget gate - astro_ATP_budget -= emergency_response_cost() // rapid budget depletion -``` - ---- - -## Energy Supply Chain — Metabolic Gating (continuous) - -``` -function metabolic_loop(Δt): - glucose_uptake = blood_capillary_supply() // hard vascular ceiling - lactate_out = min(glycolysis(glucose_uptake, glutamate_clearance_rate), - astro_lactate_ceiling) - lactate_out *= load_factor(glutamate_clearance_rate) - RRP_pool refill rate ∝ VATPase(lactate_out) - membrane_potential reset ∝ NaK_ATPase(lactate_out) - astro_ATP_budget += glycolysis(lactate_out) × Δt - replenish_budgets(Δt) -``` - ---- - -## Key Asymmetry — Perisynaptic Distance Amplifies Both Directions - -``` -// LTP: walls IN → clearance_rate ↓, D_serine_tonic ↑ — self-reinforcing -// LTD: walls OUT → clearance_rate ↑, D_serine_tonic = 0 — self-reinforcing - -// Both directions cost astro_process_extensions budget. -// A budget-depleted astrocyte delivers partial changes only — until replenish_budgets runs. -// This is why sleep matters: soma_protein_synthesis_rate peaks during slow-wave sleep, -// replenishing all pools and completing deferred structural commits held in the queue. -```