Update 2026-06-04-modulation-of-future-behavior.md

This commit is contained in:
2026-06-05 12:31:11 +02:00
parent 9d1b4b43fd
commit 83f4239f38
@@ -56,26 +56,26 @@ If the calcium event occurred but the neuromodulatory save signal did not arrive
The astrocyte's perisynaptic wall distance is the variable that makes both outcomes self-reinforcing rather than merely additive. When it moves inward during potentiation, it concentrates glutamate at the cleft, maintains D-serine near the postsynapse, and tightens the presynaptic feedback loop — making future high-frequency events even more likely to cross the threshold. When it moves outward during depression, it dilutes the signal, starves the NMDA gate, and loosens the presynaptic feedback — making future events even less likely to reach threshold. The astrocyte therefore does not simply mirror what the neurons decide: it actively deepens the valley the synapse has already rolled into, in whichever direction that happens to be. The astrocyte's perisynaptic wall distance is the variable that makes both outcomes self-reinforcing rather than merely additive. When it moves inward during potentiation, it concentrates glutamate at the cleft, maintains D-serine near the postsynapse, and tightens the presynaptic feedback loop — making future high-frequency events even more likely to cross the threshold. When it moves outward during depression, it dilutes the signal, starves the NMDA gate, and loosens the presynaptic feedback — making future events even less likely to reach threshold. The astrocyte therefore does not simply mirror what the neurons decide: it actively deepens the valley the synapse has already rolled into, in whichever direction that happens to be.
## Pseudocode # Pseudocode
[pseudocode](tripartite_synapse_full_pseudocode.html) [pseudocode](tripartite_synapse_full_pseudocode.html)
### global state variables ## global state variables
#### ── Fast (mss): wave propagation ───────────────────────────── ### ── Fast (mss): wave propagation ─────────────────────────────
##### Presynapse #### Presynapse
pre_Ca_residual // leftover Ca²⁺ between spikes — short-term trace pre_Ca_residual // leftover Ca²⁺ between spikes — short-term trace
vesicle_release_prob // P(0.11.0) per docking slot vesicle_release_prob // P(0.11.0) per docking slot
RRP_pool // readily-releasable vesicle pool RRP_pool // readily-releasable vesicle pool
reserve_pool // chained vesicles in deep storage reserve_pool // chained vesicles in deep storage
##### Postsynapse #### Postsynapse
membrane_potential // Vm — depolarization state membrane_potential // Vm — depolarization state
NMDA_Mg_block // bool — mechanical clamp on/off NMDA_Mg_block // bool — mechanical clamp on/off
post_Ca_amplitude // peak [Ca²⁺] rise in spine post_Ca_amplitude // peak [Ca²⁺] rise in spine
post_Ca_rise_speed // d(Ca)/dt — fast=LTP signal, slow=LTD signal post_Ca_rise_speed // d(Ca)/dt — fast=LTP signal, slow=LTD signal
##### Astrocyte #### Astrocyte
glutamate_cleft // [glu] in synaptic cleft glutamate_cleft // [glu] in synaptic cleft
glutamate_spillover // extrasynaptic [glu] — saturates mGluRs glutamate_spillover // extrasynaptic [glu] — saturates mGluRs
astro_Ca_local // IP3-triggered local rise near synapse astro_Ca_local // IP3-triggered local rise near synapse
@@ -83,7 +83,7 @@ astro_Ca_global // soma-wide wave — network overload flag
D_serine_release // gliotransmitter — NMDA co-agonist pulse D_serine_release // gliotransmitter — NMDA co-agonist pulse
lactate_output // fuel export rate to pre and post lactate_output // fuel export rate to pre and post
#### ── Intermediate (smin): temporary tuning ──────────────────── ### ── Intermediate (smin): temporary tuning ────────────────────
mGluR2_3_activation // presynaptic Gi — autoinhibitory brake mGluR2_3_activation // presynaptic Gi — autoinhibitory brake
mGluR5_activation // astrocytic Gq — IP3→Ca²⁺→D-serine cascade mGluR5_activation // astrocytic Gq — IP3→Ca²⁺→D-serine cascade
cAMP_level // set by dopamine/NE via Gs → adenylyl cyclase cAMP_level // set by dopamine/NE via Gs → adenylyl cyclase
@@ -92,7 +92,7 @@ GluA1_Ser845_primed // bool — AMPA insertion threshold lowered by PKA
DARPP32_phospho // bool — PP1 (LTD phosphatase) silenced by PKA DARPP32_phospho // bool — PP1 (LTD phosphatase) silenced by PKA
CREB_active // bool — structural gene expression enabled CREB_active // bool — structural gene expression enabled
#### ── Slow (hweeks): structural architecture ─────────────────── ### ── Slow (hweeks): structural architecture ───────────────────
AMPA_count // surface receptors — postsynaptic sensitivity AMPA_count // surface receptors — postsynaptic sensitivity
spine_volume // physical size of dendritic spine spine_volume // physical size of dendritic spine
active_zone_size // docking slot count active_zone_size // docking slot count
@@ -103,10 +103,10 @@ ECM_integrity // extracellular matrix density
D_serine_tonic_level // baseline co-agonist supply (sustained) D_serine_tonic_level // baseline co-agonist supply (sustained)
glutamate_clearance_rate // EAAT transporter density glutamate_clearance_rate // EAAT transporter density
#### fast time scale — wave propagation (ms → s) ### fast time scale — wave propagation (ms → s)
function fire_action_potential(input_freq): function fire_action_potential(input_freq):
##### Presynapse: launch wavefront #### Presynapse: launch wavefront
pre_Ca_residual += spike_influx(input_freq) pre_Ca_residual += spike_influx(input_freq)
pre_Ca_residual *= decay(τ ≈ 100ms) // fades unless spikes keep arriving pre_Ca_residual *= decay(τ ≈ 100ms) // fades unless spikes keep arriving
vesicle_release_prob *= facilitation(pre_Ca_residual) vesicle_release_prob *= facilitation(pre_Ca_residual)
@@ -114,7 +114,7 @@ released_vesicles = binomial(RRP_pool, vesicle_release_prob)
glutamate_cleft = released_vesicles × quantal_content glutamate_cleft = released_vesicles × quantal_content
RRP_pool -= released_vesicles RRP_pool -= released_vesicles
##### Astrocyte: overflow sensing and co-agonist release #### Astrocyte: overflow sensing and co-agonist release
glutamate_spillover = extrasynaptic_diffusion(glutamate_cleft) glutamate_spillover = extrasynaptic_diffusion(glutamate_cleft)
if glutamate_spillover > spillover_threshold: if glutamate_spillover > spillover_threshold:
mGluR5_activation = True // Gq arm → IP3 → Ca²⁺ → D-serine mGluR5_activation = True // Gq arm → IP3 → Ca²⁺ → D-serine
@@ -124,46 +124,46 @@ mGluR2_3_activation = True // Gi arm → brake presynapse
cAMP_level -= Gi_inhibition(adenylyl_cyclase) cAMP_level -= Gi_inhibition(adenylyl_cyclase)
vesicle_release_prob -= VGCC_suppression() // autoinhibitory brake vesicle_release_prob -= VGCC_suppression() // autoinhibitory brake
##### Astrocyte: check for network overload #### Astrocyte: check for network overload
astro_Ca_global = soma_wave(astro_Ca_local > OVERLOAD_threshold) astro_Ca_global = soma_wave(astro_Ca_local > OVERLOAD_threshold)
if astro_Ca_global: trigger(shockwave_lockdown) if astro_Ca_global: trigger(shockwave_lockdown)
##### Postsynapse: wavefront strikes resonator #### Postsynapse: wavefront strikes resonator
AMPA_current = glutamate_cleft × AMPA_count AMPA_current = glutamate_cleft × AMPA_count
membrane_potential += AMPA_current membrane_potential += AMPA_current
##### NMDA gate: coincidence check #### NMDA gate: coincidence check
if membrane_potential > -40mV and D_serine_release > threshold: if membrane_potential > -40mV and D_serine_release > threshold:
NMDA_Mg_block = False // Mg²⁺ ejected NMDA_Mg_block = False // Mg²⁺ ejected
post_Ca_amplitude += NMDA_influx(glutamate_cleft) post_Ca_amplitude += NMDA_influx(glutamate_cleft)
post_Ca_rise_speed = d(post_Ca_amplitude) / dt post_Ca_rise_speed = d(post_Ca_amplitude) / dt
##### Astrocyte: vacuum trailing echoes + fuel pipeline #### Astrocyte: vacuum trailing echoes + fuel pipeline
glutamate_cleft -= glutamate_clearance_rate × Δt glutamate_cleft -= glutamate_clearance_rate × Δt
lactate_output += glycolysis_rate(glutamate_clearance_rate) lactate_output += glycolysis_rate(glutamate_clearance_rate)
membrane_potential restored by NaK_ATPase(lactate_output) membrane_potential restored by NaK_ATPase(lactate_output)
RRP_pool refilled by VATPase(lactate_output) RRP_pool refilled by VATPase(lactate_output)
#### intermediate time scale — temporary tuning (s → min) ### intermediate time scale — temporary tuning (s → min)
function short_term_plasticity(input_freq, duration): function short_term_plasticity(input_freq, duration):
##### Presynapse: facilitate or depress based on Ca²⁺ history #### Presynapse: facilitate or depress based on Ca²⁺ history
if input_freq > 20Hz: if input_freq > 20Hz:
vesicle_release_prob *= 1.3 // residual Ca²⁺ primes launchpad vesicle_release_prob *= 1.3 // residual Ca²⁺ primes launchpad
mobilize(reserve_pool → RRP_pool) // break storage chains mobilize(reserve_pool → RRP_pool) // break storage chains
elif input_freq < 5Hz: elif input_freq < 5Hz:
vesicle_release_prob *= 0.7 // RRP depleted faster than refill vesicle_release_prob *= 0.7 // RRP depleted faster than refill
##### Postsynapse: NMDA gate primed if frequency sustained #### Postsynapse: NMDA gate primed if frequency sustained
if input_freq >= 50Hz and duration > 1s: if input_freq >= 50Hz and duration > 1s:
NMDA_Mg_block = False // sustained depolarization NMDA_Mg_block = False // sustained depolarization
post_Ca_amplitude accumulates // early-LTP signal rises post_Ca_amplitude accumulates // early-LTP signal rises
##### Astrocyte: sustained volume → escalate co-agonist #### Astrocyte: sustained volume → escalate co-agonist
if astro_Ca_local > local_threshold: if astro_Ca_local > local_threshold:
D_serine_release += gliotransmitter_pulse() // widens NMDA window D_serine_release += gliotransmitter_pulse() // widens NMDA window
##### Neuromodulators: set context gate via Gs protein #### Neuromodulators: set context gate via Gs protein
if dopamine_level > D1_threshold or NE_level > β_threshold: if dopamine_level > D1_threshold or NE_level > β_threshold:
cAMP_level += Gs_activation(adenylyl_cyclase) cAMP_level += Gs_activation(adenylyl_cyclase)
PKA_activity = proportional_to(cAMP_level) PKA_activity = proportional_to(cAMP_level)
@@ -174,74 +174,74 @@ DARPP32_phospho = True // silences PP1 — blocks LTD
translocate(PKA → nucleus) → phosphorylate(CREB) translocate(PKA → nucleus) → phosphorylate(CREB)
CREB_active = True // enables structural gene expression CREB_active = True // enables structural gene expression
##### Acetylcholine: lower LTP threshold globally #### Acetylcholine: lower LTP threshold globally
LTP_threshold *= (1 / (1 + ACh_level × mAChR_gain)) LTP_threshold *= (1 / (1 + ACh_level × mAChR_gain))
#### slow time scale — structural commit (h → weeks) ### slow time scale — structural commit (h → weeks)
function commit_to_structural_change(): function commit_to_structural_change():
##### Hierarchical filter: three conditions must align #### Hierarchical filter: three conditions must align
event_detected = post_Ca_amplitude > Ca_HIGH // layer 1: did something happen? event_detected = post_Ca_amplitude > Ca_HIGH // layer 1: did something happen?
overflow_sensed = mGluR5_activation == True // layer 2: was it excessive? overflow_sensed = mGluR5_activation == True // layer 2: was it excessive?
context_validated = DARPP32_phospho and GluA1_Ser845_primed // layer 3: worth saving? context_validated = DARPP32_phospho and GluA1_Ser845_primed // layer 3: worth saving?
##### ── Branch 1: LTP — potentiation ────────────────────────────── #### ── Branch 1: LTP — potentiation ──────────────────────────────
if event_detected and overflow_sensed and context_validated: if event_detected and overflow_sensed and context_validated:
###### Postsynapse: anchor receptors, enlarge spine ##### Postsynapse: anchor receptors, enlarge spine
activate(CaMKII) activate(CaMKII)
AMPA_count += receptor_insertion(CaMKII, GluA1_Ser845_primed) AMPA_count += receptor_insertion(CaMKII, GluA1_Ser845_primed)
spine_volume *= 1.5 spine_volume *= 1.5
###### Presynapse: expand launchpad, increase output reliability ##### Presynapse: expand launchpad, increase output reliability
active_zone_size *= 1.4 // more docking slots active_zone_size *= 1.4 // more docking slots
RRP_pool_capacity += pool_expansion(active_zone_size) RRP_pool_capacity += pool_expansion(active_zone_size)
VGCC_clustering += cluster_beneath_AZ() // tighter Ca²⁺ coupling VGCC_clustering += cluster_beneath_AZ() // tighter Ca²⁺ coupling
vesicle_release_prob += 0.1 // driven by VGCC clustering vesicle_release_prob += 0.1 // driven by VGCC clustering
###### Astrocyte: seal and insulate the channel ##### Astrocyte: seal and insulate the channel
perisynaptic_distance -= process_retraction() // walls move IN → tighter wrap perisynaptic_distance -= process_retraction() // walls move IN → tighter wrap
ECM_integrity += secrete(Glypicans, Thrombospondins) ECM_integrity += secrete(Glypicans, Thrombospondins)
D_serine_tonic_level += upregulate_synthesis() // sustained NMDA priming D_serine_tonic_level += upregulate_synthesis() // sustained NMDA priming
glutamate_clearance_rate *= 0.85 // tighter wrap → slower diffusion away glutamate_clearance_rate *= 0.85 // tighter wrap → slower diffusion away
return "potentiated" return "potentiated"
##### ── Branch 2: temporary only — Ca²⁺ rose, no save signal ───── #### ── Branch 2: temporary only — Ca²⁺ rose, no save signal ─────
elif event_detected and not context_validated: elif event_detected and not context_validated:
AMPA_count += transient_insertion() // early-LTP only — reverses in minutes AMPA_count += transient_insertion() // early-LTP only — reverses in minutes
vesicle_release_prob += transient_facilitation() vesicle_release_prob += transient_facilitation()
###### No astrocyte structural change ##### No astrocyte structural change
return "temporary facilitation only" return "temporary facilitation only"
##### ── Branch 3: LTD — active forgetting ───────────────────────── #### ── Branch 3: LTD — active forgetting ─────────────────────────
elif event_detected and not overflow_sensed and not context_validated: elif event_detected and not overflow_sensed and not context_validated:
###### Postsynapse: internalize receptors, shrink spine ##### Postsynapse: internalize receptors, shrink spine
activate(PP1) activate(PP1)
AMPA_count -= receptor_internalization(PP1) AMPA_count -= receptor_internalization(PP1)
spine_volume *= 0.7 spine_volume *= 0.7
###### Presynapse: dismantle launchpad ##### Presynapse: dismantle launchpad
active_zone_size -= docking_slot_removal() active_zone_size -= docking_slot_removal()
RRP_pool_capacity -= pool_contraction() RRP_pool_capacity -= pool_contraction()
VGCC_clustering -= scatter_VGCCs() // decouple Ca²⁺ from AZ VGCC_clustering -= scatter_VGCCs() // decouple Ca²⁺ from AZ
vesicle_release_prob *= 0.6 vesicle_release_prob *= 0.6
###### Astrocyte: dissolve matrix, pull away, cut support ##### Astrocyte: dissolve matrix, pull away, cut support
ECM_integrity -= secrete(MMPs) // molecular scissors ECM_integrity -= secrete(MMPs) // molecular scissors
D_serine_tonic_level = 0 // co-agonist supply cut D_serine_tonic_level = 0 // co-agonist supply cut
perisynaptic_distance += process_extension() // walls move OUT → loose wrap perisynaptic_distance += process_extension() // walls move OUT → loose wrap
glutamate_clearance_rate *= 1.2 // looser wrap → faster spillover glutamate_clearance_rate *= 1.2 // looser wrap → faster spillover
return "depressed" return "depressed"
##### ── Branch 4: baseline ──────────────────────────────────────── #### ── Branch 4: baseline ────────────────────────────────────────
else: else:
###### All structural variables unchanged — system holds current state ##### All structural variables unchanged — system holds current state
return "baseline — no change" return "baseline — no change"
##### special case — shockwave lockdown (>100Hz uncoordinated) #### special case — shockwave lockdown (>100Hz uncoordinated)
function shockwave_lockdown(): function shockwave_lockdown():
astro_Ca_global = GLOBAL_WAVE // soma-level flood astro_Ca_global = GLOBAL_WAVE // soma-level flood
@@ -250,18 +250,19 @@ AMPA_count -= mass_internalization()
membrane_potential = HYPERPOLARIZED membrane_potential = HYPERPOLARIZED
cluster(VGCC → beneath_active_zone) // ensures signal survives chaos cluster(VGCC → beneath_active_zone) // ensures signal survives chaos
##### energy supply chain — metabolic gating (continuous) #### energy supply chain — metabolic gating (continuous)
function metabolic_loop(Δt): function metabolic_loop(Δt):
###### Astrocyte: glucose → lactate pipeline
##### Astrocyte: glucose → lactate pipeline
glucose_uptake = blood_capillary_supply() glucose_uptake = blood_capillary_supply()
lactate_output = glycolysis(glucose_uptake, glutamate_clearance_rate) lactate_output = glycolysis(glucose_uptake, glutamate_clearance_rate)
lactate_output *= load_factor(glutamate_clearance_rate) lactate_output *= load_factor(glutamate_clearance_rate)
###### Pre + post absorb lactate → power their pumps ##### Pre + post absorb lactate → power their pumps
RRP_pool refill rate ∝ VATPase(lactate_output) RRP_pool refill rate ∝ VATPase(lactate_output)
membrane_potential reset ∝ NaK_ATPase(lactate_output) membrane_potential reset ∝ NaK_ATPase(lactate_output)
##### key asymmetry — perisynaptic distance is bidirectional #### key asymmetry — perisynaptic distance is bidirectional
// LTP: astrocyte moves IN → tighter diffusion barrier // LTP: astrocyte moves IN → tighter diffusion barrier
// → glutamate_clearance_rate ↓ (signal contained, not diluted) // → glutamate_clearance_rate ↓ (signal contained, not diluted)
// → D_serine_tonic_level ↑ (NMDA gate chronically primed) // → D_serine_tonic_level ↑ (NMDA gate chronically primed)
@@ -274,7 +275,7 @@ membrane_potential reset ∝ NaK_ATPase(lactate_output)
// potentiation becomes self-reinforcing; depression becomes self-reinforcing // potentiation becomes self-reinforcing; depression becomes self-reinforcing
## Neuromodulators # Neuromodulators
These are produced by small, anatomically concentrated nuclei that broadcast widely across the brain: These are produced by small, anatomically concentrated nuclei that broadcast widely across the brain:
@@ -282,14 +283,14 @@ dopamine_level // "save button" — validates LTP
norepinephrine_level // arousal / signal-to-noise gain norepinephrine_level // arousal / signal-to-noise gain
acetylcholine_level // attention — lowers LTP threshold acetylcholine_level // attention — lowers LTP threshold
### Dopamine ## Dopamine
Dopamine is produced primarily by neurons in the Substantia Nigra pars compacta (projecting to the striatum, relevant for motor learning and habit formation) and the Ventral Tegmental Area (VTA) (projecting to the prefrontal cortex and limbic system via the mesolimbic and mesocortical pathways, relevant for reward, motivation, and the "save button" function in your model). Dopamine is produced primarily by neurons in the Substantia Nigra pars compacta (projecting to the striatum, relevant for motor learning and habit formation) and the Ventral Tegmental Area (VTA) (projecting to the prefrontal cortex and limbic system via the mesolimbic and mesocortical pathways, relevant for reward, motivation, and the "save button" function in your model).
### Norepinephrine ## Norepinephrine
Norepinephrine is produced almost exclusively by the Locus Coeruleus, a tiny nucleus in the brainstem pons. Despite its small size it projects diffusely across virtually the entire brain — cortex, hippocampus, cerebellum, spinal cord. It's essentially the brain's arousal and signal-to-noise broadcaster, firing tonically at low rates during calm wakefulness and phasically during novel or stressful events. Norepinephrine is produced almost exclusively by the Locus Coeruleus, a tiny nucleus in the brainstem pons. Despite its small size it projects diffusely across virtually the entire brain — cortex, hippocampus, cerebellum, spinal cord. It's essentially the brain's arousal and signal-to-noise broadcaster, firing tonically at low rates during calm wakefulness and phasically during novel or stressful events.
### Acetylcholine ## Acetylcholine
Acetylcholine has two main sources: the basal forebrain nuclei (including the nucleus basalis of Meynert) projecting to the cortex and hippocampus — relevant for attention and learning gating — and the medial septum projecting specifically to the hippocampus, where it strongly modulates theta rhythms and memory encoding. Acetylcholine has two main sources: the basal forebrain nuclei (including the nucleus basalis of Meynert) projecting to the cortex and hippocampus — relevant for attention and learning gating — and the medial septum projecting specifically to the hippocampus, where it strongly modulates theta rhythms and memory encoding.
What's striking in the context of your model is that all three systems share the same architectural logic: a tiny, localized cell population broadcasts a global contextual signal that shifts the operational threshold of millions of synapses simultaneously — none of them carrying specific content, all of them modulating how content gets written. What's striking in the context of your model is that all three systems share the same architectural logic: a tiny, localized cell population broadcasts a global contextual signal that shifts the operational threshold of millions of synapses simultaneously — none of them carrying specific content, all of them modulating how content gets written.