Optical stimulation of a channelrhodopsin-2 positive pyramidal neuron model (Foutz et al 2012)

 Download zip file 
Help downloading and running models
A computational tool to explore the underlying principles of optogenetic neural stimulation. This "light-neuron" model consists of theoretical representations of the light dynamics generated by a fiber optic in brain tissue, coupled to a multicompartment cable model of a cortical pyramidal neuron (Hu et al. 2009, ModelDB #123897) embedded with channelrhodopsin-2 (ChR2) membrane dynamics. Simulations predict that the activation threshold is sensitive to many of the properties of ChR2 (density, conductivity, and kinetics), tissue medium (scattering and absorbance), and the fiber-optic light source (diameter and numerical aperture). This model system represents a scientific instrument to characterize the effects of optogenetic neuromodulation, as well as an engineering design tool to help guide future development of optogenetic technology.
1 . Foutz TJ, Arlow RL, McIntyre CC (2012) Theoretical principles underlying optical stimulation of a channelrhodopsin-2 positive pyramidal neuron. J Neurophysiol 107:3235-45 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Axon; Channel/Receptor; Dendrite;
Brain Region(s)/Organism:
Cell Type(s): Neocortex L5/6 pyramidal GLU cell;
Channel(s): I K; I M; I K,Ca; I Sodium; I Calcium; Channelrhodopsin (ChR);
Gap Junctions:
Simulation Environment: NEURON; Python;
Model Concept(s): Detailed Neuronal Models; Action Potentials; Parameter sensitivity; Intracortical Microstimulation; Neuromodulation;
Implementer(s): MacIntyre, CC [ccm4 at case.edu]; Foutz, Thomas J [tfoutz at uw.edu]; Arlow, Richard L [richard.arlow at case.edu];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; I K; I M; I K,Ca; I Sodium; I Calcium; Channelrhodopsin (ChR);
: $Id: xtra.mod,v 1.3 2009/02/24 00:52:07 ted Exp ted $

This mechanism is intended to be used in conjunction
with the extracellular mechanism.  Pointers specified
at the hoc level must be used to connect the
extracellular mechanism's e_extracellular and i_membrane
to this mechanism's ex and im, respectively.

xtra does three useful things:

1. Serves as a target for Vector.play() to facilitate
extracellular stimulation.  Assumes that one has initialized
a Vector to hold the time sequence of the stimulus current.
This Vector is to be played into the GLOBAL variable is
(GLOBAL so only one Vector.play() needs to be executed),
which is multiplied by the RANGE variable rx ("transfer
resistance between the stimulus electrode and the local
node").  This product, called ex in this mechanism, is the
extracellular potential at the local node, i.e. is used to
drive local e_extracellular.

2. Reports the contribution of local i_membrane to the
total signal that would be picked up by an extracellular
recording electrode.  This is computed as the product of rx,
i_membrane (called im in this mechanism), and the surface area
of the local segment, and is reported as er.  The total
extracellularly recorded potential is the sum of all er_xtra
over all segments in all sections, and is to be computed at
the hoc level, e.g. with code like

func fieldrec() { local sum
  sum = 0
  forall {
    if (ismembrane("xtra")) {
      for (x,0) sum += er_xtra(x)
  return sum

Bipolar recording, i.e. recording the difference in potential
between two extracellular electrodes, can be achieved with no
change to either this NMODL code or fieldrec(); the values of
rx will reflect the difference between the potentials at the
recording electrodes caused by the local membrane current, so
some rx will be negative and others positive.  The same rx
can be used for bipolar stimulation.

Multiple monopolar or bipolar extracellular recording and
stimulation can be accommodated by changing this mod file to
include additional rx, er, and is, and changing fieldrec()
to a proc.

3. Allows local storage of xyz coordinates interpolated from
the pt3d data.  These coordinates are used by hoc code that
computes the transfer resistance that couples the membrane
to extracellular stimulating and recording electrodes.


	SUFFIX xtra
	RANGE x, y, z
	POINTER im, ex

	: default transfer resistance between stim electrodes and axon
	rx = 1 (megohm) : mV/nA
	x = 0 (1) : spatial coords
	y = 0 (1)
	z = 0 (1)

	v (millivolts)
	is (milliamp)
	ex (millivolts)
	im (milliamp/cm2)
	area (micron2)

	ex = is*rx*(1e6)
: this demonstrates that area is known
: printf("area = %f\n", area)

BEFORE BREAKPOINT { : before each cy' = f(y,t) setup
  ex = is*rx*(1e6)

Loading data, please wait...