State dependent drug binding to sodium channels in the dentate gyrus (Thomas & Petrou 2013)

 Download zip file   Auto-launch 
Help downloading and running models
A Markov model of sodium channels was developed that includes drug binding to fast inactivated states. This was incorporated into a model of the dentate gyrus to investigate the effects of anti-epileptic drugs on neuron and network properties.
1 . Thomas EA, Petrou S (2013) Network-specific mechanisms may explain the paradoxical effects of carbamazepine and phenytoin. Epilepsia 54:1195-202 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell; Axon; Channel/Receptor;
Brain Region(s)/Organism:
Cell Type(s): Dentate gyrus granule GLU cell; Dentate gyrus mossy cell; Dentate gyrus basket cell; Dentate gyrus hilar cell;
Channel(s): I Na,t; I A; I_AHP;
Gap Junctions:
Receptor(s): GabaA; AMPA;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON; MATLAB;
Model Concept(s): Ion Channel Kinetics; Epilepsy; Calcium dynamics; Drug binding; Markov-type model;
Implementer(s): Thomas, Evan [evan at];
Search NeuronDB for information about:  Dentate gyrus granule GLU cell; GabaA; AMPA; I Na,t; I A; I_AHP; Gaba; Glutamate;
Fig 2A
function Vclamp

grid on

tm = 0:0.1:10;
Concentrations = [0 10e-6 100e-6];
h = zeros(size(Concentrations));
Drug = 'carbamazepine';

protocol = [ ...
	[-inf -50]; ...
	[2 -10]; ...
	[inf -10] ...

junk = zeros(length(tm), length(Concentrations)+1);
junk(:,1) = tm;
for j=1:length(Concentrations)
	concentration = Concentrations(j);
	I = INaCK(tm, protocol, concentration, Drug);
	h(1) = line(tm, I, ...
		'linewidth', 2);
	junk(:, j+1) = I;

save clampout.dat junk -ascii

str = {};
for j=1:length(Concentrations)
	str{end+1} = sprintf('[%s] = %d{\\mu}M', ...
		Drug, Concentrations(j)*1e6);
set(gcf, 'color', 'white')

function I = INaCK(tm, protocol, concentration, drug)
VNa = 50;

q = Q(V(0, protocol), concentration, drug);
[Vx,Dx] = eig(q'); % left eigen vectors are required, hence transpose
[junk indx] = min(abs(diag(Dx))); % find the zero eigen value
P0 = Vx(:,indx); % get the eigen vector
P0 = P0/sum(P0); % Normalise to a probability

[t Y] = ode23(@CKderivs, tm, P0, [], protocol, concentration, drug);
O = Y(:,1);
I = O .* (V(t, protocol)-VNa);

function dPdt = CKderivs(t, P, protocol, concentration, drug)
v = V(t, protocol);
q = Q(v, concentration, drug);
dPdt = (P'*q)';

function I = INaHH(tm, protocol)
VNa = 50;

[minf hinf] = HHrates(protocol.hold, 'inf');

Yinit = [minf hinf];
[t Y] = ode23(@HHderivs, tm, Yinit, [], protocol);

m = Y(:,1);
h = Y(:,2);
I = m.^3 .* h .* (V(t, protocol)-VNa);

function dYdt = HHderivs(t, Y, protocol)
v = V(t, protocol);
m = Y(1);
h = Y(2);

[m_alpha m_beta h_alpha h_beta] = HHrates(v);
dmdt  = m_alpha*(1-m) - m_beta*m;
dhdt  = h_alpha*(1-h) - h_beta*h;

dYdt = [dmdt dhdt]';

function v = V(tm, protocol)
v = zeros(size(tm));
for i=1:length(tm)
	for j=2:size(protocol, 1)
		if protocol(j-1,1)<t && t<=protocol(j,1)
			v(i) = protocol(j-1,2);

Loading data, please wait...