Skip to content

Instantly share code, notes, and snippets.

@NTR0314
Created June 1, 2019 18:03
Show Gist options
  • Save NTR0314/b8f5fc823c186f6f78295d7059ede97f to your computer and use it in GitHub Desktop.
Save NTR0314/b8f5fc823c186f6f78295d7059ede97f to your computer and use it in GitHub Desktop.
So helfen Sie mir bitter Herr Springer
% Ignorieren Sie die folgende Zeile. Überall wo ZuVeraendernderAusdruck im folgenden auftaucht
% sind Änderungen durch Sie erforderlich.
ZuVeraendernderAusdruck=nan;
% Konstanten
G_K_max = 36; % Maximale Kalium-Leitfähigkeit (mS)
G_Na_max = 120; % Maximale Natrium-Leitfähigkeit (mS)
% Spannungen (Nernstspannungen können als konstant betrachtet werden)
E_K = -88; % Nernstsspannung für Kalium (mV)
E_Na = 50; % Nernstsspannung für Natrium (mV)
VpreStep = -65; % Spannung vor Sprung (mV)
VpostStep = -110; % Spannung nach Sprung (mV)
clampVoltages = [-100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40]; % Protokoll für Voltageclamp (mV)
% Initialisiserung
n_0 = 0.32;
m_0 = 0.053;
h_0 = 0.6;
% Zeit
deltat = 0.0005; %Zeitschritt (ms)
tend = 10; %Ende der Berechnung (ms)
timesteps = 0:deltat:tend;
% Preallokation der Matrix für die Raten, Gates, Ströme, und Spannung
nVoltages = length(clampVoltages); % Anzahl an clamp voltages
nTimesteps = length(timesteps);
alpha_n = zeros(nVoltages, nTimesteps);
beta_n = zeros(nVoltages, nTimesteps);
n = zeros(nVoltages, nTimesteps);
ndot = zeros(nVoltages, nTimesteps);
I_K = zeros(nVoltages, nTimesteps);
alpha_m = zeros(nVoltages, nTimesteps);
beta_m = zeros(nVoltages, nTimesteps);
m = zeros(nVoltages, nTimesteps);
mdot = zeros(nVoltages, nTimesteps);
alpha_h = zeros(nVoltages, nTimesteps);
beta_h = zeros(nVoltages, nTimesteps);
h = zeros(nVoltages, nTimesteps);
hdot = zeros(nVoltages, nTimesteps);
I_Na = zeros(nVoltages, nTimesteps);
%mnh initialisieren
m(1,1) = m_0
n(1,1) = n_0
h(1,1) = h_0
%% Simulation
% Berechne Raten, Gates (Euler-1-Schritt), I_K und I_Na
for iVoltage = 1:nVoltages
%Berechnung der Ratenkonstanten
temp = 0.01 * ((-(clampVoltages(iVoltage) + 55)) / (exp((-(clampVoltages(iVoltage) + 55)) / (10)) - 1))
if ((temp ~= -inf) && (temp ~= inf) && (isnan(temp)))
alpha_n(iVoltage) = temp;
end
beta_n(iVoltage) = 0.125 * exp(-(((clampVoltages(iVoltage) + 65))/(80)));
alpha_m(iVoltage) = 1
temp = 0.1 * ((-(clampVoltages(iVoltage) + 40)) / (exp((-(clampVoltages(iVoltage) + 40)) / (10)) - 1));
if ((temp ~= -inf) && (temp ~= inf) && (isnan(temp)))
alpha_m(iVoltage) = temp;
end
beta_m(iVoltage) = 4 * exp(-1 * ((clampVoltages(iVoltage) + 65)/(18)));
alpha_h(iVoltage) = 0.07 * exp((-(clampVoltages(iVoltage) + 65)) / (20));
beta_h(iVoltage) = 1 / (exp((-(clampVoltages(iVoltage) + 35))/10) + 1);
for iTimestep = 1:nTimesteps
%Die dot-werte
mdot(iVoltage,iTimestep) = alpha_m(iVoltage,iTimestep) * (1 - m(iVoltage,iTimestep)) - beta_m(iVoltage,iTimestep) * m(iVoltage,iTimestep);
hdot(iVoltage,iTimestep) = alpha_h(iVoltage,iTimestep) * (1 - h(iVoltage,iTimestep)) - beta_h(iVoltage,iTimestep) * h(iVoltage,iTimestep);
ndot(iVoltage,iTimestep) = alpha_n(iVoltage,iTimestep) * (1 - n(iVoltage,iTimestep)) - beta_n(iVoltage,iTimestep) * n(iVoltage,iTimestep);
% Kalium
%%Persönlicher Kommentar
%Immer wenn ich folgende Zeilen reinmache, dann läuft der Code nichtmehr zuende. Ich hab jetzt die 2 Zeilen für den Strom auskommentiert.
%I_K = G_Na_max * (m(iVoltage,iTimestep))^3 * h(iVoltage,iTimestep) * (iVoltage - E_Na);
% Natrium
%I_Na = G_K_max * (m(iVoltage,iTimestep))^4 * (iVoltage - E_K);
if(iTimestep < nTimesteps)
m(iVoltage,iTimestep+1) = m(iVoltage,iTimestep) + deltat * mdot(iVoltage,iTimestep);
h(iVoltage,iTimestep+1) = h(iVoltage,iTimestep) + deltat * hdot(iVoltage,iTimestep);
n(iVoltage,iTimestep+1) = n(iVoltage,iTimestep) + deltat * ndot(iVoltage,iTimestep);
end
end
end
%% Plotten
% Plotten der Raten und Gates für eine Spannung (Index 14) und Plotten der Ströme für alle Spannungen
% Kalium
subplot(3,1,1)
title('14. Voltagestep')
plot(timesteps,alpha_n(14,:))
hold on
plot(timesteps,beta_n(14,:),'r')
legend('alpha_n','beta_n')
xlabel('Time (ms)')
ylabel('Rate constant (1/ms)')
subplot(3,1,2)
title('14. Voltagestep')
plot(timesteps, n(14,:))
xlabel('Time (ms)')
ylabel('Gating variable n')
subplot(3,1,3)
plot(timesteps,I_K)
xlabel('Time (ms)')
ylabel('I_{K} current density (\muA)')
% Natrium
figure()
subplot(3,1,1)
plot(timesteps,alpha_m(14,:))
hold on, plot(timesteps,beta_m(14,:),'r')
plot(timesteps,alpha_h(14,:))
plot(timesteps,beta_h(14,:))
legend('alpha_m','beta_m', 'alpha_h', 'beta_h')
xlabel('Time (ms)'),
ylabel('Rate constant (1/ms)')
subplot(3,1,2)
plot(timesteps, m(14,:))
hold on
plot(timesteps, h(14,:))
legend('m','h')
xlabel('Time (ms)')
ylabel('Gating variables m, h')
subplot(3,1,3)
plot(timesteps,I_Na)
xlabel('Time (ms)')
ylabel('I_{Na} current density (\muA)')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment