- Timestamp:
- 08/25/09 01:53:50 (3 years ago)
- Location:
- branches/interval
- Files:
-
- 2 modified
-
src/signals/spikes.py (modified) (20 diffs)
-
test/test_spikes.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/interval/src/signals/spikes.py
r423 r424 94 94 """ 95 95 self.spike_times = spike_times 96 if not (min(self.spike_times) >= 0) :96 if len(self.spike_times) and not (min(self.spike_times) >= 0) : 97 97 raise ValueError("spikes time stamps should be *positive* *numbers*") 98 98 … … 100 100 if not (self.interval.t_start() >= 0) and (self.interval.t_stop() >= 0) : 101 101 raise ValueError("t_start and t_stop should be greater than 0") 102 self.update_t_start_and_t_stop() 102 103 103 104 self.spike_times = self.interval.slice_times(numpy.array(self.spike_times, numpy.float32)) … … 170 171 """ 171 172 return (self.interval.t_start(), self.interval.t_stop()) 173 174 def update_t_start_and_t_stop(self): 175 """ 176 Update the t_start and t_stop constant to reflect the current t_start() and t_stop() methods 177 """ 178 self.t_start = self.interval.t_start() 179 self.t_stop = self.interval.t_stop() 172 180 173 181 def is_equal(self, spktrain): … … 220 228 spiketrain.spike_times) 221 229 self.interval = self.interval.union(spiketrain.interval) 230 self.update_t_start_and_t_stop() 222 231 223 232 def format(self, relative=False, quantized=False): … … 294 303 34.2 295 304 """ 296 rate_interval = extract_intervals_from_SpikeTrain_arguments(t_start, t_stop, interval) 297 298 rate_interval = rate_interval.intersect(self.interval) 299 idx = rate_interval.slice_times(self.spike_times) 305 if not (t_start==None and t_stop==None and interval==None) : 306 rate_interval = self.extract_intervals_from_SpikeTrain_arguments(t_start, t_stop, interval) 307 rate_interval = rate_interval.intersect(self.interval) 308 idx = rate_interval.slice_times(self.spike_times) 309 else : 310 idx = self.spike_times 311 rate_interval = self.interval 300 312 301 313 return 1000.*len(idx)/rate_interval.total_duration() … … 320 332 321 333 """ 322 isi = self.isi( t_start, t_stop, interval)334 isi = self.isi() 323 335 if len(isi) > 0: 324 336 return numpy.std(isi)/numpy.mean(isi) … … 350 362 351 363 """ 352 isi = self.isi( t_start, t_stop, interval) / 1000.364 isi = self.isi() / 1000. 353 365 if len(isi) < 2: 354 366 logging.debug("Warning, a CV can't be computed because there are not enough spikes") … … 380 392 isi, cv_isi 381 393 """ 382 isi = self.isi( t_start, t_stop, interval)394 isi = self.isi() 383 395 if len(isi) > 0: 384 396 fano = numpy.var(isi)/numpy.mean(isi) … … 463 475 self.interval.offset_full(offset) 464 476 self.spike_times += offset 477 self.update_t_start_and_t_stop() 478 465 479 466 480 def time_slice(self, t_start, t_stop): … … 481 495 """ 482 496 interval = Interval((t_start, t_stop)) 483 return SpikeTrain.interval_slice(interval) 497 sliced = self.interval_slice(interval) 498 sliced.update_t_start_and_t_stop() 499 return sliced 484 500 485 501 def interval_slice(self, interval): … … 836 852 for id in self.spiketrains.keys(): 837 853 self.spiketrains[id].interval = self.interval 838 854 self.update_t_start_and_t_stop() 839 855 840 856 def id_list(self): … … 870 886 if t_start == None and t_stop == None : 871 887 try: 872 start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float 32)888 start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float64) 873 889 t_start = numpy.min(start_times) 874 890 logging.debug("Warning, t_start is infered from the data : %f" %t_start) … … 877 893 t_start = 0 878 894 try: 879 stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float 32)895 stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float64) 880 896 t_stop = numpy.max(stop_times) 881 897 logging.debug("Warning, t_stop is infered from the data : %f" %t_stop) … … 887 903 if t_start == None : 888 904 try: 889 start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float 32)905 start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float64) 890 906 t_start = numpy.min(start_times) 891 907 logging.debug("Warning, t_start is infered from the data : %f" %t_start) … … 897 913 if t_start.__class__.__name__ == 'float' or t_start.__class__.__name__ == 'int' : 898 914 try: 899 stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float 32)915 stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float64) 900 916 t_stop = numpy.max(stop_times) 901 917 logging.debug("Warning, t_stop is infered from the data : %f" %t_stop) … … 1009 1025 return (self.interval.t_start(), self.interval.t_stop()) 1010 1026 1027 def update_t_start_and_t_stop(self): 1028 """ 1029 Update the t_start and t_stop constant to reflect the current t_start() and t_stop() methods 1030 """ 1031 self.t_start = self.interval.t_start() 1032 self.t_stop = self.interval.t_stop() 1033 1011 1034 def time_axis(self, time_bin): 1012 1035 """ … … 1047 1070 for id in sl.id_list(): 1048 1071 self.append(id, sl.spiketrains[id]) 1072 self.update_t_start_and_t_stop() 1073 1049 1074 1050 1075 def merge(self, spikelist, relative=False): … … 1072 1097 spiketrain.relative_times() 1073 1098 self.append(id, spiketrain) 1099 self.update_t_start_and_t_stop() 1074 1100 1075 1101 … … 1136 1162 """ 1137 1163 interval = Interval((t_start, t_stop)) 1138 return self.interval_slice(interval) 1164 sliced = self.interval_slice(interval) 1165 sliced.update_t_start_and_t_stop() 1166 return sliced 1139 1167 1140 1168 … … 1173 1201 for id in self.id_list(): 1174 1202 self.spiketrains[id].time_offset(offset) 1175 1203 self.update_t_start_and_t_stop() 1204 1176 1205 def id_offset(self, offset): 1177 1206 """ -
branches/interval/test/test_spikes.py
r409 r424 129 129 assert 30 < spk1.mean_rate() < 50 130 130 self.assertEqual(spk2.mean_rate(), 1000.0) 131 self.assertAlmostEqual(spk2.mean_rate(t_stop=4.999999 99999), 1000.0, 6)131 self.assertAlmostEqual(spk2.mean_rate(t_stop=4.999999)/1000., 1.0, 6) 132 132 self.assertEqual(spk2.mean_rate(t_stop=5.0), 1200.0) 133 133
