Changeset 436 for trunk/src/visualization/__init__.py
- Timestamp:
- 09/25/09 14:02:04 (3 years ago)
- Files:
-
- 1 modified
-
trunk/src/visualization/__init__.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/visualization/__init__.py
r416 r436 103 103 return self.t, numpy.sin(self.t + self.phase) 104 104 105 def xy2ij(coordinates ):105 def xy2ij(coordinates, height): 106 106 """ 107 107 Generally, we use (x,y) coordinates, but since arrays use matrix coordinates, … … 109 109 """ 110 110 assert len(coordinates) == 2 111 return (coordinates[1], coordinates[0]) 111 x,y = coordinates 112 j = x 113 i = height - 1 - y 114 return (i,j) 112 115 113 116 class ActivityMap(object): … … 122 125 raise Exception("Dimensions of the population are not defined ! Set spikelist.dims") 123 126 124 self.time, self. pos = self.spikelist.convert("times, ids")127 self.time, self.ids = self.spikelist.convert("times, ids") 125 128 # We sort the spikes to allow faster process later 126 129 sort_idx = self.time.ravel().argsort(kind="quicksort") 127 130 self.time = self.time[sort_idx] 128 self. pos = self.pos[sort_idx]129 self.i dx= 0130 self.max_i dx= len(self.time)-1131 self.ids = self.ids[sort_idx] 132 self.i = 0 133 self.max_i = len(self.time)-1 131 134 self.t_start = 0 132 135 133 136 def next_frame(self): 134 137 spk = self.spikelist 135 activity_map = numpy.zeros(xy2ij(spk.dimensions)) 136 137 while ((self.idx < self.max_idx) and (self.time[self.idx] < self.t_start + self.frame_duration)): 138 addr = spk.id2position(self.pos[self.idx]) 139 activity_map[xy2ij(addr)] += 1 140 self.idx += 1 138 activity_map = numpy.zeros(spk.dimensions) 139 h,w = spk.dimensions 140 id_offset = min(spk.id_list()) 141 while (self.i < self.max_i) and (self.time[self.i] < self.t_start + self.frame_duration): 142 xy = spk.id2position(self.ids[self.i] - id_offset) 143 activity_map[xy2ij(xy, h)] += 1 144 self.i += 1 141 145 self.t_start += self.frame_duration 142 #logging.debug("next_frame: i dx=%d, t_start=%g, max_idx=%d, time[idx]=%g" % (self.idx, self.t_start, self.max_idx, self.time[self.idx]))146 #logging.debug("next_frame: i=%d, t_start=%g, max_i=%d, time[i]=%g" % (self.i, self.t_start, self.max_i, self.time[self.i])) 143 147 activity_map *= 1000.0/self.frame_duration # convert to spikes/second 144 148 return [activity_map]
