Cracking the Code: Using quantitative models in Matlab
to solve problems
M. Letitia Hubbard, PhD North Carolina School of Science and Math, Durham, NC
Steps to developing a quantitative model that be used to solve problems• STEP 1: Understand the physical basis for the model• STEP 2: Understand numerical methods and be able to
compute them by hand• STEP 3: Translate equations into Matlab code to create a
computational tool• STEP 4: Use simulation to explore the impact of different
variables on the model.
The HH Model: The Excitable Cell•Neurons are a type of excitable
cell.
• The three main components of an excitable cell are • the charged ions • the cell membrane • voltage-gated ion channels
http://www.cytherapharm.com/research.html
The HH Model: The Action Potential• The action potential is the change in
membrane voltage in response to the movement of three major ions (K+, Na2+, Cl-)
• The ion channels have gates that open and close at different times during the action potential and this helps to balance the diffusive force and electric field forces across the membrane.
The HH Model: The Parallel Conductance Model• Cell membrane = capacitor• Voltage gated ion channels =
variable resistors (conductances)• Nernst Potential (balance
between electric field and diffusion force) = battery
Equations for Currents:
http://www.genesis-sim.org/cnslecs/cns1.html
The HH Model: The Differential Equation for the Transmembrane Potential• The transmembrane potential is
governed by the differential equation:• • Istim is the current injected into the
cell • Cm is the specific membrane
capacitance of 1μF/cm2
The HH Model: The Differential Equations for The Gating Variables
The rate constants, alpha and beta are calculated as follows:
The Gating Variables
Numerical Methods• The approach we will use is to solve all the governing ODE using an
approximation. The simplest of these (and least accurate) is the Forward Euler method, where you estimate the next answer using the previous answer (explicit method).
• Using the Forward Euler approximation, we can represent the differential equations as:
•
Translate equations into MATLAB codefunction [outputv]=HH_Patch
%INPUTSTOT_TIME=20; %msdt=.01;%Timestep in mssavedata=20;NTSTEPS=round(TOT_TIME/dt); %Number of Timestepstvect=dt*[1:NTSTEPS]; %Time Vector %%%% SET THE STIMULUS PARAMETERS %%%%stimval=20; %uA/cm2stimdur=2; %ms
Translate equations into MATLAB code%CONSTANTSGNA = 120.0; % mS/cm^2GK = 36.0; % mS/cm^2GLEAK = 0.3; % mS/cm^2ENA = 115.0; % mVEK = -12.0; % mVELEAK = 10.613; % mVCm=1; %uF/cm^2
%Initial Conditionsoutputv=[zeros(1,length(tvect)/20)];v=0;m = alpham1(v)./(alpham1(v)+betam1(v)); % initial (steady-state) mh = alphah1(v)./(alphah1(v)+betah1(v)); % initial (steady-state) hn = alphan1(v)./(alphan1(v)+betan1(v));Istim=0;
Skeleton Codefor i=1:NTSTEPS; %Apply square wave stimulus to the first three nodes if (i< round(stimdur/dt)) Istim=stimval; else Istim=0; end %Calculate IionIion =???????????;
Skeleton Code%Calculate next m,n,h m=m+dt.*(alpham1(v).*(1-m) -betam1(v).*m); n=n+dt.*(alphan1(v).*(1-n) -betan1(v).*n); h=h+dt.*(alphah1(v).*(1-h) -betah1(v).*h); %Calculate membrane potential at the next step vold=v; vnew=????????; v=vnew;
Skeleton Functions to calculate rate constantsfunction rc=alphah1(v) rc = 0.07 .* exp(-v./20.0);function rc=alpham1(v) rc = ????;function rc=alphan1(v) rc = ????;function rc=betam1(v) rc = ????;function rc=betah1(v) rc = ????;function rc=betan1(v) rc = ????;
Code to Output Data%this section is to determine when to dump the output
cnt=cnt+1;
figure(1000)
% Plot action potential as a function of t
if cnt==savedata
hold off
hh=subplot(1,1,1);
outputv(plotcount)=v;
plot(tvect(1:savedata:i),outputv(1:plotcount)), axis([0 tvect(end) -20 120]);
set(get(hh,'XLabel'),'String','Time (ms)');
set(get(hh,'YLabel'),'String','Voltage (mV)');
cnt=0;plotcount = plotcount+1;
drawnow % you need this to get MATLAB to draw each time
end
end
Use simulation to explore different variables
Test Strength-Duration Relationship• %%%% SET THE STIMULUS PARAMETERS %%%%• stimval=20; %uA/cm2
• stimdur=2; %ms
Generate an Action Potential
Top Related