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 typesModifier and Type | Method and Description |
---|---|
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) |
reset
java.lang.String getName()
int getDimensions()
void setValues(InstantaneousOutput values) throws SimulationException
values
- InstantaneousOutput (eg from another Ensemble) to apply to this Termination.SimulationException
- if the given values have the wrong dimensionNode getNode()
float getTau()
void setTau(float tau) throws StructuralException
tau
- Time constant of dominant dynamicsStructuralException
- if the time constant cannot be changedboolean getModulatory()
void setModulatory(boolean modulatory)
modulatory
- True if the Termination is to be modulatoryInstantaneousOutput getInput()
Termination clone() throws java.lang.CloneNotSupportedException
java.lang.CloneNotSupportedException
- if clone can't be madeTermination clone(Node node) throws java.lang.CloneNotSupportedException
node
- New parent nodejava.lang.CloneNotSupportedException
- if clone cannot be made