Simulations of motor unit discharge patterns (Powers et al. 2011)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:143671
" ... To estimate the potential contributions of PIC (Persistent Inward Current) activation and synaptic input patterns to motor unit discharge patterns, we examined the responses of a set of cable motoneuron models to different patterns of excitatory and inhibitory inputs. The models were first tuned to approximate the current- and voltage-clamp responses of low- and medium-threshold spinal motoneurons studied in decerebrate cats and then driven with different patterns of excitatory and inhibitory inputs. The responses of the models to excitatory inputs reproduced a number of features of human motor unit discharge. However, the pattern of rate modulation was strongly influenced by the temporal and spatial pattern of concurrent inhibitory inputs. Thus, even though PIC activation is likely to exert a strong influence on firing rate modulation, PIC activation in combination with different patterns of excitatory and inhibitory synaptic inputs can produce a wide variety of motor unit discharge patterns."
Reference:
1 . Powers RK, Elbasiouny SM, Rymer WZ, Heckman CJ (2012) Contribution of intrinsic properties and synaptic inputs to motoneuron discharge patterns: a simulation study. J Neurophysiol 107:808-23 [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:
Cell Type(s): Spinal cord lumbar motor neuron alpha ACh cell;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Bursting; Action Potentials;
Implementer(s): Powers, Randy [rkpowers at u.washington.edu];
Search NeuronDB for information about:  Spinal cord lumbar motor neuron alpha ACh cell;
/
PowersEtAl2012
code
Gfluctdv.mod *
ghchan.mod *
kca2.mod *
kdrRL.mod *
L_Ca.mod *
mAHP.mod *
na3rp.mod *
naps.mod *
synss.mod
ana_FI.hoc
ana_G.hoc
ana_passive.hoc
ana_vc.hoc
ana_vc_synss.hoc
AP_AHP.ses
FIgraph.hoc
FRcablepas.hoc
FRmnrampcc.ses
FRmnrampvc_synss.ses
FRMotoneuronNaHH.hoc
gramp.ses
GUI_FR_analysis.hoc
inhibdist
makebiramp.hoc *
passive.ses
RecActive.hoc
re-init.hoc
SetConductances.hoc
test.hoc
twobirampsdel.hoc *
vramp
vrampdel
vrampdel.hoc
                            
/****************************************************************
 * FILE ana_vc_synss.hoc
 *
 * init_w_synss.hoc loads Randy's motoneuron and voltage ramp code
 * To execute, execute runvc("<modelname>")
 * This will save the current and voltage data, for the trace, one point per 
 * millisecond, with the model name incorporated in the file name
 ****************************************************************/

objref vecV, vecI, ff, str0
strdef fn, ldfl, myf

// The mult_synss variable controls the presence of synaptic current
mult_synss=0	// set to 0 to disable synaptic input

/**************************************************
 * PROC ana_IV() begin
 *
 * Generate a voltage ramp and record the current
 * Argument is the cell file name
 **************************************************/
proc ana_IV() {
    print "Entering ana_IV\n", "mult_synss = ", mult_synss
    if (numarg() < 1) {
	print "ana_FI(): call with FR cell for argument"
	return
    }
    
    fn = $s1
    
    if (! xopen(fn)) {
	printf("Fail to open requested cell file %s\n", fn)
	return
    }
    
    // The following code generates synaptic input
    // The boolean mult_synss turns it on and off
    // Settings are established in the call to 
    access dendrite
    insert synss
    onset_synss=0
    offset_synss=11000
    gss_synss=2e-5
    access soma
    insert synss
    onset_synss=0
    offset_synss=11000
    gss_synss=2e-5
    
    sprint(myf, "%s/vrampdel.hoc", codeloc)
    load_file(myf)
    
    tstop = 12000
    sprint(myf, "%s/FRmnrampvc_synss.ses", codeloc)
    load_file(myf)
     
    // allow for an extra second before and after the ramp
    tstop = 12000
    
    //    simple()
    vrampdelon()
    runvc(fn)
    
}
// PROC ana_FI end

/*******************************************
 * PROC runvc() begin
 * To execute, execute runvc("<modelname>")
 * This will save the current and voltage data, for the trace, one point 
 * per second, with the model name incorporated in the file name
 ********************************************/
proc runvc() {local i
    print "entering runvc()\n"
    ldfl = $s1
    fo=load_file(ldfl)
    if (!fo) {
	printf("bad file %s\n", ldfl)
	return
    }
    
    objref vecV, vecI, ff, str0
    vecI=new Vector()
    vecI.record(&VClamp[0].i)
    vecV = new Vector()
    vecV.record(&v(0.5))
    init()
    run()
    ff = new File()
    str0 = new StringFunctions()
    // remove the ".hoc" at end of cell filename
    str0.head(ldfl, "\.hoc*", fn)
    sprint(fn,"%s-vc_V0=%d_SLOPE=%.3f_TR=%d_SYN=%d.csv",fn,V0,SLOPE,TR, mult_synss)
    fo=ff.wopen(fn)
    if (!fo) {
	printf("Fail to open file %s, code=%d\n", fn, fo)
	return
    }
    ff.printf("label:%s\n", ldfl)
    ff.printf("%d\n", (vecI.size-1)/40)
    // We only need to save one point per millicsecond, i.e. every 40th point
    for (i=0; i<vecI.size; i=i+40) {
	ff.printf("%.4f,%.5f\n", vecV.x[i], vecI.x[i])
    }
    ff.close()
    
    printf("Created output file %s\nUse Excel to analyze IV curve and PIC parameters\n", fn)

}