NOTE: the latest version of this documentation can be found on docs.neuroml.org!


For more information on NeuroML 2 and LEMS see here.
Note: these descriptions have been updated to the latest NeuroML v2.1 definitions, using the latest version of LEMS!

Inputs

NeuroML2 ComponentType definitions from Inputs.xml
Original LEMS ComponentType definitions: Inputs.xml
Schema against which NeuroML based on these should be valid: NeuroML_v2.1.xsd

 
basePointCurrent

    extends baseStandalone

Base type for all ComponentTypes which produce a current i (with dimension current)
Exposures i
    The total (time varying) current produced by this ComponentType
current
 
baseVoltageDepPointCurrent

    extends basePointCurrent

Base type for all ComponentTypes which produce a current i (with dimension current) and require a membrane potential v exposed on the parent Component
Exposures i    (from basePointCurrent) current
Requirements v voltage
 
baseVoltageDepPointCurrentSpiking

    extends baseVoltageDepPointCurrent

Base type for all ComponentTypes which produce a current i, require a membrane potential v exposed on the parent and emit spikes (on a port spike). The exposed variable tsince can be used for plotting the time since the Component has spiked last
Exposures i    (from basePointCurrent) current
tsince
    Time since the last spike was emitted
time
Requirements v    (from baseVoltageDepPointCurrent) voltage
Event Ports spike
    Port on which spikes are emitted
Direction: out
 
basePointCurrentDL
Base type for all ComponentTypes which produce a dimensionless current I. There will eventually be dimensionless equivalents of all the core current producing ComponentTypes such as pulseGenerator, sineGenerator and rampGenerator
Exposures I
    The total (time varying) current produced by this ComponentType
Dimensionless
 
baseVoltageDepPointCurrentDL

    extends basePointCurrentDL

Base type for all ComponentTypes which produce a dimensionless current I and require a dimensionless membrane potential V exposed on the parent Component
Exposures I    (from basePointCurrentDL) Dimensionless
Requirements V Dimensionless
 
baseSpikeSource
Base for any ComponentType whose main purpose is to emit spikes (on a port spike). The exposed variable tsince can be used for plotting the time since the Component has spiked last
Exposures tsince
    Time since the last spike was emitted
time
Event Ports spike
    Port on which spikes are emitted
Direction: out
 
spikeGenerator

    extends baseSpikeSource

Simple generator of spikes at a regular interval set by period.
Parameters period time
Constants SMALL_TIME = 1e-9ms time
Exposures tnext
    When the next spike should ideally be emitted (dt permitting)
time
tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

    tsince    time (exposed as tsince)
    tnext    time (exposed as tnext)

On Start

    tsince = 0
    tnext = period

On Conditions

    IF tnext-t < SMALL_TIME THEN
        tsince = 0
        tnext = tnext+period
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1
    d tnext /dt = 0

 
spikeGeneratorRandom

    extends baseSpikeSource

Generator of spikes with a random interspike interval of at least minISI and at most maxISI
Parameters maxISI time
minISI time
Constants MSEC = 1ms time
Exposures isi
    The interval until the next spike
time
tnext
    When the next spike should ideally be emitted (dt permitting)
time
tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

    tsince    time (exposed as tsince)
    tnext    time (exposed as tnext)
    isi    time (exposed as isi)

On Start

    tsince = 0
    isi = minISI + MSEC * random((maxISI - minISI) / MSEC)
    tnext = isi

On Conditions

    IF t > tnext THEN
        isi = minISI + MSEC * random((maxISI - minISI) / MSEC)
        tsince = 0
        tnext = tnext+isi
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1
    d tnext /dt = 0

 
spikeGeneratorPoisson

    extends baseSpikeSource

Generator of spikes whose ISI is distributed according to an exponential pdf with scale 1/_averageRate
Parameters averageRate per_time
Constants SMALL_TIME = 1e-9ms time
Exposures isi time
tnextIdeal time
tnextUsed time
tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

    tsince    time (exposed as tsince)
    tnextIdeal    time (exposed as tnextIdeal)
    tnextUsed    time (exposed as tnextUsed)
    isi    time (exposed as isi)

On Start

    tsince = 0
    isi = -1 * log(random(1)) / averageRate
    tnextIdeal = isi
    tnextUsed = isi

On Conditions

    IF t > tnextUsed THEN
        tsince = 0
        isi = -1 * log(random(1)) / averageRate
        tnextIdeal = (tnextIdeal+isi)
        tnextUsed = tnextIdeal*H( (tnextIdeal-t)/t ) + (t+SMALL_TIME)*H( (t-tnextIdeal)/t )
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1
    d tnextUsed /dt = 0
    d tnextIdeal /dt = 0

 
spikeGeneratorRefPoisson

    extends spikeGeneratorPoisson

