Ćwiczenie 1: Model Hodgkina Huxleya 1 Wstęp Równania Hodgkina-Huxleya we współczesnej notacji wyglądają tak: dv dn dm dh gdzie: = [ I inj ḡ Na m 3 h(v V Na ) ḡ K n 4 (V V K ) g L (V V L ) ] /C(1) = α n (V )(1 n) β n (V )n (2) = α m (V )(1 m) β m (V )m (3) = α h (V )(1 h) β h (V )h (4) α n (V ) = 0.01(V + 55) 1 exp[ (V + 55)/10] (5) β n (V ) = 1.125exp[ (V + 65)/80] (6) α m (V ) = 0.1(V + 40) 1 exp[ (V + 40)/10] (7) β m (V ) = 4exp[ (V + 65)/18] (8) α h (V ) = 0.07exp[ (V + 65)/20] (9) β n (V ) = 1 1 + exp[ (V + 35)/10] (10) Wartości stałych: C = 1; g Na = 120; V Na = 50; g K = 36; V K = 77; g L = 0.3; V L = 54; W tych równaniach napięcia podane są w mv, gęstości prądów w µa/cm 2, pojemność w µf/cm 2 a czas w ms. 1
2 Ćwiczenia: 1. Zaimplementować model H-H w simulink u. 1 0 HH Constant Slider Gain S Function Scope S funkcja w tym modelu jest następująca: function [sys,x0,str,ts] = HH(t,x,u,flag) Based on: General M-file S-function template switch flag, case 0, [sys,x0,str,ts]=mdlinitializesizes; case 1, sys=mdlderivatives(t,x,u); case 2, sys=mdlupdate(t,x,u); case 3, sys=mdloutputs(t,x,u); case 4, sys=mdlgettimeofnextvarhit(t,x,u); case 9, sys=mdlterminate(t,x,u); otherwise error([ Unhandled flag =,num2str(flag)]); end end sfuntmpl =========================================================================== mdlinitializesizes Return the sizes, initial conditions, and sample times for the S-function. =========================================================================== function [sys,x0,str,ts]=mdlinitializesizes sizes = simsizes; 2
sizes.numcontstates = 4; sizes.numdiscstates = 0; sizes.numoutputs = 4; sizes.numinputs = 1; sizes.dirfeehrough = 1; sizes.numsampletimes = 1; sys = simsizes(sizes); initialize the initial conditions x0 = [0 0 0 0]; str is always an empty matrix str = []; initialize the array of sample times ts = [0 0]; end mdlinitializesizes =========================================================================== mdlderivatives Return the derivatives for the continuous states. Here we write down differential equations of our model. =========================================================================== function sys=mdlderivatives(t,x,u) I=u(1); C=1; g_na = 120; V_Na= 50; g_k=36; 3
V_K=-77; g_l=0.3; V_L=-54; V=x(1); n=x(2); m=x(3); h=x(4); I_Na = g_na*m^3*h*(v-v_na); I_K =??? wpisz kod na prąd potasowy I_L = g_l*(v-v_l); dv=(i - I_Na - I_K - I_L)/C; dn=a_n(v)*(1-n) - b_n(v) *n; dm=a_m(v)*(1-m) - b_m(v) *m; dh=??? wpisz wyrażenie na dh/ ; sys(1) = dv; sys(2) = dn; sys(3) = dm; sys(4) = dh; end mdlderivatives =========================================================================== Tu wpisujemy przydatne dla nas funkcje =========================================================================== function y= a_n(v) y=0.01*(v+55)./(1-exp(-(v+55)/10)); function y= b_n(v) y=0.125*exp(-(v+65)/80); function y= a_m(v) y=0.1*(v+40)./(1-exp(-(v+40)/10)); function y= b_m(v) 4
y=4*exp(-(v+65)/18); function y= a_h(v) y=???; function y= b_h(v) y=???; end of our functions =========================================================================== mdlupdate Handle discrete state updates, sample time hits, and major time step requirements. =========================================================================== function sys=mdlupdate(t,x,u) sys = []; end mdlupdate =========================================================================== mdloutputs Return the block outputs. =========================================================================== function sys=mdloutputs(t,x,u) g_na = 120; V_Na= 50; g_k=36; V_K=-77; g_l=0.3; V_L=-54; V=x(1); n=x(2); m=x(3); 5
h=x(4); I_Na = g_na*m^3*h*(v-v_na); I_K =??? wpisz kod na prąd potasowy I_L = g_l*(v-v_l); sys = [V 100*n-80 100*m-80 100*h-80]; end mdloutputs =========================================================================== mdlgettimeofnextvarhit Return the time of the next hit for this block. Note that the result is absolute time. Note that this function is only used when you specify a variable discrete-time sample time [-2 0] in the sample time array in mdlinitializesizes. =========================================================================== function sys=mdlgettimeofnextvarhit(t,x,u) sampletime = 1; Example, set the next hit to be one second later. sys = t + sampletime; end mdlgettimeofnextvarhit =========================================================================== mdlterminate Perform any end of simulation tasks. =========================================================================== function sys=mdlterminate(t,x,u) sys = []; end mdlterminate 2. Zapuść symulację dla Gain =0 i Gain =10. Czy widzisz potencjały czyn- 6
nościowe? 3. Zamień stałą 1 na generator impulsów 4. Znajdź najniższą wartość prądu dla wywołania pojedynczego potencjału czynnościowego. Na ile ostre jest zjawisko progowe, czy możesz wywołać potencjał czynnościowy o połówkowej wysokości? 5. Prąd reobaza jest najmniejszym prądem jaki trzeba wstrzyknać do neuronu aby wywołać ciąg potencjałów czynnościowych. Jaka jest reobaza dla tego modelu? Jak ostre jest przejście od pojedynczych potencjałów do ciągów potencjałów? Czy można znaleźć wartość prądu dla której odpalą się dwa potencjały, ale nie wystąpi ich ciąg. 6. Zliczając ilość potencjałów w oknie 100ms skonstruuj wykres częstości odpalania od wstrzykniętego prądu, rozpocznij od wartości reobazy i dojdź do 10*reobaza. Co się stanie jeśli wstrzykniemy prąd 100*reobaza 7. W problemie 4 widzieliśmy, że pojedyncze potencjały czynnościowe mogą być wywołane przez małe stałe wartości wstrzykiwanego prądu. Pojedyncze potencjały mogą być też wywołane przez krótkotrwałe impulsy prądu,nawet jeśli trwają one krócej niż potencjał czynnościowy. Jednak wraz ze spadkiem czasu trwania impulsu jego amplituda musi wzrastać. Sporządź wykres wartości progowej impulsu prądowego koniecznej do odpalenia potencjału wzg. jego długości( w zakresie 0.1 and 2 ms). Czy jest prosta zależność pomiędzy długością impulsu i jego wartością progową? 8. W tym problemie zbadasz okres refrakcji, który występuje po każdym potencjale czynnościowym. Okres refrakcji bezwzględnej to taki okres, w którym żaden bodziec niezależnie od siły nie jest w stanie wywołać potencjału czynnościowego. Okres refrakcjii względnej to okres, w którym drugi potencjał czynnościowy może być wygenerowany, ale bodziec musi być odpowiednio silny. Używając pary bodźców wykreśl zależność progu od latencji drugiego bodźca. 7