Changeset 428

Show
Ignore:
Timestamp:
08/25/09 15:10:34 (3 years ago)
Author:
pierre
Message:

Try to optimize the Interval methods. Now, package is almost fully operationnal for SpikeList and SpikeTrains?, should perform similar implementations for AnalogSignal? and I guess that the interval stuffs could be merged into the trunk

Files:
1 modified

Legend:

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

    r427 r428  
    108108 
    109109 
    110     def create_intervals(self, t_start=None, t_stop=None, interval=None) : 
    111         if interval is not None: 
     110    def create_intervals(self, t_start=None, t_stop=None, interval=None): 
     111        if hasattr(self, 'interval') and t_start is None and t_stop is None and interval is None: 
     112            interval_out = self.interval.copy() 
     113        elif interval is not None: 
    112114            # interval is fully defined by the user 
    113115            if type(interval) == Interval: 
     
    301303                34.2 
    302304        """ 
    303          
    304         interval = self.create_intervals(t_start, t_stop, interval) 
    305          
     305        interval     = self.create_intervals(t_start, t_stop, interval) 
    306306        if interval.is_equal(self.interval): 
    307307            idx      = self.spike_times 
     
    309309            interval = interval.intersect(self.interval) 
    310310            idx      = interval.slice_times(self.spike_times) 
     311         
    311312        return 1000.*len(idx)/interval.total_duration() 
    312313 
     
    873874        return spklist 
    874875 
    875     def create_intervals(self, t_start, t_stop, interval) :  
    876         if interval is not None: 
     876    def create_intervals(self, t_start=None, t_stop=None, interval=None): 
     877        if hasattr(self, 'interval') and t_start is None and t_stop is None and interval is None: 
     878            interval_out = self.interval.copy() 
     879        elif interval is not None: 
    877880            # interval is fully defined by the user 
    878881            if type(interval) == Interval: 
     
    10411044        """ 
    10421045        if newnum: 
    1043             axis = numpy.arange(self.interval.t_start(), self.interval.t_stop() + time_bin, time_bin) 
    1044         else: 
    1045             axis = numpy.arange(self.interval.t_start(), self.interval.t_stop(), time_bin) 
     1046            axis = numpy.arange(self.t_start, self.t_stop + time_bin, time_bin) 
     1047        else: 
     1048            axis = numpy.arange(self.t_start, self.t_stop, time_bin) 
    10461049        return axis 
    10471050 
     
    15821585            mean_rate, mean_rate_std 
    15831586        """ 
    1584         interval = self.create_intervals(t_start, t_stop, interval) 
    1585         rates    = [] 
    1586         for id in self.id_list(): 
    1587             rates.append(self.spiketrains[id].mean_rate(interval)) 
     1587        interval = self.create_intervals(t_start, t_stop, interval) 
     1588        if interval.is_equal(self.interval): 
     1589            rates    = [self.spiketrains[idx].mean_rate() for idx in self.id_list()] 
     1590        else: 
     1591            interval = interval.intersect(self.interval) 
     1592            rates    = [self.spiketrains[idx].mean_rate(interval=interval) for idx in self.id_list()] 
    15881593        return rates 
    15891594