Stochastic layer V pyramidal neuron: interpulse interval coding and noise (Singh & Levy 2017)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:237594
Layer V pyramidal neuron with stochastic Na channels. Supports evidence for interpulse interval coding and has very detailed AIS with Nav1.2 and Nav1.6 channels.
Reference:
1 . Singh C, Levy WB (2017) A consensus layer V pyramidal neuron can sustain interpulse-interval coding. PLoS One 12:e0180839 [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):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Action Potential Initiation;
Implementer(s): Singh, Chandan [chandan_singh at berkeley.edu];
objref stim, f_titrate
//load_file("init.hoc")
proc set_stim(){
    access soma
    stim=new IClamp(0.5)
    stim.dur = dur
    stim.del = del
    stim.amp = intensity
}

proc init_to_steady_state() {
    init()
	access soma
	finitialize(v_init)
	fcurrent()
	for i=0,9{
	    access ais[i]
	    finitialize(v_init)
	    fcurrent()
	}
	saveDt = dt
	dt = 1
	for i=1,(del) advance()		//to speed up initialization
	dt = saveDt
}

proc rand_seed(){
    xx = $1+1
    seed_na =   175+xx*7
    seed_na12 = 357+xx*13
    seed_na16 = 195+xx*17
    seed_na_stoch = seed_na
    seed_na12_stoch = seed_na12
    seed_na16_stoch = seed_na16
}

func run_till_1_spike(){ // run until the neuron spikes once
    above_zero=0
    while (t <= tstop) {
		continuerun(t + .5) stoprun=1
		doNotify()
		if(soma.v(.5)>0){
		    above_zero=1
		}
		if(above_zero==1 && soma.v(.5)<0){
//            printf("back below\n")
            stoprun=1
            break
		}
	}
	return above_zero
}

func run_till_2_spikes(){ // run until the neuron spikes twice
    above_zero=0
    while (t <= tstop) {
		continuerun(t + .5) stoprun=1
		doNotify()
		if(soma.v(.5)>0){
		    above_zero=1
		}
		if(above_zero==1 && soma.v(.5)<0){
            printf("spiked once\n")
//            stoprun=1
            break
		}
	}
	above_zero=0
	while (t <= tstop) {
		continuerun(t + .5) stoprun=1
		doNotify()
		if(soma.v(.5)>0){
		    above_zero=1
		}
		if(above_zero==1 && soma.v(.5)<0){
//            printf("back below\n")
            stoprun=1
            break
		}
	}
	return above_zero
}

proc run_act(){ // record and run
    record_basic()
    if(stoch==1){
        recordV_chans()
    }
    ik_list = record_all_ik()
    rand_seed(cmd_trial_num)
    set_stim()
    init_to_steady_state()
    run_till_2_spikes()
    sum_and_save_all_ik()
    save_basic()
    if(stoch==1){
        saveV_chans()
    }
}

run_act()