99
1010import numpy as np
1111import brian2
12+ from functools import reduce
1213from pyNN .parameters import Sequence , simplify
1314from pyNN .core import is_listlike
1415from pyNN import errors
@@ -156,13 +157,10 @@ def tau_refrac(self):
156157
157158 @tau_refrac .setter
158159 def tau_refrac (self , tau_refrac_value ):
159- #self._refracvalue = tau_refrac_value * ms
160- #brian2.NeuronGroup.__setattr__(self, 'tau_refrac', tau_refrac_value)
161160 self ._refractory = tau_refrac_value
162161
163162 @v_reset .setter
164163 def v_reset (self , resetvalue ):
165- #self._resetvalue = resetvalue * mV
166164 self .event_codes ['spike' ] = 'v = {}*mV' .format (resetvalue / mV )
167165
168166
@@ -189,17 +187,6 @@ def __init__(self, n, equations, **parameters):
189187 reset = 'v = {}*mV; g_r+= {}*nS; g_s+={}*nS' .format (
190188 self ._resetvalue / mV , self ._q_rvalue / nS , self ._q_svalue / nS )
191189 refractory = self ._refracvalue
192- '''
193- threshold = brian2.SimpleFunThreshold(self.check_threshold)
194- period = simplify(parameters['tau_refrac'])
195- assert not hasattr(period, "__len__"), "Brian2 does not support heterogenerous refractory periods with CustomRefractoriness"
196- reset = brian2.SimpleCustomRefractoriness(
197- AdaptiveReset2(parameters.pop('v_reset'),
198- parameters.pop('q_r'),
199- parameters.pop('q_s')),
200- period=period * second)
201- refractory = None
202- '''
203190 BaseNeuronGroup .__init__ (self , n , equations ,
204191 threshold , reset = reset , refractory = refractory ,
205192 method = "rk2" , ** parameters )
@@ -222,24 +209,12 @@ def tau_refrac(self):
222209
223210 @tau_refrac .setter
224211 def tau_refrac (self , tau_refrac_value ):
225- #self._refracvalue = tau_refrac_value * ms
226- #brian2.NeuronGroup.__setattr__(self, 'tau_refrac', tau_refrac_value)
227212 self ._refractory = tau_refrac_value
228213
229214 @v_reset .setter
230215 def v_reset (self , resetvalue ):
231- #self._resetvalue = resetvalue * mV
232216 self .event_codes ['spike' ] = 'v = {}*mV' .format (resetvalue / mV )
233217
234- '''
235- tau_refrac = _new_property('', '_refractory_array', ms)
236- v_reset = _new_property('_resetfun.resetfun', 'v_reset', mV)
237- q_r = _new_property('_resetfun.resetfun', 'q_r', nA)
238- q_s = _new_property('_resetfun.resetfun', 'q_s', nA)
239-
240- def check_threshold(self, v):
241- return v >= self.v_thresh
242- '''
243218
244219# The below can be replaced by
245220# reset = '''v = v_reset
@@ -260,28 +235,14 @@ def __call__(self, P, spikes):
260235class IzhikevichNeuronGroup (BaseNeuronGroup ):
261236
262237 def __init__ (self , n , equations , ** parameters ):
263- #threshold = brian2.SimpleFunThreshold(self.check_threshold)
264- #threshold = 'v >= {}*mV'.format(parameters["v_thresh"][0]*1000)
265238 threshold = 'v >= 30*mV'
266239 self ._resetvalue = parameters .pop ('v_reset' )[0 ]
267240 self ._dvalue = parameters .pop ('d' )[0 ]
268241 reset = 'v = {}*mV; u+={}*mV/ms' .format (self ._resetvalue / mV , self ._dvalue / (mV / ms ))
269- '''
270- reset = brian2.SimpleCustomRefractoriness(
271- IzhikevichReset(parameters['v_reset'],
272- parameters['d']),
273- period=0 * ms)
274- '''
275242 refractory = 0 * ms
276243 BaseNeuronGroup .__init__ (self , n , equations ,
277244 threshold = threshold , reset = reset , refractory = refractory ,
278245 ** parameters )
279- #self._variable_refractory_time = True
280- #self._refractory_variable = None
281- #self._S0 = self._S[:, 0]
282-
283- #v_reset = _new_property('_resetfun.resetfun', 'Vr', mV)
284- #b = _new_property('_resetfun.resetfun', 'b', nA)
285246
286247 @property
287248 def v_reset (self ):
@@ -293,7 +254,6 @@ def d(self):
293254
294255 @v_reset .setter
295256 def v_reset (self , resetvalue ):
296- #self._resetvalue = resetvalue * mV
297257 self .event_codes ['spike' ] = 'v = {}*mV' .format (resetvalue / mV )
298258
299259
@@ -339,7 +299,7 @@ def __init__(self, n, equations, spike_time_sequences=None):
339299 def _convert_sequences_to_arrays (self , spike_time_sequences ):
340300 times = np .concatenate ([seq .value for seq in spike_time_sequences ])
341301 indices = np .concatenate ([i * np .ones (seq .value .size )
342- for i , seq in enumerate (spike_time_sequences )])
302+ for i , seq in enumerate (spike_time_sequences )])
343303 return indices , times * second
344304 # todo: try to push the multiplication by seconds back into the translation step.
345305 # note that the scaling from ms to seconds does take place during translation
0 commit comments