Changeset 713

Show
Ignore:
Timestamp:
02/17/10 22:45:18 (2 years ago)
Author:
apdavison
Message:

Moved standard model (cells and synapses) machinery out of the common module into its own module

Location:
trunk/src
Files:
2 added
21 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/brian/__init__.py

    r712 r713  
    99#import brian_no_units_no_warnings 
    1010from pyNN.brian import simulator 
    11 from pyNN import common, recording, space, __doc__ 
     11from pyNN import common, recording, space, standardmodels, __doc__ 
    1212common.simulator = simulator 
    1313recording.simulator = simulator 
     
    2323def list_standard_models(): 
    2424    """Return a list of all the StandardCellType classes available for this simulator.""" 
    25     standard_cell_types = [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, common.StandardCellType)] 
     25    standard_cell_types = [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, standardmodels.StandardCellType)] 
    2626    for cell_class in standard_cell_types: 
    2727        try: 
     
    102102          e.g., (10,10) will create a two-dimensional population of size 10x10. 
    103103        cellclass should either be a standardized cell class (a class inheriting 
    104         from common.StandardCellType) or a string giving the name of the 
     104        from standardmodels.StandardCellType) or a string giving the name of the 
    105105        simulator-specific model that makes up the population. 
    106106        cellparams should be a dict which is passed to the neuron model 
  • trunk/src/brian/cells.py

    r711 r713  
    55""" 
    66 
    7 from pyNN import common, cells, errors 
     7from pyNN import standardmodels, cells, errors 
    88#import brian_no_units_no_warnings 
    99from brian.library.synapses import * 
     
    1616    """Leaky integrate and fire model with fixed threshold and alpha-function- 
    1717    shaped post-synaptic current.""" 
    18     translations = common.build_translations( 
     18    translations = standardmodels.build_translations( 
    1919        ('v_rest',     'v_rest',     mV), 
    2020        ('v_reset',    'v_reset'), 
     
    5151    excitatory and inhibitory synapses.""" 
    5252     
    53     translations = common.build_translations( 
     53    translations = standardmodels.build_translations( 
    5454        ('v_rest',     'v_rest',     mV), 
    5555        ('v_reset',    'v_reset'), 
     
    8181 
    8282class IF_cond_alpha(cells.IF_cond_alpha): 
    83     translations = common.build_translations( 
     83    translations = standardmodels.build_translations( 
    8484        ('v_rest',     'v_rest',     mV), 
    8585        ('v_reset',    'v_reset'), 
     
    117117    """Leaky integrate and fire model with fixed threshold and  
    118118    exponentially-decaying post-synaptic conductance.""" 
    119     translations = common.build_translations( 
     119    translations = standardmodels.build_translations( 
    120120        ('v_rest',     'v_rest',     mV), 
    121121        ('v_reset',    'v_reset'), 
     
    149149 
    150150 
    151 class IF_facets_hardware1(common.ModelNotAvailable): 
     151class IF_facets_hardware1(standardmodels.ModelNotAvailable): 
    152152    """Leaky integrate and fire model with conductance-based synapses and fixed 
    153153    threshold as it is resembled by the FACETS Hardware Stage 1. For further 
     
    160160class SpikeSourcePoisson(cells.SpikeSourcePoisson): 
    161161    """Spike source, generating spikes according to a Poisson process.""" 
    162     translations = common.build_translations( 
     162    translations = standardmodels.build_translations( 
    163163        ('rate',     'rate'), 
    164164        ('start',    'start'), 
     
    189189class SpikeSourceArray(cells.SpikeSourceArray): 
    190190    """Spike source generating spikes at the times given in the spike_times array.""" 
    191     translations = common.build_translations( 
     191    translations = standardmodels.build_translations( 
    192192        ('spike_times', 'spiketimes', ms), 
    193193    ) 
     
    202202        return super(SpikeSourceArray, cls).translate(parameters) 
    203203 
    204 class EIF_cond_alpha_isfa_ista(common.ModelNotAvailable): 
    205     pass 
    206  
    207  
    208 class HH_cond_exp(common.ModelNotAvailable): 
     204class EIF_cond_alpha_isfa_ista(standardmodels.ModelNotAvailable): 
     205    pass 
     206 
     207 
     208class HH_cond_exp(standardmodels.ModelNotAvailable): 
    209209    pass 
    210210     
    211211#class HH_cond_exp(cells.HH_cond_exp): 
    212212#     
    213 #    translations = common.build_translations( 
     213#    translations = standardmodels.build_translations( 
    214214#        ('gbar_Na',    'gbar_Na'),    
    215215#        ('gbar_K',     'gbar_K'),     
     
    259259 
    260260 
    261 class SpikeSourceInhGamma(common.ModelNotAvailable): 
    262     pass 
    263  
    264  
    265 class IF_cond_exp_gsfa_grr(common.ModelNotAvailable): 
    266     pass 
     261class SpikeSourceInhGamma(standardmodels.ModelNotAvailable): 
     262    pass 
     263 
     264 
     265class IF_cond_exp_gsfa_grr(standardmodels.ModelNotAvailable): 
     266    pass 
  • trunk/src/brian/simulator.py

    r711 r713  
    3232from itertools import izip 
    3333import scipy.sparse 
    34 from pyNN import common, cells, errors 
     34from pyNN import common, cells, errors, standardmodels, core 
    3535 
    3636mV = brian.mV 
     
    143143        return self._threshold.spiketimes 
    144144    def _set_spiketimes(self, spiketimes): 
    145         assert common.is_listlike(spiketimes) 
    146         if len(spiketimes) == 0 or common.is_number(spiketimes[0]): 
     145        assert core.is_listlike(spiketimes) 
     146        if len(spiketimes) == 0 or numpy.isscalar(spiketimes[0]): 
    147147            spiketimes = [spiketimes for i in xrange(len(self))] 
    148148        assert len(spiketimes) == len(self), "spiketimes (length %d) must contain as many iterables as there are cells in the group (%d)." % (len(spiketimes), len(self)) 
     
    279279                                        max_delay=state.max_delay) 
    280280        cell_parameters = cellparams or {} 
    281     elif isinstance(cellclass, type) and issubclass(cellclass, common.StandardCellType): 
     281    elif isinstance(cellclass, type) and issubclass(cellclass, standardmodels.StandardCellType): 
    282282        celltype = cellclass(cellparams) 
    283283        cell_parameters = celltype.parameters 
     
    469469        """ 
    470470        #print "connecting", source, "to", targets, "with weights", weights, "and delays", delays 
    471         if not common.is_listlike(targets): 
     471        if not core.is_listlike(targets): 
    472472            targets = [targets] 
    473473        if isinstance(weights, float): 
     
    585585        else: 
    586586            raise Exception("Setting parameters other than weight and delay not yet supported.") 
    587         if common.is_number(value): 
     587        if numpy.isscalar(value): 
    588588            for row in M.data: 
    589589                for i in range(len(row)): 
     
    593593            for (i,j) in address_gen: 
    594594                M[i,j] = value[i,j]*units 
    595         elif common.is_listlike(value): 
     595        elif core.is_listlike(value): 
    596596            assert len(value) == M.getnnz() 
    597597            address_gen = ((i,j) for i,row in enumerate(bc.W.rows) for j in row) 
  • trunk/src/brian/synapses.py

    r626 r713  
    55""" 
    66 
    7 from pyNN import common 
     7from pyNN import standardmodels 
    88 
    99 
    10 class SynapseDynamics(common.SynapseDynamics): 
     10class SynapseDynamics(standardmodels.SynapseDynamics): 
    1111    def __init__(self, fast=None, slow=None): 
    1212        synapses.SynapseDynamics.__init__(self, fast, slow) 
    1313 
    14 class STDPMechanism(common.STDPMechanism): 
     14class STDPMechanism(standardmodels.STDPMechanism): 
    1515    def __init__(self, timing_dependence=None, weight_dependence=None, 
    1616                 voltage_dependence=None, dendritic_delay_fraction=1.0): 
     
    2121                                      voltage_dependence, dendritic_delay_fraction) 
    2222 
    23 class TsodkysMarkramMechanism(common.ModelNotAvailable): 
     23class TsodkysMarkramMechanism(standardmodels.ModelNotAvailable): 
    2424     
    2525    def __init__(self, U=0.5, tau_rec=100.0, tau_facil=0.0, u0=0.0, x0=1.0, y0=0.0): 
     
    3535        population.v_[spikes]= v_reset 
    3636 
    37 class AdditiveWeightDependence(common.ModelNotAvailable): 
     37class AdditiveWeightDependence(standardmodels.ModelNotAvailable): 
    3838    pass 
    3939 
    40 class MultiplicativeWeightDependence(common.ModelNotAvailable): 
     40class MultiplicativeWeightDependence(standardmodels.ModelNotAvailable): 
    4141    pass 
    4242 
    43 class SpikePairRule(common.ModelNotAvailable): 
     43class SpikePairRule(standardmodels.ModelNotAvailable): 
    4444    pass 
  • trunk/src/cells.py

    r672 r713  
    2828 
    2929import numpy 
    30 from common import StandardCellType 
     30from standardmodels import StandardCellType 
    3131 
    3232class IF_curr_alpha(StandardCellType): 
  • trunk/src/common.py

    r712 r713  
    99 
    1010Utility functions and classes: 
    11     is_listlike() 
    12     is_number() 
    1311    is_conductance() 
    1412    check_weight() 
    1513    check_delay() 
    16     distance() 
    1714     
    1815Accessing individual neurons: 
    1916    IDMixin 
    20  
    21 Standard cells/parameter translation: 
    22     build_translations()     
    23     StandardModelType 
    24     StandardCellType 
    25     ModelNotAvailable 
    2617     
    2718Common API implementation/base classes: 
     
    4637    Population 
    4738    Projection 
    48      
    49   4. Specification of synaptic plasticity: 
    50     SynapseDynamics 
    51     ShortTermPlasticityMechanism 
    52     STDPMechanism 
    53     STDPWeightDependence 
    54     STDPTimingDependence 
    5539 
    5640$Id$ 
    5741""" 
    5842 
    59 import types, copy, sys 
    6043import numpy 
    6144import logging 
    6245from math import * 
    6346import operator 
    64 from pyNN import random, utility, recording, errors 
     47from pyNN import random, utility, recording, errors, standardmodels, core 
    6548from string import Template 
    6649 
     
    7962# ============================================================================== 
    8063 
    81 def is_listlike(obj): 
    82     return hasattr(obj, "__len__") and not isinstance(obj, basestring) 
    83  
    84 def is_number(obj): 
    85     return isinstance(obj, float) or isinstance(obj, int) or isinstance(obj, long) or isinstance(obj, numpy.float64) 
    8664 
    8765def is_conductance(target_cell): 
     
    10381    if weight is None: 
    10482        weight = DEFAULT_WEIGHT 
    105     if is_listlike(weight): 
     83    if core.is_listlike(weight): 
    10684        weight = numpy.array(weight) 
    10785        nan_filter = (1-numpy.isnan(weight)).astype(bool) # weight arrays may contain NaN, which should be ignored 
     
    11189        if not (all_negative or all_positive): 
    11290            raise errors.InvalidWeightError("Weights must be either all positive or all negative") 
    113     elif is_number(weight): 
     91    elif numpy.isscalar(weight): 
    11492        all_positive = weight >= 0 
    11593        all_negative = weight < 0 
     
    224202     
    225203    def is_standard_cell(self): 
    226         return (type(self.cellclass) == type and issubclass(self.cellclass, StandardCellType)) 
     204        return (type(self.cellclass) == type and issubclass(self.cellclass, standardmodels.StandardCellType)) 
    227205         
    228206    def _set_position(self, pos): 
     
    267245        """Inject current from a current source object into the cell.""" 
    268246        current_source.inject_into([self]) 
    269          
    270  
    271 # ============================================================================== 
    272 #   Standard cells 
    273 # ============================================================================== 
    274  
    275 def build_translations(*translation_list): 
    276     """ 
    277     Build a translation dictionary from a list of translations/transformations. 
    278     """ 
    279     translations = {} 
    280     for item in translation_list: 
    281         assert 2 <= len(item) <= 4, "Translation tuples must have between 2 and 4 items. Actual content: %s" % str(item) 
    282         pynn_name = item[0] 
    283         sim_name = item[1] 
    284         if len(item) == 2: # no transformation 
    285             f = pynn_name 
    286             g = sim_name 
    287         elif len(item) == 3: # simple multiplicative factor 
    288             scale_factor = item[2] 
    289             f = "float(%g)*%s" % (scale_factor, pynn_name) 
    290             g = "%s/float(%g)" % (sim_name, scale_factor) 
    291         elif len(item) == 4: # more complex transformation 
    292             f = item[2] 
    293             g = item[3] 
    294         translations[pynn_name] = {'translated_name': sim_name, 
    295                                    'forward_transform': f, 
    296                                    'reverse_transform': g} 
    297     return translations 
    298  
    299 class StandardModelType(object): 
    300     """Base class for standardized cell model and synapse model classes.""" 
    301      
    302     translations = {} 
    303     default_parameters = {} 
    304      
    305     def __init__(self, parameters): 
    306         self.parameters = self.__class__.checkParameters(parameters, with_defaults=True) 
    307         self.parameters = self.__class__.translate(self.parameters) 
    308      
    309     @classmethod 
    310     def checkParameters(cls, supplied_parameters, with_defaults=False): 
    311         """ 
    312         Returns a parameter dictionary, checking that each 
    313         supplied_parameter is in the default_parameters and 
    314         converts to the type of the latter. 
    315  
    316         If with_defaults==True, parameters not in 
    317         supplied_parameters are in the returned dictionary 
    318         as in default_parameters. 
    319  
    320         """ 
    321         default_parameters = cls.default_parameters 
    322         if with_defaults: 
    323             parameters = copy.copy(default_parameters) 
    324         else: 
    325             parameters = {} 
    326         if supplied_parameters: 
    327             for k in supplied_parameters.keys(): 
    328                 if default_parameters.has_key(k): 
    329                     err_msg = "For %s in %s, expected %s, got %s (%s)" % \ 
    330                               (k, cls.__name__, type(default_parameters[k]), 
    331                                type(supplied_parameters[k]), supplied_parameters[k]) 
    332                     # same type 
    333                     if type(supplied_parameters[k]) == type(default_parameters[k]):  
    334                         parameters[k] = supplied_parameters[k] 
    335                     # float and something that can be converted to a float 
    336                     elif type(default_parameters[k]) == types.FloatType:  
    337                         try: 
    338                             parameters[k] = float(supplied_parameters[k])  
    339                         except (ValueError, TypeError): 
    340                             raise errors.InvalidParameterValueError(err_msg) 
    341                     # list and something that can be transformed to a list 
    342                     elif type(default_parameters[k]) == types.ListType: 
    343                         try: 
    344                             parameters[k] = list(supplied_parameters[k]) 
    345                         except TypeError: 
    346                             raise errors.InvalidParameterValueError(err_msg) 
    347                     else: 
    348                         raise errors.InvalidParameterValueError(err_msg) 
    349                 else: 
    350                     raise errors.NonExistentParameterError(k, cls) 
    351         return parameters 
    352      
    353     @classmethod 
    354     def translate(cls, parameters): 
    355         """Translate standardized model parameters to simulator-specific parameters.""" 
    356         parameters = cls.checkParameters(parameters, with_defaults=False) 
    357         native_parameters = {} 
    358         for name in parameters: 
    359             D = cls.translations[name] 
    360             pname = D['translated_name'] 
    361             if is_listlike(cls.default_parameters[name]): 
    362                 parameters[name] = numpy.array(parameters[name]) 
    363             try: 
    364                 pval = eval(D['forward_transform'], globals(), parameters) 
    365             except NameError, errmsg: 
    366                 raise NameError("Problem translating '%s' in %s. Transform: '%s'. Parameters: %s. %s" \ 
    367                                 % (pname, cls.__name__, D['forward_transform'], parameters, errmsg)) 
    368             except ZeroDivisionError: 
    369                 pval = 1e30 # this is about the highest value hoc can deal with 
    370             native_parameters[pname] = pval 
    371         return native_parameters 
    372      
    373     @classmethod 
    374     def reverse_translate(cls, native_parameters): 
    375         """Translate simulator-specific model parameters to standardized parameters.""" 
    376         standard_parameters = {} 
    377         for name,D  in cls.translations.items(): 
    378             if is_listlike(cls.default_parameters[name]): 
    379                 tname = D['translated_name'] 
    380                 native_parameters[tname] = numpy.array(native_parameters[tname]) 
    381             try: 
    382                 standard_parameters[name] = eval(D['reverse_transform'], {}, native_parameters) 
    383             except NameError, errmsg: 
    384                 raise NameError("Problem translating '%s' in %s. Transform: '%s'. Parameters: %s. %s" \ 
    385                                 % (name, cls.__name__, D['reverse_transform'], native_parameters, errmsg)) 
    386         return standard_parameters 
    387  
    388     @classmethod 
    389     def simple_parameters(cls): 
    390         """Return a list of parameters for which there is a one-to-one 
    391         correspondance between standard and native parameter values.""" 
    392         return [name for name in cls.translations if cls.translations[name]['forward_transform'] == name] 
    393  
    394     @classmethod 
    395     def scaled_parameters(cls): 
    396         """Return a list of parameters for which there is a unit change between 
    397         standard and native parameter values.""" 
    398         return [name for name in cls.translations if "float" in cls.translations[name]['forward_transform']] 
    399      
    400     @classmethod 
    401     def computed_parameters(cls): 
    402         """Return a list of parameters whose values must be computed from 
    403         more than one other parameter.""" 
    404         return [name for name in cls.translations if name not in cls.simple_parameters()+cls.scaled_parameters()] 
    405          
    406     def update_parameters(self, parameters): 
    407         """ 
    408         update self.parameters with those in parameters  
    409         """ 
    410         self.parameters.update(self.translate(parameters)) 
    411          
    412     def describe(self, template='standard'): 
    413         return str(self) 
    414      
    415  
    416 class StandardCellType(StandardModelType): 
    417     """Base class for standardized cell model classes.""" 
    418  
    419     recordable = ['spikes', 'v', 'gsyn'] 
    420     synapse_types = ('excitatory', 'inhibitory') 
    421     conductance_based = True # over-ride for cells with current-based synapses 
    422     always_local = False # over-ride for NEST spike sources 
    423  
    424  
    425 class ModelNotAvailable(object): 
    426     """Not available for this simulator.""" 
    427      
    428     def __init__(self, *args, **kwargs): 
    429         raise NotImplementedError("The %s model is not available for this simulator." % self.__class__.__name__) 
     247 
    430248 
    431249# ============================================================================== 
     
    519337    # should refactor to eliminate this repetition 
    520338    logger.debug("connecting %s to %s on host %d" % (source, target, rank())) 
    521     if not is_listlike(source): 
     339    if not core.is_listlike(source): 
    522340        source = [source] 
    523     if not is_listlike(target): 
     341    if not core.is_listlike(target): 
    524342        target = [target] 
    525343    delay = check_delay(delay) 
     
    599417          e.g., (10,10) will create a two-dimensional population of size 10x10. 
    600418        cellclass should either be a standardized cell class (a class inheriting 
    601         from common.StandardCellType) or a string giving the name of the 
     419        from common.standardmodels.StandardCellType) or a string giving the name of the 
    602420        simulator-specific model that makes up the population. 
    603421        cellparams should be a dict which is passed to the neuron model 
     
    612430            assert isinstance(dims, tuple), "`dims` must be an integer or a tuple. You have supplied a %s" % type(dims) 
    613431        self.label = label or 'population%d' % Population.nPop          
    614         if isinstance(cellclass, type) and issubclass(cellclass, StandardCellType): 
     432        if isinstance(cellclass, type) and issubclass(cellclass, standardmodels.StandardCellType): 
    615433            self.celltype = cellclass(cellparams) 
    616434        else: 
     
    853671    def can_record(self, variable): 
    854672        """Determine whether `variable` can be recorded from this population.""" 
    855         if isinstance(self.celltype, StandardCellType): 
     673        if isinstance(self.celltype, standardmodels.StandardCellType): 
    856674            return (variable in self.celltype.recordable) 
    857675        else: 
     
    1110928                 connecting the neurons. 
    1111929         
    1112         synapse_dynamics - a `SynapseDynamics` object specifying which 
     930        synapse_dynamics - a `standardmodels.SynapseDynamics` object specifying which 
    1113931                 synaptic plasticity mechanisms to use. 
    1114932         
     
    1139957        self.long_term_plasticity_mechanism = None 
    1140958        if self.synapse_dynamics: 
    1141             assert isinstance(self.synapse_dynamics, SynapseDynamics), \ 
    1142               "The synapse_dynamics argument, if specified, must be a SynapseDynamics object, not a %s" % type(synapse_dynamics) 
     959            assert isinstance(self.synapse_dynamics, standardmodels.SynapseDynamics), \ 
     960              "The synapse_dynamics argument, if specified, must be a standardmodels.SynapseDynamics object, not a %s" % type(synapse_dynamics) 
    1143961            if self.synapse_dynamics.fast: 
    1144                 assert isinstance(self.synapse_dynamics.fast, ShortTermPlasticityMechanism) 
     962                assert isinstance(self.synapse_dynamics.fast, standardmodels.ShortTermPlasticityMechanism) 
    1145963                if hasattr(self.synapse_dynamics.fast, 'native_name'): 
    1146964                    self.short_term_plasticity_mechanism = self.synapse_dynamics.fast.native_name 
     
    1149967                self._short_term_plasticity_parameters = self.synapse_dynamics.fast.parameters.copy() 
    1150968            if self.synapse_dynamics.slow: 
    1151                 assert isinstance(self.synapse_dynamics.slow, STDPMechanism) 
     969                assert isinstance(self.synapse_dynamics.slow, standardmodels.STDPMechanism) 
    1152970                assert 0 <= self.synapse_dynamics.slow.dendritic_delay_fraction <= 1.0 
    1153971                td = self.synapse_dynamics.slow.timing_dependence 
     
    12341052        Set parameters of the synapse dynamics to values taken from rand_distr 
    12351053        """ 
    1236         self.setSynapseDynamics(param, rand_distr.next(len(self))) 
     1054        self.setstandardmodels.SynapseDynamics(param, rand_distr.next(len(self))) 
    12371055     
    12381056    # --- Methods for writing/reading information to/from file. ---------------- 
     
    12691087        """ 
    12701088        if gather: 
    1271             logger.error("getSynapseDynamics() with gather=True not yet implemented") 
     1089            logger.error("getstandardmodels.SynapseDynamics() with gather=True not yet implemented") 
    12721090        return self.connection_manager.get(parameter_name, format, offset=(self.pre.first_id, self.post.first_id)) 
    12731091     
     
    13741192            return Template(template).substitute(context) 
    13751193 
    1376          
    13771194# ============================================================================== 
    1378 #   Synapse Dynamics classes 
    1379 # ============================================================================== 
    1380  
    1381 class SynapseDynamics(object): 
    1382     """ 
    1383     For specifying synapse short-term (faciliation, depression) and long-term 
    1384     (STDP) plasticity. To be passed as the `synapse_dynamics` argument to 
    1385     `Projection.__init__()` or `connect()`. 
    1386     """ 
    1387      
    1388     def __init__(self, fast=None, slow=None): 
    1389         """ 
    1390         Create a new specification for a dynamic synapse, combining a `fast` 
    1391         component (short-term facilitation/depression) and a `slow` component 
    1392         (long-term potentiation/depression). 
    1393         """ 
    1394         self.fast = fast 
    1395         self.slow = slow 
    1396      
    1397     def describe(self, template='standard'): 
    1398         """ 
    1399         Return a human-readable description of the synaptic properties. 
    1400         """ 
    1401         if template == 'standard': 
    1402             lines = ["Short-term plasticity mechanism: $fast", 
    1403                      "Long-term plasticity mechanism: $slow"] 
    1404             template = "\n".join(lines) 
    1405         context = {'fast': self.fast and self.fast.describe() or 'None', 
    1406                    'slow': self.slow and self.slow.describe() or 'None'} 
    1407         if template == None: 
    1408             return context 
    1409         else: 
    1410             return Template(template).substitute(context) 
    1411          
    1412          
    1413 class ShortTermPlasticityMechanism(StandardModelType): 
    1414     """Abstract base class for models of short-term synaptic dynamics.""" 
    1415      
    1416     def __init__(self): 
    1417         raise NotImplementedError 
    1418  
    1419  
    1420 class STDPMechanism(object): 
    1421     """Specification of STDP models.""" 
    1422      
    1423     def __init__(self, timing_dependence=None, weight_dependence=None, 
    1424                  voltage_dependence=None, dendritic_delay_fraction=1.0): 
    1425         """ 
    1426         Create a new specification for an STDP mechanism, by combining a 
    1427         weight-dependence, a timing-dependence, and, optionally, a voltage- 
    1428         dependence. 
    1429          
    1430         For point neurons, the synaptic delay `d` can be interpreted either as 
    1431         occurring purely in the pre-synaptic axon + synaptic cleft, in which 
    1432         case the synaptic plasticity mechanism 'sees' the post-synaptic spike 
    1433         immediately and the pre-synaptic spike after a delay `d` 
    1434         (`dendritic_delay_fraction = 0`) or as occurring purely in the post- 
    1435         synaptic dendrite, in which case the pre-synaptic spike is seen 
    1436         immediately, and the post-synaptic spike after a delay `d` 
    1437         (`dendritic_delay_fraction = 1`), or as having both pre- and post- 
    1438         synaptic components (`dendritic_delay_fraction` between 0 and 1). 
    1439          
    1440         In a future version of the API, we will allow the different 
    1441         components of the synaptic delay to be specified separately in 
    1442         milliseconds. 
    1443         """ 
    1444         self.timing_dependence = timing_dependence 
    1445         self.weight_dependence = weight_dependence 
    1446         self.voltage_dependence = voltage_dependence 
    1447         self.dendritic_delay_fraction = dendritic_delay_fraction 
    1448          
    1449     def describe(self): 
    1450         """ 
    1451         Return a human-readable description of the STDP mechanism. 
    1452         """ 
    1453         return "STDP mechanism (this description needs to be filled out)." 
    1454  
    1455  
    1456 class STDPWeightDependence(StandardModelType): 
    1457     """Abstract base class for models of STDP weight dependence.""" 
    1458      
    1459     def __init__(self): 
    1460         raise NotImplementedError 
    1461  
    1462  
    1463 class STDPTimingDependence(StandardModelType): 
    1464     """Abstract base class for models of STDP timing dependence (triplets, etc)""" 
    1465      
    1466     def __init__(self): 
    1467         raise NotImplementedError 
    1468  
    1469  
    1470 # ============================================================================== 
  • trunk/src/connectors.py

    r712 r713  
    2020                  fabs, floor, fmod, hypot, ldexp, log, log10, modf, pi, power, \ 
    2121                  sin, sinh, sqrt, tan, tanh 
    22 from pyNN import random, common, errors 
     22from pyNN import random, common, errors, core 
    2323from pyNN.space import Space 
    2424 
     
    116116            # returned. 
    117117            rarr = rng.next(N, 'uniform', (0, 1), mask_local=local) 
    118             if not common.is_listlike(rarr) and common.is_number(rarr): # if N=1, rarr will be a single number 
     118            if not core.is_listlike(rarr) and numpy.isscalar(rarr): # if N=1, rarr will be a single number 
    119119                rarr = numpy.array([rarr]) 
    120             if common.is_number(p): 
     120            if numpy.isscalar(p): 
    121121                create = rarr < p 
    122122            else: 
  • trunk/src/connectors2.py

    r712 r713  
    11import numpy 
    2 from pyNN import common 
     2from pyNN import common, core 
    33from pyNN.space import Space 
    44from pyNN.random import RandomDistribution 
     
    1515    def get(self, connectivity_matrix, distance_matrix): 
    1616        local_value_mask = self.local_mask[connectivity_matrix] 
    17         if common.is_number(self.source): 
     17        if numpy.isscalar(self.source): 
    1818            return numpy.ones((local_value_mask.sum(),))*self.source 
    1919        elif isinstance(self.source, RandomDistribution): 
     
    6969            self.delays = min_delay 
    7070        else: 
    71             if common.is_listlike(delays): 
     71            if core.is_listlike(delays): 
    7272                assert min(delays) >= min_delay 
    7373            else: 
     
    169169            N = projection.post.size 
    170170            rarr = projection.rng.next(N, 'uniform', (0,1), mask_local=False) 
    171             if not common.is_listlike(rarr) and common.is_number(rarr): # if N=1, rarr will be a single number 
     171            if not core.is_listlike(rarr) and numpy.isscalar(rarr): # if N=1, rarr will be a single number 
    172172                rarr = numpy.array([rarr]) 
    173173            global_target_mask = rarr < p 
  • trunk/src/nest/__init__.py

    r712 r713  
    77import nest 
    88from pyNN.nest import simulator 
    9 from pyNN import common, recording, errors, space, __doc__ 
     9from pyNN import common, recording, errors, space, standardmodels, __doc__ 
    1010common.simulator = simulator 
    1111recording.simulator = simulator 
     
    3939def list_standard_models(): 
    4040    """Return a list of all the StandardCellType classes available for this simulator.""" 
    41     standard_cell_types = [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, common.StandardCellType)] 
     41    standard_cell_types = [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, standardmodels.StandardCellType)] 
    4242    for cell_class in standard_cell_types: 
    4343        try: 
     
    182182          e.g., (10,10) will create a two-dimensional population of size 10x10. 
    183183        cellclass should either be a standardized cell class (a class inheriting 
    184         from common.StandardCellType) or a string giving the name of the 
     184        from standardmodels.StandardCellType) or a string giving the name of the 
    185185        simulator-specific model that makes up the population. 
    186186        cellparams should be a dict which is passed to the neuron model 
  • trunk/src/nest/cells.py

    r687 r713  
    55""" 
    66 
    7 from pyNN import common, cells 
     7from pyNN import standardmodels, cells 
    88  
    99class IF_curr_alpha(cells.IF_curr_alpha): 
     
    1313    """ 
    1414 
    15     translations = common.build_translations( 
     15    translations = standardmodels.build_translations( 
    1616        ('v_rest',     'E_L'), 
    1717        ('v_reset',    'V_reset'), 
     
    3535    """ 
    3636     
    37     translations = common.build_translations( 
     37    translations = standardmodels.build_translations( 
    3838        ('v_rest',     'E_L'), 
    3939        ('v_reset',    'V_reset'), 
     
    5656    """ 
    5757 
    58     translations = common.build_translations( 
     58    translations = standardmodels.build_translations( 
    5959        ('v_rest',     'E_L')    , 
    6060        ('v_reset',    'V_reset'), 
     
    7979    """ 
    8080     
    81     translations = common.build_translations( 
     81    translations = standardmodels.build_translations( 
    8282        ('v_rest',     'E_L')    , 
    8383        ('v_reset',    'V_reset'), 
     
    107107    See also: EIF_cond_alpha_isfa_ista 
    108108    """ 
    109     translations = common.build_translations( 
     109    translations = standardmodels.build_translations( 
    110110        ('v_rest',     'E_L'), 
    111111        ('v_reset',    'V_reset'), 
     
    139139    # in 'iaf_cond_exp_sfa_rr', the dimension of C_m is pF,  
    140140    # while in the pyNN context, cm is given in nF 
    141     translations = common.build_translations( 
     141    translations = standardmodels.build_translations( 
    142142        ('v_reset',    'V_reset'), 
    143143        ('v_rest',     'E_L'), 
     
    162162    """Single-compartment Hodgkin-Huxley model.""" 
    163163     
    164     translations = common.build_translations( 
     164    translations = standardmodels.build_translations( 
    165165        ('gbar_Na',    'g_Na'),    
    166166        ('gbar_K',     'g_K'),     
     
    192192    """ 
    193193 
    194     translations = common.build_translations( 
     194    translations = standardmodels.build_translations( 
    195195        ('v_init'    , 'v_init'), 
    196196        ('w_init'    , 'w',         1000.0),  # nA -> pA 
     
    218218    """Spike source, generating spikes according to a Poisson process.""" 
    219219 
    220     translations = common.build_translations( 
     220    translations = standardmodels.build_translations( 
    221221        ('rate',     'rate'), 
    222222        ('start',    'start'), 
     
    240240    """ 
    241241 
    242     translations = common.build_translations( 
     242    translations = standardmodels.build_translations( 
    243243        ('a',        'a'), 
    244244        ('b',        'b'), 
     
    259259    """Spike source generating spikes at the times given in the spike_times array.""" 
    260260 
    261     translations = common.build_translations( 
     261    translations = standardmodels.build_translations( 
    262262        ('spike_times', 'spike_times'), 
    263263    ) 
  • trunk/src/nest/simulator.py

    r711 r713  
    2727 
    2828import nest 
    29 from pyNN import common, random, errors 
     29from pyNN import common, random, errors, standardmodels, core 
    3030import logging 
    3131import numpy 
     
    150150        nest_model = cellclass 
    151151        cell_parameters = cellparams or {} 
    152     elif isinstance(cellclass, type) and issubclass(cellclass, common.StandardCellType): 
     152    elif isinstance(cellclass, type) and issubclass(cellclass, standardmodels.StandardCellType): 
    153153        celltype = cellclass(cellparams) 
    154154        nest_model = celltype.nest_name 
     
    310310        """ 
    311311        # are we sure the targets are all on the current node? 
    312         if common.is_listlike(source): 
     312        if core.is_listlike(source): 
    313313            assert len(source) == 1 
    314314            source = source[0] 
    315         if not common.is_listlike(targets): 
     315        if not core.is_listlike(targets): 
    316316            targets = [targets] 
    317317        assert len(targets) > 0 
     
    351351        """ 
    352352        # are we sure the targets are all on the current node? 
    353         if common.is_listlike(target): 
     353        if core.is_listlike(target): 
    354354            assert len(target) == 1 
    355355            target = target[0] 
    356         if not common.is_listlike(sources): 
     356        if not core.is_listlike(sources): 
    357357            sources = [sources] 
    358358        assert len(sources) > 0, sources 
     
    452452                   matrix (as returned by `get(format='array')`). 
    453453        """ 
    454         if not (common.is_number(value) or common.is_listlike(value)): 
     454        if not (numpy.isscalar(value) or core.is_listlike(value)): 
    455455            raise TypeError("Argument should be a numeric type (int, float...), a list, or a numpy array.")    
    456456         
     
    470470                    value_list.append(val) 
    471471            value = value_list 
    472         if common.is_listlike(value): 
     472        if core.is_listlike(value): 
    473473            value = numpy.array(value) 
    474474        else: 
  • trunk/src/nest/synapses.py

    r711 r713  
    55""" 
    66 
    7 from pyNN import common, synapses 
     7from pyNN import standardmodels, synapses 
    88 
    99 
    10 SynapseDynamics = common.SynapseDynamics 
     10SynapseDynamics = standardmodels.SynapseDynamics 
    1111 
    12 class STDPMechanism(common.STDPMechanism): 
     12class STDPMechanism(standardmodels.STDPMechanism): 
    1313    """Specification of STDP models.""" 
    1414     
     
    1818                                                 for the purpose of STDP calculations all delays 
    1919                                                 are assumed to be dendritic.""" 
    20         common.STDPMechanism.__init__(self, timing_dependence, weight_dependence, 
     20        standardmodels.STDPMechanism.__init__(self, timing_dependence, weight_dependence, 
    2121                                      voltage_dependence, dendritic_delay_fraction) 
    2222 
     
    2424class TsodyksMarkramMechanism(synapses.TsodyksMarkramMechanism): 
    2525     
    26     translations = common.build_translations( 
     26    translations = standardmodels.build_translations( 
    2727        ('U', 'U'), 
    2828        ('tau_rec', 'tau_rec'), 
     
    4848    """ 
    4949     
    50     translations = common.build_translations( 
     50    translations = standardmodels.build_translations( 
    5151        ('w_max',     'Wmax',  1000.0), # unit conversion 
    5252        ('w_min',     'w_min_always_zero_in_NEST'), 
     
    7373    For potentiation, Dw propto w_max-w 
    7474    """ 
    75     translations = common.build_translations( 
     75    translations = standardmodels.build_translations( 
    7676        ('w_max',     'Wmax',  1000.0), # unit conversion 
    7777        ('w_min',     'w_min_always_zero_in_NEST'), 
     
    9696    depression (Dw propto w-w_min) and is fixed for potentiation. 
    9797    """ 
    98     translations = common.build_translations( 
     98    translations = standardmodels.build_translations( 
    9999        ('w_max',     'Wmax',  1000.0), # unit conversion 
    100100        ('w_min',     'w_min_always_zero_in_NEST'), 
     
    121121    For potentiation, Dw propto w_max-w 
    122122    """ 
    123     translations = common.build_translations( 
     123    translations = standardmodels.build_translations( 
    124124        ('w_max',     'Wmax',  1000.0), # unit conversion 
    125125        ('w_min',     'w_min_always_zero_in_NEST'), 
     
    142142class SpikePairRule(synapses.SpikePairRule): 
    143143     
    144     translations = common.build_translations( 
     144    translations = standardmodels.build_translations( 
    145145        ('tau_plus',  'tau_plus'), 
    146146        ('tau_minus', 'tau_minus'), # defined in post-synaptic neuron 
  • trunk/src/neuron/__init__.py

    r712 r713  
    99from pyNN.random import * 
    1010from pyNN.neuron import simulator 
    11 from pyNN import common, recording, space, __doc__ 
     11from pyNN import common, recording, space, standardmodels, __doc__ 
    1212common.simulator = simulator 
    1313recording.simulator = simulator 
     
    3030def list_standard_models(): 
    3131    """Return a list of all the StandardCellType classes available for this simulator.""" 
    32     return [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, common.StandardCellType)] 
     32    return [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, standardmodels.StandardCellType)] 
    3333 
    3434# ============================================================================== 
     
    121121          e.g., (10,10) will create a two-dimensional population of size 10x10. 
    122122        cellclass should either be a standardized cell class (a class inheriting 
    123         from common.StandardCellType) or a string giving the name of the 
     123        from standardmodels.StandardCellType) or a string giving the name of the 
    124124        simulator-specific model that makes up the population. 
    125125        cellparams should be a dict which is passed to the neuron model 
  • trunk/src/neuron/cells.py

    r711 r713  
    66""" 
    77 
    8 from pyNN import common, cells, errors 
     8from pyNN import standardmodels, cells, errors 
    99from neuron import h, nrn, hclass 
    1010from math import pi 
     
    425425    shaped post-synaptic current.""" 
    426426     
    427     translations = common.build_translations( 
     427    translations = standardmodels.build_translations( 
    428428        ('tau_m',      'tau_m'), 
    429429        ('cm',         'c_m'), 
     
    450450    excitatory and inhibitory synapses.""" 
    451451     
    452     translations = common.build_translations( 
     452    translations = standardmodels.build_translations( 
    453453        ('tau_m',      'tau_m'), 
    454454        ('cm',         'c_m'), 
     
    474474    shaped post-synaptic conductance.""" 
    475475     
    476     translations = common.build_translations( 
     476    translations = standardmodels.build_translations( 
    477477        ('tau_m',      'tau_m'), 
    478478        ('cm',         'c_m'), 
     
    501501    exponentially-decaying post-synaptic conductance.""" 
    502502     
    503     translations = common.build_translations( 
     503    translations = standardmodels.build_translations( 
    504504        ('tau_m',      'tau_m'), 
    505505        ('cm',         'c_m'), 
     
    531531    """ 
    532532 
    533     translations = common.build_translations( 
     533    translations = standardmodels.build_translations( 
    534534        ('v_rest',     'v_rest'), 
    535535        ('v_thresh',   'v_thresh'), 
     
    554554class HH_cond_exp(cells.HH_cond_exp): 
    555555     
    556     translations = common.build_translations( 
     556    translations = standardmodels.build_translations( 
    557557        ('gbar_Na',    'gbar_Na', 1e-6),    
    558558        ('gbar_K',     'gbar_K', 1e-6),     
     
    581581    """Spike source, generating spikes according to a Poisson process.""" 
    582582 
    583     translations = common.build_translations( 
     583    translations = standardmodels.build_translations( 
    584584        ('start',    'start'), 
    585585        ('rate',     '_interval',  "1000.0/rate",  "1000.0/_interval"), 
     
    592592    """Spike source generating spikes at the times given in the spike_times array.""" 
    593593 
    594     translations = common.build_translations( 
     594    translations = standardmodels.build_translations( 
    595595        ('spike_times', 'spike_times'), 
    596596    ) 
     
    609609    """ 
    610610     
    611     translations = common.build_translations( 
     611    translations = standardmodels.build_translations( 
    612612        ('v_init',     'v_init'), 
    613613        ('w_init',     'w_init'), 
  • trunk/src/neuron/simulator.py

    r711 r713  
    2929 
    3030from pyNN import __path__ as pyNN_path 
    31 from pyNN import common, random, errors 
     31from pyNN import common, random, errors, standardmodels, core 
    3232import platform 
    3333import logging 
     
    284284            raise errors.InvalidModelError("There is no hoc template called %s" % cellclass) 
    285285        cell_parameters = cellparams or {} 
    286     elif isinstance(cellclass, type) and issubclass(cellclass, common.StandardCellType): 
     286    elif isinstance(cellclass, type) and issubclass(cellclass, standardmodels.StandardCellType): 
    287287        celltype = cellclass(cellparams) 
    288288        cell_model = celltype.model 
     
    464464            errmsg = "Invalid source ID: %s (gid_counter=%d)" % (source, state.gid_counter) 
    465465            raise errors.ConnectionError(errmsg) 
    466         if not common.is_listlike(targets): 
     466        if not core.is_listlike(targets): 
    467467            targets = [targets] 
    468468        if isinstance(weights, float): 
     
    533533                   matrix (as returned by `get(format='array')`). 
    534534        """ 
    535         if common.is_number(value): 
     535        if numpy.isscalar(value): 
    536536            for c in self: 
    537537                setattr(c, name, value) 
     
    548548                else: 
    549549                    setattr(c, name, val) 
    550         elif common.is_listlike(value): 
     550        elif core.is_listlike(value): 
    551551            for c,val in zip(self.connections, value): 
    552552                setattr(c, name, val) 
  • trunk/src/neuron/synapses.py

    r711 r713  
    55""" 
    66 
    7 from pyNN import common, synapses 
     7from pyNN import standardmodels, synapses 
    88 
    9 SynapseDynamics = common.SynapseDynamics 
    10 STDPMechanism = common.STDPMechanism 
     9SynapseDynamics = standardmodels.SynapseDynamics 
     10STDPMechanism = standardmodels.STDPMechanism 
    1111 
    1212class TsodyksMarkramMechanism(synapses.TsodyksMarkramMechanism): 
    1313     
    14     translations = common.build_translations( 
     14    translations = standardmodels.build_translations( 
    1515        ('U', 'U'), 
    1616        ('tau_rec', 'tau_rec'), 
     
    3737    """ 
    3838     
    39     translations = common.build_translations( 
     39    translations = standardmodels.build_translations( 
    4040        ('w_max',     'wmax'), 
    4141        ('w_min',     'wmin'), 
     
    5757    For potentiation, Dw propto w_max-w 
    5858    """ 
    59     translations = common.build_translations( 
     59    translations = standardmodels.build_translations( 
    6060        ('w_max',     'wmax'), 
    6161        ('w_min',     'wmin'), 
     
    7575    depression (Dw propto w-w_min) and is fixed for potentiation 
    7676    """ 
    77     translations = common.build_translations( 
     77    translations = standardmodels.build_translations( 
    7878        ('w_max',     'wmax'), 
    7979        ('w_min',     'wmin'), 
     
    9494class SpikePairRule(synapses.SpikePairRule): 
    9595     
    96     translations = common.build_translations( 
     96    translations = standardmodels.build_translations( 
    9797        ('tau_plus',  'tauLTP'), 
    9898        ('tau_minus', 'tauLTD'), 
  • trunk/src/pcsim/__init__.py

    r712 r713  
    1515 
    1616import pyNN.random 
    17 from pyNN import common, recording, errors, space, __doc__ 
     17from pyNN import common, recording, errors, space, core, __doc__ 
    1818from pyNN.pcsim import simulator 
    1919common.simulator = simulator 
     
    7474    """Return a list of all the StandardCellType classes available for this simulator.""" 
    7575    setup() 
    76     standard_cell_types = [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, common.StandardCellType)] 
     76    standard_cell_types = [obj for obj in globals().values() if isinstance(obj, type) and issubclass(obj, standardmodels.StandardCellType)] 
    7777    for cell_class in standard_cell_types: 
    7878        try: 
     
    261261#        if type(source) != types.ListType and type(target) != types.ListType: 
    262262#            connections = simulator.net.connect(source, target, syn_factory) 
    263 #            if not common.is_listlike(connections): 
     263#            if not core.is_listlike(connections): 
    264264#                connections = [connections] 
    265265#            return connections 
     
    304304          e.g., (10,10) will create a two-dimensional population of size 10x10. 
    305305        cellclass should either be a standardized cell class (a class inheriting 
    306         from common.StandardCellType) or a string giving the name of the 
     306        from standardmodels.StandardCellType) or a string giving the name of the 
    307307        simulator-specific model that makes up the population. 
    308308        cellparams should be a dict which is passed to the neuron model 
     
    336336            cellclass = getattr(pypcsim, cellclass) 
    337337            self.celltype = cellclass 
    338         if issubclass(cellclass, common.StandardCellType): 
     338        if issubclass(cellclass, standardmodels.StandardCellType): 
    339339            self.celltype = cellclass(cellparams) 
    340340            self.cellfactory = self.celltype.simObjFactory 
     
    582582        ## 
    583583        # handle synapse dynamics 
    584         if common.is_listlike(method.weights): 
     584        if core.is_listlike(method.weights): 
    585585            w = method.weights[0] 
    586586        elif hasattr(method.weights, "next"): # random distribution 
     
    588588        else: 
    589589            w = method.weights 
    590         if common.is_listlike(method.delays): 
     590        if core.is_listlike(method.delays): 
    591591            d = min(method.delays) 
    592592        elif hasattr(method.delays, "next"): # random distribution 
  • trunk/src/pcsim/cells.py

    r711 r713  
    55""" 
    66 
    7 from pyNN import common, cells, errors 
     7from pyNN import common, cells, errors, standardmodels 
    88import pypcsim 
    99import numpy 
     
    1616    shaped post-synaptic current.""" 
    1717     
    18     translations = common.build_translations( 
     18    translations = standardmodels.build_translations( 
    1919        ('tau_m',      'taum',      1e-3), 
    2020        ('cm',         'Cm',        1e-9),  
     
    4343       excitatory and inhibitory synapses.""" 
    4444     
    45     translations = common.build_translations( 
     45    translations = standardmodels.build_translations( 
    4646        ('tau_m',      'taum',      1e-3), 
    4747        ('cm',         'Cm',        1e-9),  
     
    6969    shaped post-synaptic conductance.""" 
    7070     
    71     translations = common.build_translations( 
     71    translations = standardmodels.build_translations( 
    7272        ('tau_m',      'taum',      1e-3), 
    7373        ('cm',         'Cm',        1e-9),  
     
    9898    exponentially-decaying post-synaptic conductance.""" 
    9999     
    100     translations = common.build_translations( 
     100    translations = standardmodels.build_translations( 
    101101        ('tau_m',      'taum',      1e-3), 
    102102        ('cm',         'Cm',        1e-9),  
     
    127127    """Spike source, generating spikes according to a Poisson process.""" 
    128128 
    129     translations = common.build_translations( 
     129    translations = standardmodels.build_translations( 
    130130        ('start',    'Tstart',   1e-3),  
    131131        ('rate',     'rate'),  
     
    165165class SpikeSourceArray(cells.SpikeSourceArray): 
    166166    """Spike source generating spikes at the times given in the spike_times array.""" 
    167     translations = common.build_translations( 
     167    translations = standardmodels.build_translations( 
    168168        ('spike_times', 'spikeTimes'), # 1e-3),  
    169169    ) 
     
    201201        return standard_parameters 
    202202 
    203 class EIF_cond_alpha_isfa_ista(common.ModelNotAvailable): 
     203class EIF_cond_alpha_isfa_ista(standardmodels.ModelNotAvailable): 
    204204    pass 
    205205#class EIF_cond_alpha_isfa_ista(cells.EIF_cond_alpha_isfa_ista): 
     
    214214#    """ 
    215215# 
    216 #    translations = common.build_translations( 
     216#    translations = standardmodels.build_translations( 
    217217#        ('v_init'    , 'Vinit',     1e-3),  # mV -> V 
    218218#        ('w_init'    , 'w',         1e-9),  # nA -> A 
     
    248248#        self.simObjFactory = getattr(pypcsim, EIF_cond_alpha_isfa_ista.pcsim_name)(**limited_parameters) 
    249249 
    250 class IF_facets_hardware1(common.ModelNotAvailable): 
    251     pass 
    252  
    253 class HH_cond_exp(common.ModelNotAvailable): 
     250class IF_facets_hardware1(standardmodels.ModelNotAvailable): 
     251    pass 
     252 
     253class HH_cond_exp(standardmodels.ModelNotAvailable): 
    254254    pass 
    255255 
     
    257257#    """docstring needed here.""" 
    258258#     
    259 #    translations = common.build_translations( 
     259#    translations = standardmodels.build_translations( 
    260260#        ('gbar_Na',    'gbar_Na'),    
    261261#        ('gbar_K',     'gbar_K'),     
     
    284284         
    285285         
    286 class SpikeSourceInhGamma(common.ModelNotAvailable): 
    287     pass 
    288  
    289 class IF_cond_exp_gsfa_grr(common.ModelNotAvailable): 
    290     pass 
     286class SpikeSourceInhGamma(standardmodels.ModelNotAvailable): 
     287    pass 
     288 
     289class IF_cond_exp_gsfa_grr(standardmodels.ModelNotAvailable): 
     290    pass 
  • trunk/src/pcsim/simulator.py

    r711 r713  
    3030import types 
    3131import numpy 
    32 from pyNN import common, errors 
     32from pyNN import common, errors, standardmodels, core 
    3333 
    3434recorder_list = [] 
     
    150150    assert n > 0, 'n must be a positive integer' 
    151151    if isinstance(cellclass, type): 
    152         if issubclass(cellclass, common.StandardCellType): 
     152        if issubclass(cellclass, standardmodels.StandardCellType): 
    153153            cellfactory = cellclass(cellparams).simObjFactory 
    154154        elif issubclass(cellclass, pypcsim.SimObject): 
     
    276276            errmsg = "Invalid source ID: %s" % source 
    277277            raise errors.ConnectionError(errmsg) 
    278         if not common.is_listlike(targets): 
     278        if not core.is_listlike(targets): 
    279279            targets = [targets] 
    280280        if isinstance(weights, float): 
     
    352352                   matrix (as returned by `get(format='array')`) 
    353353        """ 
    354         if common.is_number(value): 
     354        if numpy.isscalar(value): 
    355355            for c in self: 
    356356                setattr(c, name, value) 
     
    367367                else: 
    368368                    setattr(c, name, val) 
    369         elif common.is_listlike(value): 
     369        elif core.is_listlike(value): 
    370370            for c,val in zip(self.connections, value): 
    371371                setattr(c, name, val) 
  • trunk/src/pcsim/synapses.py

    r686 r713  
    55""" 
    66 
    7 from pyNN import common, synapses 
     7from pyNN import standardmodels, synapses 
    88import pypcsim 
    99 
     
    3333                             ]) 
    3434 
    35 SynapseDynamics = common.SynapseDynamics 
     35SynapseDynamics = standardmodels.SynapseDynamics 
    3636         
    37 class STDPMechanism(common.STDPMechanism): 
     37class STDPMechanism(standardmodels.STDPMechanism): 
    3838    """Specification of STDP models.""" 
    3939     
     
    4141                 voltage_dependence=None, dendritic_delay_fraction=1.0): 
    4242        # not sure what the situation is with dendritic_delay_fraction in PCSIM 
    43         common.STDPMechanism.__init__(self, timing_dependence, weight_dependence, 
     43        standardmodels.STDPMechanism.__init__(self, timing_dependence, weight_dependence, 
    4444                                      voltage_dependence, dendritic_delay_fraction) 
    4545 
     
    4747class TsodyksMarkramMechanism(synapses.TsodyksMarkramMechanism): 
    4848     
    49     translations = common.build_translations( 
     49    translations = standardmodels.build_translations( 
    5050        ('U', 'U'), 
    5151        ('tau_rec', 'D', 1e-3), 
     
    7474    """ 
    7575     
    76     translations = common.build_translations( 
     76    translations = standardmodels.build_translations( 
    7777        ('w_max',     'Wex',  1e-9), # unit conversion. This exposes a limitation of the current 
    7878                                     # translation machinery, because this value depends on the 
     
    106106    For potentiation, Dw propto w_max-w 
    107107    """ 
    108     translations = common.build_translations( 
     108    translations = standardmodels.build_translations( 
    109109        ('w_max',     'Wex',  1e-9), # unit conversion 
    110110        ('w_min',     'w_min_always_zero_in_PCSIM'), 
     
    133133    depression (Dw propto w-w_min) and is fixed for potentiation. 
    134134    """ 
    135     translations = common.build_translations( 
     135    translations = standardmodels.build_translations( 
    136136        ('w_max',     'Wex',  1e-9), # unit conversion 
    137137        ('w_min',     'w_min_always_zero_in_PCSIM'), 
     
    160160    For potentiation, Dw propto w_max-w 
    161161    """ 
    162     translations = common.build_translations( 
     162    translations = standardmodels.build_translations( 
    163163        ('w_max',     'Wex',  1e-9), # unit conversion 
    164164        ('w_min',     'w_min_always_zero_in_PCSIM'), 
     
    183183class SpikePairRule(synapses.SpikePairRule): 
    184184     
    185     translations = common.build_translations( 
     185    translations = standardmodels.build_translations( 
    186186        ('tau_plus',  'taupos', 1e-3), 
    187187        ('tau_minus', 'tauneg', 1e-3),  
  • trunk/src/synapses.py

    r639 r713  
    1616""" 
    1717 
    18 from common import ShortTermPlasticityMechanism, STDPWeightDependence, STDPTimingDependence 
     18from standardmodels import ShortTermPlasticityMechanism, STDPWeightDependence, STDPTimingDependence 
    1919 
    2020class TsodyksMarkramMechanism(ShortTermPlasticityMechanism):