Retinal ganglion cells responses and activity (Tsai et al 2012, Guo et al 2016)

 Download zip file 
Help downloading and running models
Accession:260653
From the abstracts: "Retinal ganglion cells (RGCs), which survive in large numbers following neurodegenerative diseases, could be stimulated with extracellular electric pulses to elicit artificial percepts. How do the RGCs respond to electrical stimulation at the sub-cellular level under different stimulus configurations, and how does this influence the whole-cell response? At the population level, why have experiments yielded conflicting evidence regarding the extent of passing axon activation? We addressed these questions through simulations of morphologically and biophysically detailed computational RGC models on high performance computing clusters. We conducted the analyses on both large-field RGCs and small-field midget RGCs. ...", "... In this study, an existing RGC ionic model was extended by including a hyperpolarization activated non-selective cationic current as well as a T-type calcium current identified in recent experimental findings. Biophysically-defined model parameters were simultaneously optimized against multiple experimental recordings from ON and OFF RGCs. ...
References:
1 . Guo T, Tsai D, Morley JW, Suaning GJ, Kameneva T, Lovell NH, Dokos S (2016) Electrical activity of ON and OFF retinal ganglion cells: a modelling study. J Neural Eng 13:025005 [PubMed]
2 . Tsai D, Chen S, Protti DA, Morley JW, Suaning GJ, Lovell NH (2012) Responses of retinal ganglion cells to extracellular electrical stimulation, from single cell to population: model-based analysis. PLoS One 7:e53357 [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 ganglion GLU cell;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Oscillations; Activity Patterns; Development;
Implementer(s): Tsai, David [d.tsai at unsw.edu.au];
Search NeuronDB for information about:  Retina ganglion 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
            length.div(length.x[nn-1])

            // initialize the destination "independent" vector
            range = new Vector(nseg+2)
            range.indgen(1/nseg)
            range.sub(1/(2*nseg))
            range.x[0]=0
            range.x[nseg+1]=1

            // 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
    grindaway()
    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()"

setpointers()


Loading data, please wait...