Pacing protocol syntax

In Myokit, pacing is not part of a model but is defined using a separate pacing syntax. To introduce a pacing current in the model, a variable must be bound to an external input such as pace. A common use of this mechanism is to specify a stimulus current I_stim = amplitude * level where amplitude is a constant stimulus amplitude (in amperes) and level is the dimensionless variable bound to the input pace:

level = 0
    bind pace
amplitude = 60 [A/F]
    in [A/F]
current = level * amplitude
    in [A/F]


A pacing protocol definition starts with the segment header protocol. Each successive line defines a pacing event, I.E. a time when the stimulus is non-zero. The following five parameters must set (separated by any amount of whitespace):

  1. The value of the stimulus variable

  2. The time at which this stimulus occurs

  3. The duration of this stimulus

  4. For periodic stimuli, the fourth column specifies the stimulus period. Non-periodic stimuli can be created by entering “0” here.

  5. The number of times a periodic stimulus is given can be specified in the final column, stimuli that are non-periodic or recur indefinetely can use the value “0” here.

Comments may be added by starting lines with #.

When specifying the time an event starts, the keyword “next” may be used to denote the time at which the previous event ends. This can only be used at the very start of a protocol or directly after a non-periodic event.


A typical example for 0.5ms stimuli occurring every 1000ms (at 1bpm) is:

#level  start   length  period  multiplier
1.0     10      0.5     1000    0

Here, a stimulus of level “1.0” is applied from t=10ms till t=12ms and then again from t=1010ms to t=1012ms continuing indefinitely.

In the following example the stimulus only occurs 3 times:

#level  start   length  period  multiplier
1.0     10      0.5     1000    3

An example for a voltage clamp experiment:

#level  start   length  period  multiplier
-80     0       500     0       0
 40     500     500     0       0
-80     1000    1000    1000    0

In this example, the pacing level is taken to denote a voltage. At t=0 the voltage is set to -80mV. After 500ms, it changes abrubtly to +40, where it stays for another 500ms. Finally, at t=1000ms it drops down to -80mV again where it stays indefinitely.

This example can be written using the “next” keyword:

#level  start   length  period  multiplier
-80     0       500     0       0
 40     next    500     0       0
-80     next    1000    1000    0