Nengo.ca

ca.nengo.model
Interface Termination

All Superinterfaces:
java.lang.Cloneable, Resettable, java.io.Serializable
All Known Subinterfaces:
PlasticNodeTermination
All Known Implementing Classes:
BasicTermination, BiasTermination, DecodedTermination, EnsembleTermination, LinearExponentialTermination, ModulatedPlasticEnsembleTermination, NetworkImpl.TerminationWrapper, PassthroughNode.PassthroughTermination, PESTermination, PlasticEnsembleTermination, PreLearnTermination, STDPTermination

public interface Termination
extends java.io.Serializable, Resettable, java.lang.Cloneable

A destination for information in a circuit model. A Termination is normally associated with a neural Ensemble or an individual Neuron, although other terminations could be modelled (eg muscles).

Terminations onto neural Ensembles can be modelled in two ways. First, a Termination can model a set of axons that end at an Ensemble. In this case the dimension of the Termination equals the number of axons. Associated with each Neuron in the Ensemble will be synaptic weights (possibly zero) corresponding to each axon (i.e. each dimension of the Termination).

Alternatively, in a connection between two NEFEnsembles, a termination may have a smaller number of dimensions that summarize activity in all the axons. In this case, each dimension of the termination corresponds to a dimension of a represented vector or function. Synaptic weights are not stored anywhere explicitly. Synaptic weights are instead decomposed into decoding vectors, a transformation matrix, and encoding vectors. The decoding vectors are associated with the sending Ensemble. The encoding vectors are associated with the receiving ensemble. The transformation matrix is a property of the projection, but it happens that we keep it with the receiving Ensemble, for various reasons. See Eliasmith & Anderson, 2003 for related theory.

Note that in each case, a corresponding Origin and Termination have the same dimensionality, and that this is the dimensionality associated with the Origin. The receiving Ensemble is responsible for the weight matrix in the first case, and for the transformation matrix in the second case, which transform inputs into dimensions that the receiving Ensemble can use.

Note also that the second method is more efficient when the number of neurons in each ensemble is much larger than the number of dimensions in represented variables, as is typical.

TODO: should probably extract properties-related methods into another interface (Configurable?) possibly supporting types


Method Summary
 Termination clone()
           
 Termination clone(Node node)
          Clone method that changes necessary parameters to point to a new parent, for use in cloning ensembles, etc.
 int getDimensions()
           
 InstantaneousOutput getInput()
           
 boolean getModulatory()
           
 java.lang.String getName()
           
 Node getNode()
           
 float getTau()
           
 void setModulatory(boolean modulatory)
           
 void setTau(float tau)
           
 void setValues(InstantaneousOutput values)
           
 
Methods inherited from interface ca.nengo.model.Resettable
reset
 

Method Detail

getName

java.lang.String getName()
Returns:
Name of this Termination (unique in the scope of the object the which the Termination is connected, eg the Neuron or Ensemble).

getDimensions

int getDimensions()
Returns:
Dimensionality of information entering this Termination (eg number of axons, or dimension of decoded function of variables represented by sending Ensemble)

setValues

void setValues(InstantaneousOutput values)
               throws SimulationException
Parameters:
values - InstantaneousOutput (eg from another Ensemble) to apply to this Termination.
Throws:
SimulationException - if the given values have the wrong dimension

getNode

Node getNode()
Returns:
The Node to which this Termination belongs

getTau

float getTau()
Returns:
Time constant of dominant dynamics

setTau

void setTau(float tau)
            throws StructuralException
Parameters:
tau - Time constant of dominant dynamics
Throws:
StructuralException - if the time constant cannot be changed

getModulatory

boolean getModulatory()
Returns:
Whether the Termination is modulatory, in the sense of neuromodulation, ie true if input via this Termination is not summed to drive a node, but influences node activity in some other way

setModulatory

void setModulatory(boolean modulatory)
Parameters:
modulatory - True if the Termination is to be modulatory

getInput

InstantaneousOutput getInput()
Returns:
Latest input to the termination.

clone

Termination clone()
                  throws java.lang.CloneNotSupportedException
Returns:
Valid clone
Throws:
java.lang.CloneNotSupportedException - if clone can't be made

clone

Termination clone(Node node)
                  throws java.lang.CloneNotSupportedException
Clone method that changes necessary parameters to point to a new parent, for use in cloning ensembles, etc.

Parameters:
node - New parent node
Returns:
A clone of the termination for the new parent ensemble
Throws:
java.lang.CloneNotSupportedException - if clone cannot be made

Nengo.ca