Learning intrinsic excitability in Medium Spiny Neurons (Scheler 2014)

 Download zip file 
Help downloading and running models
"We present an unsupervised, local activation-dependent learning rule for intrinsic plasticity (IP) which affects the composition of ion channel conductances for single neurons in a use-dependent way. We use a single-compartment conductance-based model for medium spiny striatal neurons in order to show the effects of parameterization of individual ion channels on the neuronal membrane potential-curent relationship (activation function). We show that parameter changes within the physiological ranges are sufficient to create an ensemble of neurons with significantly different activation functions. ... "
1 . Scheler G (2014) Learning intrinsic excitability in medium spiny neurons F1000Research 2:88
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Striatum;
Cell Type(s): Neostriatum medium spiny direct pathway GABA cell; Neostriatum medium spiny indirect pathway GABA cell;
Channel(s): I A; I K; I h; I K,Ca; I Calcium; I A, slow; I Cl, leak; I Ca,p;
Gap Junctions:
Receptor(s): GabaA; AMPA; NMDA;
Gene(s): Kv4.2 KCND2; Kv1.1 KCNA1; Kv1.2 KCNA2; Kv4.3 KCND3; Kv1.4 KCNA4; Kv1.3 KCNA3; Kv1.5 KCNA5; Kv3.3 KCNC3; Cav3.2 CACNA1H; Cav3.1 CACNA1G; Cav3.3 CACNA1I; Cav1.3 CACNA1D; Cav1.1 CACNA1S; Cav1.2 CACNA1C; KCa2.1 KCNN1; Kv2.1 KCNB1; Kv3.1 KCNC1; HCN Cnga1; Cav2.1 CACNA1A; Cav2.2 CACNA1B; KCa2.2 KCNN2; Kv1.9 Kv7.1 KCNQ1; IRK; NR2A GRIN2A; NR2B GRIN2B; Kv3.4 KCNC4; Kv4.1 KCND1;
Transmitter(s): Gaba; Glutamate; Ions;
Simulation Environment: MATLAB;
Model Concept(s): Intrinsic plasticity;
Implementer(s): Schumann, Johann [johann.schumann at gmail.com];
Search NeuronDB for information about:  Neostriatum medium spiny direct pathway GABA cell; Neostriatum medium spiny indirect pathway GABA cell; GabaA; AMPA; NMDA; I A; I K; I h; I K,Ca; I Calcium; I A, slow; I Cl, leak; I Ca,p; Gaba; Glutamate; Ions;
% run_neuron.m
% from run_neuron
% With EXCIT + INHIB inputs = nn_inputs(1,:), nn_inputs(2,:)
% run neuron with given statevector (parameters/states) for a given amount 
% of time
% (specified in sim) on inputs "nn_inputs"
% returns: new state vector nn_params
%	$Revision:$

function [nn_params, vm, conduct, I_channels] = run_neuron(nn_params, NM, nn_inputs, sim)

vm = zeros(1, sim.T_upd*sim.ts);

conduct = zeros(1, sim.T_upd*sim.ts);

% globals needed to pass parameters
% to the neuron.m function
global I_S;
global Ts;
global par;


Ts = sim.ts;

% extract current channel states form state vector
V0 = reshape(nn_params(1:sim.N_states),1,sim.N_states);

% get current mu parameters into global vector
par = NM * nn_params(21:20+sim.N_params);

% get inputs into global vector
I_S = nn_inputs;

% do the simulation
%	neuron requires current-I_syn input
%	if nn_inputs are conductances: convert before doing integration
for i=1:sim.T_upd-1,
	if (sim.input_units == 'conductance'),
		I_S(:,floor(t/Ts)) = nn_inputs(:,floor(t/Ts)) * (V0(1) - 0);
	dV_m = V0(1);
	if (strcmp(sim.integration, 'ode')),
		[time,V1] = ode45(sim.neuron,[t-Ts t], V0);
		V0 = V1(length(time),:)';
		V0 = feval(sim.neuron, t, V0);
	V_m = V0(1);
	vm(i) = V_m;
	dV_m = V_m - dV_m;

	% calculate the currents if necessary
	if (sim.get_channels),
%%		conduct(i) = neuron_conduct(t,V0);
		I_channels.I_K(i)   = par(1) * ik(V_m, V0(4));
		I_channels.I_CaL(i) = par(2) * ica_traub(V_m, V0(5), V0(6));
		I_channels.I_KAs(i) = par(3) * ikas(V_m, V0(7), V0(8));
		I_channels.I_Na(i)  = par(4) * ina(V_m, V0(2), V0(3));
		I_channels.I_NaS(i) = par(5) * inas(V_m, V0(9));
		I_channels.I_Kaf(i) = par(6) * ikaf(V_m, V0(11), V0(12));
		I_channels.I_Kir(i) = par(7) * ikir(V_m, V0(10));
		I_channels.I_AHP(i) = par(8) * ...
				iAHP(V_m, V0(13), par(11)*V0(14));
		I_channels.Cai(i)   = V0(14);
		I_channels.I_M(i)   = par(9) * im(V_m, V0(15));
		I_channels.I_H(i)   = par(13) * ih(V_m, V0(18));
		I_channels.I_NMDA(i)= par(12) * iNMDAdd(V_m, V0(16), V0(17), ...
				par(15)*I_S(1,i), i);
		I_channels.I_INJ(i)= I_channels.I_NMDA(i) + ...
				par(14)*I_S(1,i) + ...
		I_channels.dV_m(i)    = dV_m;
%		I_channels.I_new(i)    = zeros(1, sim.T_upd*sim.ts);

	t = t + sim.ts;
% update state vector by new channel states
nn_params(1:sim.N_states) = V0;

Loading data, please wait...