Electrotonic transform and EPSCs for WT and Q175+/- spiny projection neurons (Goodliffe et al 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:236310
This model achieves electrotonic transform and computes mean inward and outward attenuation from 0 to 500 Hz input; and randomly activates synapses along dendrites to simulate AMPAR mediated EPSCs. For electrotonic analysis, in Elec folder, the entry file is MSNelec_transform.hoc. For EPSC simulation, in Syn folder, the entry file is randomepsc.hoc. Run read_EPSCsims_mdb_alone.m next with the simulated parameter values specified to compute the mean EPSC.
Reference:
1 . Goodliffe JW, Song H, Rubakovic A, Chang W, Medalla M, Weaver CM, Luebke JI (2018) Differential changes to D1 and D2 medium spiny neurons in the 12-month-old Q175+/- mouse model of Huntington's Disease. PLoS One 13:e0200626 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Synapse;
Brain Region(s)/Organism: Striatum;
Cell Type(s): Neostriatum spiny neuron;
Channel(s):
Gap Junctions:
Receptor(s): AMPA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Detailed Neuronal Models; Membrane Properties; Electrotonus; Synaptic-input statistic;
Implementer(s):
Search NeuronDB for information about:  AMPA;
/
GoodliffeEtAl2018
Elec
tau_tables
kir.mod *
actionPotentialPlayer.hoc *
all_tau_vecs.hoc
analyticFunctions.hoc *
aux_procs.hoc
baseline_values.txt
basic_procs.hoc
colorDendrites.hoc
electro_procs.hoc *
fixnseg.hoc *
load_scripts.hoc *
measureMeanAtten.hoc
MSN_fixDiams.hoc
MSNelect.hoc
MSNelect_transform.hoc
Nov3IR3a.hoc
Nov9IR2a_spine.hoc
readcell.hoc
                            
objref diamV

//xopen("../plot_morph_info.hoc")

proc MSN_fixDiams() { local i, xstp, xoff, xprev, xend

//    print "Adjusting dendrite diameters"
    
    // first, correct any really narrow dendrites
    forall { if( diam < 0.5 ) diam = 0.5 }

    // now use a 3-pt avg to smooth all dendrites with nseg>0
    forsec "dend" {
        if( nseg > 3 ) {
//	    printf("\n\nSection %s, nseg %d\n",secname(),nseg)
	    xstp = 1/nseg
	    xoff = xstp/2
	    // print output to check this.
	    diamV = new Vector(nseg+2)

	    // forward difference
//	    printf("start:  diamV.x[0] = (diam(0)+diam(%g)+diam(%g)) / 3\n",xstp-xoff,2*xstp-xoff)
	    diamV.x[0] = (diam(0)+diam(xstp-xoff)+diam(2*xstp-xoff)) / 3

	    for i = 1, nseg {

	        if( i== 1 ) { xprev = 0 } else { xprev = xstp*(i-1)-xoff }
	        if( i== nseg ) { xend = 1 } else { xend = xstp*(i+1)-xoff }
	        //printf("Average diamV.x[%d] = ( diam(%g) + diam(%g) + diam(%g) ) / 3\n",i,xprev,xstp*i-xoff,xend)
	    
	        diamV.x[i] = ( diam(xprev) + diam(xstp*i-xoff) + diam(xend) ) / 3
	    }
	    // backward difference
//	    printf("end:  diamV.x[%d] = (diam(1)+diam(%g)+diam(%g)) / 3\n",nseg+1,1-xoff,1-xoff-xstp)
	    diamV.x[nseg+1] = (diam(1)+diam(1-xoff)+diam(1-xoff-xstp)) / 3

//	    printf("\n\nAdjusting diameter in section %s, nseg %d\n",secname(),nseg)
//	    for(x) { printf("\t(%g, %g)",x,diam(x)) }
//	    printf("\n")
//	    for i=0, nseg+1 { printf("\t(%g, %g)",i*xstp-xoff,diamV.x[i]) }
//	    printf("----done %s\n",secname())
	    i=0
	    for(x) {
	        diam(x) = diamV.x[i]
		i = i+1
	    }
	}
    }
	    
}

MSN_fixDiams()

Loading data, please wait...