ca.nengo.model.neuron.impl
Class PoissonSpikeGenerator

java.lang.Object
  extended by ca.nengo.model.neuron.impl.PoissonSpikeGenerator
All Implemented Interfaces:
SpikeGenerator, Resettable, SimulationMode.ModeConfigurable, java.io.Serializable, java.lang.Cloneable

public class PoissonSpikeGenerator
extends java.lang.Object
implements SpikeGenerator

A phenomenological SpikeGenerator that produces spikes according to a Poisson process with a rate that varies as a function of current. TODO: test

Author:
Bryan Tripp
See Also:
Serialized Form

Nested Class Summary
static class PoissonSpikeGenerator.LinearFactory
          Creates PoissonSpikeGenerators with linear response functions.
static class PoissonSpikeGenerator.LinearNeuronFactory
          A factory for neurons with linear or rectified linear response functions.
static class PoissonSpikeGenerator.SigmoidFactory
           
static class PoissonSpikeGenerator.SigmoidNeuronFactory
          A factory for neurons with sigmoid response functions.
 
Constructor Summary
PoissonSpikeGenerator()
          Uses a default sigmoid rate function
PoissonSpikeGenerator(Function rateFunction)
           
 
Method Summary
 SpikeGenerator clone()
           
 SimulationMode getMode()
           
 Function getRateFunction()
           
static void main(java.lang.String[] args)
           
 void reset(boolean randomize)
          This method does nothing, because a Poisson process is stateless.
 InstantaneousOutput run(float[] time, float[] current)
          Runs the model for a given time segment.
 void setMode(SimulationMode mode)
          Sets the object to run in either the given mode or the closest mode that it supports (all ModeConfigurables must support SimulationMode.DEFAULT, and must default to this mode).
 void setRateFunction(Function function)
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PoissonSpikeGenerator

public PoissonSpikeGenerator(Function rateFunction)
Parameters:
rateFunction - Maps input current to Poisson spiking rate

PoissonSpikeGenerator

public PoissonSpikeGenerator()
Uses a default sigmoid rate function

Method Detail

getRateFunction

public Function getRateFunction()
Returns:
Function that maps input current to Poisson spiking rate

setRateFunction

public void setRateFunction(Function function)
Parameters:
function - Function that maps input current to Poisson spiking rate

run

public InstantaneousOutput run(float[] time,
                               float[] current)
Description copied from interface: SpikeGenerator
Runs the model for a given time segment. The total time is meant to be short (eg 1/2ms), in that the output of the model is either a spike or no spike during this period of simulation time.

The model is responsible for maintaining its internal state, and the state is assumed to be consistent with the start time. That is, if a caller calls run({.001 .002}, ...) and then run({.501 .502}, ...), the results may not make any sense, but this is not the model's responsibility. Absolute times are provided to support explicitly time-varying models, and for the convenience of Probeable models.

Specified by:
run in interface SpikeGenerator
Parameters:
time - Array of points in time at which input current is defined. This includes at least the start and end times, and possibly intermediate times. (The SpikeGenerator model can use its own time step -- these times are only used to define the input.)
current - Driving current at each given point in time (assumed to be constant until next time point)
Returns:
true If there is a spike between the first and last times, false otherwise
See Also:
SpikeGenerator.run(float[], float[])

getMode

public SimulationMode getMode()
Specified by:
getMode in interface SimulationMode.ModeConfigurable
Returns:
The SimulationMode in which the object is running
See Also:
SimulationMode.ModeConfigurable.getMode()

setMode

public void setMode(SimulationMode mode)
Description copied from interface: SimulationMode.ModeConfigurable
Sets the object to run in either the given mode or the closest mode that it supports (all ModeConfigurables must support SimulationMode.DEFAULT, and must default to this mode).

Specified by:
setMode in interface SimulationMode.ModeConfigurable
Parameters:
mode - SimulationMode in which it is desired that the object runs.
See Also:
SimulationMode.ModeConfigurable.setMode(ca.nengo.model.SimulationMode)

reset

public void reset(boolean randomize)
This method does nothing, because a Poisson process is stateless.

Specified by:
reset in interface Resettable
Parameters:
randomize - True indicates that the object should be reset to a randomly selected initial state (the object must be aware of the distribution from which to draw from). False indicates that the object should be reset to a fixed initial state (which it must also know). Some objects may not support randomization of the initial state, in which case a fixed state will be used in either case.
See Also:
Resettable.reset(boolean)

clone

public SpikeGenerator clone()
                     throws java.lang.CloneNotSupportedException
Specified by:
clone in interface SpikeGenerator
Overrides:
clone in class java.lang.Object
Throws:
java.lang.CloneNotSupportedException

main

public static void main(java.lang.String[] args)