Survey of electrically evoked responses in the retina (Tsai et al 2017)

 Download zip file 
Help downloading and running models
"Cones and horizontal cells are interconnected to adjacent cones and horizontal cells, respectively, with gap junctions. In particular, the horizontal cell gap junctional conductance is modulated by exogenous factors. What roles does this conductance play in the electrically evoked responses of horizontal cells? To address this question, we constructed a computational model consisting of the cone and horizontal cell layer..."
1 . Tsai D, Morley JW, Suaning GJ, Lovell NH (2017) Survey of electrically evoked responses in the retina - stimulus preferences and oscillation among neurons. Sci Rep 7:13802 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Synapse; Extracellular;
Brain Region(s)/Organism: Retina;
Cell Type(s): Retina photoreceptor cone GLU cell; Retina horizontal cell;
Gap Junctions: Gap junctions;
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Oscillations;
Implementer(s): Tsai, David [d.tsai at];
Search NeuronDB for information about:  Retina photoreceptor cone GLU cell;
// Modified from interpxyz.hoc and setpointers.hoc of Ted Carnevale
// $Id: interpxyz.hoc,v 1.2 2005/09/10 23:02:15 ted Exp $
// Computes xyz coords of nodes in a model cell whose topology & geometry are 
// defined by pt3d data. Expects sections to already exist, and that the xtra 
// mechanism has been inserted

objref xx, yy, zz, length       // original, irregularly spaced
objref xint, yint, zint, range  // interpolated, spaced at regular intervals

proc grindaway() { local ii, nn, kk, xr
    forall {
        if (ismembrane("xtra")) {
            // get the data for the section
            nn = n3d()
            xx = new Vector(nn)
            yy = new Vector(nn)
            zz = new Vector(nn)
            length = new Vector(nn)

            for ii = 0,nn-1 {
                xx.x[ii] = x3d(ii)
                yy.x[ii] = y3d(ii)
                zz.x[ii] = z3d(ii)
                length.x[ii] = arc3d(ii)

            // to use Vector class's .interpolate() 
            // must first scale the independent variable
            // i.e. normalize length along centroid

            // initialize the destination "independent" vector
            range = new Vector(nseg+2)

            // length contains the normalized distances of the pt3d points 
            // along the centroid of the section.  These are spaced at 
            // irregular intervals.
            // range contains the normalized distances of the nodes along the 
            // centroid of the section.  These are spaced at regular intervals.
            // Ready to interpolate.

            xint = new Vector(nseg+2)
            yint = new Vector(nseg+2)
            zint = new Vector(nseg+2)
            xint.interpolate(range, length, xx)
            yint.interpolate(range, length, yy)
            zint.interpolate(range, length, zz)

            // for each node, assign the xyz values to x_xtra, y_xtra, z_xtra
            // for ii = 0, nseg+1 {
            // don't bother computing coords of the 0 and 1 end also avoid writing 
            // coords of the 1 end into the last internal node's coords
            for ii = 1, nseg {
                xr = range.x[ii]
                x_xtra(xr) = xint.x[ii]
                y_xtra(xr) = yint.x[ii]
                z_xtra(xr) = zint.x[ii]

proc setpointers() { local done
    // determines interpolated locations of nodes
    forall {
        if (ismembrane("xtra")) {
	        for (x, 0) {
		        setpointer im_xtra(x), i_membrane(x)
		        setpointer ex_xtra(x), e_extracellular(x)


print "INFO: Changes to geometry or nseg should be followed by setpointers()"

Loading data, please wait...