Generator of spikes whose ISI distribution is the maximum entropy distribution over [_minimumISI, +infinity) with mean 1/_averageRate
Parameters averageRate    (from spikeGeneratorPoisson) per_time
minimumISI time
Derived Parameters averageIsi = 1 / averageRate time
Exposures isi    (from spikeGeneratorPoisson) time
tnextIdeal    (from spikeGeneratorPoisson) time
tnextUsed    (from spikeGeneratorPoisson) time
tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

    tsince    time (exposed as tsince)
    tnextIdeal    time (exposed as tnextIdeal)
    tnextUsed    time (exposed as tnextUsed)
    isi    time (exposed as isi)

On Start

    tsince = 0
    isi = minimumISI - (averageIsi-minimumISI) * log(random(1))
    tnextIdeal = isi
    tnextUsed = isi

On Conditions

    IF t > tnextUsed THEN
        tsince = 0
        isi = minimumISI - (averageIsi-minimumISI) * log(random(1))
        tnextIdeal = (tnextIdeal+isi)
        tnextUsed = tnextIdeal*H( (tnextIdeal-t)/t ) + (t+SMALL_TIME)*H( (t-tnextIdeal)/t )
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1
    d tnextUsed /dt = 0
    d tnextIdeal /dt = 0

 
poissonFiringSynapse

    extends baseVoltageDepPointCurrentSpiking

Poisson spike generator connected to single synapse providing an input current
Parameters averageRate per_time
Derived Parameters averageIsi = 1 / averageRate time
Paths spikeTarget
Component References synapse baseSynapse
Constants SMALL_TIME = 1e-9ms time
Exposures i    (from basePointCurrent) current
isi time
tnextIdeal time
tnextUsed time
tsince    (from baseVoltageDepPointCurrentSpiking) time
Requirements v    (from baseVoltageDepPointCurrent) voltage
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
spike
    Port on which spikes are emitted
Direction: out
spike    (from baseVoltageDepPointCurrentSpiking) Direction: out
Dynamics Structure

    WITH this AS a
    WITH spikeTarget AS b
    CHILD INSTANCE: synapse
    EVENT CONNECTION from a TO b, RECEIVER: , TARGET PORT:

State Variables

    tsince    time (exposed as tsince)
    tnextIdeal    time (exposed as tnextIdeal)
    tnextUsed    time (exposed as tnextUsed)
    isi    time (exposed as isi)

On Start

    tsince = 0
    isi = - averageIsi * log(random(1))
    tnextIdeal = isi
    tnextUsed = isi

On Conditions

    IF t > tnextUsed THEN
        tsince = 0
        isi = - averageIsi * log(1 - random(1))
        tnextIdeal = (tnextIdeal+isi)
        tnextUsed = tnextIdeal*H( (tnextIdeal-t)/t ) + (t+SMALL_TIME)*H( (t-tnextIdeal)/t )
        EVENT OUT on port spike

Derived Variables

    iSyn = synapse->i    
    i = weight * iSyn     (exposed as i)

Time Derivatives

    d tsince /dt = 1
    d tnextUsed /dt = 0
    d tnextIdeal /dt = 0

 
transientPoissonFiringSynapse

    extends baseVoltageDepPointCurrentSpiking

Poisson spike generator with delay and duration connected to single synapse providing an input current. Similar to ComponentType poissonFiringSynapse.
Parameters averageRate per_time
delay time
duration time
Derived Parameters averageIsi = 1 / averageRate time
Paths spikeTarget
Component References synapse baseSynapse
Constants SMALL_TIME = 1e-9ms time
LONG_TIME = 1e9hour time
Exposures i    (from basePointCurrent) current
isi time
tnextIdeal time
tnextUsed time
tsince    (from baseVoltageDepPointCurrentSpiking) time
Requirements v    (from baseVoltageDepPointCurrent) voltage
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
spike
    Port on which spikes are emitted
Direction: out
spike    (from baseVoltageDepPointCurrentSpiking) Direction: out
Dynamics Structure

    WITH this AS a
    WITH spikeTarget AS b
    CHILD INSTANCE: synapse
    EVENT CONNECTION from a TO b, RECEIVER: , TARGET PORT:

State Variables

    tsince    time (exposed as tsince)
    tnextIdeal    time (exposed as tnextIdeal)
    tnextUsed    time (exposed as tnextUsed)
    isi    time (exposed as isi)

On Start

    tsince = 0
    isi = - averageIsi * log(1 - random(1)) +delay
    tnextIdeal = isi
    tnextUsed = isi

