Files
organism/elements/astrocyte/appunti/2026-06-04-modulation-of-future-behavior.md
T

6.9 KiB

Table of Contents
include_toc
include_toc
true

Intro

The synapse uses three interlocking signal systems to translate present activity into future behavioral bias. Ca²⁺ is the universal event recorder — each compartment reads its concentration dynamics differently (amplitude and speed of rise in the postsynapse, residual accumulation in the presynapse, IP3-triggered waves in the astrocyte), so the same ion encodes distinct instructions depending on where and how it appears. cAMP/PKA is the contextual gate: driven by neuromodulatory broadcast (dopamine, norepinephrine), it doesn't write changes itself but determines whether the Ca²⁺ signal gets committed to permanent structure — by priming AMPA receptor insertion, silencing the LTD phosphatase machinery via DARPP-32, and activating CREB-driven gene expression for structural proteins. mGluRs provide the overflow sensing layer: when glutamate spills beyond the cleft, group II/III mGluRs on the presynapse activate a Gi-mediated autoinhibitory brake, while group I mGluRs on the astrocyte trigger the IP3→Ca²⁺→D-serine cascade that amplifies NMDA coincidence detection — a push-pull architecture that simultaneously throttles excessive release and widens the postsynaptic learning window. Together these three systems form a hierarchical filter: Ca²⁺ asks did something happen?, mGluRs ask was it excessive?, and cAMP/PKA asks was it worth saving? — and only when all three align does the synapse commit to rewriting its future response.

signal state variables

// ── Ca²⁺ : event recorder ──────────────────────────────────────
pre_Ca_residual // leftover Ca²⁺ between spikes — encodes recent history
post_Ca_amplitude // peak rise magnitude in spine
post_Ca_rise_speed // rate of rise — fast=LTP, slow=LTD
astro_Ca_local // IP3-triggered local rise near synapse
astro_Ca_global // soma-wide wave — network overload flag

// ── cAMP/PKA : context gate ────────────────────────────────────
cAMP_level // set by dopamine/NE via Gs → adenylyl cyclase
PKA_activity // downstream of cAMP
GluA1_Ser845_primed // bool — AMPA insertion threshold lowered
DARPP32_phospho // bool — PP1 (LTD phosphatase) silenced
CREB_active // bool — structural gene expression enabled

// ── mGluRs : overflow sensor ───────────────────────────────────
glutamate_spillover // extrasynaptic [glu] — only high when cleft saturated
mGluR2_3_activation // presynaptic Gi — autoinhibitory brake
mGluR5_activation // astrocytic Gq — IP3 → Ca²⁺ → D-serine cascade

layer 1 — Ca²⁺: did something happen?

function Ca_event_recorder(spike_history, input_freq):

// Presynapse: residual Ca²⁺ = trace of recent firing
pre_Ca_residual += spike_influx(input_freq)
pre_Ca_residual *= decay(τ ≈ 100ms) // fades unless spikes keep arriving
vesicle_release_prob *= facilitation(pre_Ca_residual)

// Postsynapse: amplitude + speed encode the instruction
post_Ca_amplitude = NMDA_influx(glutamate_cleft, membrane_potential)
post_Ca_rise_speed = d(post_Ca_amplitude) / dt

if post_Ca_amplitude > Ca_HIGH and post_Ca_rise_speed > fast_threshold:
activate(CaMKII) // → LTP kinase pathway
elif post_Ca_amplitude > Ca_LOW and post_Ca_rise_speed < slow_threshold:
activate(PP1, PP2B) // → LTD phosphatase pathway
else:
pass // sub-threshold — no instruction encoded

// Astrocyte: local vs global Ca²⁺ = two different alarms
astro_Ca_local = IP3_release(mGluR5_activation) // activity-proportional
astro_Ca_global = soma_wave(astro_Ca_local > OVERLOAD_threshold)

if astro_Ca_local > local_threshold:
D_serine_release += gliotransmitter_pulse() // widens NMDA window
if astro_Ca_global:
trigger(shockwave_lockdown) // circuit-breaker

layer 2 — mGluRs: was it excessive?

function mGluR_overflow_sensor():

// Only fires when cleft is genuinely saturated (low-affinity receptors)
glutamate_spillover = extrasynaptic_diffusion(glutamate_cleft)

if glutamate_spillover > spillover_threshold:

// Presynapse arm: Gi → brake
mGluR2_3_activation = True
cAMP_level -= Gi_inhibition(adenylyl_cyclase) // suppress PKA locally
vesicle_release_prob -= VGCC_suppression() // autoinhibitory brake

// Astrocyte arm: Gq → amplify (push-pull)
mGluR5_activation = True
astro_Ca_local += IP3_cascade(PLC_activation) // feeds back into layer 1
D_serine_release += proportional_to(astro_Ca_local)

// Net: same overflow signal brakes pre, amplifies post-learning window
return (mGluR2_3_activation, mGluR5_activation)

layer 3 — cAMP/PKA: was it worth saving?

function PKA_context_gate():

// Neuromodulators set the gate via Gs protein
if dopamine_level > D1_threshold or norepinephrine_level > β_threshold:
cAMP_level += Gs_activation(adenylyl_cyclase)
PKA_activity = proportional_to(cAMP_level)

// Target 1: prime AMPA insertion
phosphorylate(GluA1, site=Ser845)
GluA1_Ser845_primed = True // lowers threshold for CaMKII to anchor receptors

// Target 2: silence the forgetting machinery
phosphorylate(DARPP32)
DARPP32_phospho = True // inhibits PP1 → LTD pathway blocked

// Target 3: enable structural gene expression
translocate(PKA → nucleus)
phosphorylate(CREB)
CREB_active = True // new receptors, cytoskeleton, scaffolding

hierarchical filter — commit decision

function commit_to_structural_change():

// All three layers must align
event_detected = post_Ca_amplitude > Ca_HIGH // layer 1: did something happen?
overflow_sensed = mGluR5_activation == True // layer 2: was it excessive?
context_validated = DARPP32_phospho and GluA1_Ser845_primed // layer 3: worth saving?

if event_detected and overflow_sensed and context_validated:
activate(CaMKII) // Ca²⁺ signal now gets converted
AMPA_count += receptor_insertion(CaMKII, GluA1_Ser845_primed)
active_zone_size += structural_expansion(CREB_active)
ECM_integrity += astrocyte_sealing(astro_Ca_local)
return "potentiated"

elif event_detected and not context_validated:
return "temporary facilitation only" // Ca²⁺ rose but no save signal

elif not event_detected and overflow_sensed:
activate(PP1) // phosphatase wins — LTD
AMPA_count -= receptor_internalization(PP1)
return "depressed"

else:
return "baseline — no change"

End

The key architectural decision in this pseudocode is the separation into three explicit layers that feed into a single commit_to_structural_change function. Each layer answers one question independently before the final AND-gate runs — Ca²⁺ detects the event, mGluRs assess its magnitude, and cAMP/PKA validates its context. Notice also that mGluR layer has a push-pull side effect that feeds back into the Ca²⁺ layer (astro_Ca_local is updated by mGluR5_activation), making the system not a strict pipeline but a loop — the overflow sensor actively reshapes what the event recorder sees next.