See code in GitLab.
Author: Gernot Plank gernot.plank@medunigraz.at
To run the experiments of this tutorial change directories as follows:
cd ${TUTORIALS}/02_EP_tissue/02_stimulation
Transmembrane voltage can be changed by applying an extracellular field in the extracellular space. As outlined in Sec. electrical-stimulation
, an electric field can be set up either by injection/withdrawal of currents in the extracellular space or by changing the extracellular potential with voltage sources.
For testing the various types of extracellular stimulation we generate a thin strand of tissue of 1 cm length. Electrodes are located at both caps of the strand with an additional auxiliary electrode in the very center of the strand. An illustration of the setup is given in fig-extra-stim-setup
. Extracellular voltage and current stimuli are pre-configured to generate an extracellular voltage drop across the strand of about 2 V. This corresponds to an electric field magnitude of 2 V/cm which is sufficient to initiate action potential propagation under the cathode.
Several types of stimulation setups are predefined. Run
./run.py --help
to see all exposed experimental parameters. The input parameter stimulus selects a stimulus configuration among the following available options:
--stimulus {extra_V,extra_V_bal,extra_V_OL,extra_I,extra_I_bal,extra_I_mono}
pick stimulus type
--grounded {on,off} turn on/off use of ground wherever possible
The geometry of the three electrodes A, B and C are defined as follows:
# electrode A
stimulus[0].xd = 100.
stimulus[0].y0 = -100.
stimulus[0].yd = 200.
stimulus[0].z0 = -100.
stimulus[0].zd = 200.
# electrode B
stimulus[1].x0 = 4950.
stimulus[1].xd = 100.
stimulus[1].y0 = -100.
stimulus[1].yd = 200.
stimulus[1].z0 = -100.
stimulus[1].zd = 200.
# electrode C
stimulus[2].x0 = -10.
stimulus[2].xd = 20.
stimulus[2].y0 = -5000.
stimulus[2].yd = 10000.
stimulus[2].z0 = -5000.
stimulus[2].zd = 10000.
The stimulus option extra_V
sets up stimulation through application of extracellular voltage corresponding to fig-extraV-wgnd
. The potential electrode A is clamped to 2000 mV for a duration of 2 ms, electrode B is grounded, i.e., \(\phi_{\mathrm e} = 0\). Electrode C is not used here, electrodes A and B are configured as follows:
numstim = 2 # use two electrodes, A and B
# electrode A
stimulus[0].stimtype = 2 # extracellular voltage stimulus
stimulus[0].strength = 2e3 # voltage at A in mV
# electrode B
stimulus[1].stimtype = 3 # extracellular ground
Run this experiment by executing
./run.py --stimulus extra_V --visualize
As in experiment exp01, the stimulus option extra_V_bal
sets up stimulation through the application of extracellular voltage. The potential on the left cap is clamped to 1000 mV for a duration of 2 ms and the right hand electrode to -1000mV. This stimulation circuit corresponds to the setup shown in fig-extraV-symm-wgnd
.
numstim = 3 # use all three electrodes, A, B and C
# electrode A
stimulus[0].stimtype = 2 # extracellular voltage stimulus
stimulus[0].strength = 1e3 # voltage at A in mV
# electrode B
stimulus[1].stimtype = 2 # extracellular voltage stimulus
stimulus[1].strength = -1e3 # voltage at B in mV
# electrode C
stimulus[2].stimtype = 3 # extracellular ground at C
Realize this experiment by running
./run.py --stimulus extra_V_bal --visualize
As in experiment exp01, the stimulus option extra_V_OL
sets up stimulation through the application of extracellular voltage. The extracellular potential at electrode A is clamped to 2000 mV for a duration of 2 ms. In contrast to the extra_V
electrode A is disconnected from the source after stimulus delivery. Therefore, the potential at A is allowed to float after the end of the stimulus, that is, electrode A won't act as a ground after delivery of the voltage pulse. This stimulation circuit corresponds to the setup shown in fig-extraV-wgnd-switched
.
numstim = 2 # use two electrodes, A and B
# electrode A
stimulus[0].stimtype = 5 # extracellular voltage stimulus, switched
stimulus[0].strength = 2e3 # voltage at A in mV
# electrode B
stimulus[1].stimtype = 3 # extracellular ground
To realize this scenario, run
./run.py --stimulus extra_V_OL --visualize
The stimulus option extra_I
sets up stimulation through the application of an extracellular current. The current is injected into electrode A in the extracellular medium and withdrawn at electrode B which, in turn, is grounded. The extracellular current strength is chosen to induce an extracellular potential drop of 2000 mV across the strand as before with extracellular voltage stimulation in extra_V
. This configuration corresponds to the setup shown in fig-extraI-wGND
. Electrode C is not used here, while electrodes A and B are configured as follows:
numstim = 2 # use two electrodes, A and B
# electrode A
stimulus[0].stimtype = 1 # extracellular current stimulus
stimulus[0].strength = 3.1e6 # current density at A in :math:`\mu A/cm^3`
# electrode B
stimulus[1].stimtype = 3 # extracellular ground
To see the result, run
./run.py --stimulus extra_I --visualize
Similar to experiment exp04, the stimulus option extra_I_bal
sets up stimulation through the injection of extracellular current with the difference being that B is not grounded. Extracellular current is injected into electrode A and the same amount is withdrawn from electrode B. As this constitutes a pure Neumann problem, two scenarios can be considered. Either electrode C is used as a grounding electrode corresponding to fig-extraI-symm-wgnd
, or we refrain from defining an explicit grounding electrode and use a diffuse ground, that is, we apply an additional constraint to deal with the nullspace of the problem. The latter option corresponds to fig-extraI-symm-diffuse
. Both configurations also induce an extracellular potential drop of 2000 mV across the strand, albeit in a symmetric way. Note that in both cases, the compatibility condition must be satisfied. This is taken care of by CARPentry internally by balancing the total current injected/withdrawn through electrodes A and B. If balancing is imperfect, a stimulation would also occur around electrode C as all the excess current would drain there.
In the setup with an explicit ground, electrodes are defined as:
numstim = 3 # use all three electrodes, A, B and C
# electrode A
stimulus[0].stimtype = 1 # extracellular voltage stimulus
stimulus[0].strength = 3.1e6 # current density at A in :math:`\mu A/cm^3`
# electrode B
stimulus[1].stimtype = 1 # extracellular voltage stimulus
stimulus[1].balance = 0 # no strength prescribed, balance with stimulus[0]
# electrode C
stimulus[2].stimtype = 3 # extracellular ground at C
To solve the pure Neumann problem without an explicit ground, the input parameter grounded
is set to on
. In fact, CARPentry turns on this mode automatically if a pure Neumann configuration is detected.
numstim = 2 # use electrodes A and B
# electrode A
stimulus[0].stimtype = 1 # extracellular voltage stimulus
stimulus[0].strength = 3.1e6 # current density at A in :math:`\mu A/cm^3`
# electrode B
stimulus[1].stimtype = 1 # extracellular voltage stimulus
stimulus[1].balance = 0 # no strength prescribed, balance with stimulus[0]
In order to finally execute the last experiment, run
./run.py --stimulus extra_I_bal --visualize
© Copyright 2020 openCARP project Supported by DFG and EuroHPC Contact Imprint and data protection