On Conditions

    IF t > tnextUsed THEN
        tsince = 0
        isi = - averageIsi * log(1 - random(1))
        tnextIdeal = (tnextIdeal+isi) + H(((t+isi) - (delay+duration))/duration)*LONG_TIME
        tnextUsed = tnextIdeal*H( (tnextIdeal-t)/t ) + (t+SMALL_TIME)*H( (t-tnextIdeal)/t )
        EVENT OUT on port spike

Derived Variables

    iSyn = synapse->i    
    i = weight * iSyn     (exposed as i)

Time Derivatives

    d tsince /dt = 1
    d tnextUsed /dt = 0
    d tnextIdeal /dt = 0

 
timedSynapticInput

    extends baseVoltageDepPointCurrentSpiking

Spike array connected to a single synapse, producing current triggered by each spike in the array
Paths spikeTarget
Component References synapse baseSynapse
Children elements spikes spike
Exposures i    (from basePointCurrent) current
tsince    (from baseVoltageDepPointCurrentSpiking) time
Requirements v    (from baseVoltageDepPointCurrent) voltage
Event Ports in
    This will receive events from the children
Direction: in
spike    (from baseVoltageDepPointCurrentSpiking) Direction: out
Dynamics Structure

    WITH this AS a
    WITH spikeTarget AS b
    CHILD INSTANCE: synapse
    EVENT CONNECTION from a TO b, RECEIVER: , TARGET PORT:

State Variables

    tsince    time (exposed as tsince)

On Events

    EVENT IN on port: in
        tsince = 0
        EVENT OUT on port spike

Derived Variables

    iSyn = synapse->i    
    i = weight * iSyn     (exposed as i)

Time Derivatives

    d tsince /dt = 1

 
pulseGenerator

    extends basePointCurrent

Generates a constant current pulse of a certain amplitude for a specified duration after a delay. Scaled by weight, if set
Parameters amplitude current
delay time
duration time
Exposures i    (from basePointCurrent) current
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
Dynamics State Variables

    i    current (exposed as i)

On Conditions

    IF t < delay THEN
        i = 0

    IF t >= delay AND t < duration + delay THEN
        i = weight * amplitude

    IF t >= duration + delay THEN
        i = 0

On Events

    EVENT IN on port: in

 
compoundInput

    extends basePointCurrent

Generates a current which is the sum of all its child basePointCurrent elements
Children elements currents basePointCurrent
Exposures i    (from basePointCurrent) current
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
Dynamics On Events

    EVENT IN on port: in

Derived Variables

    i_total = currents[*]->i (reduce method: add)    
    i = weight * i_total     (exposed as i)

 
compoundInputDL

    extends basePointCurrentDL

Generates a current which is the sum of all its child basePointCurrentDL elements
Children elements currents basePointCurrentDL
Exposures I    (from basePointCurrentDL) Dimensionless
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
Dynamics On Events

    EVENT IN on port: in

Derived Variables

    I_total = currents[*]->I (reduce method: add)    
    I = weight * I_total     (exposed as I)

 
pulseGeneratorDL

    extends basePointCurrentDL

Dimensionless equivalent of pulseGenerator. Generates a constant current pulse of a certain amplitude for a specified duration after a delay
Parameters amplitude Dimensionless
delay time
duration time
Exposures I    (from basePointCurrentDL) Dimensionless
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
Dynamics State Variables

    I    Dimensionless (exposed as I)

On Conditions

    IF t < delay THEN
        I = 0

    IF t >= delay AND t < duration + delay THEN
        I = weight * amplitude

    IF t >= duration + delay THEN
        I = 0

On Events

    EVENT IN on port: in

 
sineGenerator

    extends basePointCurrent

Generates a sinusoidally varying current after a time delay, for a fixed duration. The period and maximum amplitude of the current can be set as well as the phase at which to start.
Parameters amplitude current
delay time
duration time
period time
phase Dimensionless
Exposures i    (from basePointCurrent) current
Event Ports in Direction: in
Dynamics State Variables

    i    current (exposed as i)

On Conditions

    IF t < delay THEN
        i = 0

    IF t >= delay AND t < duration+delay THEN
        i = weight * amplitude * sin(phase + (2 * 3.14159265 * (t-delay)/period) )

    IF t >= duration+delay THEN
        i = 0

On Events

    EVENT IN on port: in

 
sineGeneratorDL

    extends basePointCurrentDL

Generates a sinusoidally varying current after a time delay, for a fixed duration. The period and maximum amplitude of the current can be set as well as the phase at which to start.
Parameters amplitude Dimensionless
delay time
duration time
period time
phase Dimensionless
Exposures I    (from basePointCurrentDL) Dimensionless
Event Ports in Direction: in
Dynamics State Variables

    I    Dimensionless (exposed as I)

On Conditions

    IF t < delay THEN
        I = 0

    IF t >= delay AND t < duration+delay THEN
        I = weight * amplitude * sin(phase + (2 * 3.14159265 * (t-delay)/period) )

    IF t >= duration+delay THEN
        I = 0

