brain
Class RelisiModule

java.lang.Object
  extended by brain.Module
      extended by brain.RelisiModule
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
AdaptiveRelisiModule

public class RelisiModule
extends Module
implements java.io.Serializable

Rate encoding leaky integrator with silent inhibition (RELISI)

See Also:
Serialized Form

Field Summary
 java.util.List<java.lang.Double> membranePotentials
           
 
Fields inherited from class brain.Module
activities, biases, changeListeners, elapsedTime, elapsedTimeSteps, forwardModules, receptors
 
Constructor Summary
RelisiModule()
          Creates an empty network.
RelisiModule(double[][] adjacencyMatrix, double[] activities, double[] leaks)
          Creates a network corresponding to the given adjacency matrix with given activities and leaks.
RelisiModule(double[][] adjacencyMatrix, java.util.Random random)
          Creates a network corresponding to the given adjacency matrix with random activities and leaks.
RelisiModule(java.io.File file)
          Creates a network according to the specified file.
RelisiModule(int size, double linkProbability)
          Creates an Erdős–Rényi network of size n and edge probability p.
RelisiModule(int size, double linkProbability, java.util.Random random)
          Creates an Erdős–Rényi network of size n and edge probability p.
 
Method Summary
 void addNeuron(double activity)
           
protected  double calculateMembranePotential(int i, double deltaTime)
          x_i(t + \Delta t) = x_i(t) + \left[ \left( \sum_{j = 1}^{N} z_{i j} y_j - \Gamma_i \right) x_i + \sum_{j = 1}^{N} w_{i j} y_j \right] \Delta t
 void calculateOneSelfConsistentIteration(double damping)
          Calculates the self consistent solution.
protected  void calculateOneTimeStep(double deltaTime)
          calculates one time step of the simulation calculation This method has to be implemented by subclasses.
static RelisiModule fromXML(java.io.File file)
           
 double getLeak(int i)
           
 java.util.List<java.lang.Double> getLeaks()
           
 double getMembranePotential(int index)
          Gets the membrane potential of a given node.
 java.util.List<java.lang.Double> getMembranePotentials()
          Gets the membrane potentials of all nodes.
 void normalizeLinks()
           
 void removeNeuron(int index)
           
 void reset()
           
 void setActivities(java.util.List<java.lang.Double> activities)
          Sets the activities of all node.
 void setActivity(int index, double activity)
          Sets the activity of a given node.
 void setLeak(int i, double leak)
           
 void setLeaks(double leak)
          Sets the leak for the whole network.
 void setMembranePotential(int index, double membranePotential)
          Sets the membrane potential of a given node.
 void setMembranePotentials(java.util.List<java.lang.Double> membranePotentials)
          Sets the membrane potentials of all node.
 double transferFunction(double potential, int neuron)
          Maps the membrane potential x ∈ [0, ∞) to the rate coding activity y ∈ [0, 1].
 java.util.List<java.lang.Double> transferFunction(java.util.List<java.lang.Double> potentials)
          vectorial form of @see transferFunction
 double transferFunctionInverse(double activity, int neuron)
          inverse of @see transferFunction
 java.util.List<java.lang.Double> transferFunctionInverse(java.util.List<java.lang.Double> activities)
          vectorial form of @see transferFunctionInverse
 void updateActivities()
          Updates the activities directly.
 void updateActivity(int neuron)
          Updates the activities directly.
 
Methods inherited from class brain.Module
addAfferentModule, addBias, addBias, addChangeListener, addForwardModule, addReceptor, createDotGraph, createGraphMLGraph, createTGFGraph, getActiveClique, getActivities, getActivity, getAfferentLink, getAfferentLinks, getAfferentModules, getBias, getBiases, getCliqueGraph, getCliques, getDegreeDistribution, getElapsedTime, getElapsedTimeSteps, getForwardModules, getLink, getLinkProbability, getLinks, getName, getNeighbors, getNeighbors, getNodeDegree, getNodeDegrees, getNodeInDegree, getNodeInDegrees, getNodeOutDegree, getNodeOutDegrees, getPositiveLinkAverage, getReceptor, getReceptors, getSize, hasAfferentModule, hasForwardModule, notifyStateChanged, performOneTimeStep, removeAfferentModule, removeAfferentModules, removeChangeListener, removeForwardModule, removeForwardModules, setAfferentLink, setAfferentLinks, setBias, setBias, setLink, setLink, setName, setPositiveLinkAverage, setSize, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

membranePotentials

public java.util.List<java.lang.Double> membranePotentials
Constructor Detail

RelisiModule

public RelisiModule(double[][] adjacencyMatrix,
                    double[] activities,
                    double[] leaks)
