For more information on NeuroML 2 and LEMS see here.
Note: these descriptions have been updated to the latest NeuroML v2beta4 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_v2beta4.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
Exposures tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

    tsince    time (exposed as tsince)

On Start

    tsince = 0

On Conditions

    IF tsince > period THEN
        tsince = 0
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1

 
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
tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

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

On Start

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

On Conditions

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

Time Derivatives

    d tsince /dt = 1

 
spikeGeneratorPoisson

    extends baseSpikeSource

Generator of spikes whose ISI is distributed according to an exponential pdf with scale 1/_averageRate
Parameters averageRate per_time
Derived Parameters averageIsi = 1 / averageRate time
Exposures tsince    (from baseSpikeSource) time
Event Ports spike    (from baseSpikeSource) Direction: out
Dynamics State Variables

    isi    time
    tsince    time (exposed as tsince)

On Start

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

On Conditions

    IF tsince > isi THEN
        tsince = 0
        isi = - averageIsi * log(1 - random(1))
        EVENT OUT on port spike

Time Derivatives

    d tsince /dt = 1

 
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
Exposures i    (from basePointCurrent) current
tsince
    Time since the last spike was emitted
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    (from baseVoltageDepPointCurrentSpiking) Direction: out
spike
    Port on which spikes are emitted
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

    isi    time
    tsince    time (exposed as tsince)

On Start

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

On Conditions

    IF tsince > isi THEN
        tsince = 0
        isi = - averageIsi * log(1 - random(1))
        EVENT OUT on port spike

Derived Variables

    i = synapse->i     (exposed as i)

Time Derivatives

    d tsince /dt = 1

 
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 LONG_TIME = 1e9hour time
Exposures i    (from basePointCurrent) current
tsince
    Time since the last spike was emitted
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

    isi    time
    tsince    time (exposed as tsince)
    nextIsi    time

On Start

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

On Conditions

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

Derived Variables

    i = synapse->i     (exposed as i)

Time Derivatives

    d tsince /dt = 1

 
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
    Time since the last spike was emitted
time
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

    i = synapse->i     (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
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 = 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 = currents[*]->i (reduce method: add)     (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 = currents[*]->I (reduce method: add)     (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 = 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 = 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 = 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 = baselineAmplitude

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

    IF t >= duration+delay THEN
        i = 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 = baselineAmplitude

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

    IF t >= duration+delay THEN
        I = 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!!!
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 = (targetVoltage - v) / simpleSeriesResistance

    IF t > duration + delay THEN
        i = 0

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

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

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