no ecb messages
This commit is contained in:
@@ -274,3 +274,60 @@ The distinction matters biologically: a private reserve guarantees a component s
|
||||
(the bouton can refill its RRP from its own vesicles even when lactate is scarce), while a
|
||||
contested supply couples a component's fate to its neighbours' demands (operational budget
|
||||
fails first where many active synapses compete for the same lactate).
|
||||
|
||||
---
|
||||
|
||||
## PRE ↔ POST interaction: local computation, message-only coupling
|
||||
|
||||
The presynapse and postsynapse never read each other's internal state. They interact only
|
||||
by writing to and reading from shared cleft channels. Each side computes entirely locally on
|
||||
what it has: its own variables plus whatever signals have arrived in the cleft. This is the
|
||||
message-passing realization of the locality principle.
|
||||
|
||||
**Forward channel — glutamate (PRE → POST and ASTRO).** The presynapse writes glutamate via
|
||||
NT_flux. The postsynapse reads it (AMPA, NMDA) and the astrosynapse reads it (clearance,
|
||||
mGluR5). The astrosynapse clears it. PRE never knows whether POST responded — it only emits.
|
||||
|
||||
**Gate channel — astro_Dserine (ASTRO → POST).** The astrosynapse writes D-serine; the
|
||||
postsynapse reads it as the obligatory NMDA co-agonist. POST cannot open NMDA without this
|
||||
arrived signal, but it does not read the astrocyte's state — only the delivered D-serine.
|
||||
|
||||
**Backward channel + — retro_NO (POST → PRE).** When the postsynapse's NMDA opens (Mg²⁺
|
||||
ejected, D-serine present, glutamate bound), nNOS — physically tethered to the NMDA receptor
|
||||
through PSD-95 — synthesises nitric oxide (and, on a slower timescale, BDNF is released).
|
||||
These diffuse retrogradely to the presynapse. Biologically this is the classic retrograde
|
||||
messenger of LTP: it tells the bouton that its release landed on a postsynapse that genuinely
|
||||
responded. In the model, POST emits `retro_NO` proportional to its own NMDA-driven calcium —
|
||||
computed purely from POST's local state — and PRE reads it as `retro_NO_local`.
|
||||
|
||||
`retro_NO_local` is exactly the grounding of the presynaptic endurance signal. The
|
||||
presynapse's local success proxy is "I was releasing strongly" (`pre_fast_trace` high). On
|
||||
its own that only says the bouton was working hard, not that the work mattered. `retro_NO`
|
||||
adds the missing confirmation — that the postsynapse responded — without PRE ever reading
|
||||
POST's calcium. So PRE deposits endurance need as `pre_fast_trace × (1 + retro_NO_local)`:
|
||||
strong release that was confirmed effective makes the strongest claim that fuel, not
|
||||
futility, was what interrupted a forming success. retro_NO is short-lived (NO degrades and
|
||||
diffuses within seconds), so the channel decays fast — confirmation must be recent to count.
|
||||
|
||||
**Backward channel − — retro_eCB (POST → PRE).** When the postsynapse is strongly
|
||||
depolarised, it synthesises endocannabinoids (2-AG, anandamide) that diffuse retrogradely and
|
||||
bind presynaptic CB1 receptors, suppressing release. This is depolarisation-induced
|
||||
suppression of excitation (DSE) — a homeostatic negative feedback: an over-driven postsynapse
|
||||
tells the presynapse to release less. In the model, POST emits `retro_eCB` from its own
|
||||
membrane potential, and PRE reads it as `retro_eCB_local`, which reduces the release drive
|
||||
`sat(...) × (1 - retro_eCB_local)`. Again POST computes from its own state; PRE adjusts from
|
||||
the arrived signal; neither reads the other's interior.
|
||||
|
||||
The two backward channels are opposite-signed messages the postsynapse sends about its own
|
||||
condition: retro_NO says "your input was effective — worth sustaining," retro_eCB says "I am
|
||||
saturated — ease off." Together with the forward glutamate and the D-serine gate, they make
|
||||
the synapse a fully message-coupled system of locally-computing components.
|
||||
|
||||
**Why RRP refill is in NOT_AP only.** During an AP the bouton releases — RRP depletes. Refill
|
||||
(VATPase reloading vesicles from the reserve pool) is a recovery process that proceeds between
|
||||
spikes. Placing `fill(RRP, ...)` only in the NOT_AP context makes the AP context pure
|
||||
depletion and the NOT_AP context pure recovery. A consequence falls out for free: during
|
||||
sustained high-frequency firing there are many AP steps and few NOT_AP steps, so RRP depletes
|
||||
faster than it recovers — short-term depression deepens with frequency, with no explicit
|
||||
depression rule. The release itself is throttled further when budget is low (VATPase refill
|
||||
is energy-limited), coupling metabolic state to the depth of depression.
|
||||
|
||||
@@ -30,6 +30,13 @@ NIGHT variables
|
||||
LOCALITY RULE
|
||||
every evaluation uses only local state + signals that have arrived.
|
||||
no component reads another compartment's internal state.
|
||||
|
||||
CLEFT MESSAGE CHANNELS (the only PRE/POST/ASTRO interaction — each writes, others read)
|
||||
glutamate PRE → POST, ASTRO (forward transmitter; cleared by ASTRO)
|
||||
astro_Dserine ASTRO → POST (NMDA co-agonist gate)
|
||||
retro_NO POST → PRE (+) (NO/BDNF: "release reached a responsive target")
|
||||
retro_eCB POST → PRE (−) (endocannabinoid: "over-driven, suppress release" = DSE)
|
||||
Each channel decays/clears; a component reads a channel into a local copy and computes locally.
|
||||
```
|
||||
|
||||
---
|
||||
@@ -46,7 +53,7 @@ sat(x, K) = x / (K + x)
|
||||
|
||||
```
|
||||
K_release K_AMPA K_Dserine
|
||||
Mg_eject Ca_STP Ca_TAG
|
||||
Mg_eject Ca_STP Ca_TAG eCB_thr
|
||||
elig dop_thr tag_thr tag_expiry
|
||||
traj_thr endur_thr
|
||||
spillover inactivation overload
|
||||
@@ -96,24 +103,34 @@ that neighbours compete for.
|
||||
## PRE
|
||||
|
||||
```
|
||||
// Backward messages from POST (computed by POST from its own local state, read here):
|
||||
// retro_NO (+) : POST responded — release reached a responsive target
|
||||
// retro_eCB (−) : POST over-driven — suppress release (DSE)
|
||||
// PRE reads these as arrived signals; it never reads POST's internal state.
|
||||
|
||||
DAY | AP:
|
||||
if pre_budget < release_cost:
|
||||
suppress(NT_flux)
|
||||
if pre_fast_trace > traj_thr: // LOCAL success: I released strongly
|
||||
pre_endurance_need += pre_fast_trace × (1 + retrograde_local)
|
||||
// interrupted LOCAL success: I was releasing strongly (own fast_trace),
|
||||
// confirmed by retro_NO that POST actually responded
|
||||
if pre_fast_trace > traj_thr:
|
||||
pre_endurance_need += pre_fast_trace × (1 + retro_NO_local)
|
||||
exit
|
||||
pre_fast_trace += spike_Ca(input_freq); pre_fast_trace *= decay(100ms)
|
||||
drive = sat(pre_fast_trace, K_release)
|
||||
drive = sat(pre_fast_trace, K_release) × (1 - retro_eCB_local) // DSE brake from POST
|
||||
if RRP > 0:
|
||||
NT_flux = RRP × drive
|
||||
glutamate += NT_flux·Δt; RRP -= NT_flux·Δt; pre_budget -= NT_flux·fusion_cost
|
||||
fill(RRP, pre_structure.slot_ceiling, pre_structure.refill_ceiling, vatpase_cost, pre_budget)
|
||||
if glutamate > spillover: drive *= brake // output brake (not a fill)
|
||||
if glutamate > spillover: drive *= brake // autoreceptor/astro brake (output)
|
||||
// NO fill here — AP only depletes RRP; recovery happens in NOT_AP
|
||||
// (sustained high-frequency firing therefore deepens short-term depression)
|
||||
|
||||
DAY | NOT_AP:
|
||||
pre_fast_trace *= decay(100ms); pre_endurance_need *= decay(min)
|
||||
retro_NO_local = retro_NO; retro_NO *= decay(s) // receive + channel clears (NO short-lived)
|
||||
retro_eCB_local = retro_eCB; retro_eCB *= decay(s) // receive + channel clears
|
||||
refill(pre from astro_lactate[syn] + axon_ship_pre) // contested: lactate + shipment
|
||||
fill(RRP, pre_structure.slot_ceiling, pre_structure.refill_ceiling, vatpase_cost, pre_budget)
|
||||
fill(RRP, pre_structure.slot_ceiling, pre_structure.refill_ceiling, vatpase_cost, pre_budget) // private reserve
|
||||
if pre_fast_trace > elig: pre_possible_tag += pre_fast_trace
|
||||
pre_possible_tag *= decay(s); dopamine *= decay(ms)
|
||||
if dopamine > dop_thr and pre_possible_tag > tag_thr:
|
||||
@@ -137,6 +154,13 @@ DAY | NOT_bAP:
|
||||
// SOURCE 2 — NMDA: large Ca if local coincidence
|
||||
if Vm > Mg_eject and astro_Dserine > thr and glutamate > 0:
|
||||
post_fast_trace += NMDA_Ca(glutamate)·rise_speed(); post_budget -= NMDA_cost
|
||||
retro_NO += NO_emit(post_fast_trace); post_budget -= NO_synth_cost
|
||||
// POST → PRE (+): nNOS coupled to NMDA emits NO/BDNF — "your release was effective"
|
||||
|
||||
// backward brake to PRE (−): strong depolarization → endocannabinoid (DSE)
|
||||
if Vm > eCB_thr:
|
||||
retro_eCB += eCB_emit(Vm); post_budget -= eCB_synth_cost
|
||||
// POST → PRE (−): "I am over-driven — reduce release"
|
||||
|
||||
post_fast_trace *= decay(ms)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user