On Events

    EVENT IN on port: in

 
rampGenerator

    extends basePointCurrent

Generates a ramping current after a time delay, for a fixed duration. During this time the current steadily changes from startAmplitude to finishAmplitude.
Parameters baselineAmplitude current
delay time
duration time
finishAmplitude current
startAmplitude current
Exposures i    (from basePointCurrent) current
Event Ports in Direction: in
Dynamics State Variables

    i    current (exposed as i)

On Start

    i = baselineAmplitude

On Conditions

    IF t < delay THEN
        i = weight * baselineAmplitude

    IF t >= delay AND t < duration+delay THEN
        i = weight * (startAmplitude + (finishAmplitude - startAmplitude) * (t - delay) / (duration))

    IF t >= duration+delay THEN
        i = weight * baselineAmplitude

On Events

    EVENT IN on port: in

 
rampGeneratorDL

    extends basePointCurrentDL

Generates a ramping current after a time delay, for a fixed duration. During this time the dimensionless current steadily changes from startAmplitude to finishAmplitude.
Parameters baselineAmplitude Dimensionless
delay time
duration time
finishAmplitude Dimensionless
startAmplitude Dimensionless
Exposures I    (from basePointCurrentDL) Dimensionless
Event Ports in Direction: in
Dynamics State Variables

    I    Dimensionless (exposed as I)

On Start

    I = baselineAmplitude

On Conditions

    IF t < delay THEN
        I = weight * baselineAmplitude

    IF t >= delay AND t < duration+delay THEN
        I = weight * (startAmplitude + (finishAmplitude - startAmplitude) * (t - delay) / (duration))

    IF t >= duration+delay THEN
        I = weight * baselineAmplitude

On Events

    EVENT IN on port: in

 
voltageClamp

    extends baseVoltageDepPointCurrent

Voltage clamp. Applies a variable current i to try to keep parent at targetVoltage. Not yet fully tested!!! Consider using voltageClampTriple!!
Parameters delay time
duration time
simpleSeriesResistance resistance
targetVoltage voltage
Exposures i    (from basePointCurrent) current
Requirements v    (from baseVoltageDepPointCurrent) voltage
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
Dynamics State Variables

    i    current (exposed as i)

On Conditions

    IF t < delay THEN
        i = 0

    IF t >= delay THEN
        i = weight * (targetVoltage - v) / simpleSeriesResistance

    IF t > duration + delay THEN
        i = 0

On Events

    EVENT IN on port: in

 
voltageClampTriple

    extends baseVoltageDepPointCurrent

Voltage clamp with 3 clamp levels. Applies a variable current i (through simpleSeriesResistance) to try to keep parent cell at conditioningVoltage until time delay, testingVoltage until delay + duration, and returnVoltage afterwards. Only enabled if active = 1.
Parameters active Dimensionless
conditioningVoltage voltage
delay time
duration time
returnVoltage voltage
simpleSeriesResistance resistance
testingVoltage voltage
Exposures i    (from basePointCurrent) current
Requirements v    (from baseVoltageDepPointCurrent) voltage
Event Ports in
    Note this is not used here. Will be removed in future
Direction: in
Dynamics State Variables

    i    current (exposed as i)

On Conditions

    IF active = 1 AND t < delay THEN
        i = weight * (conditioningVoltage - v) / simpleSeriesResistance

    IF active = 1 AND t >= delay THEN
        i = weight * (testingVoltage - v) / simpleSeriesResistance

    IF active = 1 AND t > duration + delay THEN
        i = weight * (returnVoltage - v) / simpleSeriesResistance

On Events

    EVENT IN on port: in

 
spikeArray

    extends baseSpikeSource

Set of spike ComponentTypes, each emitting one spike at a certain time. Can be used to feed a predetermined spike train into a cell
Children elements spikes spike
Exposures tsince    (from baseSpikeSource) time
Event Ports in
    This will receive events from the children
Direction: in
spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

    tsince    time (exposed as tsince)

On Start

    tsince = 0

On Events

    EVENT IN on port: in
        tsince = 0
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1

 
spike

    extends baseSpikeSource

Emits a single spike at the specified time
Parameters time time
Exposures spiked
    0 signals not yet spiked, 1 signals has spiked
Dimensionless
tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics Structure

    WITH this AS a
    WITH parent AS b
    EVENT CONNECTION from a TO b, RECEIVER: , TARGET PORT:

State Variables

    tsince    time (exposed as tsince)
    spiked    Dimensionless (exposed as spiked)

On Start

    tsince = 0

On Conditions

    IF (t >= time) AND (spiked = 0) THEN
        spiked = 1
        tsince = 0
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1