Creates a network corresponding to the given adjacency matrix with given activities and leaks.

Parameters:
adjacencyMatrix -
activities -
leaks -

RelisiModule

public RelisiModule(double[][] adjacencyMatrix,
                    java.util.Random random)
Creates a network corresponding to the given adjacency matrix with random activities and leaks.

Parameters:
adjacencyMatrix -

RelisiModule

public RelisiModule(int size,
                    double linkProbability)
Creates an Erdős–Rényi network of size n and edge probability p.

Parameters:
size - The size n.
linkProbability - The edge probability p.

RelisiModule

public RelisiModule(int size,
                    double linkProbability,
                    java.util.Random random)
Creates an Erdős–Rényi network of size n and edge probability p.

Parameters:
size - The size n.
linkProbability - The edge probability p.

RelisiModule

public RelisiModule()
Creates an empty network.


RelisiModule

public RelisiModule(java.io.File file)
             throws java.io.IOException
Creates a network according to the specified file.

Parameters:
file -
Throws:
java.io.IOException
Method Detail

fromXML

public static RelisiModule fromXML(java.io.File file)
                            throws java.io.IOException
Throws:
java.io.IOException

calculateMembranePotential

protected double calculateMembranePotential(int i,
                                            double deltaTime)
x_i(t + \Delta t) = x_i(t) + \left[ \left( \sum_{j = 1}^{N} z_{i j} y_j - \Gamma_i \right) x_i + \sum_{j = 1}^{N} w_{i j} y_j \right] \Delta t

Parameters:
i -
deltaTime -
Returns:
activity

calculateOneSelfConsistentIteration

public void calculateOneSelfConsistentIteration(double damping)
Calculates the self consistent solution. update rule: x_i(n + 1) = \frac{\sum_{j = 1}^{N} w_{i j} y_j(n)}{\Gamma_i - \sum_{j = 1}^{N} z_{i j} y_j(n)} damping: x_{n + 1} = (1 - d) f(x_n) + d x_n


calculateOneTimeStep

protected void calculateOneTimeStep(double deltaTime)
Description copied from class: Module
calculates one time step of the simulation calculation This method has to be implemented by subclasses.

Specified by:
calculateOneTimeStep in class Module

transferFunction

public double transferFunction(double potential,
                               int neuron)
Maps the membrane potential x ∈ [0, ∞) to the rate coding activity y ∈ [0, 1].

Parameters:
potential -
Returns:
activity

transferFunction

public java.util.List<java.lang.Double> transferFunction(java.util.List<java.lang.Double> potentials)
vectorial form of @see transferFunction


transferFunctionInverse

public double transferFunctionInverse(double activity,
                                      int neuron)
inverse of @see transferFunction


transferFunctionInverse

public java.util.List<java.lang.Double> transferFunctionInverse(java.util.List<java.lang.Double> activities)
vectorial form of @see transferFunctionInverse


addNeuron

public void addNeuron(double activity)
Overrides:
addNeuron in class Module

removeNeuron

public void removeNeuron(int index)
Overrides:
removeNeuron in class Module

setActivity

public void setActivity(int index,
                        double activity)
Sets the activity of a given node. Also sets the corresponding membrane potential of that node.

Overrides:
setActivity in class Module

setActivities

public void setActivities(java.util.List<java.lang.Double> activities)
Sets the activities of all node. Also sets the corresponding membrane potentials of that nodes.

Overrides:
setActivities in class Module

updateActivity

public void updateActivity(int neuron)
Updates the activities directly. Calling this function is maybe necessary after changing parameters of the transfer function or changing membrane potentials.


updateActivities

public void updateActivities()
Updates the activities directly. Calling this function is maybe necessary after changing parameters of the transfer function or changing membrane potentials.


getMembranePotential

public double getMembranePotential(int index)
Gets the membrane potential of a given node.


getMembranePotentials

public java.util.List<java.lang.Double> getMembranePotentials()
Gets the membrane potentials of all nodes.


setMembranePotential

public void setMembranePotential(int index,
                                 double membranePotential)
Sets the membrane potential of a given node. Also sets the corresponding activity of that node.


setMembranePotentials

public void setMembranePotentials(java.util.List<java.lang.Double> membranePotentials)
Sets the membrane potentials of all node. Also sets the corresponding activities of that nodes.


setLeak

public void setLeak(int i,
                    double leak)

setLeaks

public void setLeaks(double leak)
Sets the leak for the whole network.

Parameters:
leak -

getLeak

public double getLeak(int i)

getLeaks

public java.util.List<java.lang.Double> getLeaks()

reset

public void reset()
Overrides:
reset in class Module

normalizeLinks

public void normalizeLinks()