def _convergent_connect(self, presynaptic_indices, postsynaptic_index, **connection_parameters): """ Connect a neuron to one or more other neurons with a static connection. `presynaptic_cells` -- a 1D array of pre-synaptic cell IDs `postsynaptic_cell` -- the ID of the post-synaptic cell. `connection_parameters` -- each parameter should be either a 1D array of the same length as `sources`, or a single value. """ #logger.debug("Convergent connect. Weights=%s" % connection_parameters['weight']) postsynaptic_cell = self.post[postsynaptic_index] if not isinstance(postsynaptic_cell, int) or postsynaptic_cell > simulator.state.gid_counter or postsynaptic_cell < 0: errmsg = "Invalid post-synaptic cell: %s (gid_counter=%d)" % (postsynaptic_cell, simulator.state.gid_counter) raise errors.ConnectionError(errmsg) for name, value in connection_parameters.items(): if isinstance(value, (float, int)): connection_parameters[name] = repeat(value) assert postsynaptic_cell.local for pre_idx, values in core.ezip(presynaptic_indices, *connection_parameters.values()): parameters = dict(zip(connection_parameters.keys(), values)) #logger.debug("Connecting neuron #%s to neuron #%s with synapse type %s, receptor type %s, parameters %s", pre_idx, postsynaptic_index, self.synapse_type, self.receptor_type, parameters) self._connections[postsynaptic_index][pre_idx].append( self.synapse_type.connection_type(self, pre_idx, postsynaptic_index, **parameters))
def _convergent_connect(self, presynaptic_indices, postsynaptic_index, **connection_parameters): """ Connect a neuron to one or more other neurons with a static connection. `presynaptic_cells` -- a 1D array of pre-synaptic cell IDs `postsynaptic_cell` -- the ID of the post-synaptic cell. `connection_parameters` -- each parameter should be either a 1D array of the same length as `sources`, or a single value. """ #logger.debug("Convergent connect. Weights=%s" % connection_parameters['weight']) postsynaptic_cell = self.post[postsynaptic_index] if not isinstance( postsynaptic_cell, int ) or postsynaptic_cell > simulator.state.gid_counter or postsynaptic_cell < 0: errmsg = "Invalid post-synaptic cell: %s (gid_counter=%d)" % ( postsynaptic_cell, simulator.state.gid_counter) raise errors.ConnectionError(errmsg) for name, value in connection_parameters.items(): if isinstance(value, (float, int)): connection_parameters[name] = repeat(value) assert postsynaptic_cell.local for pre_idx, values in core.ezip(presynaptic_indices, *connection_parameters.values()): parameters = dict(zip(connection_parameters.keys(), values)) #logger.debug("Connecting neuron #%s to neuron #%s with synapse type %s, receptor type %s, parameters %s", pre_idx, postsynaptic_index, self.synapse_type, self.receptor_type, parameters) self._connections[postsynaptic_index][pre_idx].append( self.synapse_type.connection_type(self, pre_idx, postsynaptic_index, **parameters))
def _convergent_connect(self, presynaptic_indices, postsynaptic_index, **connection_parameters): for name, value in connection_parameters.items(): if isinstance(value, float): connection_parameters[name] = repeat(value) for pre_idx, other in ezip(presynaptic_indices, *connection_parameters.values()): other_attributes = dict(zip(connection_parameters.keys(), other)) self.connections.append(Connection(pre_idx, postsynaptic_index, **other_attributes))
def _convergent_connect(self, presynaptic_indices, postsynaptic_index, **connection_parameters): for name, value in connection_parameters.items(): if isinstance(value, float): connection_parameters[name] = repeat(value) for pre_idx, other in ezip(presynaptic_indices, *connection_parameters.values()): other_attributes = dict(zip(connection_parameters.keys(), other)) self.connections.append( Connection(pre_idx, postsynaptic_index, **other_attributes))