Inverse Muscle Dynamics Current

This stimulus is used to simulate the gamma motor signal that controls the sensitivity of stretch receptors that lets them adapt to voluntary movements. Stretch receptors are a type of muscle fiber that acts as dynamic sensors. Their fibers are interspersed in with the regular extrafusal muscle fiber that actually produce the forces used to move limbs. However, the stretch receptors themselves are so diffuse that they produce very little in the way of force themselves. This means that the length of the stretch receptors is controlled by length of the muscle. Alpha motor neurons control the development of tension in extrafusal fiber, while the gamma motor neurons control the sensitivity of the stretch receptors. This allows the output of the stretch receptors to be used as an error signal that can detect when an actual movement is different from the predicted movement. There are two primary types of signals that come from the stretch receptor. The type II signal detects the overall length of the muscle, and the Type Ia signal primarily detects the velocity of change in length of the muscle. It is the Ia signal that is used to detect errors during movement. The gamma motor neurons control them to try and maintain a constant firing rate during the predicted movement. When a disturbance occurs that alters the trajectory away from the predicted movement, it causes the Ia firing rate to increase or decrease signaling that an error has occurred. The error signal feeds back to the alpha motor neurons to change the muscle tensions to oppose the disturbance.

For the gamma motor neurons to function as error detectors though, the organism's brain must predict how the length and velocity of the muscle will change during the movement. This information can be used with knowledge of the inverse equations of the muscle to determine what stimuli will be required to maintain a constant tension in the stretch receptors, and thus keep the Ia firing rate constant as well. The brain does all of this automatically, but it is quite complex and its still not fully understood how it accomplishes this amazing task. This stimulus essentially allows you to cheat and avoid these complexities. You can create a chart of the muscle length and velocity during a movement. Then that data can be exported to a file, and you specify that data file as one of the parameters of the stimulus. When the simulation starts the stimulus loads in the predicted movement file so it knows what the muscle length and velocity should be for the desired movement.

Unlike other stimuli you do not specify a start and end time. These values are determined by the data file. When it is loaded it finds the beginning and ending time for the data in the file and uses that to start and stop the stimulus. Also, you need to make sure that when you create the data that you add only the muscle length and velocity to the data chart, and that you add length first and velocity second. Otherwise, your data will be swapped and it will be treating length data as velocity and vice-versa. Another important thing to keep in mind is that you need to keep the Auto Collect Data Interval of the chart set to true. This will ensure that the data will be collected using the same time step used by the physics engine. If you create a data file and then later change the physics time step you will need to re-export a new file using the new time step. If you attempt to run the simulation with a file that has a time step that is different from the physics time step an error will occur warning you that you can not do this.

The stimulus uses the length and velocity data from the file in the inverse muscle equation to calculate the amount of active tension that needs to be applied to maintain a steady tension. When the stimulus first starts it takes a snapshot of the current tension level in the muscle and attempts to maintain that level. For more information on the inverse equations that are used to perform these calculations please see this section on muscle dynamics. Once you know the active tension that is required you can use the inverse of the stimulus-tension curve to calculate the voltage stimulus that will produce that active tension.

Figure 1. How to calculate the current stimulus needed to maintain a steady tension in a muscle or stretch receptor.

However, the ultimate goal of this stimulus is to produce a current that will be injected into a gamma motor neuron that is controlling the stretch receptor. In order to do that the voltage stimulus needs to be converted into a current level. You do this by specifying a conductance and a base voltage level. The current is then generated using ohm's law. The equations for this are shown below.

Figure 2. Demonstration of how the current is calculated for this stimulus using the base voltage and conductance.

Stimulus Properties

Base Voltage
The voltage stimulus needed to maintain a constant tension is subtracted by this base voltage. Typically, you will want your current stimulus to be positive, but the calculated voltage may be negative and measured from a base value like -100 mv. This lets you calculate the change of the voltage away from the base level.
Default value: -100 mv
Acceptable Values: Any value.

Conductance
The conductance is multiplied to the change in voltage to determine the current stimulus that needs to be applied at each time step to ensure that the tension, and thus the Ia firing rate, remains constant.
Default value: 100 nS
Acceptable Values: Any value greater than 0.

Enabled
Determines if this stimulus is applied or not. If this is false then the stimulus is ignored. If it is true then it is applied.
Default value: True
Acceptable Values: True/False.

Muscle
This is the muscle that you will be monitoring. The inverse equations will be calculated using the properties of this muscle. This also should be the muscle you used while making the predictive data file.
Default value: Blank
Acceptable Values: Any muscle from the drop-down list.

Muscle Length Data
This is an exported tab-seperated data file that contains data on the muscle length and velocity during the movement. This data will serve as your predicted movements, and it will be used to generate the error signals. To generate this file you need to add a new line chart and add the muscle length and velocity to different axis. Only add those two items to the chart, and add them in that order. Also, make sure that the time step of the chart is the same as the physics time step. Set the start and end times to include the entire range of the movement, and then run the simulation. After the data is collected export the data file.
Default value: Blank
Acceptable Values: A valid data text file.

Name
The name of the stimulus.
Default value: Stimulus_?
Acceptable Values: Any string.

Node
The neuron this current stimulus will be injected into.

Organism
The organism this stimulus will be applied to.