- Timestamp:
- 06/16/09 16:45:16 (3 years ago)
- Location:
- trunk/src
- Files:
-
- 3 modified
-
io.py (modified) (1 diff)
-
signals/intervals.py (modified) (4 diffs)
-
signals/spikes.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/io.py
r400 r401 160 160 try: 161 161 import TableIO 162 data = TableIO.readTableAsArray(self.filename, skipchar)162 data = numpy.fliplr(TableIO.readTableAsArray(self.filename, skipchar)) 163 163 except ImportError: 164 164 myfile = open(self.filename, "r", DEFAULT_BUFFER_SIZE) -
trunk/src/signals/intervals.py
r393 r401 1 1 from NeuroTools import check_dependency 2 2 3 if check_dependency('interval'): 3 HAVE_INTERVAL = check_dependency('interval') 4 5 if HAVE_INTERVAL: 4 6 from interval import * 5 7 … … 25 27 26 28 """ 27 self.start_times = start_times 28 self.end_times = end_times 29 # write the intervals to an interval object (pyinterval) 30 if len(start_times) != len(end_times) : 31 raise Exception("There sould be an equal number of starts and stops") 32 self.interval_data = interval(*numpy.transpose(numpy.array([start_times,end_times]))) 33 29 if HAVE_INTERVAL: 30 self.start_times = start_times 31 self.end_times = end_times 32 # write the intervals to an interval object (pyinterval) 33 test = isinstance(start_times, int) or isinstance(start_times, float) 34 if test: 35 start_times = [start_times] 36 test = isinstance(end_times, int) or isinstance(end_times, float) 37 if test: 38 end_times = [end_times] 39 if len(start_times) != len(end_times) : 40 raise Exception("There sould be an equal number of starts and stops") 41 self.interval_data = interval(*numpy.transpose(numpy.array([start_times,end_times]))) 42 else: 43 test = isinstance(start_times, int) or isinstance(start_times, float) 44 assert test, "Interval package not present, start_times should be a number !" 45 test = isinstance(end_times, int) or isinstance(end_times, float) 46 assert test, "Interval package not present, end_times should be a number !" 47 self.start_times = start_times 48 self.end_times = end_times 49 34 50 def intersect(self, itv) : 35 51 self.interval_data = self.interval_data & itv.interval_data … … 56 72 bounds = self.interval_data.extrema 57 73 return (bounds[0][0],bounds[-1][0]) 74 75 def t_start(self): 76 if HAVE_INTERVAL: 77 return self.interval_data.extrema[0][0] 78 else: 79 return self.start_times[0] 80 81 def t_stop(self): 82 if HAVE_INTERVAL: 83 return self.interval_data.extrema[-1][0] 84 else: 85 return self.end_times[0] 58 86 59 87 def copy(self): … … 106 134 return tot_duration 107 135 136 137 def slice_times(self, times): 138 spikes_selector = numpy.zeros(len(times), dtype=numpy.bool) 139 if HAVE_INTERVAL: 140 for itv in self.interval_data : 141 spikes_selector = spikes_selector + (times > itv[0])*(times <= itv[1]) 142 else: 143 spikes_selector = (times >= self.t_start()) & (times <= self.t_stop()) 144 return numpy.extract(spikes_selector, times) 145 146 147 108 148 #def build_psth(spiketrain, eventtrain, before_Dt, after_Dt, intervals=None): 109 149 #""" -
trunk/src/signals/spikes.py
r397 r401 401 401 return axis 402 402 403 def raster_plot(self, t_start=None, t_stop=None, display=True, kwargs={}):403 def raster_plot(self, t_start=None, t_stop=None, interval=None, display=True, kwargs={}): 404 404 """ 405 405 Generate a raster plot with the SpikeTrain in a subwindow of interest, … … 422 422 if t_start is None: t_start = self.t_start 423 423 if t_stop is None: t_stop = self.t_stop 424 spikes = numpy.extract((self.spike_times >= t_start) & (self.spike_times <= t_stop), self.spike_times) 424 425 if interval is None: 426 interval = Interval(t_start, t_stop) 427 428 spikes = interval.slice_times(self.spike_times) 425 429 subplot = get_display(display) 426 430 if not subplot or not HAVE_PYLAB: … … 488 492 100 489 493 """ 490 spikes_selector = numpy.zeros(len(self.spike_times), dtype=numpy.bool)494 times = interval.slice_times(self.spike_times) 491 495 t_start, t_stop = interval.time_parameters() 492 for itv in interval.interval_data : 493 spikes_selector = spikes_selector + (self.spike_times > itv[0])*(self.spike_times <= itv[1]) 494 return SpikeTrain(numpy.extract(spikes_selector, self.spike_times), t_start, t_stop) 496 return SpikeTrain(times, t_start, t_stop) 497 495 498 496 499 def time_histogram(self, time_bin=10, normalized=True): … … 2007 2010 t_min_l = numpy.floor(t_min/time_bin) 2008 2011 t_max_l = numpy.floor(t_max/time_bin) 2012 t_start = numpy.floor(self.t_start/time_bin) 2013 t_stop = numpy.floor(self.t_stop/time_bin) 2009 2014 for ev in events: 2010 ev = int((ev- self.t_start)/time_bin)2011 if ( ev > self.t_start + t_min_l) and ev < self.t_stop-t_max_l:2015 ev = int((ev-t_start)/time_bin) 2016 if ((ev -t_min_l )> t_start) and (ev +t_max_l ) < t_stop: 2012 2017 count += 1 2013 2018 result += spk_hist[:,(ev-t_min_l):ev+t_max_l]
