Biophysically realistic neuron models for simulation of cortical stimulation (Aberra et al. 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:241165
This archive instantiates the single-cell cortical models used in (Aberra et al. 2018) and sets up extracellular stimulation with either a point-current source, to simulate intracortical microstimulation (ICMS), or a uniform E-field distribution, with a monophasic, rectangular pulse waveform in both cases.
Reference:
1 . Aberra AS, Peterchev AV, Grill WM (2018) Biophysically realistic neuron models for simulation of cortical stimulation J. Neural Eng. [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Axon;
Brain Region(s)/Organism: Neocortex; Barrel cortex;
Cell Type(s): Myelinated neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Action Potential Initiation; Detailed Neuronal Models;
Implementer(s): Aberra, Aman [aman.aberra at duke.edu];
/
AberraEtAl2018
cells
L1_NGC-DA_bNAC219_3
hoc_recordings
mechanisms
morphology
python_recordings
synapses
README *
.provenance.json
biophysics.hoc *
cellinfo.json
CHANGELOG *
constants.hoc *
creategui.hoc *
createsimulation.hoc
current_amps.dat
init.hoc *
LICENSE *
morphology.hoc
mosinit.hoc *
ringplot.hoc *
run.py
run_hoc.sh *
run_py.sh *
run_RmpRiTau.py
run_RmpRiTau_py.sh *
template.hoc
VERSION *
                            
/*                                                                               
 * @file ringplot.hoc                                                           
 * @brief Horizontally scrolling plot                                
 * @author M. Hines @ Yale, Werner Van Geit @ BBP                                                 
 * @date 2015                                                                    
*/        

load_file("nrngui.hoc")

begintemplate RingPlot
public g, clipped_voltage
public view_count, fastflush, flush, cleanup
objref g, clipped_voltage, clipped_time, voltage, time, max_vec


/** Constructor */
proc init() {
    // Generate graph
    g = new Graph(0)

    // Horizontal width of the plot (in ms)
    clip_size = 3000.0

    // Record voltage
    voltage = new Vector(10000)
    voltage.record(&v(.5))

    // Record time
    time = new Vector(10000)
    time.record(&t)

    // Vector that will contain the clipped data
    clipped_voltage = new Vector()
    clipped_time = new Vector()

    // Set up location and size of window
    g.view(0, -90, 3000, 120, 50, 650, 1007.04, 450)
}

/** View count of the graph */
func view_count() {
    return g.view_count() 
}

/** Fast flush the plot */
func fastflush() {
    update()
    return g.flush()
}

/** Flush the plot */
func flush() {
  update()
  return g.flush()
}

/** Update the plot */
proc update() {
    // Set clipping region (in ms)
    clip_size = 3000.0
  
    // Time at right side of clipping region
    right_t = t

    // Time at left side of clipping region
    // Wait until time reaches clip_size to start scrolling
    if (t >= clip_size) {
        left_t = t - clip_size
    } else {
        left_t = 0.0
    }

    // Calculate clipped vectors
    clipped_voltage.copy(voltage, 0, left_t/dt, right_t/dt-1)
    clipped_time.copy(time, 0, left_t/dt, right_t/dt-1)
    clipped_time.sub(left_t)

    // Erase previous plot
    g.erase()
    // Plot clipped vectors
    clipped_voltage.plot(g, clipped_time)
}

/** Clean up the plot */
proc cleanup() {

    // Vector that will contain the clipped data
    clipped_voltage = new Vector()
    clipped_time = new Vector()
    
}

endtemplate RingPlot

Loading data, please wait...