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
Modifier and Type | Class and Description |
---|---|
static class |
IzhikevichSpikeGenerator.Preset
Preset parameter values corresponding to different cell types.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
U
Recovery state variable
|
static java.lang.String |
V
Voltage state variable
|
Constructor and Description |
---|
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) |
Modifier and Type | Method and Description |
---|---|
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) |
public static final java.lang.String V
public static final java.lang.String U
public IzhikevichSpikeGenerator()
public IzhikevichSpikeGenerator(IzhikevichSpikeGenerator.Preset preset)
preset
- A set of parameter values corresponding to a predefined cell typepublic IzhikevichSpikeGenerator(float a, float b, float c, float d)
a
- time scale of recovery variableb
- sensitivity of recovery variablec
- voltage reset valued
- recovery variable reset changepublic IzhikevichSpikeGenerator(float a, float b, float c, float d, float initialVoltage)
a
- time scale of recovery variableb
- sensitivity of recovery variablec
- voltage reset valued
- recovery variable reset changeinitialVoltage
- initial voltage value (varying across neurons can prevent synchrony
at start of simulation)public IzhikevichSpikeGenerator.Preset getPreset()
public void setPreset(IzhikevichSpikeGenerator.Preset preset)
preset
- An enumerated parameter value presetpublic float getA()
public void setA(float a)
a
- time scale of recovery variablepublic float getB()
public void setB(float b)
b
- sensitivity of recovery variablepublic float getC()
public void setC(float c)
c
- voltage reset valuepublic float getD()
public void setD(float d)
d
- recovery variable reset changepublic void reset(boolean randomize)
reset
in interface Resettable
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.Resettable.reset(boolean)
public InstantaneousOutput run(float[] time, float[] current)
SpikeGenerator
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.
run
in interface SpikeGenerator
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)SpikeGenerator.run(float[], float[])
public TimeSeries getHistory(java.lang.String stateName) throws SimulationException
Probeable
getHistory
in interface Probeable
stateName
- A state variable nameSimulationException
- if the Probeable does not have the requested stateProbeable.getHistory(String)
public java.util.Properties listStates()
listStates
in interface Probeable
Probeable.listStates()
public SimulationMode getMode()
getMode
in interface SimulationMode.ModeConfigurable
SimulationMode.ModeConfigurable.getMode()
public void setMode(SimulationMode mode)
SimulationMode.ModeConfigurable
setMode
in interface SimulationMode.ModeConfigurable
mode
- SimulationMode in which it is desired that the object runs.SimulationMode.ModeConfigurable.setMode(ca.nengo.model.SimulationMode)
public SpikeGenerator clone() throws java.lang.CloneNotSupportedException
clone
in interface SpikeGenerator
clone
in class java.lang.Object
java.lang.CloneNotSupportedException
- if clone can't be made