From 3b8d7cdea942f9cb810b0a50cb1add3570bc02d9 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Sun, 25 Aug 2024 02:36:37 -0700 Subject: [PATCH] neuron variable categories and order updates --- axon/enumgen.go | 6 +- axon/neuron.go | 94 ++++++++++++++------------- axon/shaders/gpu_applyext.spv | Bin 25260 -> 25260 bytes axon/shaders/gpu_cycle.spv | Bin 106800 -> 106816 bytes axon/shaders/gpu_dwt.spv | Bin 85508 -> 85524 bytes axon/shaders/gpu_gather.spv | Bin 41492 -> 41508 bytes axon/shaders/gpu_minusneuron.spv | Bin 5372 -> 5356 bytes axon/shaders/gpu_newstate_neuron.spv | Bin 36448 -> 36448 bytes axon/shaders/gpu_plusneuron.spv | Bin 35292 -> 35308 bytes axon/shaders/gpu_plusstart.spv | Bin 24084 -> 24084 bytes axon/shaders/gpu_postspike.spv | Bin 44412 -> 44412 bytes axon/shaders/gpu_sendspike.spv | Bin 52956 -> 52956 bytes 12 files changed, 51 insertions(+), 49 deletions(-) diff --git a/axon/enumgen.go b/axon/enumgen.go index c4ce2ebd..988d252c 100644 --- a/axon/enumgen.go +++ b/axon/enumgen.go @@ -269,11 +269,11 @@ var _NeuronVarsValues = []NeuronVars{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1 // NeuronVarsN is the highest valid value for type NeuronVars, plus one. const NeuronVarsN NeuronVars = 91 -var _NeuronVarsValueMap = map[string]NeuronVars{`Spike`: 0, `Spiked`: 1, `Act`: 2, `ActInt`: 3, `Ge`: 4, `Gi`: 5, `Gk`: 6, `Inet`: 7, `Vm`: 8, `VmDend`: 9, `ISI`: 10, `ISIAvg`: 11, `Ext`: 12, `Target`: 13, `NrnFlags`: 14, `CaSpkM`: 15, `CaSpkP`: 16, `CaSpkD`: 17, `CaSpkPM`: 18, `CaLrn`: 19, `NrnCaM`: 20, `NrnCaP`: 21, `NrnCaD`: 22, `CaDiff`: 23, `RLRate`: 24, `GnmdaSyn`: 25, `Gnmda`: 26, `GnmdaLrn`: 27, `GnmdaMaint`: 28, `NmdaCa`: 29, `Gvgcc`: 30, `VgccM`: 31, `VgccH`: 32, `VgccCa`: 33, `VgccCaInt`: 34, `Burst`: 35, `BurstPrv`: 36, `CtxtGe`: 37, `CtxtGeRaw`: 38, `CtxtGeOrig`: 39, `GgabaB`: 40, `GABAB`: 41, `GABABx`: 42, `Gak`: 43, `SSGi`: 44, `SSGiDend`: 45, `MahpN`: 46, `Gmahp`: 47, `SahpCa`: 48, `SahpN`: 49, `Gsahp`: 50, `GknaMed`: 51, `GknaSlow`: 52, `KirM`: 53, `Gkir`: 54, `SKCaIn`: 55, `SKCaR`: 56, `SKCaM`: 57, `Gsk`: 58, `ActM`: 59, `ActP`: 60, `SpkSt1`: 61, `SpkSt2`: 62, `SpkMax`: 63, `SpkMaxCa`: 64, `SpkBin0`: 65, `SpkBin1`: 66, `SpkBin2`: 67, `SpkBin3`: 68, `SpkBin4`: 69, `SpkBin5`: 70, `SpkBin6`: 71, `SpkBin7`: 72, `SpkPrv`: 73, `GeNoise`: 74, `GeNoiseP`: 75, `GiNoise`: 76, `GiNoiseP`: 77, `GeExt`: 78, `GeRaw`: 79, `GeSyn`: 80, `GiRaw`: 81, `GiSyn`: 82, `SMaintP`: 83, `GeInt`: 84, `GeIntNorm`: 85, `GiInt`: 86, `GModRaw`: 87, `GModSyn`: 88, `GMaintRaw`: 89, `GMaintSyn`: 90} +var _NeuronVarsValueMap = map[string]NeuronVars{`Spike`: 0, `Spiked`: 1, `Act`: 2, `ActInt`: 3, `Ge`: 4, `Gi`: 5, `Gk`: 6, `Inet`: 7, `Vm`: 8, `VmDend`: 9, `ISI`: 10, `ISIAvg`: 11, `Ext`: 12, `Target`: 13, `CaSpkM`: 14, `CaSpkP`: 15, `CaSpkD`: 16, `CaSpkPM`: 17, `CaLrn`: 18, `NrnCaM`: 19, `NrnCaP`: 20, `NrnCaD`: 21, `CaDiff`: 22, `RLRate`: 23, `GnmdaSyn`: 24, `Gnmda`: 25, `GnmdaLrn`: 26, `GnmdaMaint`: 27, `NmdaCa`: 28, `Gvgcc`: 29, `VgccM`: 30, `VgccH`: 31, `VgccCa`: 32, `VgccCaInt`: 33, `Burst`: 34, `BurstPrv`: 35, `CtxtGe`: 36, `CtxtGeRaw`: 37, `CtxtGeOrig`: 38, `GgabaB`: 39, `GABAB`: 40, `GABABx`: 41, `Gak`: 42, `SSGi`: 43, `SSGiDend`: 44, `GknaMed`: 45, `GknaSlow`: 46, `Gkir`: 47, `KirM`: 48, `Gsk`: 49, `SKCaIn`: 50, `SKCaR`: 51, `SKCaM`: 52, `Gmahp`: 53, `MahpN`: 54, `Gsahp`: 55, `SahpCa`: 56, `SahpN`: 57, `ActM`: 58, `ActP`: 59, `SpkSt1`: 60, `SpkSt2`: 61, `SpkMax`: 62, `SpkMaxCa`: 63, `SpkBin0`: 64, `SpkBin1`: 65, `SpkBin2`: 66, `SpkBin3`: 67, `SpkBin4`: 68, `SpkBin5`: 69, `SpkBin6`: 70, `SpkBin7`: 71, `SpkPrv`: 72, `GeNoise`: 73, `GeNoiseP`: 74, `GiNoise`: 75, `GiNoiseP`: 76, `GeExt`: 77, `GeRaw`: 78, `GeSyn`: 79, `GiRaw`: 80, `GiSyn`: 81, `GeInt`: 82, `GeIntNorm`: 83, `GiInt`: 84, `GModRaw`: 85, `GModSyn`: 86, `SMaintP`: 87, `GMaintRaw`: 88, `GMaintSyn`: 89, `NrnFlags`: 90} -var _NeuronVarsDescMap = map[NeuronVars]string{0: `Spike is whether neuron has spiked or not on this cycle (0 or 1)`, 1: `Spiked is 1 if neuron has spiked within the last 10 cycles (msecs), corresponding to a nominal max spiking rate of 100 Hz, 0 otherwise -- useful for visualization and computing activity levels in terms of average spiked levels.`, 2: `Act is rate-coded activation value reflecting instantaneous estimated rate of spiking, based on 1 / ISIAvg. This drives feedback inhibition in the FFFB function (todo: this will change when better inhibition is implemented), and is integrated over time for ActInt which is then used for performance statistics and layer average activations, etc. Should not be used for learning or other computations.`, 3: `ActInt is integrated running-average activation value computed from Act with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall activation state across the ThetaCycle time scale, as the overall response of network to current input state -- this is copied to ActM and ActP at the ends of the minus and plus phases, respectively, and used in computing performance-level statistics (which are typically based on ActM). Should not be used for learning or other computations.`, 4: `Ge is total excitatory conductance, including all forms of excitation (e.g., NMDA) -- does *not* include Gbar.E`, 5: `Gi is total inhibitory synaptic conductance -- the net inhibitory input to the neuron -- does *not* include Gbar.I`, 6: `Gk is total potassium conductance, typically reflecting sodium-gated potassium currents involved in adaptation effects -- does *not* include Gbar.K`, 7: `Inet is net current produced by all channels -- drives update of Vm`, 8: `Vm is membrane potential -- integrates Inet current over time`, 9: `VmDend is dendritic membrane potential -- has a slower time constant, is not subject to the VmR reset after spiking`, 10: `ISI is current inter-spike-interval -- counts up since last spike. Starts at -1 when initialized.`, 11: `ISIAvg is average inter-spike-interval -- average time interval between spikes, integrated with ISITau rate constant (relatively fast) to capture something close to an instantaneous spiking rate. Starts at -1 when initialized, and goes to -2 after first spike, and is only valid after the second spike post-initialization.`, 12: `Ext is external input: drives activation of unit from outside influences (e.g., sensory input)`, 13: `Target is the target value: drives learning to produce this activation value`, 14: `NrnFlags are bit flags for binary state variables, which are converted to / from uint32. These need to be in Vars because they can be differential per data (for ext inputs) and are writable (indexes are read only).`, 15: `CaSpkM is spike-driven calcium trace used as a neuron-level proxy for synpatic credit assignment factor based on continuous time-integrated spiking: exponential integration of SpikeG * Spike at MTau time constant (typically 5). Simulates a calmodulin (CaM) like signal at the most abstract level.`, 16: `CaSpkP is continuous cascaded integration of CaSpkM at PTau time constant (typically 40), representing neuron-level purely spiking version of plus, LTP direction of weight change and capturing the function of CaMKII in the Kinase learning rule. Used for specialized learning and computational functions, statistics, instead of Act.`, 17: `CaSpkD is continuous cascaded integration CaSpkP at DTau time constant (typically 40), representing neuron-level purely spiking version of minus, LTD direction of weight change and capturing the function of DAPK1 in the Kinase learning rule. Used for specialized learning and computational functions, statistics, instead of Act.`, 18: `CaSpkPM is minus-phase snapshot of the CaSpkP value -- similar to ActM but using a more directly spike-integrated value.`, 19: `CaLrn is recv neuron calcium signal used to drive temporal error difference component of standard learning rule, combining NMDA (NmdaCa) and spiking-driven VGCC (VgccCaInt) calcium sources (vs. CaSpk* which only reflects spiking component). This is integrated into CaM, CaP, CaD, and temporal derivative is CaP - CaD (CaMKII - DAPK1). This approximates the backprop error derivative on net input, but VGCC component adds a proportion of recv activation delta as well -- a balance of both works best. The synaptic-level trace multiplier provides the credit assignment factor, reflecting coincident activity and potentially integrated over longer multi-trial timescales.`, 20: `NrnCaM is integrated CaLrn at MTau timescale (typically 5), simulating a calmodulin (CaM) like signal, which then drives CaP, CaD for delta signal driving error-driven learning.`, 21: `NrnCaP is cascaded integration of CaM at PTau time constant (typically 40), representing the plus, LTP direction of weight change and capturing the function of CaMKII in the Kinase learning rule.`, 22: `NrnCaD is cascaded integratoin of CaP at DTau time constant (typically 40), representing the minus, LTD direction of weight change and capturing the function of DAPK1 in the Kinase learning rule.`, 23: `CaDiff is difference between CaP - CaD -- this is the error signal that drives error-driven learning.`, 24: `RLRate is recv-unit based learning rate multiplier, reflecting the sigmoid derivative computed from the CaSpkD of recv unit, and the normalized difference CaSpkP - CaSpkD / MAX(CaSpkP - CaSpkD).`, 25: `GnmdaSyn is integrated NMDA recv synaptic current -- adds GeRaw and decays with time constant`, 26: `Gnmda is net postsynaptic (recv) NMDA conductance, after Mg V-gating and Gbar -- added directly to Ge as it has the same reversal potential`, 27: `GnmdaLrn is learning version of integrated NMDA recv synaptic current -- adds GeRaw and decays with time constant -- drives NmdaCa that then drives CaM for learning`, 28: `GnmdaMaint is net postsynaptic maintenance NMDA conductance, computed from GMaintSyn and GMaintRaw, after Mg V-gating and Gbar -- added directly to Ge as it has the same reversal potential`, 29: `NmdaCa is NMDA calcium computed from GnmdaLrn, drives learning via CaM`, 30: `Gvgcc is conductance (via Ca) for VGCC voltage gated calcium channels`, 31: `VgccM is activation gate of VGCC channels`, 32: `VgccH inactivation gate of VGCC channels`, 33: `VgccCa is instantaneous VGCC calcium flux -- can be driven by spiking or directly from Gvgcc`, 34: `VgccCaInt time-integrated VGCC calcium flux -- this is actually what drives learning`, 35: `Burst is 5IB bursting activation value, computed by thresholding regular CaSpkP value in Super superficial layers`, 36: `BurstPrv is previous Burst bursting activation from prior time step -- used for context-based learning`, 37: `CtxtGe is context (temporally delayed) excitatory conductance, driven by deep bursting at end of the plus phase, for CT layers.`, 38: `CtxtGeRaw is raw update of context (temporally delayed) excitatory conductance, driven by deep bursting at end of the plus phase, for CT layers.`, 39: `CtxtGeOrig is original CtxtGe value prior to any decay factor -- updates at end of plus phase.`, 40: `GgabaB is net GABA-B conductance, after Vm gating and Gbar + Gbase -- applies to Gk, not Gi, for GIRK, with .1 reversal potential.`, 41: `GABAB is GABA-B / GIRK activation -- time-integrated value with rise and decay time constants`, 42: `GABABx is GABA-B / GIRK internal drive variable -- gets the raw activation and decays`, 43: `Gak is conductance of A-type K potassium channels`, 44: `SSGi is SST+ somatostatin positive slow spiking inhibition`, 45: `SSGiDend is amount of SST+ somatostatin positive slow spiking inhibition applied to dendritic Vm (VmDend)`, 46: `MahpN is accumulating voltage-gated gating value for the medium time scale AHP`, 47: `Gmahp is medium time scale AHP conductance`, 48: `SahpCa is slowly accumulating calcium value that drives the slow AHP`, 49: `SahpN is the sAHP gating value`, 50: `Gsahp is slow time scale AHP conductance`, 51: `GknaMed is conductance of sodium-gated potassium channel (KNa) medium dynamics (Slick), which produces accommodation / adaptation of firing`, 52: `GknaSlow is conductance of sodium-gated potassium channel (KNa) slow dynamics (Slack), which produces accommodation / adaptation of firing`, 53: `KirM is the Kir potassium (K) inwardly rectifying gating value`, 54: `Gkir is the conductance of the potassium (K) inwardly rectifying channel, which is strongest at low membrane potentials. Can be modulated by DA.`, 55: `SKCaIn is intracellular calcium store level, available to be released with spiking as SKCaR, which can bind to SKCa receptors and drive K current. replenishment is a function of spiking activity being below a threshold`, 56: `SKCaR released amount of intracellular calcium, from SKCaIn, as a function of spiking events. this can bind to SKCa channels and drive K currents.`, 57: `SKCaM is Calcium-gated potassium channel gating factor, driven by SKCaR via a Hill equation as in chans.SKPCaParams.`, 58: `Gsk is Calcium-gated potassium channel conductance as a function of Gbar * SKCaM.`, 59: `ActM is ActInt activation state at end of third quarter, representing the posterior-cortical minus phase activation -- used for statistics and monitoring network performance. Should not be used for learning or other computations.`, 60: `ActP is ActInt activation state at end of fourth quarter, representing the posterior-cortical plus_phase activation -- used for statistics and monitoring network performance. Should not be used for learning or other computations.`, 61: `SpkSt1 is the activation state at specific time point within current state processing window (e.g., 50 msec for beta cycle within standard theta cycle), as saved by SpkSt1() function. Used for example in hippocampus for CA3, CA1 learning`, 62: `SpkSt2 is the activation state at specific time point within current state processing window (e.g., 100 msec for beta cycle within standard theta cycle), as saved by SpkSt2() function. Used for example in hippocampus for CA3, CA1 learning`, 63: `SpkMax is maximum CaSpkP across one theta cycle time window (max of SpkMaxCa) -- used for specialized algorithms that have more phasic behavior within a single trial, e.g., BG Matrix layer gating. Also useful for visualization of peak activity of neurons.`, 64: `SpkMaxCa is Ca integrated like CaSpkP but only starting at MaxCycStart cycle, to prevent inclusion of carryover spiking from prior theta cycle trial -- the PTau time constant otherwise results in significant carryover. This is the input to SpkMax`, 65: `SpkBin has aggregated spikes within 50 msec bins across the theta cycle, for computing synaptic calcium efficiently`, 66: ``, 67: ``, 68: ``, 69: ``, 70: ``, 71: ``, 72: ``, 73: `SpkPrv is final CaSpkD activation state at end of previous theta cycle. used for specialized learning mechanisms that operate on delayed sending activations.`, 74: `GeNoise is integrated noise excitatory conductance, added into Ge`, 75: `GeNoiseP is accumulating poisson probability factor for driving excitatory noise spiking -- multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda as function of noise firing rate.`, 76: `GiNoise is integrated noise inhibotyr conductance, added into Gi`, 77: `GiNoiseP is accumulating poisson probability factor for driving inhibitory noise spiking -- multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda as a function of noise firing rate.`, 78: `GeExt is extra excitatory conductance added to Ge -- from Ext input, GeCtxt etc`, 79: `GeRaw is raw excitatory conductance (net input) received from senders = current raw spiking drive`, 80: `GeSyn is time-integrated total excitatory synaptic conductance, with an instantaneous rise time from each spike (in GeRaw) and exponential decay with Dt.GeTau, aggregated over pathways -- does *not* include Gbar.E`, 81: `GiRaw is raw inhibitory conductance (net input) received from senders = current raw spiking drive`, 82: `GiSyn is time-integrated total inhibitory synaptic conductance, with an instantaneous rise time from each spike (in GiRaw) and exponential decay with Dt.GiTau, aggregated over pathways -- does *not* include Gbar.I. This is added with computed FFFB inhibition to get the full inhibition in Gi`, 83: `SMaintP is accumulating poisson probability factor for driving self-maintenance by simulating a population of mutually interconnected neurons. multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda based on accumulating self maint factor`, 84: `GeInt is integrated running-average activation value computed from Ge with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall Ge level across the ThetaCycle time scale (Ge itself fluctuates considerably) -- useful for stats to set strength of connections etc to get neurons into right range of overall excitatory drive`, 85: `GeIntNorm is normalized GeInt value (divided by the layer maximum) -- this is used for learning in layers that require learning on subthreshold activity`, 86: `GiInt is integrated running-average activation value computed from GiSyn with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall synaptic Gi level across the ThetaCycle time scale (Gi itself fluctuates considerably) -- useful for stats to set strength of connections etc to get neurons into right range of overall inhibitory drive`, 87: `GModRaw is raw modulatory conductance, received from GType = ModulatoryG pathways`, 88: `GModSyn is syn integrated modulatory conductance, received from GType = ModulatoryG pathways`, 89: `GMaintRaw is raw maintenance conductance, received from GType = MaintG pathways`, 90: `GMaintSyn is syn integrated maintenance conductance, integrated using MaintNMDA params.`} +var _NeuronVarsDescMap = map[NeuronVars]string{0: `Spike is whether neuron has spiked or not on this cycle (0 or 1)`, 1: `Spiked is 1 if neuron has spiked within the last 10 cycles (msecs), corresponding to a nominal max spiking rate of 100 Hz, 0 otherwise -- useful for visualization and computing activity levels in terms of average spiked levels.`, 2: `Act is rate-coded activation value reflecting instantaneous estimated rate of spiking, based on 1 / ISIAvg. This drives feedback inhibition in the FFFB function (todo: this will change when better inhibition is implemented), and is integrated over time for ActInt which is then used for performance statistics and layer average activations, etc. Should not be used for learning or other computations.`, 3: `ActInt is integrated running-average activation value computed from Act with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall activation state across the ThetaCycle time scale, as the overall response of network to current input state -- this is copied to ActM and ActP at the ends of the minus and plus phases, respectively, and used in computing performance-level statistics (which are typically based on ActM). Should not be used for learning or other computations.`, 4: `Ge is total excitatory conductance, including all forms of excitation (e.g., NMDA) -- does *not* include Gbar.E`, 5: `Gi is total inhibitory synaptic conductance -- the net inhibitory input to the neuron -- does *not* include Gbar.I`, 6: `Gk is total potassium conductance, typically reflecting sodium-gated potassium currents involved in adaptation effects -- does *not* include Gbar.K`, 7: `Inet is net current produced by all channels -- drives update of Vm`, 8: `Vm is membrane potential -- integrates Inet current over time`, 9: `VmDend is dendritic membrane potential -- has a slower time constant, is not subject to the VmR reset after spiking`, 10: `ISI is current inter-spike-interval -- counts up since last spike. Starts at -1 when initialized.`, 11: `ISIAvg is average inter-spike-interval -- average time interval between spikes, integrated with ISITau rate constant (relatively fast) to capture something close to an instantaneous spiking rate. Starts at -1 when initialized, and goes to -2 after first spike, and is only valid after the second spike post-initialization.`, 12: `Ext is external input: drives activation of unit from outside influences (e.g., sensory input)`, 13: `Target is the target value: drives learning to produce this activation value`, 14: `CaSpkM is spike-driven calcium trace used as a neuron-level proxy for synpatic credit assignment factor based on continuous time-integrated spiking: exponential integration of SpikeG * Spike at MTau time constant (typically 5). Simulates a calmodulin (CaM) like signal at the most abstract level.`, 15: `CaSpkP is continuous cascaded integration of CaSpkM at PTau time constant (typically 40), representing neuron-level purely spiking version of plus, LTP direction of weight change and capturing the function of CaMKII in the Kinase learning rule. Used for specialized learning and computational functions, statistics, instead of Act.`, 16: `CaSpkD is continuous cascaded integration CaSpkP at DTau time constant (typically 40), representing neuron-level purely spiking version of minus, LTD direction of weight change and capturing the function of DAPK1 in the Kinase learning rule. Used for specialized learning and computational functions, statistics, instead of Act.`, 17: `CaSpkPM is minus-phase snapshot of the CaSpkP value -- similar to ActM but using a more directly spike-integrated value.`, 18: `CaLrn is recv neuron calcium signal used to drive temporal error difference component of standard learning rule, combining NMDA (NmdaCa) and spiking-driven VGCC (VgccCaInt) calcium sources (vs. CaSpk* which only reflects spiking component). This is integrated into CaM, CaP, CaD, and temporal derivative is CaP - CaD (CaMKII - DAPK1). This approximates the backprop error derivative on net input, but VGCC component adds a proportion of recv activation delta as well -- a balance of both works best. The synaptic-level trace multiplier provides the credit assignment factor, reflecting coincident activity and potentially integrated over longer multi-trial timescales.`, 19: `NrnCaM is integrated CaLrn at MTau timescale (typically 5), simulating a calmodulin (CaM) like signal, which then drives CaP, CaD for delta signal driving error-driven learning.`, 20: `NrnCaP is cascaded integration of CaM at PTau time constant (typically 40), representing the plus, LTP direction of weight change and capturing the function of CaMKII in the Kinase learning rule.`, 21: `NrnCaD is cascaded integratoin of CaP at DTau time constant (typically 40), representing the minus, LTD direction of weight change and capturing the function of DAPK1 in the Kinase learning rule.`, 22: `CaDiff is difference between CaP - CaD -- this is the error signal that drives error-driven learning.`, 23: `RLRate is recv-unit based learning rate multiplier, reflecting the sigmoid derivative computed from the CaSpkD of recv unit, and the normalized difference CaSpkP - CaSpkD / MAX(CaSpkP - CaSpkD).`, 24: `GnmdaSyn is integrated NMDA recv synaptic current -- adds GeRaw and decays with time constant`, 25: `Gnmda is net postsynaptic (recv) NMDA conductance, after Mg V-gating and Gbar -- added directly to Ge as it has the same reversal potential`, 26: `GnmdaLrn is learning version of integrated NMDA recv synaptic current -- adds GeRaw and decays with time constant -- drives NmdaCa that then drives CaM for learning`, 27: `GnmdaMaint is net postsynaptic maintenance NMDA conductance, computed from GMaintSyn and GMaintRaw, after Mg V-gating and Gbar -- added directly to Ge as it has the same reversal potential`, 28: `NmdaCa is NMDA calcium computed from GnmdaLrn, drives learning via CaM`, 29: `Gvgcc is conductance (via Ca) for VGCC voltage gated calcium channels`, 30: `VgccM is activation gate of VGCC channels`, 31: `VgccH inactivation gate of VGCC channels`, 32: `VgccCa is instantaneous VGCC calcium flux -- can be driven by spiking or directly from Gvgcc`, 33: `VgccCaInt time-integrated VGCC calcium flux -- this is actually what drives learning`, 34: `Burst is 5IB bursting activation value, computed by thresholding regular CaSpkP value in Super superficial layers`, 35: `BurstPrv is previous Burst bursting activation from prior time step -- used for context-based learning`, 36: `CtxtGe is context (temporally delayed) excitatory conductance, driven by deep bursting at end of the plus phase, for CT layers.`, 37: `CtxtGeRaw is raw update of context (temporally delayed) excitatory conductance, driven by deep bursting at end of the plus phase, for CT layers.`, 38: `CtxtGeOrig is original CtxtGe value prior to any decay factor -- updates at end of plus phase.`, 39: `GgabaB is net GABA-B conductance, after Vm gating and Gbar + Gbase -- applies to Gk, not Gi, for GIRK, with .1 reversal potential.`, 40: `GABAB is GABA-B / GIRK activation -- time-integrated value with rise and decay time constants`, 41: `GABABx is GABA-B / GIRK internal drive variable -- gets the raw activation and decays`, 42: `Gak is conductance of A-type K potassium channels`, 43: `SSGi is SST+ somatostatin positive slow spiking inhibition`, 44: `SSGiDend is amount of SST+ somatostatin positive slow spiking inhibition applied to dendritic Vm (VmDend)`, 45: `GknaMed is conductance of sodium-gated potassium channel (KNa) medium dynamics (Slick), which produces accommodation / adaptation of firing`, 46: `GknaSlow is conductance of sodium-gated potassium channel (KNa) slow dynamics (Slack), which produces accommodation / adaptation of firing`, 47: `Gkir is the conductance of the potassium (K) inwardly rectifying channel, which is strongest at low membrane potentials. Can be modulated by DA.`, 48: `KirM is the Kir potassium (K) inwardly rectifying gating value`, 49: `Gsk is Calcium-gated potassium channel conductance as a function of Gbar * SKCaM.`, 50: `SKCaIn is intracellular calcium store level, available to be released with spiking as SKCaR, which can bind to SKCa receptors and drive K current. replenishment is a function of spiking activity being below a threshold`, 51: `SKCaR released amount of intracellular calcium, from SKCaIn, as a function of spiking events. this can bind to SKCa channels and drive K currents.`, 52: `SKCaM is Calcium-gated potassium channel gating factor, driven by SKCaR via a Hill equation as in chans.SKPCaParams.`, 53: `Gmahp is medium time scale AHP conductance`, 54: `MahpN is accumulating voltage-gated gating value for the medium time scale AHP`, 55: `Gsahp is slow time scale AHP conductance`, 56: `SahpCa is slowly accumulating calcium value that drives the slow AHP`, 57: `SahpN is the sAHP gating value`, 58: `ActM is ActInt activation state at end of third quarter, representing the posterior-cortical minus phase activation -- used for statistics and monitoring network performance. Should not be used for learning or other computations.`, 59: `ActP is ActInt activation state at end of fourth quarter, representing the posterior-cortical plus_phase activation -- used for statistics and monitoring network performance. Should not be used for learning or other computations.`, 60: `SpkSt1 is the activation state at specific time point within current state processing window (e.g., 50 msec for beta cycle within standard theta cycle), as saved by SpkSt1() function. Used for example in hippocampus for CA3, CA1 learning`, 61: `SpkSt2 is the activation state at specific time point within current state processing window (e.g., 100 msec for beta cycle within standard theta cycle), as saved by SpkSt2() function. Used for example in hippocampus for CA3, CA1 learning`, 62: `SpkMax is maximum CaSpkP across one theta cycle time window (max of SpkMaxCa) -- used for specialized algorithms that have more phasic behavior within a single trial, e.g., BG Matrix layer gating. Also useful for visualization of peak activity of neurons.`, 63: `SpkMaxCa is Ca integrated like CaSpkP but only starting at MaxCycStart cycle, to prevent inclusion of carryover spiking from prior theta cycle trial -- the PTau time constant otherwise results in significant carryover. This is the input to SpkMax`, 64: `SpkBin has aggregated spikes within 50 msec bins across the theta cycle, for computing synaptic calcium efficiently`, 65: ``, 66: ``, 67: ``, 68: ``, 69: ``, 70: ``, 71: ``, 72: `SpkPrv is final CaSpkD activation state at end of previous theta cycle. used for specialized learning mechanisms that operate on delayed sending activations.`, 73: `GeNoise is integrated noise excitatory conductance, added into Ge`, 74: `GeNoiseP is accumulating poisson probability factor for driving excitatory noise spiking -- multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda as function of noise firing rate.`, 75: `GiNoise is integrated noise inhibotyr conductance, added into Gi`, 76: `GiNoiseP is accumulating poisson probability factor for driving inhibitory noise spiking -- multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda as a function of noise firing rate.`, 77: `GeExt is extra excitatory conductance added to Ge -- from Ext input, GeCtxt etc`, 78: `GeRaw is raw excitatory conductance (net input) received from senders = current raw spiking drive`, 79: `GeSyn is time-integrated total excitatory synaptic conductance, with an instantaneous rise time from each spike (in GeRaw) and exponential decay with Dt.GeTau, aggregated over pathways -- does *not* include Gbar.E`, 80: `GiRaw is raw inhibitory conductance (net input) received from senders = current raw spiking drive`, 81: `GiSyn is time-integrated total inhibitory synaptic conductance, with an instantaneous rise time from each spike (in GiRaw) and exponential decay with Dt.GiTau, aggregated over pathways -- does *not* include Gbar.I. This is added with computed FFFB inhibition to get the full inhibition in Gi`, 82: `GeInt is integrated running-average activation value computed from Ge with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall Ge level across the ThetaCycle time scale (Ge itself fluctuates considerably) -- useful for stats to set strength of connections etc to get neurons into right range of overall excitatory drive`, 83: `GeIntNorm is normalized GeInt value (divided by the layer maximum) -- this is used for learning in layers that require learning on subthreshold activity`, 84: `GiInt is integrated running-average activation value computed from GiSyn with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall synaptic Gi level across the ThetaCycle time scale (Gi itself fluctuates considerably) -- useful for stats to set strength of connections etc to get neurons into right range of overall inhibitory drive`, 85: `GModRaw is raw modulatory conductance, received from GType = ModulatoryG pathways`, 86: `GModSyn is syn integrated modulatory conductance, received from GType = ModulatoryG pathways`, 87: `SMaintP is accumulating poisson probability factor for driving self-maintenance by simulating a population of mutually interconnected neurons. multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda based on accumulating self maint factor`, 88: `GMaintRaw is raw maintenance conductance, received from GType = MaintG pathways`, 89: `GMaintSyn is syn integrated maintenance conductance, integrated using MaintNMDA params.`, 90: `NrnFlags are bit flags for binary state variables, which are converted to / from uint32. These need to be in Vars because they can be differential per data (for ext inputs) and are writable (indexes are read only).`} -var _NeuronVarsMap = map[NeuronVars]string{0: `Spike`, 1: `Spiked`, 2: `Act`, 3: `ActInt`, 4: `Ge`, 5: `Gi`, 6: `Gk`, 7: `Inet`, 8: `Vm`, 9: `VmDend`, 10: `ISI`, 11: `ISIAvg`, 12: `Ext`, 13: `Target`, 14: `NrnFlags`, 15: `CaSpkM`, 16: `CaSpkP`, 17: `CaSpkD`, 18: `CaSpkPM`, 19: `CaLrn`, 20: `NrnCaM`, 21: `NrnCaP`, 22: `NrnCaD`, 23: `CaDiff`, 24: `RLRate`, 25: `GnmdaSyn`, 26: `Gnmda`, 27: `GnmdaLrn`, 28: `GnmdaMaint`, 29: `NmdaCa`, 30: `Gvgcc`, 31: `VgccM`, 32: `VgccH`, 33: `VgccCa`, 34: `VgccCaInt`, 35: `Burst`, 36: `BurstPrv`, 37: `CtxtGe`, 38: `CtxtGeRaw`, 39: `CtxtGeOrig`, 40: `GgabaB`, 41: `GABAB`, 42: `GABABx`, 43: `Gak`, 44: `SSGi`, 45: `SSGiDend`, 46: `MahpN`, 47: `Gmahp`, 48: `SahpCa`, 49: `SahpN`, 50: `Gsahp`, 51: `GknaMed`, 52: `GknaSlow`, 53: `KirM`, 54: `Gkir`, 55: `SKCaIn`, 56: `SKCaR`, 57: `SKCaM`, 58: `Gsk`, 59: `ActM`, 60: `ActP`, 61: `SpkSt1`, 62: `SpkSt2`, 63: `SpkMax`, 64: `SpkMaxCa`, 65: `SpkBin0`, 66: `SpkBin1`, 67: `SpkBin2`, 68: `SpkBin3`, 69: `SpkBin4`, 70: `SpkBin5`, 71: `SpkBin6`, 72: `SpkBin7`, 73: `SpkPrv`, 74: `GeNoise`, 75: `GeNoiseP`, 76: `GiNoise`, 77: `GiNoiseP`, 78: `GeExt`, 79: `GeRaw`, 80: `GeSyn`, 81: `GiRaw`, 82: `GiSyn`, 83: `SMaintP`, 84: `GeInt`, 85: `GeIntNorm`, 86: `GiInt`, 87: `GModRaw`, 88: `GModSyn`, 89: `GMaintRaw`, 90: `GMaintSyn`} +var _NeuronVarsMap = map[NeuronVars]string{0: `Spike`, 1: `Spiked`, 2: `Act`, 3: `ActInt`, 4: `Ge`, 5: `Gi`, 6: `Gk`, 7: `Inet`, 8: `Vm`, 9: `VmDend`, 10: `ISI`, 11: `ISIAvg`, 12: `Ext`, 13: `Target`, 14: `CaSpkM`, 15: `CaSpkP`, 16: `CaSpkD`, 17: `CaSpkPM`, 18: `CaLrn`, 19: `NrnCaM`, 20: `NrnCaP`, 21: `NrnCaD`, 22: `CaDiff`, 23: `RLRate`, 24: `GnmdaSyn`, 25: `Gnmda`, 26: `GnmdaLrn`, 27: `GnmdaMaint`, 28: `NmdaCa`, 29: `Gvgcc`, 30: `VgccM`, 31: `VgccH`, 32: `VgccCa`, 33: `VgccCaInt`, 34: `Burst`, 35: `BurstPrv`, 36: `CtxtGe`, 37: `CtxtGeRaw`, 38: `CtxtGeOrig`, 39: `GgabaB`, 40: `GABAB`, 41: `GABABx`, 42: `Gak`, 43: `SSGi`, 44: `SSGiDend`, 45: `GknaMed`, 46: `GknaSlow`, 47: `Gkir`, 48: `KirM`, 49: `Gsk`, 50: `SKCaIn`, 51: `SKCaR`, 52: `SKCaM`, 53: `Gmahp`, 54: `MahpN`, 55: `Gsahp`, 56: `SahpCa`, 57: `SahpN`, 58: `ActM`, 59: `ActP`, 60: `SpkSt1`, 61: `SpkSt2`, 62: `SpkMax`, 63: `SpkMaxCa`, 64: `SpkBin0`, 65: `SpkBin1`, 66: `SpkBin2`, 67: `SpkBin3`, 68: `SpkBin4`, 69: `SpkBin5`, 70: `SpkBin6`, 71: `SpkBin7`, 72: `SpkPrv`, 73: `GeNoise`, 74: `GeNoiseP`, 75: `GiNoise`, 76: `GiNoiseP`, 77: `GeExt`, 78: `GeRaw`, 79: `GeSyn`, 80: `GiRaw`, 81: `GiSyn`, 82: `GeInt`, 83: `GeIntNorm`, 84: `GiInt`, 85: `GModRaw`, 86: `GModSyn`, 87: `SMaintP`, 88: `GMaintRaw`, 89: `GMaintSyn`, 90: `NrnFlags`} // String returns the string representation of this NeuronVars value. func (i NeuronVars) String() string { return enums.String(i, _NeuronVarsMap) } diff --git a/axon/neuron.go b/axon/neuron.go index 99452516..37fb676f 100644 --- a/axon/neuron.go +++ b/axon/neuron.go @@ -85,11 +85,6 @@ const ( // Target is the target value: drives learning to produce this activation value Target - // NrnFlags are bit flags for binary state variables, which are converted to / from uint32. - // These need to be in Vars because they can be differential per data (for ext inputs) - // and are writable (indexes are read only). - NrnFlags - ///////////////////////////////////////// // Calcium for learning @@ -198,40 +193,25 @@ const ( // SSGiDend is amount of SST+ somatostatin positive slow spiking inhibition applied to dendritic Vm (VmDend) SSGiDend - ///////////////////////////////////////// - // AHP channels: Mahp, Sahp, Gkna - - // MahpN is accumulating voltage-gated gating value for the medium time scale AHP - MahpN - - // Gmahp is medium time scale AHP conductance - Gmahp - - // SahpCa is slowly accumulating calcium value that drives the slow AHP - SahpCa - - // SahpN is the sAHP gating value - SahpN - - // Gsahp is slow time scale AHP conductance - Gsahp - // GknaMed is conductance of sodium-gated potassium channel (KNa) medium dynamics (Slick), which produces accommodation / adaptation of firing GknaMed // GknaSlow is conductance of sodium-gated potassium channel (KNa) slow dynamics (Slack), which produces accommodation / adaptation of firing GknaSlow - // KirM is the Kir potassium (K) inwardly rectifying gating value - KirM - // Gkir is the conductance of the potassium (K) inwardly rectifying channel, // which is strongest at low membrane potentials. Can be modulated by DA. Gkir + // KirM is the Kir potassium (K) inwardly rectifying gating value + KirM + ///////////////////////////////////////// // SKCa small conductance calcium-gated potassium channels + // Gsk is Calcium-gated potassium channel conductance as a function of Gbar * SKCaM. + Gsk + // SKCaIn is intracellular calcium store level, available to be released with spiking as SKCaR, which can bind to SKCa receptors and drive K current. replenishment is a function of spiking activity being below a threshold SKCaIn @@ -241,8 +221,23 @@ const ( // SKCaM is Calcium-gated potassium channel gating factor, driven by SKCaR via a Hill equation as in chans.SKPCaParams. SKCaM - // Gsk is Calcium-gated potassium channel conductance as a function of Gbar * SKCaM. - Gsk + ///////////////////////////////////////// + // AHP channels: Mahp, Sahp, Gkna + + // Gmahp is medium time scale AHP conductance + Gmahp + + // MahpN is accumulating voltage-gated gating value for the medium time scale AHP + MahpN + + // Gsahp is slow time scale AHP conductance + Gsahp + + // SahpCa is slowly accumulating calcium value that drives the slow AHP + SahpCa + + // SahpN is the sAHP gating value + SahpN ///////////////////////////////////////// // Stats, aggregate values @@ -311,9 +306,6 @@ const ( // GiSyn is time-integrated total inhibitory synaptic conductance, with an instantaneous rise time from each spike (in GiRaw) and exponential decay with Dt.GiTau, aggregated over pathways -- does *not* include Gbar.I. This is added with computed FFFB inhibition to get the full inhibition in Gi GiSyn - // SMaintP is accumulating poisson probability factor for driving self-maintenance by simulating a population of mutually interconnected neurons. multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda based on accumulating self maint factor - SMaintP - // GeInt is integrated running-average activation value computed from Ge with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall Ge level across the ThetaCycle time scale (Ge itself fluctuates considerably) -- useful for stats to set strength of connections etc to get neurons into right range of overall excitatory drive GeInt @@ -329,13 +321,19 @@ const ( // GModSyn is syn integrated modulatory conductance, received from GType = ModulatoryG pathways GModSyn + // SMaintP is accumulating poisson probability factor for driving self-maintenance by simulating a population of mutually interconnected neurons. multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda based on accumulating self maint factor + SMaintP + // GMaintRaw is raw maintenance conductance, received from GType = MaintG pathways GMaintRaw // GMaintSyn is syn integrated maintenance conductance, integrated using MaintNMDA params. GMaintSyn - // IMPORTANT: if NrnFlags is not the last, need to update gosl defn below + // NrnFlags are bit flags for binary state variables, which are converted to / from uint32. + // These need to be in Vars because they can be differential per data (for ext inputs) + // and are writable (indexes are read only). + NrnFlags ) // NeuronAvgVars are mostly neuron variables involved in longer-term average activity @@ -518,7 +516,7 @@ var VarCategories = []emer.VarCategory{ {"Act", "basic activation variables, including conductances, current, Vm, spiking"}, {"Learn", "calcium-based learning variables and other related learning factors"}, {"Excite", "excitatory channels including NMDA, Vgcc and other excitatory inputs"}, - {"Inhib", "inhibitory channels including after hyperpolarization (AHP) and other K channels; GABA inhibition"}, + {"Inhib", "inhibitory channels including GABA inhibition, after hyperpolarization (AHP) and other K channels"}, {"Stats", "statistics and aggregate values"}, {"Gmisc", "more detailed conductance (G) variables for integration and other computational values"}, {"Avg", "longer-term average variables and homeostatic regulation"}, @@ -600,26 +598,27 @@ var NeuronVarProps = map[string]string{ "SSGi": `cat:"Inhib" auto-scale:"+" desc:"SST+ somatostatin positive slow spiking inhibition"`, "SSGiDend": `cat:"Inhib" auto-scale:"+" desc:"amount of SST+ somatostatin positive slow spiking inhibition applied to dendritic Vm (VmDend)"`, - ///////////////////////////////////////// - // AHP channels: Mahp, Sahp, Gkna - - "Gmahp": `cat:"Inhib" auto-scale:"+" desc:"medium time scale AHP conductance"`, - "MahpN": `cat:"Inhib" auto-scale:"+" desc:"accumulating voltage-gated gating value for the medium time scale AHP"`, - "SahpCa": `cat:"Inhib" desc:"slowly accumulating calcium value that drives the slow AHP"`, - "SahpN": `cat:"Inhib" desc:"sAHP gating value"`, - "Gsahp": `cat:"Inhib" auto-scale:"+" desc:"slow time scale AHP conductance"`, "GknaMed": `cat:"Inhib" auto-scale:"+" desc:"conductance of sodium-gated potassium channel (KNa) medium dynamics (Slick) -- produces accommodation / adaptation of firing"`, "GknaSlow": `cat:"Inhib" auto-scale:"+" desc:"conductance of sodium-gated potassium channel (KNa) slow dynamics (Slack) -- produces accommodation / adaptation of firing"`, - "KirM": `cat:"Inhib" desc:"the Kir gating value"`, "Gkir": `cat:"Inhib" desc:"the conductance of the potassium (K) inwardly rectifying channel, which is strongest at low membrane potentials. Can be modulated by DA."`, + "KirM": `cat:"Inhib" desc:"the Kir gating value"`, ///////////////////////////////////////// // SKCa small conductance calcium-gated potassium channels + "Gsk": `cat:"Inhib" desc:"Calcium-gated potassium channel conductance as a function of Gbar * SKCaM."`, "SKCaIn": `cat:"Inhib" desc:"intracellular calcium store level, available to be released with spiking as SKCaR, which can bind to SKCa receptors and drive K current. replenishment is a function of spiking activity being below a threshold"`, "SKCaR": `cat:"Inhib" desc:"released amount of intracellular calcium, from SKCaIn, as a function of spiking events. this can bind to SKCa channels and drive K currents."`, "SKCaM": `cat:"Inhib" desc:"Calcium-gated potassium channel gating factor, driven by SKCaR via a Hill equation as in chans.SKPCaParams."`, - "Gsk": `cat:"Inhib" desc:"Calcium-gated potassium channel conductance as a function of Gbar * SKCaM."`, + + ///////////////////////////////////////// + // AHP channels: Mahp, Sahp + + "Gmahp": `cat:"Inhib" auto-scale:"+" desc:"medium time scale AHP conductance"`, + "MahpN": `cat:"Inhib" auto-scale:"+" desc:"accumulating voltage-gated gating value for the medium time scale AHP"`, + "Gsahp": `cat:"Inhib" auto-scale:"+" desc:"slow time scale AHP conductance"`, + "SahpCa": `cat:"Inhib" desc:"slowly accumulating calcium value that drives the slow AHP"`, + "SahpN": `cat:"Inhib" desc:"sAHP gating value"`, ///////////////////////////////////////// // Stats, aggregate values @@ -658,15 +657,17 @@ var NeuronVarProps = map[string]string{ "GeSyn": `cat:"Gmisc" range:"2" desc:"time-integrated total excitatory synaptic conductance, with an instantaneous rise time from each spike (in GeRaw) and exponential decay with Dt.GeTau, aggregated over pathways -- does *not* include Gbar.E"`, "GiRaw": `cat:"Gmisc" desc:"raw inhibitory conductance (net input) received from senders = current raw spiking drive"`, "GiSyn": `cat:"Gmisc" desc:"time-integrated total inhibitory synaptic conductance, with an instantaneous rise time from each spike (in GiRaw) and exponential decay with Dt.GiTau, aggregated over pathways -- does *not* include Gbar.I. This is added with computed FFFB inhibition to get the full inhibition in Gi"`, - "SMaintP": `cat:"Gmisc" desc:"accumulating poisson probability factor for driving self-maintenance by simulating a population of mutually interconnected neurons. multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda based on accumulating self maint factor"`, "GeInt": `cat:"Gmisc" range:"2" desc:"integrated running-average activation value computed from Ge with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall Ge level across the ThetaCycle time scale (Ge itself fluctuates considerably) -- useful for stats to set strength of connections etc to get neurons into right range of overall excitatory drive"`, "GeIntNorm": `cat:"Gmisc" range:"1" desc:"GeIntNorm is normalized GeInt value (divided by the layer maximum) -- this is used for learning in layers that require learning on subthreshold activity."`, "GiInt": `cat:"Gmisc" range:"2" desc:"integrated running-average activation value computed from GiSyn with time constant Act.Dt.IntTau, to produce a longer-term integrated value reflecting the overall synaptic Gi level across the ThetaCycle time scale (Gi itself fluctuates considerably) -- useful for stats to set strength of connections etc to get neurons into right range of overall inhibitory drive"`, "GModRaw": `cat:"Gmisc" desc:"raw modulatory conductance, received from GType = ModulatoryG pathways"`, "GModSyn": `cat:"Gmisc" desc:"syn integrated modulatory conductance, received from GType = ModulatoryG pathways"`, + "SMaintP": `cat:"Gmisc" desc:"accumulating poisson probability factor for driving self-maintenance by simulating a population of mutually interconnected neurons. multiply times uniform random deviate at each time step, until it gets below the target threshold based on poisson lambda based on accumulating self maint factor"`, "GMaintRaw": `cat:"Gmisc" desc:"raw maintenance conductance, received from GType = MaintG pathways"`, "GMaintSyn": `cat:"Gmisc" desc:"syn integrated maintenance conductance, integrated using MaintNMDA params."`, + "NrnFlags": `display:"-" desc:"bit flags for external input and other neuron status state"`, + ///////////////////////////////////////// // Long-term average activation, set point for synaptic scaling @@ -678,13 +679,14 @@ var NeuronVarProps = map[string]string{ "GeBase": `cat:"Avg" desc:"baseline level of Ge, added to GeRaw, for intrinsic excitability"`, "GiBase": `cat:"Avg" desc:"baseline level of Gi, added to GiRaw, for intrinsic excitability"`, + ///////////////////////////////////////// + // Layer-level variables + "DA": `cat:"Learn" desc:"dopamine neuromodulation (layer-level variable)"`, "ACh": `cat:"Learn" desc:"cholinergic neuromodulation (layer-level variable)"`, "NE": `cat:"Learn" desc:"norepinepherine (noradrenaline) neuromodulation (layer-level variable)"`, "Ser": `cat:"Learn" desc:"serotonin neuromodulation (layer-level variable)"`, "Gated": `cat:"Learn" desc:"signals whether the layer gated"`, - - "NrnFlags": `display:"-" desc:"bit flags for external input and other neuron status state"`, } var ( diff --git a/axon/shaders/gpu_applyext.spv b/axon/shaders/gpu_applyext.spv index d3e29a7cb534cd65734cff7f80a7c29ed772bb50..c166f9d0b518f6bce3fafeeae5dd6e6b2bdea247 100644 GIT binary patch delta 16 XcmZ2;lyS{b#tk+Rj8U6yBl5WbJgx>s delta 16 XcmZ2;lyS{b#tk+RjC`AIBl5WbI_3rW diff --git a/axon/shaders/gpu_cycle.spv b/axon/shaders/gpu_cycle.spv index 0860f067034a74d5adf02e6c71943cd7ed76b765..643388976de783e92c2aa6a9f0749bf10b7f3e9a 100644 GIT binary patch literal 106816 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 literal 106800 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 diff --git a/axon/shaders/gpu_dwt.spv b/axon/shaders/gpu_dwt.spv index 4730f6e805b8b390e66f3f233a7899a47624068f..1da75606fd312e04102fd6e756b326ad2151a295 100644 GIT binary patch literal 85524 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 literal 85508 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 diff --git a/axon/shaders/gpu_gather.spv b/axon/shaders/gpu_gather.spv index dc3de412f7221c8987a3bdfee450d7d38e32fa50..5357c0860ded97cbcc03b42e2cac82f70b231281 100644 GIT binary patch delta 9393 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 delta 9347 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 e>^|9F-GB4TyVV#0b}!X-X{;f2^M zD2d-UOqq_IoYbjP)pM%5|M}B6Yz+1Gj1NSdiHPC&{C())!t^ryX7t4+;v_g<d=z>M{Gw`XMSsU(8txufGX~=-@pgN=R-d>d z17EwHcj0!cXXi}&N3CAXqRfDOIE`c2B0o-==9O)rk-H}#^E=N*d1!|5UFGo^O zw?}XvXaso0J`l0`H}e{TO}U{7|9`_2TAp#e(;KndJ>v$scew^qdknt@?A_`1J%QV6 zZ6~VJ$9+m-!IL-RY>X41fj;2G)-@g@J_pv)tCuF9 V$kW8Shfvd`{2u&NPxuQjg1=7WO@aUb delta 996 zcmZ9L%T82L5JgMC#{}qxMB~78zsS;_vY{B@ZiAY>4*~%F%s{-4u7k)9>8Z}D9#cufm)GY zhL08b6?nbKo87}&qjMFd#Tzd4DiH(3A2ArSMAt9)IpQ_&ld7>3Cwq?9;WNP1jx#Yq zywUwoZ%p5mf&G5xEx6t4**Vw!TyIpjQRcuGIxiCM0K3&cF_+prPR~V~xr~T?9GO65Mw69H|9Yccf*a%aPO{ z0yRgFmm{gC+X{RXj02C@4@9i~&D=&<0r|iq`2PO|FTx cG-E zJc=iRcosAB{bvG!f$Mha+)mxcd#f5NgfI#(QG;g>t~lym*pIpouB7gV3#bQR3-use zNIe7>Q4b4Y6~#1+z$Mh9a4Gc|Tt+<(ms3x`6>{EYQR?KEt*)Vp-c7;P)YEVS^$cvK zo`svJ=io-!*=A64XjS2C>IFEDdJ)d2UV?L}m*G_E6*!H06*g0^384xT4eM|M^#+_s zy$L5#Z^0qd+i)oL4%|k)3x`wh;r~S>4f}8u^#N?4K7^C0kKlA_35QW1!x7Xca5VL) z=aa|Ka0UlZpTj=X7qBn&B^*e71qV?(;b7`(ID6AA)X*cOTKhWf( v-6+itKk2qd%tkwHPuhD~DZ5L~G5;rxYt==EqBEc%dLE_-#HQ*h1 zDSqqXcbMn-eE&1aBu{33oVp*U?)Al_#t0z{!b8+z@5L2MZG(NO``{{SJ6u5B4;NAo zz(v%9a543e5KW?l2E%YE^$1)>JqnjokHHnx<8Y;%GZ!cg^21!;SWWjP;Tq~GxQTii zZl<1rTd8N^7TMLNSCeU~!YS1Aa4PizoJPF}r&BM%8Pv;gCba|3qFxa~71=ach2yE$ z-~{S*IFWh-4yN9OL#VglcIs_7jCu#}7ZEhrh4s{Xa3uBqpZ`Cy19U#!mvAWcAskM9 z1V>RHyN^7Y1}CsT^(pL4eFpnbpThyv7jPi86Aq%jgmb6^uMoL3xQ6rOc86ZAr|Avc zNPP>NsPAAiwF_>ezK4^jA7CT(BV0%Qea9N!J%H8G{i$egEj?bwU(D!q?f?J) diff --git a/axon/shaders/gpu_plusneuron.spv b/axon/shaders/gpu_plusneuron.spv index 58fe713d581662ceaa477821a6e07a8c5f6956f6..ac62bc9523d352ed0919b1a5b32007e9219f4b69 100644 GIT binary patch delta 9852 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 delta 9807 zcmZ{p2bdPs6^3V*u2k3FR#Yrt0~;DkHpC=qENIYJg1dkfMNKmXbXY_LyZ-jR*t^&Z z7DPnF-aBIN9mRs?ednLETnNmw*ZZCC)Z6CHkDpd*U$4}5X;Zsehb*hfvaD;?e^Qqd zhVz>HX;2xE`hHTxiZNiQNFPq56fj3Cx@!-CRJOSLVvf0r3<;)wo zP6XG{Rw4IEmFA&!eNRSen^>FzUObUc1-DP+(<;-3)(<=#W=s5zps&!{(7xxtXVCln z1m2DQOxm2Rw&(|D?TYc91*eZsL)I}HNq=@_<6-r^&JoeZm6qp%wU!Ud^D0LUtIyAe zIgfS|mQC~*(6pAnin`=3q{&;?Mf5&DqLaUvCTDHpALy-JS>Ca^HkZ(>XhK<03z&+! z7K$ioVx`x<_4%c!Ceos$%fOn;M@g51yVuUzMGc!=RYPkS&V*X@I5pQ8nRB=DEi5?)Yb#& zp$nhE;CpG>h0lH9h50xLi^6BO?0y6d!|4I=!kmtVFP*X}VC}-^LGXM&mF5HM@~N%}n$JO~Xj^5Pb~@cJVWeR=y_`B#b~tF6{1q74 zsQ=Z}0_-AMN;*%kA!`>tuY(s>emYNYV5435yjk^`f4Ash!dQ@*U=73RE%3q;odzF1 zv%uQL`|E9R>f`$^cGsY+KFi*L&?p?*!f8+Tagw-VS#KXoh9>S=Rw z92Jf&D_jMF;bh`qjY3H=p*#%r$mYCUGPY zaCPv0Ws*qT3vR*0Yrtu%E{$c(NW3Q4#pK#aXk$@c;Gsj1w2_!9ZLP=-;J zV838?rRlR(>0|Ngwx-GHC$>=ID$5sgUJ@#zs^5b5C#X&?jm9ym2Jq%IZG!t9*dHz0bu?ptvYkDv|WB*D%=tSDw7Vc%eR3st(w>oe*pW56mEYkz1$J%!Y4}l z6PzV!mzHE{G0bhjmhRBCw_M)ydGWha*g=9 zFgt>Me&UzFJ@h*vcctH%zB~Ou`cCw_(9g;8+CmZ6+OCktqD=43zrcBSs*9Ux5Lmti zJ__CqIj&CiQSk0ybr$zmdY{;7d&G{|qcqsFG;mvW1MfwXbA`pR9rp%5K_D+Dr#x)z zo$@C5zk$6|jIF)?7BQIK#~isv`_Lp!A~v9vD$7?d5T+Q+U-9$AuMS5R%g_W??@thu z4AGFsB`xb$$3hQA_OVcP zhtTATTTvk#M}XrsVy$S)BIz#|O$`VD%Q(U)!>fyZ~YRAC&G`N3ElQ zVq`~x)jP8P()(DT{79Od1&X7@_zT3OVPjv-$@(9KV1-tsg8|}tJ{qjP5xwhg z5MMAR8b}}S4Ue%eu(7mwM~sG(Z-I+%>hzn$DUTP@nPC1XtvYpaGoDrQ-lu04_vzU%rd1P* zdk#3gPtPsAyie7IPn3BcoE2%8R%B%{%=5uk?$EWjT6SagKD|JK;ORAXA)MEky4a!@ zf#qA^V~bvl9M_ooxW+C4t8;-{=zU^=Cn7s#6Mdh0cA8LL3fYb3+44~9cp0*fi>&@~ znw-vJM{96p`M7zm0P|P;a9h5Cf9-uJPccl zyAJH5pStU5H_-GG$MW0=_7{l07ObB(+UD^K;wA*E)F>P$fpt`uIvOC>^=7aMOsKs< zwRKP?aUc=z7O=lu%+Y$E-iokb;@jXfR+k1dXe7QJY;udy-b67|cYxK;AX&T`??jfD zQ)k>3*WW5#!w7sA*n(VNolL6nj`Z5@LLWiz2Jb-ImZnee_msR`Z*c0r6SB)UnVusz zZ&%(6VFG&%?$dzB^>t(3Pm|L|92@EZaQbZ(Huesxi5OGBZfav|ufI9+2LV1N(P%17 z&Lm`D^{QszHbs{WP%p__lgjLmqRen@*D>W?l%f2_J#<+sa_^Dti>n zAFljEHXzpcF|fM$wwj?4k4e-$PLs26aXJwB>bDj1{{(`8tT;8Y!c=w^;@j#;uxslK z`7LDv;}}>ud}GhphwoEh_luYM`8oe-p}CRVSSr#)Pa_{q)7XUC+G}eOsqHh!ZZ>V* z#M-(MwUyU4j^eXm?Q5Q{^k}Zjttq|@o(GR3Mfx&+0nV4Px_BAC2$pYwkC*XF$ni2( z?>{QaJx7c9FN2SpKYpIQ0%-!3k>FLZd`ptxHRMR3KHm1PgVn`OdIKzXKfW>MH<70y zPoc$CHxurSnmo2cmc0cbsgVa{7T71Qj<=EBQueV$-vMjp7S%tt=(}Kb2f!QaJ&kzW zqUzqK$rWGK3UN(;0Ol|A!abg5P*>gUXh9aBqd`B^kS7ZKsMOm}F8?XxW3Vv}#7>`2 zz&;kDF8`GONE%pdA_FVS#}s}BJ_tvHjlg+l@aJH8mreN#u-tI))ROxWS$=o8=_U6S zvi!lWhMPm@uOSYhR~gRVfaUjsk0jqB%a4Ey-`U9Wsqc5l@_Q$~-y_Q(+Um>t&w)^p zI{$zyzbA%c$^w5xmOrf3nW;yXPknzzmfs^uJQvwnP&bO%8-(r`@Lb;l5`Luq3YJWl zz@>=mi4`fnpj{?yU7pzWHR#m4SK_y0Ewam{F5N%wqllTeLFuM*6Y5~XSo5~X9vy8W zXgjb+Yzm3oQ0Uz-R3@mm!4Xi95 zGqwcSQ(~+*C3Rr=*uYDI<%(0nzcUuQe<=tR=`mRvS)OCky3?0I_LQiLQ?e{rK0PJN zAj5S{y>?tX1%74)A4Hp|UPLOtSiu!;pqBsAl*BWRYut!d1RJ<;@hDhFM zvHRDP!`ah;~T(v%c^rD`U2_;&Q-J^#68{*Ij&g^yvOA%PV7}{ z0Wtaw!S~{?J_^_fJOM5(U}HE7P!|PkQk!j)sYnah6gdjOphzlbBA4e3f_Uug=Q0od GY5xOFp9zQn diff --git a/axon/shaders/gpu_plusstart.spv b/axon/shaders/gpu_plusstart.spv index 413a8fe4602f30b565115e03eac445592981c5ae..cc9ba64209b10c94f385fb0214d938596d6078cc 100644 GIT binary patch delta 16 YcmbQThjGdt#tkCjj8U6K!~e4Z05}W=Jpcdz delta 16 YcmbQThjGdt#tkCjjC`9#!~e4Z05(Jg@c;k- diff --git a/axon/shaders/gpu_postspike.spv b/axon/shaders/gpu_postspike.spv index 22db179cdc34ec41efe32470fb9c27d5ec6bbb7c..7307a30e6b3e721e9985dd97dd90c72105fb8605 100644 GIT binary patch delta 485 zcmYk1y-LGS9K~~kf<@2-DOem#MO{L#mLUQoOPHWlxJ zmlW@T(~9@ObBKlie8gE#j(l7zUFa;Nl*ea7tP$;dHoP?T7DduOrrxHBXUi)?%87sK zkRxpR5e7AcMayM_-i5`wG!h)0DSxvzu?lBB+N$KyXR@2J2eO%;?A!hW>(jvJ=m|Qa tT(FW(zV#Q`MNW`U zR@NKv4(;0Wxg}*K@S@_k;AN`WJh!i`_uxIn>)-?WwE0C!SsUO<#Y6Cv;t|+Tya}FB zyamoE-Ud$~S={RZr;Zem|9f_lX*#Zz&UEHe%HiWao(8n#nDElb8`O~gHu8{$jw#>t zDKGvgB1@PoqN?ENuHbYn()2B|^o(=m3H_^h~dNY$~p_;r^@T*FDxK#kpKVy diff --git a/axon/shaders/gpu_sendspike.spv b/axon/shaders/gpu_sendspike.spv index 3fecbd6b4852797190ad1f96eed18ae8f2cfad14..e3d176a9912d58cf7eacad55c61cf88534c210ef 100644 GIT binary patch delta 582 zcmYk2y-Pw-7{<@>gNmTMlx^V$*>ZzJgfxVZ&|DNb)!Gz6(ioB!*Q+-j;vJeCBnsLB zp@_i;lky-gOYntaz7oWwOPiP&OGcK`vDWCleDdE zD{Te5L$ORC6j9n|@RH&$;AKi>L}*WG-@viZ{XYinqWEinsAh=2waicoGxDA-dQuOtezGymRp?ts25xMPbvCp~G*+?odnm z-`Hyu$?EdUDka8LCnKwq&-9U#4bmp|FZL;R&>U?KZJ8^)Nl8=i7M0C!UZZ?Y@HV~X z){s9kL-`RWWaedl2)6mj+gS2ab vjLS^QEX(Z69M%Z?aEity@5XsyMjC9?;W5@_Kv;((sPsJ delta 580 zcmYk2y-Pw-7{<@Zq#~$$G26nAu!cJvBBUW4{0oxEmRg&lK^jBS!h5}@L%c(igM>kw zaiNIHulyVu+#Pa|riT859uE#@c%S$8dpL0Jxx=DsSaem6Q@X|&GuSMemuO3J%b4=2YTRTr*L&Y!^^al5$-aIDxG8u`0dnd z)Rz7?^*V)2L!K;Cd`b<>y_>fQhm>)}=wt!+SK&8N5mQ xjX*|aCS;am4rKDYa8Lei#|h`pIj_=VVTV_pQNgu~o5nrCYvk=8p-S{m-T#WAlOg~B