Changeset 476

Show
Ignore:
Timestamp:
01/17/11 15:20:04 (16 months ago)
Author:
pierre
Message:

Error in io.py if a label was also saved in the header, and change the id_list() method into a dynamic attribute, with @property

Location:
trunk/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/io.py

    r452 r476  
    116116        """ 
    117117        cmd = '' 
    118         tmp = None 
     118        variable = None 
     119        label    = None 
    119120        f   = open(self.filename, 'r') 
    120121        for line in f.readlines(): 
    121122            if line[0] == '#': 
    122                 if line[1:].strip().find('variable') == -1: 
     123                if line[1:].strip().find('variable') != -1: 
     124                  variable = line[1:].strip().split(" = ") 
     125                elif line[1:].strip().find('label') != -1:   
     126                  label = line[1:].strip().split(" = ")                   
     127                else: 
    123128                  cmd += line[1:].strip() + ';' 
    124                 else: 
    125                   tmp = line[1:].strip().split(" = ") 
    126129            else: 
    127130                break 
    128131        f.close() 
    129132        exec cmd in None, self.metadata 
    130         if not tmp is None: 
    131           self.metadata[tmp[0]] = tmp[1] 
     133        if not variable is None: 
     134          self.metadata[variable[0]] = variable[1] 
     135        if not variable is None: 
     136          self.metadata[label[0]] = label[1] 
     137         
    132138 
    133139    def __fill_metadata(self, object): 
     
    165171                params['dims'] = self.metadata['dimensions'] 
    166172            else: 
    167                 raise Exception("dims can not be infered while reading %s" %self.filename) 
     173                params['dims'] = len(params['id_list']) 
    168174        return params 
    169175 
  • trunk/src/signals/spikes.py

    r470 r476  
    857857        pass 
    858858 
     859    @property 
    859860    def id_list(self): 
    860861        """  
     
    863864         
    864865        Examples 
    865             >> spklist.id_list() 
     866            >> spklist.id_list 
    866867                [0,1,2,3,....,9999] 
    867868        """ 
     
    873874        """ 
    874875        spklist = SpikeList([], [], self.t_start, self.t_stop, self.dimensions) 
    875         for id in self.id_list(): 
     876        for id in self.id_list: 
    876877            spklist.append(id, self.spiketrains[id]) 
    877878        return spklist 
     
    885886        if len(self) > 0: 
    886887            if self.t_start is None: 
    887                 start_times = numpy.array([self.spiketrains[idx].t_start for idx in self.id_list()], numpy.float32) 
     888                start_times = numpy.array([self.spiketrains[idx].t_start for idx in self.id_list], numpy.float32) 
    888889                self.t_start = numpy.min(start_times) 
    889890                logging.debug("Warning, t_start is infered from the data : %f" %self.t_start) 
     
    891892                    self.spiketrains[id].t_start = self.t_start 
    892893            if self.t_stop is None: 
    893                 stop_times = numpy.array([self.spiketrains[idx].t_stop for idx in self.id_list()], numpy.float32) 
     894                stop_times = numpy.array([self.spiketrains[idx].t_stop for idx in self.id_list], numpy.float32) 
    894895                self.t_stop  = numpy.max(stop_times) 
    895896                logging.debug("Warning, t_stop  is infered from the data : %f" %self.t_stop) 
     
    900901 
    901902    def __getitem__(self, id): 
    902         if id in self.id_list(): 
     903        if id in self.id_list: 
    903904            return self.spiketrains[id] 
    904905        else: 
    905             raise Exception("id %d is not present in the SpikeList. See id_list()" %id) 
     906            raise Exception("id %d is not present in the SpikeList. See id_list" %id) 
    906907     
    907908    def __getslice__(self, i, j): 
     
    909910        Return a new SpikeList object with all the ids between i and j 
    910911        """ 
    911         ids = numpy.where((self.id_list() >= i) & (self.id_list() < j))[0] 
     912        ids = numpy.where((self.id_list >= i) & (self.id_list < j))[0] 
    912913        return self.id_slice(ids) 
    913914     
     
    931932        Inputs: 
    932933            sublist - can be an int (and then N random cells are selected). Otherwise 
    933                       sub_list is a list of cell in self.id_list(). If None, id_list is returned 
     934                      sub_list is a list of cell in self.id_list. If None, id_list is returned 
    934935         
    935936        Examples: 
     
    937938        """ 
    938939        if sub_list == None: 
    939             return self.id_list() 
     940            return self.id_list 
    940941        elif type(sub_list) == int: 
    941             return numpy.random.permutation(self.id_list())[0:sub_list] 
     942            return numpy.random.permutation(self.id_list)[0:sub_list] 
    942943        else: 
    943944            return sub_list 
     
    984985        """ 
    985986        assert isinstance(spktrain, SpikeTrain), "A SpikeList object can only contain SpikeTrain objects" 
    986         if id in self.id_list(): 
     987        if id in self.id_list: 
    987988            raise Exception("id %d already present in SpikeList. Use __setitem__ (spk[id]=...) instead()" %id) 
    988989        else: 
     
    10311032                raise Exception("Spike Lists should have similar time_axis") 
    10321033        for sl in spklists: 
    1033             for id in sl.id_list(): 
     1034            for id in sl.id_list: 
    10341035                self.append(id, sl.spiketrains[id]) 
    10351036 
     
    10521053        """ 
    10531054        for id, spiketrain in spikelist.spiketrains.items(): 
    1054             if id in self.id_list(): 
     1055            if id in self.id_list: 
    10551056                self.spiketrains[id].merge(spiketrain, relative) 
    10561057            else: 
     
    10761077        """ 
    10771078        id_list     = set(id_list) 
    1078         missing_ids = id_list.difference(set(self.id_list())) 
     1079        missing_ids = id_list.difference(set(self.id_list)) 
    10791080        for id in missing_ids: 
    10801081            self.append(id, SpikeTrain([],self.t_start, self.t_stop)) 
     
    10921093         
    10931094        Examples: 
    1094             >> spklist.id_list() 
     1095            >> spklist.id_list 
    10951096                [830, 1959, 1005, 416, 1011, 1240, 729, 59, 1138, 259] 
    10961097            >> new_spklist = spklist.id_slice(5) 
    1097             >> new_spklist.id_list() 
     1098            >> new_spklist.id_list 
    10981099                [1011, 729, 1138, 416, 59] 
    10991100 
     
    11221123        """ 
    11231124        new_SpkList = SpikeList([], [], t_start, t_stop, self.dimensions) 
    1124         for id in self.id_list(): 
     1125        for id in self.id_list: 
    11251126            new_SpkList.append(id, self.spiketrains[id].time_slice(t_start, t_stop)) 
    11261127        new_SpkList.__calc_startstop() 
     
    11401141        t_start, t_stop = interval.time_parameters() 
    11411142        new_SpkList = SpikeList([], [], t_start, t_stop, self.dimensions) 
    1142         for id in self.id_list(): 
     1143        for id in self.id_list: 
    11431144            new_SpkList.append(id, self.spiketrains[id].interval_slice(interval)) 
    11441145        return new_SpkList 
     
    11611162        self.t_start += offset 
    11621163        self.t_stop  += offset 
    1163         for id in self.id_list(): 
     1164        for id in self.id_list: 
    11641165            self.spiketrains[id].time_offset(offset) 
    11651166     
     
    11731174         
    11741175        Examples: 
    1175             >> spklist.id_list() 
     1176            >> spklist.id_list 
    11761177                [0,1,2,3,4] 
    11771178            >> spklist.id_offset(10) 
    1178             >> spklist.id_list() 
     1179            >> spklist.id_list 
    11791180                [10,11,12,13,14] 
    11801181        """ 
    1181         id_list     = numpy.sort(self.id_list()) 
     1182        id_list     = numpy.sort(self.id_list) 
    11821183        N           = len(id_list) 
    11831184         
     
    11931194        first_spike = self.t_stop 
    11941195        is_empty    = True 
    1195         for id in self.id_list(): 
     1196        for id in self.id_list: 
    11961197            if len(self.spiketrains[id]) > 0: 
    11971198                is_empty = False 
     
    12091210        last_spike = self.t_start 
    12101211        is_empty    = True 
    1211         for id in self.id_list(): 
     1212        for id in self.id_list: 
    12121213            if len(self.spiketrains[id]) > 0: 
    12131214                is_empty = False 
     
    12361237        """ 
    12371238        selected_ids = [] 
    1238         for id in self.id_list(): 
     1239        for id in self.id_list: 
    12391240            cell = self.spiketrains[id] 
    12401241            if eval(criteria): 
     
    12591260        """ 
    12601261        criterias = numpy.zeros(len(self), float) 
    1261         for count, id in enumerate(self.id_list()): 
     1262        for count, id in enumerate(self.id_list): 
    12621263            cell  = self.spiketrains[id] 
    12631264            criterias[count] = eval(criteria) 
    1264         result = self.id_list()[numpy.argsort(criterias)] 
     1265        result = self.id_list[numpy.argsort(criterias)] 
    12651266        if descending: 
    12661267            return result[numpy.arange(len(result)-1, -1, -1)] 
     
    13041305        """ 
    13051306        isis = [] 
    1306         for id in self.id_list(): 
     1307        for id in self.id_list: 
    13071308            isis.append(self.spiketrains[id].isi()) 
    13081309        return isis 
     
    13651366             
    13661367        """ 
    1367         ids = self.id_list() 
     1368        ids = self.id_list 
    13681369        N   = len(ids) 
    13691370        cvs_isi = numpy.empty(N) 
     
    13951396            cv_isi_hist, cv_local, cv_isi, SpikeTrain.cv_kl 
    13961397        """ 
    1397         ids = self.id_list() 
     1398        ids = self.id_list 
    13981399        N = len(ids) 
    13991400        cvs_kl = numpy.empty(N) 
     
    14751476        vLocCV   = numpy.zeros(maxBin) 
    14761477        vCnt     = numpy.zeros(maxBin) 
    1477         N = len(self.id_list()) 
     1478        N = len(self.id_list) 
    14781479        for i in xrange(N): 
    14791480            if len(self.spiketrains[i])>15 : 
     
    15501551        """ 
    15511552        rates = [] 
    1552         for id in self.id_list(): 
     1553        for id in self.id_list: 
    15531554            rates.append(self.spiketrains[id].mean_rate(t_start, t_stop)) 
    15541555        return rates 
     
    16111612        spike_hist = numpy.zeros((N, M), numpy.float32) 
    16121613        subplot    = get_display(display) 
    1613         for idx,id in enumerate(self.id_list()): 
     1614        for idx,id in enumerate(self.id_list): 
    16141615            spike_hist[idx,:] = self.spiketrains[id].time_histogram(time_bin, normalized) 
    16151616        if not subplot or not HAVE_PYLAB: 
     
    16801681        """ 
    16811682        fano_factors = [] 
    1682         for id in self.id_list(): 
     1683        for id in self.id_list: 
    16831684            try: 
    16841685                fano_factors.append(self.spiketrains[id].fano_factor_isi()) 
     
    17851786            activity_map = numpy.zeros(self.dimensions, float) 
    17861787            rates        = spklist.mean_rates() 
    1787             #id_offset    = min(self.id_list()) 
    1788             #x,y          = spklist.id2position(spklist.id_list(), id_offset) 
    1789             x,y          = spklist.id2position(spklist.id_list())             
     1788            #id_offset    = min(self.id_list) 
     1789            #x,y          = spklist.id2position(spklist.id_list, id_offset) 
     1790            x,y          = spklist.id2position(spklist.id_list)             
    17901791            #j,i = x, self.dimensions[0] - 1 - y 
    1791             for count, id in enumerate(spklist.id_list()): 
     1792            for count, id in enumerate(spklist.id_list): 
    17921793                #activity_map[i[count],j[count]] = rates[count]                             
    17931794                activity_map[x[count],y[count]] = rates[count] 
     
    17991800                pylab.draw() 
    18001801        elif isinstance(float_positions, numpy.ndarray): 
    1801             if not len(spklist.id_list()) == len(float_positions[0]): 
     1802            if not len(spklist.id_list) == len(float_positions[0]): 
    18021803                raise Exception("Error, the number of flotting positions does not match the number of cells in the SpikeList") 
    18031804            rates = spklist.mean_rates() 
     
    19321933        times2, ids2 = spk2.convert("times, ids") 
    19331934         
    1934         cells_id     = spk1.id_list() 
     1935        cells_id     = spk1.id_list 
    19351936        for idx in xrange(len(cells_id)): 
    19361937            ids1[numpy.where(ids1 == cells_id[idx])[0]] = idx 
    1937         cells_id     = spk2.id_list() 
     1938        cells_id     = spk2.id_list 
    19381939        for idx in xrange(len(cells_id)): 
    19391940            ids2[numpy.where(ids2 == cells_id[idx])[0]] = idx 
     
    20922093        subplot = get_display(display) 
    20932094        if id_list == None:  
    2094             id_list = self.id_list() 
     2095            id_list = self.id_list 
    20952096            spk = self 
    20962097        else: 
     
    21122113            ylabel = "Neuron #" 
    21132114            set_labels(subplot, xlabel, ylabel) 
    2114             min_id = numpy.min(spk.id_list()) 
    2115             max_id = numpy.max(spk.id_list()) 
     2115            min_id = numpy.min(spk.id_list) 
     2116            max_id = numpy.max(spk.id_list) 
    21162117            length = t_stop - t_start 
    21172118            set_axis_limits(subplot, t_start-0.05*length, t_stop+0.05*length, min_id-2, max_id+2)