function run_twocomp % Basic two compartment SCI motoneuron model with synaptic inputs % Based on Booth Rinzel model parameters % Appropriate ICs has been put in % Soma is coupled with the dendrite using a coupling conductance % Synaptic inputs have been added to the dendrites % A ramp current in soma is used to activate the cell % This program calls the ODE solver to solve the system % First define all of the constant parameters % Input membrane parameters from file % Soma pulse current %scales=20; %tons=1000; %toffs=3000; % Soma ramp current offset=0; scale=0.01; ton=0; toff=10000; tswitch=2500; % Synaptic pulse current parameters scaled=0; tond=1340; toffd=2500; gc=0.1; p=0.1; c=1; gna=120; ena=55; thetamna=-35; kmna=-7.8; thetahna=-55; khna=7; gkdr=100; ek=-80; thetan=-28; kn=-15; gscan=14; eca=80; thetamsca=-30; kmscan=-5; taumscan=16; % Different from BR model thetahsca=-45; khscan=5; tauhscan=160; % Different from BR model gskca=3.136; gdkca=.69; gl=0.51; el=-60; f=0.01; alpha1=0.009; alpha2=0.009; kca=2; gcap=0.33; % Parameters for fig.2e and 2f thetamcap=-40; kmcap=-7; taumcap=40; gnap=0.2; % Parameters for fig.2e and 2f thetamnap=-25; kmnap=-4; taumnap=40; % No Synaptic Inputs gsynbar=0; esyn=0; tausyn=0.2; period=20; % Excitatory Synaptic parameters %gsynbar=.1; %esyn=0; %tausyn=0.2; %period=20; % Inhibitory Synaptic parameters %gsynbar=.05; %esyn=-81; %tausyn=0.65; %period=20; % Set up vector of variables soma_var=6; % First 6 entries are for soma variables dend_var=4; % # of variables in dendrite compartment sy=soma_var + dend_var; % # of equations y0 = zeros(sy,1); % Allocate vector for solver % Define the initial conditions % No input steady state y0(1)=-55.1076; % vs y0(2)=0.5038; % hna y0(3)=0.1410; % n y0(4)=0.0066; % mscan y0(5)=0.8830; % hscan y0(6)=0.0003; % cas y0(7)=-53.2093; % vd y0(8)=0.0260; % cad y0(9)=0.1316; % mcap y0(10)=0.0009; % mnap % Solve the system tic; [t,y]=ode15s(@compmini,[0,10000],y0); time=toc z=length(t); Isapp=zeros(z,1); ICaP=zeros(z,1); for i=1:z %Isapp(i)=scales*heav(t(i)-tons)*heav(toffs-t(i)); %for pulse Isapp(i)=offset+scale*(t(i)-ton)*(heav(t(i)-ton)*heav(toff-t(i)))+... 2*scale*(tswitch-t(i))*(heav(t(i)-tswitch)*heav(toff-t(i))); % for ramp %ICaP(i)=gcap*y(i,9)*(y(i,7)-eca); end save temp1 t y Isapp ICaP; % Plot membrane potentials y1=y(:,1); ramp(t,y(:,1),Isapp); %ramp.m MATLAB code makes the plots in figure 2 format %---------------------------------------------------------------- % Beginning of nested functions %---------------------------------------------------------------- function h=heav(t) % Define the heaviside function, since the command `heaviside(t)' % in matlab gives NaN when t = 0. h=zeros(size(t)); h(t>0)=1; end % end of heav function compmini %---------------------------------------------------------------- function yp=compmini(t,y) % Two compartment SCI motoneuron model % Function defines rhs of system for solving % Grab variables for soma and vectors for dendrite from previous % timestep vs=y(1); hna=y(2); n=y(3); mscan=y(4); hscan=y(5); cas=y(6); vd=y(7); cad=y(8); mcap=y(9); mnap=y(10); % Initialize output vector y prime sy = length(y); yp = zeros(sy,1); % rhs for Soma Compartment % Membrane potential equation mna=1/(1+exp((vs-thetamna)/kmna)); INa=gna*mna^3*hna*(vs-ena); IKdr=gkdr*n^4*(vs-ek); IsCaN=gscan*mscan^2*hscan*(vs-eca); IsKCa=gskca*(cas/(cas+0.2))*(vs-ek); Isleak=gl*(vs-el); % Pulse Input %Isapp=scales*heav(t-tons)*heav(toffs-t); %Idapp=scaled*heav(t-tond)*heav(toffd-t); % Ramp Input Isapp=offset+scale*(t-ton)*(heav(t-ton)*heav(toff-t))+... 2*scale*(tswitch-t)*(heav(t-tswitch)*heav(toff-t)); % equation for soma membrane potential yp(1)=(-INa-IKdr-IsCaN-IsKCa-Isleak+Isapp+gc*((vd-vs)/p))/c; % equation for hna hnainf=1/(1+exp((vs-thetahna)/khna)); tauhna=120/(exp((vs+50)/15)+exp(-(vs+50)/16)); yp(2)=(hnainf-hna)/tauhna; % equation for n ninf=1/(1+exp((vs-thetan)/kn)); taun=28/(exp((vs+40)/40)+exp(-(vs+40)/50)); yp(3)=(ninf-n)/taun; % equation for mscan mscaninf=1/(1+exp((vs-thetamsca)/kmscan)); yp(4)=(mscaninf-mscan)/taumscan; % equation for hscan hscaninf=1/(1+exp((vs-thetahsca)/khscan)); yp(5)=(hscaninf-hscan)/tauhscan; % equation for cas yp(6)=f*(-alpha1*IsCaN-kca*cas); % Now dendrite Compartments IdKCa=gdkca*(cad/(cad+0.2))*(vd-ek); Idleak=gl*(vd-el); ICaP=gcap*mcap*(vd-eca); INaP=gnap*mnap*(vd-ena); tloc=mod(t,period)*heav(t-tond)*heav(toffd-t); gsyn=gsynbar*(tloc/tausyn)*(exp(1-(tloc/tausyn))); Isyn=gsyn*(vd-esyn); % Equation for vd %yp(7)=(-IdKCa-ICaP-INaP-Idleak+gc*((vs-vd)/(1-p)))/c; % Equation for vd with synapse yp(7)=(-IdKCa-ICaP-INaP-Idleak-Isyn+gc*((vs-vd)/(1-p)))/c; % Equation for cad yp(8)=f*(-alpha2*ICaP-kca*cad); % Equation for mcap mcapinf=1/(1+exp((vd-thetamcap)/kmcap)); yp(9)=(mcapinf-mcap)/taumcap; % Equation for mnap mnapinf=1/(1+exp((vd-thetamnap)/kmnap)); yp(10)=(mnapinf-mnap)/taumnap; end % end of function compmini %---------------------------------------------------------------- % End of nested functions %---------------------------------------------------------------- end % end of function run_twocomp