2022-07-26 14:14:01,173 DIAGNOSTIC brian2: Logging to file: /tmp/brian_debug_e7q3sxsg.log, copy of main script saved as: /tmp/brian_script_uk0tjdrt.py 2022-07-26 14:14:01,173 DIAGNOSTIC brian2: Python interpreter: /home/sschmitt/virtualenvs/brian2/venv/bin/python3 2022-07-26 14:14:01,173 DIAGNOSTIC brian2: Platform: linux 2022-07-26 14:14:01,173 DIAGNOSTIC brian2: brian version is: 2.5.0.3 2022-07-26 14:14:01,173 DIAGNOSTIC brian2: numpy version is: 1.22.3 2022-07-26 14:14:01,173 DIAGNOSTIC brian2: scipy version is: 1.8.0 2022-07-26 14:14:01,173 DIAGNOSTIC brian2: sympy version is: 1.10.1 2022-07-26 14:14:01,173 DIAGNOSTIC brian2: python version is: 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0] 2022-07-26 14:14:01,187 DEBUG brian2: Cache size for target 'cython': 780 MB 2022-07-26 14:14:01,400 DIAGNOSTIC brian2.core.names: Created object of class SpatialNeuron with name spatialneuron 2022-07-26 14:14:01,400 DIAGNOSTIC brian2.core.base: Created BrianObject with name spatialneuron, clock=Clock(dt=100. * usecond, name='defaultclock'), when=start, order=0 2022-07-26 14:14:01,401 DIAGNOSTIC brian2.groups.neurongroup: Creating NeuronGroup of size 2, equations I = stimulus(t, stimulus_index) : A gtot__private = gL : S/(m^2) I0__private = EL*gL + stimulus(t, stimulus_index)/area : A/(m^2) Im = gL * (EL - v)+I/area : A/(m^2) time_constant = Cm/gtot__private : s space_constant = (2/pi)**(1.0/3.0) * (area/(1/r_length_1 + 1/r_length_2))**(1.0/6.0) / (2*(Ri*gtot__private)**(1.0/2.0)) : m Cm : F/(m^2) (constant) Ic : A/(m^2) Ri : ohm m (constant, shared) area : m^2 (constant) diameter : m (constant) distance : m (constant) length : m (constant) r_length_1 : m (constant) r_length_2 : m (constant) stimulus_index : 1 (constant) v : V volume : m^3. 2022-07-26 14:14:01,401 DIAGNOSTIC brian2.core.names: Created object of class StateUpdater with name spatialneuron_stateupdater 2022-07-26 14:14:01,402 DIAGNOSTIC brian2.core.base: Created BrianObject with name spatialneuron_stateupdater, clock=Clock(dt=100. * usecond, name='defaultclock'), when=groups, order=0 2022-07-26 14:14:01,402 DIAGNOSTIC brian2.core.names: Created object of class SpatialStateUpdater with name spatialneuron_spatialstateupdater 2022-07-26 14:14:01,403 DIAGNOSTIC brian2.core.base: Created BrianObject with name spatialneuron_spatialstateupdater, clock=Clock(dt=100. * usecond, name='defaultclock'), when=groups, order=0 2022-07-26 14:14:01,403 DIAGNOSTIC brian2.core.names: Created object of class TimedArray with name _timedarray 2022-07-26 14:14:01,404 DIAGNOSTIC brian2.core.names: Created object of class SpatialSubgroup with name spatialneuron_subgroup 2022-07-26 14:14:01,404 DIAGNOSTIC brian2.core.base: Created BrianObject with name spatialneuron_subgroup, clock=Clock(dt=100. * usecond, name='defaultclock'), when=thresholds, order=1 2022-07-26 14:14:01,405 DIAGNOSTIC brian2.core.names: Created object of class SpatialSubgroup with name spatialneuron_subgroup 2022-07-26 14:14:01,406 DIAGNOSTIC brian2.core.base: Created BrianObject with name spatialneuron_subgroup, clock=Clock(dt=100. * usecond, name='defaultclock'), when=thresholds, order=1 2022-07-26 14:14:01,417 DEBUG brian2.core.magic.magic_objects: Updated MagicNetwork to include 3 objects with names spatialneuron_stateupdater, spatialneuron_spatialstateupdater, spatialneuron 2022-07-26 14:14:01,418 DIAGNOSTIC brian2.core.clocks: Setting Clock defaultclock to t=, dt=100. us 2022-07-26 14:14:01,418 DEBUG brian2.core.network.before_run: Preparing network 'magicnetwork' with 3 objects: spatialneuron, spatialneuron_stateupdater, spatialneuron_spatialstateupdater 2022-07-26 14:14:01,426 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=spatialneuron, template name=spatialstateupdate) for abstract code: _gtot = gtot__private _I0 = I0__private 2022-07-26 14:14:01,501 DIAGNOSTIC brian2.utils.filelock: Attempting to acquire lock 140432247543584 on /home/sschmitt/.cython/brian_extensions/_cython_magic_ea0f610b856727b56af1d74a2f9bd956.lock 2022-07-26 14:14:01,501 DEBUG brian2.utils.filelock: Lock 140432247543584 acquired on /home/sschmitt/.cython/brian_extensions/_cython_magic_ea0f610b856727b56af1d74a2f9bd956.lock 2022-07-26 14:14:01,501 DIAGNOSTIC brian2.utils.filelock: Attempting to release lock 140432247543584 on /home/sschmitt/.cython/brian_extensions/_cython_magic_ea0f610b856727b56af1d74a2f9bd956.lock 2022-07-26 14:14:01,501 DEBUG brian2.utils.filelock: Lock 140432247543584 released on /home/sschmitt/.cython/brian_extensions/_cython_magic_ea0f610b856727b56af1d74a2f9bd956.lock 2022-07-26 14:14:01,501 DEBUG brian2.devices.device: Chosing 'cython' as the code generation target. 2022-07-26 14:14:01,523 DIAGNOSTIC brian2.devices.device: spatialneuron_spatialstateupdater_codeobject abstract code: _gtot = gtot__private _I0 = I0__private 2022-07-26 14:14:01,527 DIAGNOSTIC brian2.devices.device: spatialneuron_spatialstateupdater_codeobject snippet (scalar): t = _array_defaultclock_t[0] _lio_1 = EL * gL 2022-07-26 14:14:01,527 DIAGNOSTIC brian2.devices.device: spatialneuron_spatialstateupdater_codeobject snippet (vector): area = _array_spatialneuron_area[_idx] stimulus_index = _array_spatialneuron_stimulus_index[_idx] gtot__private = gL _gtot = gtot__private I0__private = _lio_1 + (_timedarray(t, stimulus_index) / area) _I0 = I0__private 2022-07-26 14:14:01,532 DIAGNOSTIC brian2.devices.device: spatialneuron_spatialstateupdater_codeobject code: run: #cython: language_level=3 #cython: boundscheck=False #cython: wraparound=False #cython: cdivision=False #cython: infer_types=True import numpy as _numpy cimport numpy as _numpy from libc.math cimport fabs, sin, cos, tan, sinh, cosh, tanh, exp, log, log10, expm1, log1p, sqrt, asin, acos, atan, fmod, floor, ceil, isinf cdef extern from "math.h": double M_PI # Import the two versions of std::abs from libc.stdlib cimport abs # For integers from libc.math cimport abs # For floating point values from libc.limits cimport INT_MIN, INT_MAX from libcpp cimport bool from libcpp.set cimport set from cython.operator cimport dereference as _deref, preincrement as _preinc cimport cython as _cython _numpy.import_array() cdef extern from "numpy/ndarraytypes.h": void PyArray_CLEARFLAGS(_numpy.PyArrayObject *arr, int flags) from libc.stdlib cimport free cdef extern from "numpy/npy_math.h": bint npy_isinf(double x) double NPY_INFINITY cdef extern from "stdint_compat.h": # Longness only used for type promotion # Actual compile time size used for conversion ctypedef signed int int32_t ctypedef signed long int64_t ctypedef unsigned long uint64_t # It seems we cannot used a fused type here cdef int int_(bool) cdef int int_(char) cdef int int_(short) cdef int int_(int) cdef int int_(long) cdef int int_(float) cdef int int_(double) cdef int int_(long double) # support code cdef double *_namespace_timedarray_values cdef double _timedarray(const double t, const int i): global _namespace_timedarray_values cdef double epsilon = 0.100000000000000006 / 8192 if i < 0 or i >= 2: return _numpy.nan cdef int timestep = (int)((t/epsilon + 0.5)/8192) if timestep < 0: timestep = 0 elif timestep >= 3: timestep = 3-1 return _namespace_timedarray_values[timestep*2 + i] # template-specific support code def main(_namespace): cdef size_t _idx cdef size_t _vectorisation_idx _var_Cm = _namespace["_var_Cm"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Cm = _namespace['_array_spatialneuron_Cm'] cdef double * _array_spatialneuron_Cm = _buf__array_spatialneuron_Cm.data cdef size_t _num_array_spatialneuron_Cm = len(_namespace['_array_spatialneuron_Cm']) cdef double Cm _var_EL = _namespace["_var_EL"] cdef double EL = _namespace["EL"] cdef double I0__private _var_Ic = _namespace["_var_Ic"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Ic = _namespace['_array_spatialneuron_Ic'] cdef double * _array_spatialneuron_Ic = _buf__array_spatialneuron_Ic.data cdef size_t _num_array_spatialneuron_Ic = len(_namespace['_array_spatialneuron_Ic']) cdef double Ic _var_N = _namespace["_var_N"] cdef int64_t N = _namespace["N"] _var_Ri = _namespace["_var_Ri"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Ri = _namespace['_array_spatialneuron_Ri'] cdef double * _array_spatialneuron_Ri = _buf__array_spatialneuron_Ri.data cdef double Ri = _namespace["Ri"] _var__B = _namespace["_var__B"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__B = _namespace['_array_spatialneuron_spatialstateupdater__B'] cdef double * _array_spatialneuron_spatialstateupdater__B = _buf__array_spatialneuron_spatialstateupdater__B.data cdef size_t _num_array_spatialneuron_spatialstateupdater__B = len(_namespace['_array_spatialneuron_spatialstateupdater__B']) cdef double _B _var__I0_all = _namespace["_var__I0_all"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__I0_all = _namespace['_array_spatialneuron__I0_all'] cdef double * _array_spatialneuron__I0_all = _buf__array_spatialneuron__I0_all.data cdef size_t _num_array_spatialneuron__I0_all = len(_namespace['_array_spatialneuron__I0_all']) cdef double _I0_all _var__P_children = _namespace["_var__P_children"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_children = _namespace['_array_spatialneuron_spatialstateupdater__P_children'] cdef double * _array_spatialneuron_spatialstateupdater__P_children = _buf__array_spatialneuron_spatialstateupdater__P_children.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_children = len(_namespace['_array_spatialneuron_spatialstateupdater__P_children']) cdef double _P_children _var__P_diag = _namespace["_var__P_diag"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_diag = _namespace['_array_spatialneuron_spatialstateupdater__P_diag'] cdef double * _array_spatialneuron_spatialstateupdater__P_diag = _buf__array_spatialneuron_spatialstateupdater__P_diag.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_diag = len(_namespace['_array_spatialneuron_spatialstateupdater__P_diag']) cdef double _P_diag _var__P_parent = _namespace["_var__P_parent"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_parent = _namespace['_array_spatialneuron_spatialstateupdater__P_parent'] cdef double * _array_spatialneuron_spatialstateupdater__P_parent = _buf__array_spatialneuron_spatialstateupdater__P_parent.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_parent = len(_namespace['_array_spatialneuron_spatialstateupdater__P_parent']) cdef double _P_parent _var__ab_star0 = _namespace["_var__ab_star0"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star0 = _namespace['_array_spatialneuron__ab_star0'] cdef double * _array_spatialneuron__ab_star0 = _buf__array_spatialneuron__ab_star0.data cdef size_t _num_array_spatialneuron__ab_star0 = len(_namespace['_array_spatialneuron__ab_star0']) cdef double _ab_star0 _var__ab_star1 = _namespace["_var__ab_star1"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star1 = _namespace['_array_spatialneuron__ab_star1'] cdef double * _array_spatialneuron__ab_star1 = _buf__array_spatialneuron__ab_star1.data cdef size_t _num_array_spatialneuron__ab_star1 = len(_namespace['_array_spatialneuron__ab_star1']) cdef double _ab_star1 _var__ab_star2 = _namespace["_var__ab_star2"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star2 = _namespace['_array_spatialneuron__ab_star2'] cdef double * _array_spatialneuron__ab_star2 = _buf__array_spatialneuron__ab_star2.data cdef size_t _num_array_spatialneuron__ab_star2 = len(_namespace['_array_spatialneuron__ab_star2']) cdef double _ab_star2 _var__b_minus = _namespace["_var__b_minus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__b_minus = _namespace['_array_spatialneuron__b_minus'] cdef double * _array_spatialneuron__b_minus = _buf__array_spatialneuron__b_minus.data cdef size_t _num_array_spatialneuron__b_minus = len(_namespace['_array_spatialneuron__b_minus']) cdef double _b_minus _var__b_plus = _namespace["_var__b_plus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__b_plus = _namespace['_array_spatialneuron__b_plus'] cdef double * _array_spatialneuron__b_plus = _buf__array_spatialneuron__b_plus.data cdef size_t _num_array_spatialneuron__b_plus = len(_namespace['_array_spatialneuron__b_plus']) cdef double _b_plus _var__c = _namespace["_var__c"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__c = _namespace['_array_spatialneuron__c'] cdef double * _array_spatialneuron__c = _buf__array_spatialneuron__c.data cdef size_t _num_array_spatialneuron__c = len(_namespace['_array_spatialneuron__c']) cdef double _c _var__compartment_idx = _namespace["_var__compartment_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__compartment_idx = _namespace['_array_spatialneuron_spatialstateupdater__compartment_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__compartment_idx = _buf__array_spatialneuron_spatialstateupdater__compartment_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__compartment_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__compartment_idx']) cdef int32_t _compartment_idx _var__ends = _namespace["_var__ends"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__ends = _namespace['_array_spatialneuron_spatialstateupdater__ends'] cdef int32_t * _array_spatialneuron_spatialstateupdater__ends = _buf__array_spatialneuron_spatialstateupdater__ends.data cdef size_t _num_array_spatialneuron_spatialstateupdater__ends = len(_namespace['_array_spatialneuron_spatialstateupdater__ends']) cdef int32_t _ends _var__gtot_all = _namespace["_var__gtot_all"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__gtot_all = _namespace['_array_spatialneuron__gtot_all'] cdef double * _array_spatialneuron__gtot_all = _buf__array_spatialneuron__gtot_all.data cdef size_t _num_array_spatialneuron__gtot_all = len(_namespace['_array_spatialneuron__gtot_all']) cdef double _gtot_all _var__invr = _namespace["_var__invr"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invr = _namespace['_array_spatialneuron_spatialstateupdater__invr'] cdef double * _array_spatialneuron_spatialstateupdater__invr = _buf__array_spatialneuron_spatialstateupdater__invr.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invr = len(_namespace['_array_spatialneuron_spatialstateupdater__invr']) cdef double _invr _var__invr0 = _namespace["_var__invr0"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invr0 = _namespace['_array_spatialneuron_spatialstateupdater__invr0'] cdef double * _array_spatialneuron_spatialstateupdater__invr0 = _buf__array_spatialneuron_spatialstateupdater__invr0.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invr0 = len(_namespace['_array_spatialneuron_spatialstateupdater__invr0']) cdef double _invr0 _var__invrn = _namespace["_var__invrn"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invrn = _namespace['_array_spatialneuron_spatialstateupdater__invrn'] cdef double * _array_spatialneuron_spatialstateupdater__invrn = _buf__array_spatialneuron_spatialstateupdater__invrn.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invrn = len(_namespace['_array_spatialneuron_spatialstateupdater__invrn']) cdef double _invrn _var__morph_children = _namespace["_var__morph_children"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children = _namespace['_array_spatialneuron_spatialstateupdater__morph_children'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children = _buf__array_spatialneuron_spatialstateupdater__morph_children.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children']) cdef int32_t _morph_children _var__morph_children_idx = _namespace["_var__morph_children_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children_idx = _namespace['_array_spatialneuron_spatialstateupdater__morph_children_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children_idx = _buf__array_spatialneuron_spatialstateupdater__morph_children_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children_idx']) cdef int32_t _morph_children_idx _var__morph_children_num = _namespace["_var__morph_children_num"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children_num = _namespace['_array_spatialneuron_spatialstateupdater__morph_children_num'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children_num = _buf__array_spatialneuron_spatialstateupdater__morph_children_num.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children_num = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children_num']) cdef int32_t _morph_children_num _var__morph_idxchild = _namespace["_var__morph_idxchild"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_idxchild = _namespace['_array_spatialneuron_spatialstateupdater__morph_idxchild'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_idxchild = _buf__array_spatialneuron_spatialstateupdater__morph_idxchild.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_idxchild = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_idxchild']) cdef int32_t _morph_idxchild _var__morph_parent_i = _namespace["_var__morph_parent_i"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_parent_i = _namespace['_array_spatialneuron_spatialstateupdater__morph_parent_i'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_parent_i = _buf__array_spatialneuron_spatialstateupdater__morph_parent_i.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_parent_i = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_parent_i']) cdef int32_t _morph_parent_i _var__section_idx = _namespace["_var__section_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__section_idx = _namespace['_array_spatialneuron_spatialstateupdater__section_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__section_idx = _buf__array_spatialneuron_spatialstateupdater__section_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__section_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__section_idx']) cdef int32_t _section_idx _var__section_root_idx = _namespace["_var__section_root_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__section_root_idx = _namespace['_array_spatialneuron_spatialstateupdater__section_root_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__section_root_idx = _buf__array_spatialneuron_spatialstateupdater__section_root_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__section_root_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__section_root_idx']) cdef int32_t _section_root_idx _var__starts = _namespace["_var__starts"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__starts = _namespace['_array_spatialneuron_spatialstateupdater__starts'] cdef int32_t * _array_spatialneuron_spatialstateupdater__starts = _buf__array_spatialneuron_spatialstateupdater__starts.data cdef size_t _num_array_spatialneuron_spatialstateupdater__starts = len(_namespace['_array_spatialneuron_spatialstateupdater__starts']) cdef int32_t _starts _var__u_minus = _namespace["_var__u_minus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__u_minus = _namespace['_array_spatialneuron__u_minus'] cdef double * _array_spatialneuron__u_minus = _buf__array_spatialneuron__u_minus.data cdef size_t _num_array_spatialneuron__u_minus = len(_namespace['_array_spatialneuron__u_minus']) cdef double _u_minus _var__u_plus = _namespace["_var__u_plus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__u_plus = _namespace['_array_spatialneuron__u_plus'] cdef double * _array_spatialneuron__u_plus = _buf__array_spatialneuron__u_plus.data cdef size_t _num_array_spatialneuron__u_plus = len(_namespace['_array_spatialneuron__u_plus']) cdef double _u_plus _var__v_previous = _namespace["_var__v_previous"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__v_previous = _namespace['_array_spatialneuron__v_previous'] cdef double * _array_spatialneuron__v_previous = _buf__array_spatialneuron__v_previous.data cdef size_t _num_array_spatialneuron__v_previous = len(_namespace['_array_spatialneuron__v_previous']) cdef double _v_previous _var__v_star = _namespace["_var__v_star"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__v_star = _namespace['_array_spatialneuron__v_star'] cdef double * _array_spatialneuron__v_star = _buf__array_spatialneuron__v_star.data cdef size_t _num_array_spatialneuron__v_star = len(_namespace['_array_spatialneuron__v_star']) cdef double _v_star _var_area = _namespace["_var_area"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_area = _namespace['_array_spatialneuron_area'] cdef double * _array_spatialneuron_area = _buf__array_spatialneuron_area.data cdef size_t _num_array_spatialneuron_area = len(_namespace['_array_spatialneuron_area']) cdef double area _var_dt = _namespace["_var_dt"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_defaultclock_dt = _namespace['_array_defaultclock_dt'] cdef double * _array_defaultclock_dt = _buf__array_defaultclock_dt.data cdef double dt = _namespace["dt"] _var_gL = _namespace["_var_gL"] cdef double gL = _namespace["gL"] cdef double gtot__private _var_r_length_1 = _namespace["_var_r_length_1"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_r_length_1 = _namespace['_array_spatialneuron_r_length_1'] cdef double * _array_spatialneuron_r_length_1 = _buf__array_spatialneuron_r_length_1.data cdef size_t _num_array_spatialneuron_r_length_1 = len(_namespace['_array_spatialneuron_r_length_1']) cdef double r_length_1 _var_r_length_2 = _namespace["_var_r_length_2"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_r_length_2 = _namespace['_array_spatialneuron_r_length_2'] cdef double * _array_spatialneuron_r_length_2 = _buf__array_spatialneuron_r_length_2.data cdef size_t _num_array_spatialneuron_r_length_2 = len(_namespace['_array_spatialneuron_r_length_2']) cdef double r_length_2 # namespace for function stimulus global _namespace_timedarray_values global _namespace_num_timedarray_values cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__timedarray_values = _namespace['_timedarray_values'] _namespace_timedarray_values = _buf__timedarray_values.data _namespace_num_timedarray_values = len(_namespace['_timedarray_values']) _var_stimulus_index = _namespace["_var_stimulus_index"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_stimulus_index = _namespace['_array_spatialneuron_stimulus_index'] cdef int32_t * _array_spatialneuron_stimulus_index = _buf__array_spatialneuron_stimulus_index.data cdef size_t _num_array_spatialneuron_stimulus_index = len(_namespace['_array_spatialneuron_stimulus_index']) cdef int32_t stimulus_index _var_t = _namespace["_var_t"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_defaultclock_t = _namespace['_array_defaultclock_t'] cdef double * _array_defaultclock_t = _buf__array_defaultclock_t.data cdef double t _var_v = _namespace["_var_v"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_v = _namespace['_array_spatialneuron_v'] cdef double * _array_spatialneuron_v = _buf__array_spatialneuron_v.data cdef size_t _num_array_spatialneuron_v = len(_namespace['_array_spatialneuron_v']) cdef double v cdef double _I0 cdef double _gtot cdef double _lio_1 if '_owner' in _namespace: _owner = _namespace['_owner'] cdef int _i cdef int _j cdef int _k cdef int _j_start cdef int _j_end cdef double _ai cdef double _bi cdef double _m cdef int _i_parent cdef int _i_childind cdef int _first cdef int _last cdef int _num_children cdef double _subfac cdef int _children_rowlength # MAIN CODE _vectorisation_idx = 1 t = _array_defaultclock_t[0] _lio_1 = EL * gL # STEP 1: compute g_total and I_0 for _i in range(0, N): _idx = _i _vectorisation_idx = _idx area = _array_spatialneuron_area[_idx] stimulus_index = _array_spatialneuron_stimulus_index[_idx] gtot__private = gL _gtot = gtot__private I0__private = _lio_1 + (_timedarray(t, stimulus_index) / area) _I0 = I0__private _array_spatialneuron__gtot_all[_idx] = _gtot _array_spatialneuron__I0_all[_idx] = _I0 _array_spatialneuron__v_previous[_idx] = _array_spatialneuron_v[_idx] # STEP 2: for each section: solve three tridiagonal systems # system 2a: solve for _v_star for _i in range(0, _num_array_spatialneuron_spatialstateupdater__B - 1): # first and last index of the i-th section _j_start = _array_spatialneuron_spatialstateupdater__starts[_i] _j_end = _array_spatialneuron_spatialstateupdater__ends[_i] # upper triangularization of tridiagonal system for _v_star, _u_plus, and _u_minus for _j in range(_j_start, _j_end): _array_spatialneuron__v_star[_j]=-(_array_spatialneuron_Cm[_j]/_array_defaultclock_dt[0]*_array_spatialneuron_v[_j])-_array_spatialneuron__I0_all[_j] # RHS -> _v_star (solution) _array_spatialneuron__u_plus[_j]=_array_spatialneuron__b_plus[_j] # RHS -> _u_plus (solution) _array_spatialneuron__u_minus[_j]=_array_spatialneuron__b_minus[_j] # RHS -> _u_minus (solution) _bi=_array_spatialneuron__ab_star1[_j]-_array_spatialneuron__gtot_all[_j] # main diagonal if _j < N-1: _array_spatialneuron__c[_j]=_array_spatialneuron__ab_star0[_j+1] # superdiagonal if _j > 0: _ai=_array_spatialneuron__ab_star2[_j-1] # subdiagonal _m=1.0/(_bi-_ai*_array_spatialneuron__c[_j-1]) _array_spatialneuron__c[_j]=_array_spatialneuron__c[_j]*_m _array_spatialneuron__v_star[_j]=(_array_spatialneuron__v_star[_j] - _ai*_array_spatialneuron__v_star[_j-1])*_m _array_spatialneuron__u_plus[_j]=(_array_spatialneuron__u_plus[_j] - _ai*_array_spatialneuron__u_plus[_j-1])*_m _array_spatialneuron__u_minus[_j]=(_array_spatialneuron__u_minus[_j] - _ai*_array_spatialneuron__u_minus[_j-1])*_m else: _array_spatialneuron__c[0]=_array_spatialneuron__c[0]/_bi _array_spatialneuron__v_star[0]=_array_spatialneuron__v_star[0]/_bi _array_spatialneuron__u_plus[0]=_array_spatialneuron__u_plus[0]/_bi _array_spatialneuron__u_minus[0]=_array_spatialneuron__u_minus[0]/_bi # backwards substitution of the upper triangularized system for _v_star for _j in range(_j_end-2, _j_start-1, -1): _array_spatialneuron__v_star[_j]=_array_spatialneuron__v_star[_j] - _array_spatialneuron__c[_j]*_array_spatialneuron__v_star[_j+1] _array_spatialneuron__u_plus[_j]=_array_spatialneuron__u_plus[_j] - _array_spatialneuron__c[_j]*_array_spatialneuron__u_plus[_j+1] _array_spatialneuron__u_minus[_j]=_array_spatialneuron__u_minus[_j] - _array_spatialneuron__c[_j]*_array_spatialneuron__u_minus[_j+1] # STEP 3: solve the coupling system # indexing for _P_children which contains the elements above the diagonal of the coupling matrix _P _children_rowlength = _num_array_spatialneuron_spatialstateupdater__morph_children//_num_array_spatialneuron_spatialstateupdater__morph_children_num # STEP 3a: construct the coupling system with matrix _P in sparse form. s.t. # _P_diag contains the diagonal elements # _P_children contains the super diagonal entries # _P_parent contains the single sub diagonal entry for each row # _B contains the right hand side for _i in range(0, _num_array_spatialneuron_spatialstateupdater__B - 1): _i_parent = _array_spatialneuron_spatialstateupdater__morph_parent_i[_i] _i_childind = _array_spatialneuron_spatialstateupdater__morph_idxchild[_i] _first = _array_spatialneuron_spatialstateupdater__starts[_i] _last = _array_spatialneuron_spatialstateupdater__ends[_i] - 1 # the compartment indices are in the interval [starts, ends[ _this_invr0 = _array_spatialneuron_spatialstateupdater__invr0[_i] _this_invrn = _array_spatialneuron_spatialstateupdater__invrn[_i] # Towards parent if _i == 0: # first section, sealed end _array_spatialneuron_spatialstateupdater__P_diag[0] = _array_spatialneuron__u_minus[_first] - 1 _array_spatialneuron_spatialstateupdater__P_children[0 + 0] = _array_spatialneuron__u_plus[_first] # RHS _array_spatialneuron_spatialstateupdater__B[0] = -_array_spatialneuron__v_star[_first] else: _array_spatialneuron_spatialstateupdater__P_diag[_i_parent] += (1 - _array_spatialneuron__u_minus[_first]) * _this_invr0 _array_spatialneuron_spatialstateupdater__P_children[_i_parent * _children_rowlength + _i_childind] = -_array_spatialneuron__u_plus[_first] * _this_invr0 # RHS _array_spatialneuron_spatialstateupdater__B[_i_parent] += _array_spatialneuron__v_star[_first] * _this_invr0 # Towards children _array_spatialneuron_spatialstateupdater__P_diag[_i+1] = (1 - _array_spatialneuron__u_plus[_last]) * _this_invrn _array_spatialneuron_spatialstateupdater__P_parent[_i] = -_array_spatialneuron__u_minus[_last] * _this_invrn # RHS _array_spatialneuron_spatialstateupdater__B[_i+1] = _array_spatialneuron__v_star[_last] * _this_invrn # STEP 3b: solve the linear system (the result will be stored in the former rhs _B in the end) # use efficient O(n) solution of the sparse linear system (structure-specific Gaussian elemination) # part 1: lower triangularization for _i in range(_num_array_spatialneuron_spatialstateupdater__B-1, -1, -1): _num_children = _array_spatialneuron_spatialstateupdater__morph_children_num[_i] # for every child eliminate the corresponding matrix element of row i for _k in range(0, _num_children): _j = _array_spatialneuron_spatialstateupdater__morph_children[_i * _children_rowlength + _k] # child index # subtracting _subfac times the j-th from the i-th row _subfac = _array_spatialneuron_spatialstateupdater__P_children[_i * _children_rowlength + _k] / _array_spatialneuron_spatialstateupdater__P_diag[_j] # element i,j appears only here # the following commented (superdiagonal) element is not used in the following anymore since # it is 0 by definition of (lower) triangularization we keep it here for algorithmic clarity #_array_spatialneuron_spatialstateupdater__P_children[_i * _children_rowlength +_k] = _array_spatialneuron_spatialstateupdater__P_children[_i * _children_rowlength + _k] - _subfac * _array_spatialneuron_spatialstateupdater__P_diag[_j] # = 0 _array_spatialneuron_spatialstateupdater__P_diag[_i] = _array_spatialneuron_spatialstateupdater__P_diag[_i] - _subfac * _array_spatialneuron_spatialstateupdater__P_parent[_j-1] # note: element j,i is only used here _array_spatialneuron_spatialstateupdater__B[_i] = _array_spatialneuron_spatialstateupdater__B[_i] - _subfac * _array_spatialneuron_spatialstateupdater__B[_j] # part 2: forwards substitution _array_spatialneuron_spatialstateupdater__B[0] = _array_spatialneuron_spatialstateupdater__B[0] / _array_spatialneuron_spatialstateupdater__P_diag[0] # the first section does not have a parent for _i in range(1, _num_array_spatialneuron_spatialstateupdater__B): _j = _array_spatialneuron_spatialstateupdater__morph_parent_i[_i-1] # parent index _array_spatialneuron_spatialstateupdater__B[_i] = _array_spatialneuron_spatialstateupdater__B[_i] - _array_spatialneuron_spatialstateupdater__P_parent[_i-1] * _array_spatialneuron_spatialstateupdater__B[_j] _array_spatialneuron_spatialstateupdater__B[_i] = _array_spatialneuron_spatialstateupdater__B[_i] / _array_spatialneuron_spatialstateupdater__P_diag[_i] # STEP 4: for each section compute the final solution by linear # combination of the general solution (independent: sections & compartments) for _i in range(0, _num_array_spatialneuron_spatialstateupdater__B - 1): _i_parent = _array_spatialneuron_spatialstateupdater__morph_parent_i[_i] _j_start = _array_spatialneuron_spatialstateupdater__starts[_i] _j_end = _array_spatialneuron_spatialstateupdater__ends[_i] for _j in range(_j_start, _j_end): if _j < _num_array_spatialneuron_v: # don't go beyond the last element _array_spatialneuron_v[_j] = (_array_spatialneuron__v_star[_j] + _array_spatialneuron_spatialstateupdater__B[_i_parent] * _array_spatialneuron__u_minus[_j] + _array_spatialneuron_spatialstateupdater__B[_i+1] * _array_spatialneuron__u_plus[_j]) for _i in range(0, N): _array_spatialneuron_Ic[_i] = _array_spatialneuron_Cm[_i]*(_array_spatialneuron_v[_i] - _array_spatialneuron__v_previous[_i])/_array_defaultclock_dt[0] imports: import numpy as _numpy cimport numpy as _numpy from libc.math cimport fabs, sin, cos, tan, sinh, cosh, tanh, exp, log, log10, expm1, log1p, sqrt, asin, acos, atan, fmod, floor, ceil, isinf cdef extern from "math.h": double M_PI # Import the two versions of std::abs from libc.stdlib cimport abs # For integers from libc.math cimport abs # For floating point values from libc.limits cimport INT_MIN, INT_MAX from libcpp cimport bool from libcpp.set cimport set from cython.operator cimport dereference as _deref, preincrement as _preinc cimport cython as _cython _numpy.import_array() cdef extern from "numpy/ndarraytypes.h": void PyArray_CLEARFLAGS(_numpy.PyArrayObject *arr, int flags) from libc.stdlib cimport free cdef extern from "numpy/npy_math.h": bint npy_isinf(double x) double NPY_INFINITY cdef extern from "stdint_compat.h": # Longness only used for type promotion # Actual compile time size used for conversion ctypedef signed int int32_t ctypedef signed long int64_t ctypedef unsigned long uint64_t # It seems we cannot used a fused type here cdef int int_(bool) cdef int int_(char) cdef int int_(short) cdef int int_(int) cdef int int_(long) cdef int int_(float) cdef int int_(double) cdef int int_(long double) after_run: #cython: language_level=3 #cython: boundscheck=False #cython: wraparound=False #cython: cdivision=False #cython: infer_types=True import numpy as _numpy cimport numpy as _numpy from libc.math cimport fabs, sin, cos, tan, sinh, cosh, tanh, exp, log, log10, expm1, log1p, sqrt, asin, acos, atan, fmod, floor, ceil, isinf cdef extern from "math.h": double M_PI # Import the two versions of std::abs from libc.stdlib cimport abs # For integers from libc.math cimport abs # For floating point values from libc.limits cimport INT_MIN, INT_MAX from libcpp cimport bool from libcpp.set cimport set from cython.operator cimport dereference as _deref, preincrement as _preinc cimport cython as _cython _numpy.import_array() cdef extern from "numpy/ndarraytypes.h": void PyArray_CLEARFLAGS(_numpy.PyArrayObject *arr, int flags) from libc.stdlib cimport free cdef extern from "numpy/npy_math.h": bint npy_isinf(double x) double NPY_INFINITY cdef extern from "stdint_compat.h": # Longness only used for type promotion # Actual compile time size used for conversion ctypedef signed int int32_t ctypedef signed long int64_t ctypedef unsigned long uint64_t # It seems we cannot used a fused type here cdef int int_(bool) cdef int int_(char) cdef int int_(short) cdef int int_(int) cdef int int_(long) cdef int int_(float) cdef int int_(double) cdef int int_(long double) # support code cdef double *_namespace_timedarray_values cdef double _timedarray(const double t, const int i): global _namespace_timedarray_values cdef double epsilon = 0.100000000000000006 / 8192 if i < 0 or i >= 2: return _numpy.nan cdef int timestep = (int)((t/epsilon + 0.5)/8192) if timestep < 0: timestep = 0 elif timestep >= 3: timestep = 3-1 return _namespace_timedarray_values[timestep*2 + i] def main(_namespace): _var_Cm = _namespace["_var_Cm"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Cm = _namespace['_array_spatialneuron_Cm'] cdef double * _array_spatialneuron_Cm = _buf__array_spatialneuron_Cm.data cdef size_t _num_array_spatialneuron_Cm = len(_namespace['_array_spatialneuron_Cm']) cdef double Cm _var_EL = _namespace["_var_EL"] cdef double EL = _namespace["EL"] cdef double I0__private _var_Ic = _namespace["_var_Ic"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Ic = _namespace['_array_spatialneuron_Ic'] cdef double * _array_spatialneuron_Ic = _buf__array_spatialneuron_Ic.data cdef size_t _num_array_spatialneuron_Ic = len(_namespace['_array_spatialneuron_Ic']) cdef double Ic _var_N = _namespace["_var_N"] cdef int64_t N = _namespace["N"] _var_Ri = _namespace["_var_Ri"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Ri = _namespace['_array_spatialneuron_Ri'] cdef double * _array_spatialneuron_Ri = _buf__array_spatialneuron_Ri.data cdef double Ri = _namespace["Ri"] _var__B = _namespace["_var__B"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__B = _namespace['_array_spatialneuron_spatialstateupdater__B'] cdef double * _array_spatialneuron_spatialstateupdater__B = _buf__array_spatialneuron_spatialstateupdater__B.data cdef size_t _num_array_spatialneuron_spatialstateupdater__B = len(_namespace['_array_spatialneuron_spatialstateupdater__B']) cdef double _B _var__I0_all = _namespace["_var__I0_all"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__I0_all = _namespace['_array_spatialneuron__I0_all'] cdef double * _array_spatialneuron__I0_all = _buf__array_spatialneuron__I0_all.data cdef size_t _num_array_spatialneuron__I0_all = len(_namespace['_array_spatialneuron__I0_all']) cdef double _I0_all _var__P_children = _namespace["_var__P_children"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_children = _namespace['_array_spatialneuron_spatialstateupdater__P_children'] cdef double * _array_spatialneuron_spatialstateupdater__P_children = _buf__array_spatialneuron_spatialstateupdater__P_children.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_children = len(_namespace['_array_spatialneuron_spatialstateupdater__P_children']) cdef double _P_children _var__P_diag = _namespace["_var__P_diag"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_diag = _namespace['_array_spatialneuron_spatialstateupdater__P_diag'] cdef double * _array_spatialneuron_spatialstateupdater__P_diag = _buf__array_spatialneuron_spatialstateupdater__P_diag.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_diag = len(_namespace['_array_spatialneuron_spatialstateupdater__P_diag']) cdef double _P_diag _var__P_parent = _namespace["_var__P_parent"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_parent = _namespace['_array_spatialneuron_spatialstateupdater__P_parent'] cdef double * _array_spatialneuron_spatialstateupdater__P_parent = _buf__array_spatialneuron_spatialstateupdater__P_parent.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_parent = len(_namespace['_array_spatialneuron_spatialstateupdater__P_parent']) cdef double _P_parent _var__ab_star0 = _namespace["_var__ab_star0"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star0 = _namespace['_array_spatialneuron__ab_star0'] cdef double * _array_spatialneuron__ab_star0 = _buf__array_spatialneuron__ab_star0.data cdef size_t _num_array_spatialneuron__ab_star0 = len(_namespace['_array_spatialneuron__ab_star0']) cdef double _ab_star0 _var__ab_star1 = _namespace["_var__ab_star1"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star1 = _namespace['_array_spatialneuron__ab_star1'] cdef double * _array_spatialneuron__ab_star1 = _buf__array_spatialneuron__ab_star1.data cdef size_t _num_array_spatialneuron__ab_star1 = len(_namespace['_array_spatialneuron__ab_star1']) cdef double _ab_star1 _var__ab_star2 = _namespace["_var__ab_star2"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star2 = _namespace['_array_spatialneuron__ab_star2'] cdef double * _array_spatialneuron__ab_star2 = _buf__array_spatialneuron__ab_star2.data cdef size_t _num_array_spatialneuron__ab_star2 = len(_namespace['_array_spatialneuron__ab_star2']) cdef double _ab_star2 _var__b_minus = _namespace["_var__b_minus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__b_minus = _namespace['_array_spatialneuron__b_minus'] cdef double * _array_spatialneuron__b_minus = _buf__array_spatialneuron__b_minus.data cdef size_t _num_array_spatialneuron__b_minus = len(_namespace['_array_spatialneuron__b_minus']) cdef double _b_minus _var__b_plus = _namespace["_var__b_plus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__b_plus = _namespace['_array_spatialneuron__b_plus'] cdef double * _array_spatialneuron__b_plus = _buf__array_spatialneuron__b_plus.data cdef size_t _num_array_spatialneuron__b_plus = len(_namespace['_array_spatialneuron__b_plus']) cdef double _b_plus _var__c = _namespace["_var__c"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__c = _namespace['_array_spatialneuron__c'] cdef double * _array_spatialneuron__c = _buf__array_spatialneuron__c.data cdef size_t _num_array_spatialneuron__c = len(_namespace['_array_spatialneuron__c']) cdef double _c _var__compartment_idx = _namespace["_var__compartment_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__compartment_idx = _namespace['_array_spatialneuron_spatialstateupdater__compartment_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__compartment_idx = _buf__array_spatialneuron_spatialstateupdater__compartment_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__compartment_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__compartment_idx']) cdef int32_t _compartment_idx _var__ends = _namespace["_var__ends"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__ends = _namespace['_array_spatialneuron_spatialstateupdater__ends'] cdef int32_t * _array_spatialneuron_spatialstateupdater__ends = _buf__array_spatialneuron_spatialstateupdater__ends.data cdef size_t _num_array_spatialneuron_spatialstateupdater__ends = len(_namespace['_array_spatialneuron_spatialstateupdater__ends']) cdef int32_t _ends _var__gtot_all = _namespace["_var__gtot_all"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__gtot_all = _namespace['_array_spatialneuron__gtot_all'] cdef double * _array_spatialneuron__gtot_all = _buf__array_spatialneuron__gtot_all.data cdef size_t _num_array_spatialneuron__gtot_all = len(_namespace['_array_spatialneuron__gtot_all']) cdef double _gtot_all _var__invr = _namespace["_var__invr"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invr = _namespace['_array_spatialneuron_spatialstateupdater__invr'] cdef double * _array_spatialneuron_spatialstateupdater__invr = _buf__array_spatialneuron_spatialstateupdater__invr.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invr = len(_namespace['_array_spatialneuron_spatialstateupdater__invr']) cdef double _invr _var__invr0 = _namespace["_var__invr0"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invr0 = _namespace['_array_spatialneuron_spatialstateupdater__invr0'] cdef double * _array_spatialneuron_spatialstateupdater__invr0 = _buf__array_spatialneuron_spatialstateupdater__invr0.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invr0 = len(_namespace['_array_spatialneuron_spatialstateupdater__invr0']) cdef double _invr0 _var__invrn = _namespace["_var__invrn"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invrn = _namespace['_array_spatialneuron_spatialstateupdater__invrn'] cdef double * _array_spatialneuron_spatialstateupdater__invrn = _buf__array_spatialneuron_spatialstateupdater__invrn.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invrn = len(_namespace['_array_spatialneuron_spatialstateupdater__invrn']) cdef double _invrn _var__morph_children = _namespace["_var__morph_children"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children = _namespace['_array_spatialneuron_spatialstateupdater__morph_children'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children = _buf__array_spatialneuron_spatialstateupdater__morph_children.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children']) cdef int32_t _morph_children _var__morph_children_idx = _namespace["_var__morph_children_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children_idx = _namespace['_array_spatialneuron_spatialstateupdater__morph_children_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children_idx = _buf__array_spatialneuron_spatialstateupdater__morph_children_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children_idx']) cdef int32_t _morph_children_idx _var__morph_children_num = _namespace["_var__morph_children_num"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children_num = _namespace['_array_spatialneuron_spatialstateupdater__morph_children_num'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children_num = _buf__array_spatialneuron_spatialstateupdater__morph_children_num.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children_num = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children_num']) cdef int32_t _morph_children_num _var__morph_idxchild = _namespace["_var__morph_idxchild"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_idxchild = _namespace['_array_spatialneuron_spatialstateupdater__morph_idxchild'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_idxchild = _buf__array_spatialneuron_spatialstateupdater__morph_idxchild.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_idxchild = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_idxchild']) cdef int32_t _morph_idxchild _var__morph_parent_i = _namespace["_var__morph_parent_i"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_parent_i = _namespace['_array_spatialneuron_spatialstateupdater__morph_parent_i'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_parent_i = _buf__array_spatialneuron_spatialstateupdater__morph_parent_i.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_parent_i = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_parent_i']) cdef int32_t _morph_parent_i _var__section_idx = _namespace["_var__section_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__section_idx = _namespace['_array_spatialneuron_spatialstateupdater__section_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__section_idx = _buf__array_spatialneuron_spatialstateupdater__section_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__section_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__section_idx']) cdef int32_t _section_idx _var__section_root_idx = _namespace["_var__section_root_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__section_root_idx = _namespace['_array_spatialneuron_spatialstateupdater__section_root_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__section_root_idx = _buf__array_spatialneuron_spatialstateupdater__section_root_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__section_root_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__section_root_idx']) cdef int32_t _section_root_idx _var__starts = _namespace["_var__starts"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__starts = _namespace['_array_spatialneuron_spatialstateupdater__starts'] cdef int32_t * _array_spatialneuron_spatialstateupdater__starts = _buf__array_spatialneuron_spatialstateupdater__starts.data cdef size_t _num_array_spatialneuron_spatialstateupdater__starts = len(_namespace['_array_spatialneuron_spatialstateupdater__starts']) cdef int32_t _starts _var__u_minus = _namespace["_var__u_minus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__u_minus = _namespace['_array_spatialneuron__u_minus'] cdef double * _array_spatialneuron__u_minus = _buf__array_spatialneuron__u_minus.data cdef size_t _num_array_spatialneuron__u_minus = len(_namespace['_array_spatialneuron__u_minus']) cdef double _u_minus _var__u_plus = _namespace["_var__u_plus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__u_plus = _namespace['_array_spatialneuron__u_plus'] cdef double * _array_spatialneuron__u_plus = _buf__array_spatialneuron__u_plus.data cdef size_t _num_array_spatialneuron__u_plus = len(_namespace['_array_spatialneuron__u_plus']) cdef double _u_plus _var__v_previous = _namespace["_var__v_previous"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__v_previous = _namespace['_array_spatialneuron__v_previous'] cdef double * _array_spatialneuron__v_previous = _buf__array_spatialneuron__v_previous.data cdef size_t _num_array_spatialneuron__v_previous = len(_namespace['_array_spatialneuron__v_previous']) cdef double _v_previous _var__v_star = _namespace["_var__v_star"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__v_star = _namespace['_array_spatialneuron__v_star'] cdef double * _array_spatialneuron__v_star = _buf__array_spatialneuron__v_star.data cdef size_t _num_array_spatialneuron__v_star = len(_namespace['_array_spatialneuron__v_star']) cdef double _v_star _var_area = _namespace["_var_area"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_area = _namespace['_array_spatialneuron_area'] cdef double * _array_spatialneuron_area = _buf__array_spatialneuron_area.data cdef size_t _num_array_spatialneuron_area = len(_namespace['_array_spatialneuron_area']) cdef double area _var_dt = _namespace["_var_dt"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_defaultclock_dt = _namespace['_array_defaultclock_dt'] cdef double * _array_defaultclock_dt = _buf__array_defaultclock_dt.data cdef double dt = _namespace["dt"] _var_gL = _namespace["_var_gL"] cdef double gL = _namespace["gL"] cdef double gtot__private _var_r_length_1 = _namespace["_var_r_length_1"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_r_length_1 = _namespace['_array_spatialneuron_r_length_1'] cdef double * _array_spatialneuron_r_length_1 = _buf__array_spatialneuron_r_length_1.data cdef size_t _num_array_spatialneuron_r_length_1 = len(_namespace['_array_spatialneuron_r_length_1']) cdef double r_length_1 _var_r_length_2 = _namespace["_var_r_length_2"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_r_length_2 = _namespace['_array_spatialneuron_r_length_2'] cdef double * _array_spatialneuron_r_length_2 = _buf__array_spatialneuron_r_length_2.data cdef size_t _num_array_spatialneuron_r_length_2 = len(_namespace['_array_spatialneuron_r_length_2']) cdef double r_length_2 # namespace for function stimulus global _namespace_timedarray_values global _namespace_num_timedarray_values cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__timedarray_values = _namespace['_timedarray_values'] _namespace_timedarray_values = _buf__timedarray_values.data _namespace_num_timedarray_values = len(_namespace['_timedarray_values']) _var_stimulus_index = _namespace["_var_stimulus_index"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_stimulus_index = _namespace['_array_spatialneuron_stimulus_index'] cdef int32_t * _array_spatialneuron_stimulus_index = _buf__array_spatialneuron_stimulus_index.data cdef size_t _num_array_spatialneuron_stimulus_index = len(_namespace['_array_spatialneuron_stimulus_index']) cdef int32_t stimulus_index _var_t = _namespace["_var_t"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_defaultclock_t = _namespace['_array_defaultclock_t'] cdef double * _array_defaultclock_t = _buf__array_defaultclock_t.data cdef double t _var_v = _namespace["_var_v"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_v = _namespace['_array_spatialneuron_v'] cdef double * _array_spatialneuron_v = _buf__array_spatialneuron_v.data cdef size_t _num_array_spatialneuron_v = len(_namespace['_array_spatialneuron_v']) cdef double v cdef double _I0 cdef double _gtot cdef double _lio_1 if '_owner' in _namespace: _owner = _namespace['_owner'] # EMPTY_CODE_BLOCK -- overwrite in child template before_run: #cython: language_level=3 #cython: boundscheck=False #cython: wraparound=False #cython: cdivision=False #cython: infer_types=True import numpy as _numpy cimport numpy as _numpy from libc.math cimport fabs, sin, cos, tan, sinh, cosh, tanh, exp, log, log10, expm1, log1p, sqrt, asin, acos, atan, fmod, floor, ceil, isinf cdef extern from "math.h": double M_PI # Import the two versions of std::abs from libc.stdlib cimport abs # For integers from libc.math cimport abs # For floating point values from libc.limits cimport INT_MIN, INT_MAX from libcpp cimport bool from libcpp.set cimport set from cython.operator cimport dereference as _deref, preincrement as _preinc cimport cython as _cython _numpy.import_array() cdef extern from "numpy/ndarraytypes.h": void PyArray_CLEARFLAGS(_numpy.PyArrayObject *arr, int flags) from libc.stdlib cimport free cdef extern from "numpy/npy_math.h": bint npy_isinf(double x) double NPY_INFINITY cdef extern from "stdint_compat.h": # Longness only used for type promotion # Actual compile time size used for conversion ctypedef signed int int32_t ctypedef signed long int64_t ctypedef unsigned long uint64_t # It seems we cannot used a fused type here cdef int int_(bool) cdef int int_(char) cdef int int_(short) cdef int int_(int) cdef int int_(long) cdef int int_(float) cdef int int_(double) cdef int int_(long double) def main(_namespace): _var_Cm = _namespace["_var_Cm"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Cm = _namespace['_array_spatialneuron_Cm'] cdef double * _array_spatialneuron_Cm = _buf__array_spatialneuron_Cm.data cdef size_t _num_array_spatialneuron_Cm = len(_namespace['_array_spatialneuron_Cm']) cdef double Cm _var_EL = _namespace["_var_EL"] cdef double EL = _namespace["EL"] cdef double I0__private _var_Ic = _namespace["_var_Ic"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Ic = _namespace['_array_spatialneuron_Ic'] cdef double * _array_spatialneuron_Ic = _buf__array_spatialneuron_Ic.data cdef size_t _num_array_spatialneuron_Ic = len(_namespace['_array_spatialneuron_Ic']) cdef double Ic _var_N = _namespace["_var_N"] cdef int64_t N = _namespace["N"] _var_Ri = _namespace["_var_Ri"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_Ri = _namespace['_array_spatialneuron_Ri'] cdef double * _array_spatialneuron_Ri = _buf__array_spatialneuron_Ri.data cdef double Ri = _namespace["Ri"] _var__B = _namespace["_var__B"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__B = _namespace['_array_spatialneuron_spatialstateupdater__B'] cdef double * _array_spatialneuron_spatialstateupdater__B = _buf__array_spatialneuron_spatialstateupdater__B.data cdef size_t _num_array_spatialneuron_spatialstateupdater__B = len(_namespace['_array_spatialneuron_spatialstateupdater__B']) cdef double _B _var__I0_all = _namespace["_var__I0_all"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__I0_all = _namespace['_array_spatialneuron__I0_all'] cdef double * _array_spatialneuron__I0_all = _buf__array_spatialneuron__I0_all.data cdef size_t _num_array_spatialneuron__I0_all = len(_namespace['_array_spatialneuron__I0_all']) cdef double _I0_all _var__P_children = _namespace["_var__P_children"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_children = _namespace['_array_spatialneuron_spatialstateupdater__P_children'] cdef double * _array_spatialneuron_spatialstateupdater__P_children = _buf__array_spatialneuron_spatialstateupdater__P_children.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_children = len(_namespace['_array_spatialneuron_spatialstateupdater__P_children']) cdef double _P_children _var__P_diag = _namespace["_var__P_diag"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_diag = _namespace['_array_spatialneuron_spatialstateupdater__P_diag'] cdef double * _array_spatialneuron_spatialstateupdater__P_diag = _buf__array_spatialneuron_spatialstateupdater__P_diag.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_diag = len(_namespace['_array_spatialneuron_spatialstateupdater__P_diag']) cdef double _P_diag _var__P_parent = _namespace["_var__P_parent"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__P_parent = _namespace['_array_spatialneuron_spatialstateupdater__P_parent'] cdef double * _array_spatialneuron_spatialstateupdater__P_parent = _buf__array_spatialneuron_spatialstateupdater__P_parent.data cdef size_t _num_array_spatialneuron_spatialstateupdater__P_parent = len(_namespace['_array_spatialneuron_spatialstateupdater__P_parent']) cdef double _P_parent _var__ab_star0 = _namespace["_var__ab_star0"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star0 = _namespace['_array_spatialneuron__ab_star0'] cdef double * _array_spatialneuron__ab_star0 = _buf__array_spatialneuron__ab_star0.data cdef size_t _num_array_spatialneuron__ab_star0 = len(_namespace['_array_spatialneuron__ab_star0']) cdef double _ab_star0 _var__ab_star1 = _namespace["_var__ab_star1"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star1 = _namespace['_array_spatialneuron__ab_star1'] cdef double * _array_spatialneuron__ab_star1 = _buf__array_spatialneuron__ab_star1.data cdef size_t _num_array_spatialneuron__ab_star1 = len(_namespace['_array_spatialneuron__ab_star1']) cdef double _ab_star1 _var__ab_star2 = _namespace["_var__ab_star2"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__ab_star2 = _namespace['_array_spatialneuron__ab_star2'] cdef double * _array_spatialneuron__ab_star2 = _buf__array_spatialneuron__ab_star2.data cdef size_t _num_array_spatialneuron__ab_star2 = len(_namespace['_array_spatialneuron__ab_star2']) cdef double _ab_star2 _var__b_minus = _namespace["_var__b_minus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__b_minus = _namespace['_array_spatialneuron__b_minus'] cdef double * _array_spatialneuron__b_minus = _buf__array_spatialneuron__b_minus.data cdef size_t _num_array_spatialneuron__b_minus = len(_namespace['_array_spatialneuron__b_minus']) cdef double _b_minus _var__b_plus = _namespace["_var__b_plus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__b_plus = _namespace['_array_spatialneuron__b_plus'] cdef double * _array_spatialneuron__b_plus = _buf__array_spatialneuron__b_plus.data cdef size_t _num_array_spatialneuron__b_plus = len(_namespace['_array_spatialneuron__b_plus']) cdef double _b_plus _var__c = _namespace["_var__c"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__c = _namespace['_array_spatialneuron__c'] cdef double * _array_spatialneuron__c = _buf__array_spatialneuron__c.data cdef size_t _num_array_spatialneuron__c = len(_namespace['_array_spatialneuron__c']) cdef double _c _var__compartment_idx = _namespace["_var__compartment_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__compartment_idx = _namespace['_array_spatialneuron_spatialstateupdater__compartment_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__compartment_idx = _buf__array_spatialneuron_spatialstateupdater__compartment_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__compartment_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__compartment_idx']) cdef int32_t _compartment_idx _var__ends = _namespace["_var__ends"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__ends = _namespace['_array_spatialneuron_spatialstateupdater__ends'] cdef int32_t * _array_spatialneuron_spatialstateupdater__ends = _buf__array_spatialneuron_spatialstateupdater__ends.data cdef size_t _num_array_spatialneuron_spatialstateupdater__ends = len(_namespace['_array_spatialneuron_spatialstateupdater__ends']) cdef int32_t _ends _var__gtot_all = _namespace["_var__gtot_all"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__gtot_all = _namespace['_array_spatialneuron__gtot_all'] cdef double * _array_spatialneuron__gtot_all = _buf__array_spatialneuron__gtot_all.data cdef size_t _num_array_spatialneuron__gtot_all = len(_namespace['_array_spatialneuron__gtot_all']) cdef double _gtot_all _var__invr = _namespace["_var__invr"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invr = _namespace['_array_spatialneuron_spatialstateupdater__invr'] cdef double * _array_spatialneuron_spatialstateupdater__invr = _buf__array_spatialneuron_spatialstateupdater__invr.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invr = len(_namespace['_array_spatialneuron_spatialstateupdater__invr']) cdef double _invr _var__invr0 = _namespace["_var__invr0"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invr0 = _namespace['_array_spatialneuron_spatialstateupdater__invr0'] cdef double * _array_spatialneuron_spatialstateupdater__invr0 = _buf__array_spatialneuron_spatialstateupdater__invr0.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invr0 = len(_namespace['_array_spatialneuron_spatialstateupdater__invr0']) cdef double _invr0 _var__invrn = _namespace["_var__invrn"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__invrn = _namespace['_array_spatialneuron_spatialstateupdater__invrn'] cdef double * _array_spatialneuron_spatialstateupdater__invrn = _buf__array_spatialneuron_spatialstateupdater__invrn.data cdef size_t _num_array_spatialneuron_spatialstateupdater__invrn = len(_namespace['_array_spatialneuron_spatialstateupdater__invrn']) cdef double _invrn _var__morph_children = _namespace["_var__morph_children"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children = _namespace['_array_spatialneuron_spatialstateupdater__morph_children'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children = _buf__array_spatialneuron_spatialstateupdater__morph_children.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children']) cdef int32_t _morph_children _var__morph_children_idx = _namespace["_var__morph_children_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children_idx = _namespace['_array_spatialneuron_spatialstateupdater__morph_children_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children_idx = _buf__array_spatialneuron_spatialstateupdater__morph_children_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children_idx']) cdef int32_t _morph_children_idx _var__morph_children_num = _namespace["_var__morph_children_num"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_children_num = _namespace['_array_spatialneuron_spatialstateupdater__morph_children_num'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_children_num = _buf__array_spatialneuron_spatialstateupdater__morph_children_num.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_children_num = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_children_num']) cdef int32_t _morph_children_num _var__morph_idxchild = _namespace["_var__morph_idxchild"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_idxchild = _namespace['_array_spatialneuron_spatialstateupdater__morph_idxchild'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_idxchild = _buf__array_spatialneuron_spatialstateupdater__morph_idxchild.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_idxchild = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_idxchild']) cdef int32_t _morph_idxchild _var__morph_parent_i = _namespace["_var__morph_parent_i"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__morph_parent_i = _namespace['_array_spatialneuron_spatialstateupdater__morph_parent_i'] cdef int32_t * _array_spatialneuron_spatialstateupdater__morph_parent_i = _buf__array_spatialneuron_spatialstateupdater__morph_parent_i.data cdef size_t _num_array_spatialneuron_spatialstateupdater__morph_parent_i = len(_namespace['_array_spatialneuron_spatialstateupdater__morph_parent_i']) cdef int32_t _morph_parent_i _var__section_idx = _namespace["_var__section_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__section_idx = _namespace['_array_spatialneuron_spatialstateupdater__section_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__section_idx = _buf__array_spatialneuron_spatialstateupdater__section_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__section_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__section_idx']) cdef int32_t _section_idx _var__section_root_idx = _namespace["_var__section_root_idx"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__section_root_idx = _namespace['_array_spatialneuron_spatialstateupdater__section_root_idx'] cdef int32_t * _array_spatialneuron_spatialstateupdater__section_root_idx = _buf__array_spatialneuron_spatialstateupdater__section_root_idx.data cdef size_t _num_array_spatialneuron_spatialstateupdater__section_root_idx = len(_namespace['_array_spatialneuron_spatialstateupdater__section_root_idx']) cdef int32_t _section_root_idx _var__starts = _namespace["_var__starts"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_spatialstateupdater__starts = _namespace['_array_spatialneuron_spatialstateupdater__starts'] cdef int32_t * _array_spatialneuron_spatialstateupdater__starts = _buf__array_spatialneuron_spatialstateupdater__starts.data cdef size_t _num_array_spatialneuron_spatialstateupdater__starts = len(_namespace['_array_spatialneuron_spatialstateupdater__starts']) cdef int32_t _starts _var__u_minus = _namespace["_var__u_minus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__u_minus = _namespace['_array_spatialneuron__u_minus'] cdef double * _array_spatialneuron__u_minus = _buf__array_spatialneuron__u_minus.data cdef size_t _num_array_spatialneuron__u_minus = len(_namespace['_array_spatialneuron__u_minus']) cdef double _u_minus _var__u_plus = _namespace["_var__u_plus"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__u_plus = _namespace['_array_spatialneuron__u_plus'] cdef double * _array_spatialneuron__u_plus = _buf__array_spatialneuron__u_plus.data cdef size_t _num_array_spatialneuron__u_plus = len(_namespace['_array_spatialneuron__u_plus']) cdef double _u_plus _var__v_previous = _namespace["_var__v_previous"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__v_previous = _namespace['_array_spatialneuron__v_previous'] cdef double * _array_spatialneuron__v_previous = _buf__array_spatialneuron__v_previous.data cdef size_t _num_array_spatialneuron__v_previous = len(_namespace['_array_spatialneuron__v_previous']) cdef double _v_previous _var__v_star = _namespace["_var__v_star"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron__v_star = _namespace['_array_spatialneuron__v_star'] cdef double * _array_spatialneuron__v_star = _buf__array_spatialneuron__v_star.data cdef size_t _num_array_spatialneuron__v_star = len(_namespace['_array_spatialneuron__v_star']) cdef double _v_star _var_area = _namespace["_var_area"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_area = _namespace['_array_spatialneuron_area'] cdef double * _array_spatialneuron_area = _buf__array_spatialneuron_area.data cdef size_t _num_array_spatialneuron_area = len(_namespace['_array_spatialneuron_area']) cdef double area _var_dt = _namespace["_var_dt"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_defaultclock_dt = _namespace['_array_defaultclock_dt'] cdef double * _array_defaultclock_dt = _buf__array_defaultclock_dt.data cdef double dt = _namespace["dt"] _var_gL = _namespace["_var_gL"] cdef double gL = _namespace["gL"] cdef double gtot__private _var_r_length_1 = _namespace["_var_r_length_1"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_r_length_1 = _namespace['_array_spatialneuron_r_length_1'] cdef double * _array_spatialneuron_r_length_1 = _buf__array_spatialneuron_r_length_1.data cdef size_t _num_array_spatialneuron_r_length_1 = len(_namespace['_array_spatialneuron_r_length_1']) cdef double r_length_1 _var_r_length_2 = _namespace["_var_r_length_2"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_r_length_2 = _namespace['_array_spatialneuron_r_length_2'] cdef double * _array_spatialneuron_r_length_2 = _buf__array_spatialneuron_r_length_2.data cdef size_t _num_array_spatialneuron_r_length_2 = len(_namespace['_array_spatialneuron_r_length_2']) cdef double r_length_2 # namespace for function stimulus global _namespace_timedarray_values global _namespace_num_timedarray_values cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__timedarray_values = _namespace['_timedarray_values'] _namespace_timedarray_values = _buf__timedarray_values.data _namespace_num_timedarray_values = len(_namespace['_timedarray_values']) _var_stimulus_index = _namespace["_var_stimulus_index"] cdef _numpy.ndarray[int32_t, ndim=1, mode='c'] _buf__array_spatialneuron_stimulus_index = _namespace['_array_spatialneuron_stimulus_index'] cdef int32_t * _array_spatialneuron_stimulus_index = _buf__array_spatialneuron_stimulus_index.data cdef size_t _num_array_spatialneuron_stimulus_index = len(_namespace['_array_spatialneuron_stimulus_index']) cdef int32_t stimulus_index _var_t = _namespace["_var_t"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_defaultclock_t = _namespace['_array_defaultclock_t'] cdef double * _array_defaultclock_t = _buf__array_defaultclock_t.data cdef double t _var_v = _namespace["_var_v"] cdef _numpy.ndarray[double, ndim=1, mode='c'] _buf__array_spatialneuron_v = _namespace['_array_spatialneuron_v'] cdef double * _array_spatialneuron_v = _buf__array_spatialneuron_v.data cdef size_t _num_array_spatialneuron_v = len(_namespace['_array_spatialneuron_v']) cdef double v cdef double _I0 cdef double _gtot cdef double _lio_1 if '_owner' in _namespace: _owner = _namespace['_owner'] cdef int _i cdef int _counter cdef int _first cdef int _last cdef double __invr0 cdef double __invrn cdef double _Ri = _array_spatialneuron_Ri[0] # Ri is a shared variable # Inverse axial resistance for _i in range(1, N): _array_spatialneuron_spatialstateupdater__invr[_i] =1.0/(_Ri*(1/_array_spatialneuron_r_length_2[_i-1] + 1/_array_spatialneuron_r_length_1[_i])) # Cut sections for _i in range(_num_array_spatialneuron_spatialstateupdater__starts): _array_spatialneuron_spatialstateupdater__invr[_array_spatialneuron_spatialstateupdater__starts[_i]] = 0 # Linear systems # The particular solution # a[i,j]=ab[u+i-j,j] -- u is the number of upper diagonals = 1 for _i in range(N): _array_spatialneuron__ab_star1[_i] = (-(_array_spatialneuron_Cm[_i] / _array_defaultclock_dt[0]) - _array_spatialneuron_spatialstateupdater__invr[_i] / _array_spatialneuron_area[_i]) for _i in range(1, N): _array_spatialneuron__ab_star0[_i] = _array_spatialneuron_spatialstateupdater__invr[_i] / _array_spatialneuron_area[_i-1] _array_spatialneuron__ab_star2[_i-1] = _array_spatialneuron_spatialstateupdater__invr[_i] / _array_spatialneuron_area[_i] _array_spatialneuron__ab_star1[_i-1] -= _array_spatialneuron_spatialstateupdater__invr[_i] / _array_spatialneuron_area[_i-1] # Set the boundary conditions for _counter in range(_num_array_spatialneuron_spatialstateupdater__starts): _first = _array_spatialneuron_spatialstateupdater__starts[_counter] _last = _array_spatialneuron_spatialstateupdater__ends[_counter] -1 # the compartment indices are in the interval [starts, ends[ # Inverse axial resistances at the ends: r0 and rn __invr0 = _array_spatialneuron_r_length_1[_first]/_Ri __invrn = _array_spatialneuron_r_length_2[_last]/_Ri _array_spatialneuron_spatialstateupdater__invr0[_counter] = __invr0 _array_spatialneuron_spatialstateupdater__invrn[_counter] = __invrn # Correction for boundary conditions _array_spatialneuron__ab_star1[_first] -= (__invr0 / _array_spatialneuron_area[_first]) _array_spatialneuron__ab_star1[_last] -= (__invrn / _array_spatialneuron_area[_last]) # RHS for homogeneous solutions _array_spatialneuron__b_plus[_last] = -(__invrn / _array_spatialneuron_area[_last]) _array_spatialneuron__b_minus[_first] = -(__invr0 / _array_spatialneuron_area[_first]) cython_directives: #cython: language_level=3 #cython: boundscheck=False #cython: wraparound=False #cython: cdivision=False #cython: infer_types=True 2022-07-26 14:14:01,533 DIAGNOSTIC brian2.core.names: Created object of class CythonCodeObject with name spatialneuron_spatialstateupdater_codeobject 2022-07-26 14:14:01,534 DIAGNOSTIC brian2.codegen.runtime.cython_rt.extension_manager: "spatialneuron_spatialstateupdate" using Cython module "_cython_magic_b1a047c5d1aa666812a55eee5c220f86" 2022-07-26 14:14:01,534 DIAGNOSTIC brian2.utils.filelock: Attempting to acquire lock 140432246114912 on /home/sschmitt/.cython/brian_extensions/_cython_magic_b1a047c5d1aa666812a55eee5c220f86.lock 2022-07-26 14:14:01,534 DEBUG brian2.utils.filelock: Lock 140432246114912 acquired on /home/sschmitt/.cython/brian_extensions/_cython_magic_b1a047c5d1aa666812a55eee5c220f86.lock 2022-07-26 14:14:01,914 DIAGNOSTIC brian2.utils.filelock: Attempting to release lock 140432246114912 on /home/sschmitt/.cython/brian_extensions/_cython_magic_b1a047c5d1aa666812a55eee5c220f86.lock 2022-07-26 14:14:01,915 DEBUG brian2.utils.filelock: Lock 140432246114912 released on /home/sschmitt/.cython/brian_extensions/_cython_magic_b1a047c5d1aa666812a55eee5c220f86.lock 2022-07-26 14:14:01,915 DIAGNOSTIC brian2.codegen.runtime.cython_rt.extension_manager: "spatialneuron_spatialstateupdate" using Cython module "_cython_magic_f66f6a223ebce2eba2b71200184cb10c" 2022-07-26 14:14:01,915 DIAGNOSTIC brian2.utils.filelock: Attempting to acquire lock 140432235709920 on /home/sschmitt/.cython/brian_extensions/_cython_magic_f66f6a223ebce2eba2b71200184cb10c.lock 2022-07-26 14:14:01,915 DEBUG brian2.utils.filelock: Lock 140432235709920 acquired on /home/sschmitt/.cython/brian_extensions/_cython_magic_f66f6a223ebce2eba2b71200184cb10c.lock 2022-07-26 14:14:05,880 DIAGNOSTIC brian2.utils.filelock: Attempting to release lock 140432235709920 on /home/sschmitt/.cython/brian_extensions/_cython_magic_f66f6a223ebce2eba2b71200184cb10c.lock 2022-07-26 14:14:05,880 DEBUG brian2.utils.filelock: Lock 140432235709920 released on /home/sschmitt/.cython/brian_extensions/_cython_magic_f66f6a223ebce2eba2b71200184cb10c.lock 2022-07-26 14:14:05,881 DEBUG brian2.core.network.before_run: Network 'magicnetwork' uses 1 clocks: defaultclock (dt=100. us) 2022-07-26 14:14:05,882 DEBUG brian2.core.network.run: Simulating network 'magicnetwork' from time 0. s to 1. s. 2022-07-26 14:14:05,882 DIAGNOSTIC brian2.core.base: Error was encountered with object 'spatialneuron': Object was created here: File '/home/sschmitt/HBP/review/tripod/./brian2_timescales_debug.py', line 17, in neuron = SpatialNeuron(morphology=morpho, model=eqs) 2022-07-26 14:14:05,882 ERROR brian2: Brian 2 encountered an unexpected error. If you think this is a bug in Brian 2, please report this issue either to the discourse forum at , or to the issue tracker at . Please include this file with debug information in your report: /tmp/brian_debug_e7q3sxsg.log Additionally, you can also include a copy of the script that was run, available at: /tmp/brian_script_uk0tjdrt.py You can also include a copy of the redirected std stream outputs, available at '/tmp/brian_stdout_hjas1yz6.log' and '/tmp/brian_stderr_x31rdf7r.log'. Thanks! Traceback (most recent call last): File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/codegen/runtime/cython_rt/cython_rt.py", line 157, in run_block return compiled_code.main(self.namespace) File "_cython_magic_f66f6a223ebce2eba2b71200184cb10c.pyx", line 409, in _cython_magic_f66f6a223ebce2eba2b71200184cb10c.main ZeroDivisionError: float division The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/sschmitt/HBP/review/tripod/./brian2_timescales_debug.py", line 26, in run(1000*ms) File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/units/fundamentalunits.py", line 2428, in new_f result = f(*args, **kwds) File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/core/magic.py", line 373, in run return magic_network.run(duration, report=report, report_period=report_period, File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/core/magic.py", line 230, in run Network.run(self, duration, report=report, report_period=report_period, File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/core/base.py", line 293, in device_override_decorated_function return func(*args, **kwds) File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/units/fundamentalunits.py", line 2428, in new_f result = f(*args, **kwds) File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/core/network.py", line 1071, in run obj.run() File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/core/base.py", line 198, in run codeobj() File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/codegen/codeobject.py", line 106, in __call__ return self.run() File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/codegen/codeobject.py", line 134, in run return self.run_block('run') File "/home/sschmitt/virtualenvs/brian2/venv/lib/python3.10/site-packages/brian2/codegen/runtime/cython_rt/cython_rt.py", line 161, in run_block raise BrianObjectException(message, self.owner) from exc brian2.core.base.BrianObjectException: Error encountered with object named 'spatialneuron'. Object was created here (most recent call only, full details in debug log): File '/home/sschmitt/HBP/review/tripod/./brian2_timescales_debug.py', line 17, in neuron = SpatialNeuron(morphology=morpho, model=eqs) An exception occured during the execution of the 'run' block of code object 'spatialneuron_spatialstateupdater_codeobject'. (See above for original error message and traceback.)