Mirror Neuron (Antunes et al 2017)

 Download zip file 
Help downloading and running models
Accession:229276
Modeling Mirror Neurons Through Spike-Timing Dependent Plasticity. This script reproduces Figure 3B.
Reference:
1 . Antunes G, Faria da Silva SF, Simoes de Souza FM (2018) Mirror Neurons Modeled Through Spike-Timing-Dependent Plasticity are Affected by Channelopathies Associated with Autism Spectrum Disorder. Int J Neural Syst 28:1750058 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Neocortex;
Cell Type(s):
Channel(s): I Calcium; I M; I h; I Potassium; I Sodium;
Gap Junctions:
Receptor(s): AMPA; NMDA;
Gene(s): Cav1.2 CACNA1C; Cav1.3 CACNA1D;
Transmitter(s): Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Detailed Neuronal Models; STDP;
Implementer(s): Simoes-de-Souza, Fabio [fabio.souza at ufabc.edu.br];
Search NeuronDB for information about:  AMPA; NMDA; I M; I h; I Sodium; I Calcium; I Potassium; Glutamate;
/
Final
mechanisms
morphology
synapses
README
.provenance.json
biophysics.hoc
cellinfo.json
CHANGELOG
constants.hoc *
creategui.hoc
createsimulation.hoc
current_amps.dat
init_super.hoc
LICENSE *
morphology.hoc
mosinit.hoc
ringplot.hoc *
run.py
run_hoc.sh
run_RmpRiTau.py
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