Changeset 188

Show
Ignore:
Timestamp:
08/05/08 15:38:51 (4 months ago)
Author:
apdavison
Message:

* Added some __str__() methods
* time_bin can now be a list of bin edges instead of a numerical value.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/analysis.py

    r187 r188  
    118118        """ 
    119119        self._tuning_curves = {} 
     120        self._counts = {} 
    120121        if D is not None: 
    121122            for k,v in D.items(): 
    122123                self._tuning_curves[k] = [v] 
     124                self._counts[k] = 1 
    123125                self.n = 1 
    124126        else: 
     
    128130        for k,v  in D.items(): 
    129131            self._tuning_curves[k].append(v) 
     132            self._counts[k] += 1 
    130133        self.n += 1 
    131134 
     
    135138            D[k] = v[i] 
    136139        return D 
     140     
     141    def __repr__(self): 
     142        return "TuningCurve: %s" % self._tuning_curves 
    137143 
    138144    def stats(self): 
  • trunk/src/parameters.py

    r187 r188  
    101101        else: 
    102102            self._values = value 
     103     
     104    def __str__(self): 
     105        return self._values.__str__() 
    103106     
    104107    def __repr__(self): 
  • trunk/src/signals.py

    r186 r188  
    253253        firing rates in spikes/second, otherwise it's the number of spikes per bin. 
    254254        """ 
    255         nbins = self.time_axis(time_bin) 
    256         (hist, lower_edges ) = numpy.histogram(self.spike_times, nbins) 
    257         if normalized: 
     255        if hasattr(time_bin, '__len__'): 
     256            bins = time_bin 
     257        else: 
     258            bins = self.time_axis(time_bin) 
     259         
     260        (hist, lower_edges ) = numpy.histogram(self.spike_times, bins) 
     261        if normalized and isinstance(time_bin, int): # what about normalization if time_bin is a sequence? 
    258262            hist *= 1000.0/time_bin 
    259263        return hist 
     
    311315        if method == 'mean': 
    312316            for k in tuning_curve.keys(): 
    313                 tuning_curve[k] = tuning_curve[k]/counts[k] 
     317                tuning_curve[k] = tuning_curve[k]/float(counts[k]) 
    314318        return tuning_curve 
    315319 
     
    460464            self.spiketrains[id] = spiketrain 
    461465            self.id_list.append(id) 
    462         self.__calc_startstop() 
     466        self.t_start = min(self.t_start, spiketrain.t_start) or spiketrain.t_start # in case self.t_start is None 
     467        self.t_stop = max(self.t_stop, spiketrain.t_stop) 
    463468 
    464469    def get_time_parameters(self): 
     
    649654        mean firing rate of the all population along time 
    650655        """ 
    651         nbins = numpy.ceil((self.t_stop-self.t_start)/time_bin) 
    652         spike_hist = numpy.zeros((self.N(),nbins), float) 
     656        if hasattr(time_bin, '__len__'): 
     657            nbins = len(time_bin) 
     658        else: 
     659            nbins = numpy.ceil((self.t_stop-self.t_start)/float(time_bin)) 
     660        spike_hist = numpy.zeros((self.N(), nbins), float) 
    653661        logging.debug("nbins = %d" % nbins) 
    654662        for idx,id in enumerate(self.id_list): 
    655             spike_hist[idx,:] = self.spiketrains[id].time_histogram(time_bin,normalized) 
     663            try: 
     664                spike_hist[idx,:] = self.spiketrains[id].time_histogram(time_bin,normalized) 
     665            except ValueError: 
     666                print spike_hist[idx,:].shape, self.spiketrains[id].time_histogram(time_bin,normalized).shape 
     667                print nbins, self.t_start, self.t_stop 
     668                print self.spiketrains[id].t_start, self.spiketrains[id].t_stop 
     669                raise 
    656670        if display: 
    657671            pylab.figure()