14 KiB
Table of Contents
include_toc
| include_toc |
|---|
| true |
// presynapse.md
PRESYNAPSE
Expansions and modulations:
- is expanded and developed by: AXON
- is tuned by: ORGANISM, organs, modules
- expands and tunes: PRE_VGG
- develops _Ca2, _Rrp
include:
pre_vgcc.md
PRESYNAPSE
type: comprehension
expansion:
// il tub serve al tuning
_@pre_vgcc: TUB [ comprehension: PRE_VGCC, full: 10x, active: 5x, empty: 2x ]
intrication:
// Scope
!DAY: INTRICATION [ ref: &ORGANISM.!DAY ]
!NIGHT: INTRICATION [ ref: &ORGANISM.!NIGHT ]
// Context
*AP: INTRICATION [ ref: &SOMA.*AP ]
*TunPossible: INTRICATION [ ref: &NEURON.*TunPossible ]
// Tub
_NT: INTRICATION [ ref: &ASTROSYNAPSE._NT ]
_ATP: INTRICATION [ ref: &ASTROCYTE._ATP ]
_eCB: INTRICATION [ ref: &POSTSYNAPSE._eCB ]
instantiation:
// Context
*VcggIncrease: CONTEXT []
*VcggDecrease: CONTEXT []
*Ca2PrePreActiveDecrease: CONTEXT []
*Ca2PreActiveDecrease: CONTEXT []
*RrpPreActiveDecrease: CONTEXT []
*RrpPreActiveDecrease: CONTEXT []
// Tub
_Ca2: TUB [ full: 60x, act: 30x, empty: 0x ]
_Rrp: TUB [ full: 30x, act: 15x, empty: 0x ]
_Rp: TUB [ full: 30x, act: 15x, empty: 0x ]
_CaTracesHigh: TUB [ full: 50x, act: 0x, empty: 0x ]
_CaTracesMedium: TUB [ full: 50x, act: 0x, empty: 0x ]
_CaTracesLow: TUB [ full: 50x, act: 0x, empty: 0x ]
_Ca2FullDev: TUB [ full: 100x, act: _Ca2.full, empty: 40x ]
_RrpFullDev: TUB [ full: 100x, act: _Rrp.full, empty: 40x ]
# serve al DEV
// Container
$: CONTAINER [ behaviour: MAIN ]
$: CONTAINER [ behaviour: TUN_VGCC ]
$: CONTAINER [ behaviour: DEV_TUBS ]
// TRACE
// ADJUST
// BEHAVE
// EMIT
// RECOVER
// DECAY
BEHAVE | !DAY
EMIT | !DAY
TRACE | !DAY
ADJUST | !DAY
RECOVER | !DAY
DECAY | !DAY
DEVELOP | !NIGHT
!DAY | MAIN
MAIN
type: behaviour
within_scope: !DAY
snippet:
// *AP
@: ACCUMULATOR [ snippet: NTreleaseLow, event: act 12x, cost: act 3x ]
@: ACCUMULATOR [ snippet: NTreleaseMedium, event: act 9x, cost: act 3x ]
@: ACCUMULATOR [ snippet: NTreleaseHigh, event: act 6x, cost: act 3x ]
@: ACCUMULATOR [ snippet: TracesAccLow, event: act 3x, cost: act 3x ]
@: ACCUMULATOR [ snippet: TracesAccMedium, event: act 6x, cost: act 3x ]
@: ACCUMULATOR [ snippet: TracesAccHigh, event: act 10x, cost: act 3x ]
// NOT *AP
@: ACCUMULATOR [ snippet: eCBClearenceMedium, event: act 24x, cost: act 3x ]
@: ACCUMULATOR [ snippet: eCBClearenceLow, event: act 48x, cost: act 3x ]
@: ACCUMULATOR [ snippet: RPShuttleLow, event: act 24x, cost: act 3x ]
@: ACCUMULATOR [ snippet: RPShuttleMedium, event: act 48x, cost: act 3x ]
@: ACCUMULATOR [ snippet: RefillGlutamine, event: act 24x, cost: act 3x ]
@: ACCUMULATOR [ snippet: TracesClearance, event: act 30x, cost: act 3x ]
*AP
NTreleaseLow
NTreleaseLow
type: accumulator
in_context: *AP
hypothesis: _Ca2 mediumness AND _Rrp mediumness AND NOT _ATP empty
action: [ _Rrp decrease, _NT increase, _ATP decrease ]
trace: None
NTreleaseMedium
NTreleaseMedium
type: accumulator
in_context: *AP
hypothesis: ( _Ca2 fullness AND _Rrp mediumness ) OR
( _Ca2 mediumness AND _Rrp fullness ) AND
NOT _ATP empty
action: [ _Rrp decrease, _NT increase, _ATP decrease ]
trace: None
NTreleaseHigh
NTreleaseHigh
type: accumulator
in_context: *AP
hypothesis: _Ca2 fullness AND _Rrp fullness AND
NOT _ATP empty
action: [ _Rrp decrease, NT increase, _ATP decrease ]
trace: None
Ca2TracesAccLow
Serve a:
- fare il tuning dei VGCC
- dare la velocita' al trasporto di vesicles da RP a RRP, anche se non avendo ancora compreso _ATP, la velocita' non cambia molto la sostanza.
- le tracce vengono eliminate quando il neurone e' in pausa, lontano da uno spike train, *TunPossible
- Abbiamo 3 tracce, high, medium and low. Andiamo a verificare una combinazione di queste per fare la modulazione
- event e' a 10, questo dovrebbe essere un event di campionamento durante *AP context che dovremmo assicurarci sia tipo 100. Il che implicherebbe 10 campionamenti.
- The biological meaning is that a synapse that has just been through a burst is primed for fast recovery — the molecular machinery for vesicle docking is already engaged, calcium-dependent priming factors are still elevated, and the system is in a ready state. A synapse that has been silent for several seconds has cooled down and replenishes slowly.
- So after one second of silence CaTrace has fallen to ~37% of its peak value, after two seconds to ~14%, after three seconds to ~5%. It asymptotes toward zero but never exactly reaches it. Between spikes, Ca2 falls toward zero as the pumps clear it. The result is that CaTrace encodes not the instantaneous calcium level but the recent history of calcium activity — a smoothed, time-averaged measure of how active the synapse has been over the past one to two seconds.
Ca2TracesAccuLow
type: accumulator
in_context: *AP
hypothesis: _Ca2 emptiness
action: [ _CaTraceLow increase ]
trace: None
Ca2TracesAccMedium
Ca2TracesAccMedium
type: accumulator
in_context: *AP
hypothesis: _Ca2 mediumness
action: [ _CaTraceMed increase ]
trace: None
Ca2TracesAccHigh
Ca2TracesAccumulationHigh
type: accumulator
in_context: *AP
hypothesis: _Ca2 fullness
action: [ _CaTraceHigh increase ]
trace: None
NOT *AP
eCBClearance
eCB dipende da POST. Tende a modulare l'entrata di Ca2 degli VGCC.
Qui non facciamo un flush di eCB, riduciamo ogni mezzo secondo (context) di un event di questo episodio.
eCBClearance: ( act: 24x ) # Slow
type: accumulator
in_context: NOT *AP
hypothesis: NOT _eCB empty
action: [ _eCB decrease ]
trace: None
RPShuttleLow
This happens in the seconds loop, once per second.
The "Hard Bottleneck" State. Recruitment is throttled by a lack of signal, a lack of supply, or a lack of space. If even one of these "Near-Stop" conditions is met, the rate cannot exceed "Slow," regardless of the other two conditions.
Rate: 0.00 – 0.25
RPShuttleLow
type: accumulator
in_context: NOT *AP
hypothesis: _CaTraceLow fullness OR
_RP emptiness OR
_Rrp fullness
action: [ _RP decrease, _Rrp increase ]
trace: None
RPShuttleMedium
The "Sub-Optimal" State. The machinery is working, but it's held back by partial limitations. This covers cases where the signal is steady but the "piston" isn't firing at full speed, or where a high vacancy in the RRP (emptiness) forces a low signal to work a bit harder.
Rate: 0.50 – 0.97
RPShuttleMedium
type: accumulator
in_context: *AP
hypothesis: ( _CaTraceMedium fullness AND _RP mediumness AND _Rrp mediumness ) OR
( _CaTraceHigh fullness AND _RP mediumness AND _Rrp mediumness ) OR # signal boost
( _CaTraceMedium fullness AND _RP fullness AND _Rrp mediumness ) OR # supply boost
( _CaTraceMedium fullness AND _RP mediumness AND _Rrp emptiness ) # vacancy boost
action: [ _RP decrease, _Rrp increase ]
trace: None
RPShuttleHigh
The "High Performance" State. Multiple systems are optimized, but one is still at a "mediumness" level. This represents an active synapse that hasn't reached its absolute peak because either the supply is only 50% or the _Rrp isn't empty enough to create that "maximal vacuum" pull.
Rate: 1.25 – 1.94
RPShuttleHigh
type: accumulator
in_context: *AP
hypothesis: ( _CaTraceHigh fullness AND _RP fullness AND _Rrp mediumness ) OR # signal + supply
( _CaTraceHigh fullness AND _RP mediumness AND _Rrp emptiness ) OR # signal + vacancy
( _CaTraceMedium fullness AND _RP fullness AND _Rrp emptiness ) # supply + vacancy
action: [ _RP decrease, _Rrp increase ]
trace: None
RefillRPGlutamine
This happens in the minutes loop, once per minute, via the glutamine shuttle from the astrocyte. It is a two-step process across two cells.
Step 1 — astrocyte side The astrocyte has been accumulating cleared glutamate from the cleft since the last minutes-loop execution. Its glutamine synthetase enzyme converts that glutamate into glutamine, filling the Glutamine_pool. The fraction successfully converted per cycle is conversion_efficiency, which is set by glucose availability and boosted temporarily if the astrocyte calcium wave fired during the preceding seconds:
refill_RP = Glutamine_pool * conversion_efficiency Glutamine_pool = max(0.0, Glutamine_pool - refill_RP)
Step 2 — presynapse side
The glutamine crosses into the presynapse, where glutaminase converts it back into glutamate. That glutamate is immediately repackaged into vesicles and added to N_RP:
The asymmetry that makes depletion possible:
The chain reveals why sustained high-frequency firing eventually depletes the synapse even with all replenishment mechanisms running.
The RRP holds at most Max_RRP = 20 vesicles. At 20 Hz with strong Ca2, release can draw 2-4 vesicles per spike — potentially exhausting the RRP in under a second. The seconds loop can move vesicles from RP to RRP at a maximum rate of k_rec_fast = 5 /s, meaning at most 5 vesicles per second under ideal conditions. Release outpaces recruitment by roughly an order of magnitude during a burst.
The RP holds up to Max_RP = 200 vesicles — ten times the RRP. At sustained 20 Hz the RP can sustain firing for tens of seconds even after the RRP is repeatedly emptied, as long as recruitment keeps pace. But the minutes loop only refills N_RP once per minute at a rate limited by Glutamine_pool * conversion_efficiency. If glucose is low or the astrocyte wave has not fired, this replenishment may add only a fraction of what was consumed.
The result is a three-tier buffer with mismatched timescales:
RRP — depletes in seconds, refilled in seconds (fast but shallow) RP — depletes in minutes, refilled in minutes (deep but slow) Gln — depletes over bursts, refilled by glucose (slowest, astrocyte-dependent)
Each tier buys time for the one below it to respond. When all three are depleted simultaneously — which only happens under prolonged high-frequency firing with insufficient glucose — the synapse has no remaining buffer and goes silent until the minutes loop restores the Glutamine_pool.
Ca2TracesClearance
Qui facciamo un flush di CaTraceX. Deve essere fatto a valle del tuning.
Ca2TracesClearance
type: accumulator
in_context: NOT *TunPossible
hypothesis: NOT _CaTraceHigh empty
action: [ _CaTRaceHigh decrease ]
trace: None
hypothesis: NOT _CaTraceMedium empty
action: [ _CaTRaceMedium decrease ]
trace: None
hypothesis: NOT _CaTraceLow empty
action: [ _CaTRaceLow decrease ]
trace: None
!DAY | TUN_VGCC
TUN_VGCC
// qui stiamo attivando e disattivando PRE_VGCC. Fra un massimo full e minimo empty (empty puo' non essere 0)
type: behaviour
activity_scope: !DAY
snippet:
// *TunPossible
@: CONTEXTOR [ snippet: VgccCheck, event: act 60x ]
// *VcggIncrease
@: ACCUMULATOR [ snippet: VcggIncrease, event:act 10x ]
// *VcggDecrease
@: ACCUMULATOR [ snippet: VcggDecrease, event:act 10x ]
*TunPossible
VgccCheck
Qui controlliamo che ci siano le condizioni per aumentare o diminuire l'attivazione di VGCC
VgccCheck
type contextor
in_context: *TunPossible
condition: _CaTraceHigh fullness
out_context: *VcggIncrease
condition: _CaTraceLow fullness
out_context: *VcggDecrease
*VcggIncrease
VcggIncrease
VcggIncrease
type: accumulator
in_context: *VcggIncrease
hypothesis:
action:
trace:
*VcggDecrease
VcggDecrease
VcggDecrease
type: accumulator
in_context: *VcggDecrease
hypothesis:
action:
trace:
!NIGHT | DEV_TUBS
DEV_TUBS
type: behaviour
activity_scope: !NIGHT
snippet:
# *fixed
@: CONTEXTOR [ snippet: Ca2Check, event: act 60x ]
*CaFullDecrease
@: ACCUMULATOR [ snippet: CaFullDecrease, event: act 10x ]
*Ca2FullIncrease
@: ACCUMULATOR [ snippet: Ca2FullIncrease, event: act 10x ]
# *fixed
@: CONTEXTOR [ snippet: RrpCheck, event: act 60x ]
*RrpFullDecrease
@: ACCUMULATOR [ snippet: RrpFullDecrease, event: act 10x ]
*IncreaseRrpFull
@: ACCUMULATOR [ snippet: IncreaseRrpFull, event: act 10x ]
*fixed
Ca2Check
Tens Milliseconds Time Scale
Ca2Check
type: contextor
in_context: *fixed
condition: ( empty )
out_context: *CaFullDecrease
condition: ( full)
out_context: *Ca2FullIncrease
*CaFullDecrease
CaFullDecrease
DecreasePreCa2Full
type: accumulator
in_context: *CaFullDecrease
hypothesis: NOT ( full ) AND NOT ( empty )
action: [ increase, decrease]
trace: None
*Ca2FullIncrease
Ca2FullIncrease
IncreasePreCa2Full
type: accumulator
in_context: *Ca2FullIncrease
hypothesis: NOT ( full ) AND NOT ( empty )
action: [ increase, decrease]
trace: None
*fixed
RrpCheck
Tens Milliseconds Time Scale
RrpCheck
type: contextor
in_context: *fixed
condition: ( empty )
out_context: *RrpFullDecrease
condition: ( full)
out_context: *IncreaseRrpFull
*RrpFullDecrease
RrpFullDecrease
DecreasePreRrpFull
type: accumulator
in_context: *RrpFullDecrease
hypothesis: NOT ( full ) AND NOT ( empty )
action: [ increase, decrease]
trace: None
*RrpFullIncrease
RrpFullIncrease
RrpFullIncrease
type: accumulator
in_context: *RrpFullIncrease
hypothesis: NOT ( full ) AND NOT ( empty )
action: [ increase, decrease]
trace: None