Changeset 191
- Timestamp:
- 08/21/08 12:36:09 (5 months ago)
- Files:
-
- trunk/src/stgen.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/stgen.py
r106 r191 6 6 try: 7 7 import pygsl 8 have_gsl = True 8 9 except ImportError: 9 10 print "Warning: pygsl not available" 10 #from analysis import nstats 11 from numpy import array 11 have_gsl = False 12 from numpy import array, log 12 13 import numpy 13 14 … … 16 17 17 18 def calc_h_single(x,a,b,dt=1e-4): 18 19 import pygsl20 19 from pygsl.sf import gamma_inc_Q 21 22 from Numeric import array,log 23 24 25 Hpre = -log(gamma_inc_Q(a,(x-dt)/b)[0])[0] 26 20 Hpre = -log(pygsl.sf.gamma_inc_Q(a,(x-dt)/b)[0])[0] 27 21 Hpost = -log(gamma_inc_Q(a,(x+dt)/b)[0])[0] 28 29 22 return 0.5*(Hpost-Hpre)/dt 30 23 31 24 def calc_h(x,a,b,dt=1e-4): 32 33 25 Hpre = -log(array(map(gamma_inc_Q,a,(x-dt)/b))) 34 26 Hpost = -log(array(map(gamma_inc_Q,a,(x-dt)/b))) 35 36 27 return 0.5*(Hpost-Hpre)/dt 37 28 … … 39 30 class StGen: 40 31 41 def __init__(self, gslrng=None,numpyrng=None):32 def __init__(self, gslrng=None, numpyrng=None): 42 33 """ Spike Train Generator 43 34 … … 45 36 Similarly for numpyrng. 46 37 If neither is specified, a gsl rng is created. 47 If both are specified, the gslrng is used.""" 48 49 if not gslrng: 50 if not numpyrng: 38 If both are specified, the gslrng is used. 39 40 Of course, if pygsl is not available, you can't 41 have a gsl rng and will get a numpy rng. 42 """ 43 44 if have_gsl: 45 if gslrng: 46 self.rng = gslrng 47 elif numpyrng: 48 self.rng = numpyrng 49 else: 51 50 from pygsl.rng import rng 52 51 self.rng = rng() 53 else:54 self.rng = numpyrng55 52 else: 56 self.rng = gslrng53 self.rng = numpy.random.RandomState() 57 54 58 55 def seed(self,seed): … … 94 91 if len(ps) > 0: 95 92 # gen uniform rand on 0,1 for each spike 96 rn = array(self.rng.uniform( len(ps)))93 rn = array(self.rng.uniform(0, 1, len(ps))) 97 94 98 95 # instantaneous rate for each spike

