Changeset 1013 for trunk

Show
Ignore:
Timestamp:
11/25/11 12:21:30 (6 months ago)
Author:
pierre
Message:

Start working with the new pyNN version since the common module is isolated. Fix som bugs in the nest/connectors.py file, and try to start to make NeMo? compatible with

Location:
trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/setup.py

    r1002 r1013  
    4444    package_dir={'pyNN': 'src'}, 
    4545    packages = ['pyNN','pyNN.nest', 'pyNN.pcsim', 'pyNN.neuron', 'pyNN.nineml', 
    46                 'pyNN.brian', 'pyNN.common', 'pyNN.recording', 
    47                 'pyNN.standardmodels', 'pyNN.descriptions', 
     46                'pyNN.brian','pyNN.nemo', 'pyNN.common', 
     47                'pyNN.recording', 'pyNN.standardmodels', 'pyNN.descriptions', 
    4848                'pyNN.nest.standardmodels', 'pyNN.pcsim.standardmodels', 
    49                 'pyNN.neuron.standardmodels', 'pyNN.brian.standardmodels'], 
     49                'pyNN.neuron.standardmodels', 'pyNN.brian.standardmodels', 'pyNN.nemo.standardmodels'], 
    5050    package_data = {'pyNN': ['neuron/nmodl/*.mod', "descriptions/templates/*/*"]}, 
    5151    author = "The PyNN team", 
  • trunk/src/nemo/__init__.py

    r1001 r1013  
    120120                player = SpikeSourcePoisson.spike_player(**params) 
    121121                setattr(idx, 'player', player) 
    122                 simulator.state.net.add_neuron(int(idx), 0., 0., -80., 0, 0., -80., 0.) 
     122                ntype = simulator.state.net.add_neuron_type('Input') 
     123                simulator.state.net.add_neuron(ntype, int(idx)) 
    123124        elif isinstance(celltype, SpikeSourceArray): 
    124125            ### For the moment, we model spike_source_array and spike_source_poisson 
     
    131132                player = SpikeSourceArray.spike_player(**params) 
    132133                setattr(idx, 'player', player) 
    133                 simulator.state.net.add_neuron(int(idx), 0., 0., -80., 0., -0., -80, 0) 
     134                ntype = simulator.state.net.add_neuron_type('Input') 
     135                simulator.state.net.add_neuron(ntype, int(idx)) 
     136        elif isinstance(celltype, cells.IF_curr_exp): 
     137            init = celltype.default_initial_values 
     138            print params 
     139            for idx in self.all_cells: 
     140                ntype = simulator.state.net.add_neuron_type('IF_curr_exp') 
     141                simulator.state.net.add_neuron(ntype, int(idx), 
     142                        params['v_rest'], 
     143                        params['cm'], 
     144                        params['tau_m'], 
     145                        params['t_refrac'], 
     146                        params['tau_syn_E'], 
     147                        params['tau_syn_I'], 
     148                        params['i_offset'], 
     149                        params['v_reset'], 
     150                        params['v_thresh'], 
     151                        init['v'], 0., 0., 1000.) 
    134152        else:             
    135             ## Currently, we only have the Izhikevitch model... 
    136153            init = celltype.default_initial_values 
     154            ntype = simulator.state.net.add_neuron_type('Izhikevich') 
    137155            for idx in self.all_cells: 
    138                 simulator.state.net.add_neuron(int(idx), params['a'], params['b'], params['c'], params['d'], init['u'], init['v'], 0.) 
     156                simulator.state.net.add_neuron(ntype, int(idx), params['a'], params['b'], params['c'], params['d'], init['u'], init['v'], 0.) 
    139157        
    140158        self._mask_local = numpy.ones((n,), bool) # all cells are local 
  • trunk/src/nemo/standardmodels/cells.py

    r957 r1013  
    134134    pass 
    135135 
    136 class IF_curr_exp(ModelNotAvailable): 
    137     pass 
     136class IF_curr_exp(cells.IF_curr_exp): 
     137    """Leaky integrate and fire model with fixed threshold and 
     138    decaying-exponential post-synaptic current. (Separate synaptic currents for 
     139    excitatory and inhibitory synapses.""" 
     140    translations = build_translations( 
     141        ('v_rest',     'v_rest'), 
     142        ('v_reset',    'v_reset'), 
     143        ('cm',         'cm'),  
     144        ('tau_m',      'tau_m'), 
     145        ('tau_refrac', 't_refrac'), 
     146        ('tau_syn_E',  'tau_syn_E'), 
     147        ('tau_syn_I',  'tau_syn_I'), 
     148        ('v_thresh',   'v_thresh'), 
     149        ('i_offset',   'i_offset'),  
     150    ) 
     151 
     152    indices = { 
     153            'v_rest' : 0, 
     154            'cm' : 1, 
     155            'tau_m' : 2, 
     156            't_refrac' : 3, 
     157            'tau_syn_E' : 4, 
     158            'tau_syn_I' : 5, 
     159            'i_offset' : 6, 
     160            'v_reset' : 7, 
     161            'v_thresh' : 8 
     162        } 
     163    initial_indices = {'v' : 0} 
     164 
    138165 
    139166class IF_cond_alpha(ModelNotAvailable): 
  • trunk/src/nest/connectors.py

    r1004 r1013  
    77$Id$ 
    88""" 
    9 from pyNN import random, core 
     9from pyNN import random, core, errors 
    1010from pyNN.connectors import Connector, AllToAllConnector, FixedProbabilityConnector, \ 
    1111                            DistanceDependentProbabilityConnector, FixedNumberPreConnector, \ 
     
    109109        for count, tgt in enumerate(projection.post.local_cells): 
    110110            connector._probabilistic_connect(tgt, 1) 
    111             self.progression(count)         
     111            self.progression(count, projection._simulator.state.mpi_rank) 
    112112     
    113113 
     
    139139                proba = proba.astype(float)            
    140140            connector._probabilistic_connect(tgt, proba, self.n_connections) 
    141             self.progression(count) 
     141            self.progression(count, projection._simulator.state.mpi_rank) 
    142142 
    143143 
     
    156156                n = self.n 
    157157            connector._probabilistic_connect(tgt, 1, n) 
    158             self.progression(count) 
    159  
     158            self.progression(count, projection._simulator.state.mpi_rank) 
     159 
     160 
     161class FastFromListConnector(FromListConnector): 
     162     
     163    __doc__ = FromListConnector.__doc__ 
     164     
     165    def connect(self, projection): 
     166        """Connect-up a Projection.""" 
     167        idx     = numpy.argsort(self.conn_list[:, 1]) 
     168        self.targets    = numpy.unique(self.conn_list[:, 1]).astype(int) 
     169        self.candidates = projection.pre.all_cells 
     170        self.conn_list  = self.conn_list[idx] 
     171        self.progressbar(len(self.targets))         
     172        count = 0 
     173        left  = numpy.searchsorted(self.conn_list[:, 1], self.targets, 'left') 
     174        right = numpy.searchsorted(self.conn_list[:, 1], self.targets, 'right') 
     175        for tgt, l, r in zip(self.targets, left, right): 
     176            sources = self.conn_list[l:r, 0].astype(int) 
     177            weights = self.conn_list[l:r, 2] 
     178            delays  = self.conn_list[l:r, 3] 
     179         
     180            srcs     = projection.pre.all_cells[sources] 
     181            try: 
     182                srcs     = projection.pre.all_cells[sources] 
     183            except IndexError: 
     184                raise errors.ConnectionError("invalid sources index or indices") 
     185            try: 
     186                tgt    = projection.post.all_cells[tgt] 
     187            except IndexError: 
     188                raise errors.ConnectionError("invalid target index %d" %tgt) 
     189            ## We need to exclude the non local cells. Fastidious, need maybe 
     190            ## to use a convergent_connect method, instead of a divergent_connect one 
     191            #idx     = eval(tests) 
     192            #projection.connection_manager.connect(src, tgts[idx].tolist(), weights[idx], delays[idx]) 
     193            projection.connection_manager.convergent_connect(srcs.tolist(), tgt, weights, delays) 
     194            self.progression(count, projection._simulator.state.mpi_rank) 
     195            count += 1 
    160196 
    161197class FastSmallWorldConnector(SmallWorldConnector): 
     
    172208            proba  = proba_generator.get(connector.N, connector.distance_matrix).astype(float) 
    173209            connector._probabilistic_connect(tgt, proba, self.n_connections, self.rewiring) 
    174             self.progression(count) 
     210            self.progression(count, projection._simulator.state.mpi_rank)