This document describes how to inject current in a compartment in xolotl.
- You cannot simultaneously inject current and voltage clamp a model
- Current injection is not supported when using the Runge-Kutta solver
How to inject current into a compartment¶
Inject a constant current into a single compartment model¶
The simplest way to inject current into a compartment is to
set the I_ext property in xolotl. Assuming you have a single compartment model called
x.I_ext = .1; % nA
will inject 1 nA of current into the compartment. That's it.
Inject a constant current in a multi-compartment model¶
The size of I_ext in the second dimension is the number of compartments. Therefore, to inject a constant current into the compartment you want, set that element of I_ext. For example, if
x is a model with three compartments,
x.I_ext = [0 1 0];
will inject 1 nA into the second compartment, but nothing into the other two.
Inject a time-varying current into a compartment¶
xolotl supports injecting arbitrary, time-varying currents into a compartment, as long as they are determined in advance. In this case, I_ext must be a matrix whose size in the first dimension should be equal to x.t_end/x.sim_dt
For example, if we want to inject a random current into a neuron model, we can do something like this:
x = xolotl.examples.neurons.BurstingNeuron; x.I_ext = randn(x.t_end/x.sim_dt,1);
Manipulating models while injecting current¶
Injecting constant current¶
By default, manipulating a model using x.manipulate allows you to vary the amount of constant current applied to the neuron:
This also means that if you specify a time-varying current, that I_ext is overwritten with a constant value when you call x.manipulate()
Injecting time-varying current¶
To manipulate a model while injecting a custom, time-varying current, set this preference:
x.pref.use_I_ext = false;
Now, your custom I_ext will be used, and sliders for I_ext will not be shown when manipulate is called.