Changeset 424 for branches

Show
Ignore:
Timestamp:
08/25/09 01:53:50 (3 years ago)
Author:
lestebanez
Message:

spikes.py : down to 6 failures and 25 errors

Location:
branches/interval
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/interval/src/signals/spikes.py

    r423 r424  
    9494        """ 
    9595        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) : 
    9797            raise ValueError("spikes time stamps should be *positive* *numbers*") 
    9898 
     
    100100        if not (self.interval.t_start() >= 0) and (self.interval.t_stop() >= 0) : 
    101101            raise ValueError("t_start and t_stop should be greater than 0") 
     102        self.update_t_start_and_t_stop() 
    102103 
    103104        self.spike_times = self.interval.slice_times(numpy.array(self.spike_times, numpy.float32)) 
     
    170171        """ 
    171172        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() 
    172180     
    173181    def is_equal(self, spktrain): 
     
    220228                                        spiketrain.spike_times) 
    221229        self.interval = self.interval.union(spiketrain.interval) 
     230        self.update_t_start_and_t_stop() 
    222231 
    223232    def format(self, relative=False, quantized=False): 
     
    294303                34.2 
    295304        """ 
    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 
    300312 
    301313        return 1000.*len(idx)/rate_interval.total_duration() 
     
    320332             
    321333        """ 
    322         isi = self.isi(t_start, t_stop, interval) 
     334        isi = self.isi() 
    323335        if len(isi) > 0: 
    324336            return numpy.std(isi)/numpy.mean(isi) 
     
    350362             
    351363        """ 
    352         isi = self.isi(t_start, t_stop, interval) / 1000. 
     364        isi = self.isi() / 1000. 
    353365        if len(isi) < 2: 
    354366            logging.debug("Warning, a CV can't be computed because there are not enough spikes") 
     
    380392            isi, cv_isi 
    381393        """ 
    382         isi = self.isi(t_start, t_stop, interval) 
     394        isi = self.isi() 
    383395        if len(isi) > 0: 
    384396            fano = numpy.var(isi)/numpy.mean(isi) 
     
    463475        self.interval.offset_full(offset) 
    464476        self.spike_times += offset 
     477        self.update_t_start_and_t_stop() 
     478 
    465479 
    466480    def time_slice(self, t_start, t_stop): 
     
    481495        """ 
    482496        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 
    484500 
    485501    def interval_slice(self, interval): 
     
    836852            for id in self.spiketrains.keys(): 
    837853                self.spiketrains[id].interval = self.interval 
    838  
     854        self.update_t_start_and_t_stop() 
    839855         
    840856    def id_list(self): 
     
    870886            if t_start == None and t_stop == None : 
    871887                try: 
    872                     start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float32) 
     888                    start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float64) 
    873889                    t_start = numpy.min(start_times) 
    874890                    logging.debug("Warning, t_start is infered from the data : %f" %t_start) 
     
    877893                    t_start = 0 
    878894                try: 
    879                     stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float32) 
     895                    stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float64) 
    880896                    t_stop  = numpy.max(stop_times) 
    881897                    logging.debug("Warning, t_stop  is infered from the data : %f" %t_stop)      
     
    887903                if t_start == None : 
    888904                    try: 
    889                         start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float32) 
     905                        start_times = numpy.array([self.spiketrains[idx].interval.t_start() for idx in self.id_list()], numpy.float64) 
    890906                        t_start = numpy.min(start_times) 
    891907                        logging.debug("Warning, t_start is infered from the data : %f" %t_start) 
     
    897913                    if t_start.__class__.__name__ == 'float' or t_start.__class__.__name__ == 'int' : 
    898914                        try: 
    899                             stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float32) 
     915                            stop_times = numpy.array([self.spiketrains[idx].interval.t_stop() for idx in self.id_list()], numpy.float64) 
    900916                            t_stop  = numpy.max(stop_times) 
    901917                            logging.debug("Warning, t_stop  is infered from the data : %f" %t_stop)      
     
    10091025        return (self.interval.t_start(), self.interval.t_stop()) 
    10101026 
     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 
    10111034    def time_axis(self, time_bin): 
    10121035        """ 
     
    10471070            for id in sl.id_list(): 
    10481071                self.append(id, sl.spiketrains[id]) 
     1072        self.update_t_start_and_t_stop() 
     1073 
    10491074 
    10501075    def merge(self, spikelist, relative=False): 
     
    10721097                    spiketrain.relative_times() 
    10731098                self.append(id, spiketrain) 
     1099        self.update_t_start_and_t_stop() 
    10741100                 
    10751101     
     
    11361162        """ 
    11371163        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 
    11391167         
    11401168         
     
    11731201        for id in self.id_list(): 
    11741202            self.spiketrains[id].time_offset(offset) 
    1175      
     1203        self.update_t_start_and_t_stop() 
     1204 
    11761205    def id_offset(self, offset): 
    11771206        """ 
  • branches/interval/test/test_spikes.py

    r409 r424  
    129129        assert   30 < spk1.mean_rate() < 50 
    130130        self.assertEqual(spk2.mean_rate(), 1000.0) 
    131         self.assertAlmostEqual(spk2.mean_rate(t_stop=4.99999999999), 1000.0, 6) 
     131        self.assertAlmostEqual(spk2.mean_rate(t_stop=4.999999)/1000., 1.0, 6) 
    132132        self.assertEqual(spk2.mean_rate(t_stop=5.0), 1200.0) 
    133133