Nengo.ca

ca.nengo.model.neuron.impl
Class GruberSpikeGenerator

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

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

Model of spike generation in medium-spiny striatal neurons from: Gruber, Solla, Surmeier & Houk (2003) Modulation of striatal single units by expected reward: a spiny neuron model displaying dopamine-induced bistability, J Neurophysiol 90: 1095-1114.

See Also:
Serialized Form

Nested Class Summary
static class GruberSpikeGenerator.GruberDynamics
          Implements dynamics of Gruber et al.
 
Field Summary
static java.lang.String MEMBRANE_POTENTIAL
          String that is used for membrane potential
 
Constructor Summary
GruberSpikeGenerator()
          Create a spike generator that follows Gruber et al.'s medium-spiny striatal neuron model.
 
Method Summary
 SpikeGenerator clone()
           
 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()
           
 java.util.Properties listStates()
           
 void reset(boolean randomize)
           
 InstantaneousOutput run(float[] time, float[] current)
          Runs the model for a given time segment.
 void setDopamine(float dopamine)
           
 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).
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MEMBRANE_POTENTIAL

public static final java.lang.String MEMBRANE_POTENTIAL
String that is used for membrane potential

See Also:
Constant Field Values
Constructor Detail

GruberSpikeGenerator

public GruberSpikeGenerator()
Create a spike generator that follows Gruber et al.'s medium-spiny striatal neuron model.

Method Detail

setDopamine

public void setDopamine(float dopamine)
Parameters:
dopamine - Dopamine concentration (between 1 and 1.4)

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

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)

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(java.lang.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