125 lines
9.4 KiB
JSON
125 lines
9.4 KiB
JSON
[
|
|
{
|
|
"active": true,
|
|
"code_objects": [],
|
|
"name": "default_neurons",
|
|
"order": 0,
|
|
"type": "NeuronGroup",
|
|
"when": "start"
|
|
},
|
|
{
|
|
"active": true,
|
|
"code_objects": [],
|
|
"name": "default_synapses",
|
|
"order": 0,
|
|
"type": "Synapses",
|
|
"when": "start"
|
|
},
|
|
{
|
|
"abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v",
|
|
"active": true,
|
|
"code_objects": [
|
|
{
|
|
"generated_code": "run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n lastspike = _array_default_neurons_lastspike\n dt = _array_defaultclock_dt[0]\n g = _array_default_neurons_g.copy()\n not_refractory = _array_default_neurons_not_refractory.copy()\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n t = _array_defaultclock_t[0]\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_not_refractory[:] = not_refractory\n _array_default_neurons_v[:] = v\nafter_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\n",
|
|
"name": "default_neurons_stateupdater_codeobject_1"
|
|
}
|
|
],
|
|
"name": "default_neurons_stateupdater",
|
|
"order": 0,
|
|
"type": "StateUpdater",
|
|
"when": "groups"
|
|
},
|
|
{
|
|
"active": true,
|
|
"code_objects": [],
|
|
"name": "oracle_common_requests",
|
|
"order": 0,
|
|
"type": "NetworkOperation",
|
|
"when": "before_thresholds"
|
|
},
|
|
{
|
|
"abstract_code": "_cond = (v > v_th) and not_refractory",
|
|
"active": true,
|
|
"code_objects": [
|
|
{
|
|
"generated_code": "run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n not_refractory = _array_default_neurons_not_refractory\n v = _array_default_neurons_v\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\nafter_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\n",
|
|
"name": "default_neurons_spike_thresholder_codeobject_1"
|
|
}
|
|
],
|
|
"name": "default_neurons_spike_thresholder",
|
|
"order": 0,
|
|
"type": "Thresholder",
|
|
"when": "thresholds"
|
|
},
|
|
{
|
|
"abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t",
|
|
"active": true,
|
|
"code_objects": [
|
|
{
|
|
"generated_code": "run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_t = _array_defaultclock_t[0]\n _source_i = _array_default_neurons_i[_idx]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\nafter_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\n",
|
|
"name": "spikemonitor_codeobject_1"
|
|
}
|
|
],
|
|
"name": "spikemonitor",
|
|
"order": 1,
|
|
"type": "SpikeMonitor",
|
|
"when": "thresholds"
|
|
},
|
|
{
|
|
"abstract_code": "g += w\n",
|
|
"active": true,
|
|
"code_objects": [
|
|
{
|
|
"generated_code": "run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\nafter_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\n",
|
|
"name": "default_synapses_pre_push_spikes"
|
|
},
|
|
{
|
|
"generated_code": "run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n w = _array_default_synapses_w[_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\nafter_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\n",
|
|
"name": "default_synapses_pre_codeobject_1"
|
|
}
|
|
],
|
|
"name": "default_synapses_pre",
|
|
"order": -1,
|
|
"type": "SynapticPathway",
|
|
"when": "synapses"
|
|
},
|
|
{
|
|
"abstract_code": "v = v_rst; w = 0; g = 0 * mV",
|
|
"active": true,
|
|
"code_objects": [
|
|
{
|
|
"generated_code": "run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\nafter_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\n",
|
|
"name": "default_neurons_spike_resetter_codeobject_1"
|
|
}
|
|
],
|
|
"name": "default_neurons_spike_resetter",
|
|
"order": 0,
|
|
"type": "Resetter",
|
|
"when": "resets"
|
|
},
|
|
{
|
|
"active": true,
|
|
"code_objects": [],
|
|
"name": "oracle_legacy_apl_unconditional",
|
|
"order": 0,
|
|
"type": "NetworkOperation",
|
|
"when": "end"
|
|
},
|
|
{
|
|
"active": true,
|
|
"code_objects": [],
|
|
"name": "oracle_after_apl_record",
|
|
"order": 1,
|
|
"type": "NetworkOperation",
|
|
"when": "end"
|
|
},
|
|
{
|
|
"active": true,
|
|
"code_objects": [],
|
|
"name": "zz_apl_queue_installer",
|
|
"order": 1000000,
|
|
"type": "QueueInstaller",
|
|
"when": "end"
|
|
}
|
|
]
|