Nengo.ca

ca.nengo.model.neuron.impl
Class IzhikevichSpikeGenerator

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

public class IzhikevichSpikeGenerator
extends java.lang.Object
implements SpikeGenerator, Probeable

From Izhikevich, 2003, the model is:
v' = 0.04v*v + 5v + 140 - u + I
u' = a(bv - u)

If v >= 30 mV, then v := c and u := u + d (reset after spike)

v represents the membrane potential; u is a membrane recovery variable; a, b, c, and d are modifiable parameters

See Also:
Serialized Form

Nested Class Summary
static class IzhikevichSpikeGenerator.Preset
          Preset parameter values corresponding to different cell types.
 
Field Summary
static java.lang.String U
          Recovery state variable
static java.lang.String V
          Voltage state variable
 
Constructor Summary
IzhikevichSpikeGenerator()
          Constructor using "default" parameters
IzhikevichSpikeGenerator(float a, float b, float c, float d)
           
IzhikevichSpikeGenerator(float a, float b, float c, float d, float initialVoltage)
           
IzhikevichSpikeGenerator(IzhikevichSpikeGenerator.Preset preset)
           
 
Method Summary
 SpikeGenerator clone()
           
 float getA()
           
 float getB()
           
 float getC()
           
 float getD()
           
 TimeSeries getHistory(java.lang.String stateName)
          Note that the units of TimeSeries' for a given state do not change over time (ie at different time steps).
 SimulationMode getMode()
           
 IzhikevichSpikeGenerator.Preset getPreset()
           
 java.util.Properties listStates()
           
 void reset(boolean randomize)
           
 InstantaneousOutput run(float[] time, float[] current)
          Runs the model for a given time segment.
 void setA(float a)
           
 void setB(float b)
           
 void setC(float c)
           
 void setD(float d)
           
 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 setPreset(IzhikevichSpikeGenerator.Preset preset)
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

V

public static final java.lang.String V
Voltage state variable

See Also:
Constant Field Values

U

public static final java.lang.String U
Recovery state variable

See Also:
Constant Field Values
Constructor Detail

IzhikevichSpikeGenerator

public IzhikevichSpikeGenerator()
Constructor using "default" parameters


IzhikevichSpikeGenerator

public IzhikevichSpikeGenerator(IzhikevichSpikeGenerator.Preset preset)
Parameters:
preset - A set of parameter values corresponding to a predefined cell type

IzhikevichSpikeGenerator

public IzhikevichSpikeGenerator(float a,
                                float b,
                                float c,
                                float d)
Parameters:
a - time scale of recovery variable
b - sensitivity of recovery variable
c - voltage reset value
d - recovery variable reset change

IzhikevichSpikeGenerator

public IzhikevichSpikeGenerator(float a,
                                float b,
                                float c,
                                float d,
                                float initialVoltage)
Parameters:
a - time scale of recovery variable
b - sensitivity of recovery variable
c - voltage reset value
d - recovery variable reset change
initialVoltage - initial voltage value (varying across neurons can prevent synchrony at start of simulation)
Method Detail

getPreset

public IzhikevichSpikeGenerator.Preset getPreset()
Returns:
An enumerated parameter value preset

setPreset

public void setPreset(IzhikevichSpikeGenerator.Preset preset)
Parameters:
preset - An enumerated parameter value preset

getA

public float getA()
Returns:
time scale of recovery variable

setA

public void setA(float a)
Parameters:
a - time scale of recovery variable

getB

public float getB()
Returns:
sensitivity of recovery variable

setB

public void setB(float b)
Parameters:
b - sensitivity of recovery variable

getC

public float getC()
Returns:
voltage reset value

setC

public void setC(float c)
Parameters:
c - voltage reset value

getD

public float getD()
Returns:
recovery variable reset change

setD

public void setD(float d)
Parameters:
d - recovery variable reset change

reset

public void reset(boolean randomize)
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)

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[])

getHistory

public TimeSeries getHistory(java.lang.String stateName)
                      throws SimulationException
Description copied from interface: Probeable
Note that the units of TimeSeries' for a given state do not change over time (ie at different time steps). CAUTION: The TimeSeries should not contain a reference to any arrays that you are going to change later. The caller owns what you return.

Specified by:
getHistory in interface Probeable
Parameters:
stateName - A state variable name
Returns:
History of values for the named state variable. The history must cover the most recent network time step, and no more. There should be no overlap in the time points returned for different steps.
Throws:
SimulationException - if the Probeable does not have the requested state
See Also:
Probeable.getHistory(String)

listStates

public java.util.Properties listStates()
Specified by:
listStates in interface Probeable
Returns:
List of state variable names, eg "V", and associated descriptions eg "membrane potential (mV)"
See Also:
Probeable.listStates()

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)

clone

public SpikeGenerator clone()
                     throws java.lang.CloneNotSupportedException
Specified by:
clone in interface SpikeGenerator
Overrides:
clone in class java.lang.Object
Returns:
Valid clone
Throws:
java.lang.CloneNotSupportedException - if clone can't be made

Nengo.ca