A model of closed-loop motor unit including muscle spindle feedback (Kim, 2020)

 Download zip file 
Help downloading and running models
Accession:266732
Persistent inward current generating ion channels are located over spinal motoneurons and actively recruited during normal behaviors. Constructing a realistic computational model of closed-loop motor unit, a motoneuron and muscle fibers that it innervates including muscle spindle afferents, the study reveals functional linkage between persistent inward current location, motoneuron discharge pattern and muscle force output at various muscle lengths. This systematic analysis may provide useful insights into interplay of spinal and muscular mechanisms in control of movements.
Reference:
1 . Kim H (2020) Linking Motoneuron PIC Location to Motor Function in Closed-Loop Motor Unit System Including Afferent Feedback: A Computational Investigation. eNeuro [PubMed]
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: Spinal motoneuron;
Cell Type(s):
Channel(s): I Calcium; I Potassium; I Sodium; I_AHP;
Gap Junctions:
Receptor(s):
Gene(s): Cav1.3 CACNA1D;
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Motor control;
Implementer(s): Kim, Hojeong [hojeong.kim03 at gmail.com];
Search NeuronDB for information about:  I Sodium; I Calcium; I Potassium; I_AHP;
/
Kim2020
fig8
Ca_conc.mod *
CaL.mod *
CaN.mod *
KCa.mod *
KDr.mod *
module1_2.mod *
module3.mod *
Naf.mod *
Nap.mod *
SawtoothIClamp.mod
syn_Ia.mod
Xm.mod *
add_hil_is.hoc *
add_muscle_unit.hoc *
add_pics_istim.hoc
Ca_conc.o *
CaL.o *
CaN.o *
fig.ses
fixnseg.hoc *
group_Ia.hoc
KCa.o *
KDr.o *
mem_mechanism_acti.hoc *
mem_mechanism_muscle.hoc *
mem_mechanism_pass.hoc *
mod_func.c
mod_func.o
module1_2.o *
module3.o *
motor_unit.hoc *
Naf.o *
Nap.o *
nrnmech.dll
SawtoothIClamp.o
syn_Ia.o
v_e_moto6_export.hoc *
Xm.hoc *
Xm.o *
                            
TITLE Calcium dynamics and cross-bridge formation
 
UNITS { }

NEURON {
	SUFFIX CaSP
	
	::module 1::
	RANGE k1, k2, k3, k4, k5, k6, k, k5i, k6i 
	RANGE Umax, Rmax, t1, t2, R, vth, U
	RANGE phi0, phi1, phi2, phi3, phi4, phi

	::module 2::
	RANGE c1, c2, c3, c4, c5 
	RANGE AMinf, AMtau, SF_AM
	RANGE acm, alpha, alpha1, alpha2, alpha3, beta, gamma

	::simulation::
	RANGE spk_index, t_axon 
	USEION mg WRITE mgi VALENCE 2
	USEION cl READ cli
}

PARAMETER {
	::module 1::
	k1 = 3000		: M-1*ms-1
	k2 = 3			: ms-1
	k3 = 400		: M-1*ms-1
	k4 = 1			: ms-1
	k5i = 4e5		: M-1*ms-1
	k6i = 150		: ms-1
	k = 850			: M-1
	SF_AM = 5
	Rmax = 10		: ms-1
	Umax = 2000		: M-1*ms-1
	t1 = 3			: ms
	t2 = 25			: ms
	phi1 = 0.03
	phi2 = 1.23
	phi3 = 0.01		
	phi4 = 1.08		
	CS0 = 0.03     	:[M]
	B0 = 0.00043	:[M]
	T0 = 0.00007 	:[M]
	
	::module 2::
	c1 = 0.128 		 
	c2 = 0.093		 
	c3 = 61.206	 
	c4 = -13.116	 
	c5 = 5.095		
	alpha = 2
	alpha1 = 4.77
	alpha2 = 400
	alpha3 = 160
	beta = 0.47
	gamma = 0.001

	::simulation::
	vth = -40		
	spk_index = 0	
	t_axon = 0.01	
}

STATE {
	CaSR			
	CaSRCS			
	Ca				
	CaB				
	CaT				
	AM				
	mgi				
}

ASSIGNED {
	v 	(mV)
	R
	t_shift 		
	R_On 			
	Spike_On 		
	k5
	k6
	AMinf
	AMtau
	cli				
	spk[1000] 		
	xm[2] 			
	vm			    
	acm				
}

BREAKPOINT { LOCAL i, temp_R
	
	SPK_DETECT (v, t) 
	CaR (CaSR, t)

	SOLVE state METHOD cnexp
	
	xm[0]=xm[1]
	xm[1]=cli
	
	vm = (xm[1]-xm[0])/(dt*10^-3)
	
	::isometric and isokinetic condition::
	mgi = AM^alpha
}

DERIVATIVE state {
	rate (cli, CaT, AM, t)
	
	CaSR' = -k1*CS0*CaSR + (k1*CaSR+k2)*CaSRCS - R + U(Ca)
	CaSRCS' = k1*CS0*CaSR - (k1*CaSR+k2)*CaSRCS
	
	Ca' = - k5*T0*Ca + (k5*Ca+k6)*CaT - k3*B0*Ca + (k3*Ca+k4)*CaB + R - U(Ca)
	CaB' = k3*B0*Ca - (k3*Ca+k4)*CaB
	CaT' = k5*T0*Ca - (k5*Ca+k6)*CaT
	
	AM' = (AMinf -AM)/AMtau
	mgi' = 0
}

PROCEDURE SPK_DETECT (v (mv), t (ms)) {
	if (Spike_On == 0 && v > vth) {
	Spike_On = 1
	spk[spk_index] = t + t_axon
	spk_index = spk_index + 1
	R_On = 1
	} else if (v < vth) {
	Spike_On = 0
	}
}

FUNCTION U (x) {
	if (x >= 0) {U = Umax*(x^2*k^2/(1+x*k+x^2*k^2))^2}
	else {U = 0}
}

FUNCTION phi (x) {
	if (x <= -8) {phi = phi1*x + phi2}
	else {phi = phi3*x + phi4}
}

PROCEDURE CaR (CaSR (M), t (ms)) { LOCAL i, temp_R  ::Ca_Release::
	if (R_On == 1) {
		FROM i=0 TO spk_index-1 {
			temp_R = temp_R + CaSR*Rmax*(1-exp(-(t-spk[i])/t1))*exp(-(t-spk[i])/t2)
		}
		R = temp_R
		temp_R = 0
	}
	else {R = 0}
}

PROCEDURE rate (cli (M), CaT (M), AM (M), t(ms)) {
	k5 = phi(cli)*k5i
	k6 = k6i/(1 + SF_AM*AM)
	AMinf = 0.5*(1+tanh(((CaT/T0)-c1)/c2))
	AMtau = c3/(cosh(((CaT/T0)-c4)/(2*c5)))
}

INITIAL {LOCAL i
	CaSR = 0.0025  		:[M]
	CaSRCS = 0			:[M]
	Ca = 1e-10			:[M] 
	CaB = 0				:[M]
	CaT = 0				:[M]
	AM = 0				:[M]
	mgi = 0
		
	FROM i = 0 TO 999 {
	spk[i] = 0
	}
	FROM i = 0 TO 1 {
	xm[i] = 0
	}
	spk_index = 0
	R_On = 0
}

Loading data, please wait...