Spike frequency adaptation in the LGMD (Peron and Gabbiani 2009)

 Download zip file 
Help downloading and running models
Accession:116945
This model is used in the referenced paper to demonstrate that a model of an SK-like calcium-sensitive potassium (KCa) conductance can replicate the spike frequency adaptation (SFA) of the locust lobula giant movement detector (LGMD) neuron. The model simulates current injection experiments with and without KCa block in the LGMD, as well as visual stimulation experiments with and without KCa block.
Reference:
1 . Peron S, Gabbiani F (2009) Spike frequency adaptation mediates looming stimulus selectivity in a collision-detecting neuron. Nat Neurosci 12:318-26 [PubMed]
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:
Cell Type(s): Locust Lobula Giant Movement Detector (LGMD) neuron;
Channel(s): I Na,t; I K,Ca; I Calcium; I Krp;
Gap Junctions:
Receptor(s): GabaA; Cholinergic Receptors;
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Spike Frequency Adaptation; Vision;
Implementer(s): Gabbiani, F; Peron, Simon [perons at janelia.hhmi.org];
Search NeuronDB for information about:  GabaA; Cholinergic Receptors; I Na,t; I K,Ca; I Calcium; I Krp;
%
% returns default model settings -- three cmpt model
%  use_set:
%    1 = Nature Neuroscience
%    0 = Biological Cybernetics; this is the DEFAULT (i.e., values below)
%
function ps_mod = get_general_model_settings(use_set);
	% --- No feed forward inhibition
  if (use_set == 0)
		% geometry
		ps_mod.rad_m = .0004; % 5 um = .0005 cm
		ps_mod.rad_a = .0015; % 10 um
		ps_mod.len_m = .02; % 200 um ; from morphology data
		ps_mod.len_a = .1; % 1 mm = .1 cm
		ps_mod.Ad = 0.0005; % the one area that is fixed - approx 100,000 um 2 or .001 cm 2
		ps_mod.len_d = .03; % 300 um; morpho data

		% calculate variables that depend on geometry
		ps_mod = compute_geometry(ps_mod);

		% Other passive properties
		ps_mod.Cm=1.5000; % uF / cm2
		ps_mod.v_ss=-65; % mV
		ps_mod.gLd=.11; % mS / cm2 [ inverse of kOhm cm2 ] -- without iH, gLd is .222 (1000/4500)
		ps_mod.gLa=.11;
		ps_mod.gLm=.11;
		ps_mod.VL=-75;
		
		% conductances - set gXX to 0 for all to disable
		ps_mod.VNa=70;
		ps_mod.gNa=90; % 45 orig 5x9  %%% 22
		ps_mod.tau_naa_sf = .25; % speed up activation time constant
		ps_mod.tau_nai_sf = .3; % speed up activation time constant

		ps_mod.VK=-80;
		ps_mod.gKDR=22; % 18 orig 2x9
		ps_mod.tau_kdr_sf = .35; % speed up activation time constant
		ps_mod.gKAHP=50; % 5 default - 50 since Am = .1 Aa
	 
		ps_mod.VIh=-35; % gIh = g_rest_total * (1/rin_change_after_zd) * (1/p_open(rest)); -35 usually
		ps_mod.gIh=.4; % mS / cm2 - assumes ~30% open at rest, contributing to half of rm; - ~0.4
		
		% calcium stuff
		ps_mod.ca_cmpt = 3; % 3 - mid; 2 - dend ; 1 - ax -- this is tricky, because in a 2cmpt model, hard to decide;
												% ideally, we would have dend--mid--ax and mid would have this current
		ps_mod.gCa=1;
		ps_mod.gCaV12=-25; %x-25
		ps_mod.gCaSl=-3; %x-5
		ps_mod.VCa=90;
		ps_mod.gCaTau = 10; % in ms
		% ps_mod.alphaCa=0.06; % uM (ms uA)^-1 cm2 -- scalign variable for rate of influx %x.012
		ps_mod.alphaCa=0.12; % uM (ms uA)^-1 cm2 -- scalign variable for rate of influx %x.012
		ps_mod.tauCa=130; % ms - rate of efflux ; 131 in paper
		ps_mod.kD=35; % uM - binding constant for k ahp -- originally 15 -- lowering this increases ca sensitivity

		% variables for simulating bapta . . . 
		ps_mod.cBAPTA = 0; % uM BAPTA concentration
		ps_mod.tau_diff_CaBAPTA = 1; % diffusion of BAPTA*Ca away from Ca influx site modeled with this time constant
		ps_mod.kon_BAPTA = .4; % uM-1 ms-1; from Meinrenken et al. 2002
		ps_mod.koff_BAPTA = 2; % ms-1; from Meinrenken et al. 2002
		ps_mod.sf_bapta = 1; % alternate bapta implementation -- fraction of [Ca] available to KAHP channel
		 
		ps_mod.bapta_base = ps_mod.tauCa;
		ps_mod.bapta_vis = 20;
		ps_mod.bapta_cur = 20;

		% excitatory synapse stuff
		ps_mod.exc_syn_cmpt = 2; % dendrite duh!
		ps_mod.erev_syn_exc = 0;
		ps_mod.tau_syn_exc = 0.3;
		ps_mod.n_syns_exc = 15000; % DEPRECATE
		ps_mod.n_syns_per_facet_exc = 1; % number of synapses -- 'contact points'  -- per ommatidium ...
		ps_mod.spontaneous_firing_rate_exc = .05; % in Hz - for individual vesicular release
		ps_mod.g_max_syn_exc = 0.94; % mS/cm2 - for ONE synapse - .47 is you assume old data (which was 47 nS/synapse or .47mS/cm2) %%% .235
		ps_mod.n_minis_avg_exc = 1; % number of minis avg per event - lambda of poisson distro
		ps_mod.g_max_spont_exc = .0047; % mini size; .0047 if 1/100 old data (that is, scaled to SA and THEN divided by 100) %%% .0282
		ps_mod.tvnf_exc = [0 0 10 50]; % delay = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.tsdvnf_exc = [0 20 10 10]; % delay_jitter = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.velsf_exc = [0 1 1 1]; % velocity scaling factor = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4) - turned OFF

		% inhibitory synapse stuff
		ps_mod.inh_syn_cmpt = 3; % ca cmpt
		ps_mod.erev_syn_inh = -75;
		ps_mod.tau_syn_inh = 2;
		ps_mod.n_syns_inh = 1000; 
		ps_mod.spontaneous_firing_rate_inh = 2; % in Hz - for individual vesicular release %%% .5
		ps_mod.g_max_syn_inh = 0; % mS/cm2 - ORIGINALLY .6
		ps_mod.n_minis_avg_inh = 1; % number of minis avg per event - lambda of poisson distro
		% O: ps_mod.g_max_spont_inh = .1; % mini size; .0047 if 1/100 old data (that is, scaled to SA and THEN divided by 100) %%% 0
		ps_mod.g_max_spont_inh = 0; % mini size; .0047 if 1/100 old data (that is, scaled to SA and THEN divided by 100) %%% 0
		ps_mod.n_syns_per_facet_inh = 1;
		ps_mod.tvnf_inh = [0 20 10 50]; % delay = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.tsdvnf_inh = [0 20 10 10]; % delay_jitter = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.velsf_inh = [0 1 1 1]; % velocity scaling factor = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4) -- NO EFFECT

		% generic inputs vectors
		ps_mod.I_inj_nA = [0 0 0]; % nA -- [ax dend]
		ps_mod.I_inj_start = 1; % ms
		ps_mod.I_inj_end = 1; % ms

	% --- NATURE NEUROSCEINCE PAPER PARAMETERS	 -- FEED FORWARD INHIBTION
	elseif (use_set == 1)
    % NOTE - these are IGNORED!
		ps_mod.rad_m = .0004; % 5 um = .0005 cm
		ps_mod.rad_a = .0015; % 10 um
		ps_mod.len_m = .02; % 200 um ; from morphology data
		ps_mod.len_a = .1; % 1 mm = .1 cm
		ps_mod.Ad = 0.0005; % the one area that is fixed - approx 100,000 um 2 or .001 cm 2
		ps_mod.len_d = .03; % 300 um; morpho data

		% derive remaining geometric variables
		ps_mod.rad_d = ps_mod.Ad/(2*pi*ps_mod.len_d);
		ps_mod.Ad = 0.0005; 
		ps_mod.Aa = 0.00095;
		ps_mod.Am = 0.00005;
		
		% passive properties - old wang model
		ps_mod.p_am=ps_mod.Am/(ps_mod.Am + ps_mod.Aa); % axonal area / total area
		ps_mod.p_ma=ps_mod.Aa/(ps_mod.Aa + ps_mod.Am); % axonal area / total area
		ps_mod.p_dm=ps_mod.Am/(ps_mod.Am + ps_mod.Ad); % axonal area / total area
		ps_mod.p_md=ps_mod.Ad/(ps_mod.Ad + ps_mod.Am); % axonal area / total area

		
		% intercompartmental coupling - new approach
		ps_mod.rax = .060; % 60 ohm cm --> .06 kOhm cm sicne we want to invert and get mS
		rd = (ps_mod.rax * ps_mod.len_d)/(2*pi*ps_mod.rad_d*ps_mod.rad_d);
		ra = (ps_mod.rax * ps_mod.len_a)/(2*pi*ps_mod.rad_a*ps_mod.rad_a);
		rm = (ps_mod.rax * ps_mod.len_m)/(2*pi*ps_mod.rad_m*ps_mod.rad_m);
		ps_mod.gc_dm = 16.12;
		ps_mod.gc_am = 12.3;
		ps_mod.gc_md = 1.62;
		ps_mod.gc_ma = .66;
		% calculate variables that depend on geometry

		% Other passive properties
		ps_mod.Cm=1.5000; % uF / cm2
		ps_mod.v_ss=-65; % mV
		ps_mod.gLd=.11; % mS / cm2 [ inverse of kOhm cm2 ] -- without iH, gLd is .222 (1000/4500)
		ps_mod.gLa=.11; %
		ps_mod.gLm=.11; %
		ps_mod.VL=-75; %
		
		% conductances - set gXX to 0 for all to disable
		ps_mod.VNa=70;
		ps_mod.gNa=22; % 45 orig 5x9
		ps_mod.tau_naa_sf = .25; % speed up activation time constant
		ps_mod.tau_nai_sf = .3; % speed up activation time constant

		ps_mod.VK=-80;
		ps_mod.gKDR=22; % 18 orig 2x9
		ps_mod.tau_kdr_sf = .35; % speed up activation time constant
		ps_mod.gKAHP=50; % 5 default - 50 since Am = .1 Aa
	 
		ps_mod.VIh=-35; % gIh = g_rest_total * (1/rin_change_after_zd) * (1/p_open(rest)); -35 usually
		ps_mod.gIh=.4; % mS / cm2 - assumes ~30% open at rest, contributing to half of rm; - ~0.4
		
		% calcium stuff
		ps_mod.ca_cmpt = 3; % 3 - mid; 2 - dend ; 1 - ax -- this is tricky, because in a 2cmpt model, hard to decide;
												% ideally, we would have dend--mid--ax and mid would have this current
		ps_mod.gCa=1;
		ps_mod.gCaV12=-25; %x-25
		ps_mod.gCaSl=-3; %x-5
		ps_mod.VCa=90;
		ps_mod.gCaTau = 10; % in ms
		ps_mod.alphaCa=0.12; % uM (ms uA)^-1 cm2 -- scalign variable for rate of influx %x.012
		ps_mod.tauCa=132; % ms - rate of efflux ; 131 in paper
		ps_mod.kD=35; % uM - binding constant for k ahp -- originally 15 -- lowering this increases ca sensitivity

		% variables for simulating bapta . . . 
		ps_mod.cBAPTA = 0; % uM BAPTA concentration
		ps_mod.tau_diff_CaBAPTA = 1; % diffusion of BAPTA*Ca away from Ca influx site modeled with this time constant
		ps_mod.kon_BAPTA = .4; % uM-1 ms-1; from Meinrenken et al. 2002
		ps_mod.koff_BAPTA = 2; % ms-1; from Meinrenken et al. 2002
		ps_mod.sf_bapta = 1; % alternate bapta implementation -- fraction of [Ca] available to KAHP channel
		 
		ps_mod.bapta_base = ps_mod.tauCa;
		ps_mod.bapta_vis = 20;
		ps_mod.bapta_cur = 20;

		% excitatory synapse stuff
		ps_mod.exc_syn_cmpt = 2; % dendrite duh!
		ps_mod.erev_syn_exc = 0;
		ps_mod.tau_syn_exc = 0.3;
		ps_mod.n_syns_per_facet_exc = 5; % number of synapses -- 'contact points'  -- per ommatidium ...
		ps_mod.spontaneous_firing_rate_exc = .05; % in Hz - for individual vesicular release
		ps_mod.g_max_syn_exc = .47; % mS/cm2 - for ONE synapse - .47 is you assume old data (which was 47 nS/synapse or .47mS/cm2)
		ps_mod.n_minis_avg_exc = 1; % number of minis avg per event - lambda of poisson distro
		ps_mod.g_max_spont_exc = .047; % mini size; .0047 if 1/100 old data (that is, scaled to SA and THEN divided by 100)
		ps_mod.tvnf_exc = [50 0 10 50]; % delay = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.tsdvnf_exc = [50 5 10 5]; % delay_jitter = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.velsf_exc = [0 1 1 1]; % velocity scaling factor = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4) - turned OFF

		% inhibitory synapse stuff
		ps_mod.inh_syn_cmpt = 3; % ca cmpt
		ps_mod.erev_syn_inh = -75;
		ps_mod.tau_syn_inh = 2;
		ps_mod.n_syns_per_facet_inh = 1;
		ps_mod.g_max_syn_inh = 6; % mS/cm2 - ORIGINALLY .6 10 works for loom
		ps_mod.spontaneous_firing_rate_inh = .5; % in Hz - for individual vesicular release
		ps_mod.n_minis_avg_inh = 1; % number of minis avg per event - lambda of poisson distro
		ps_mod.g_max_spont_inh = 0.05; % mini size; .0047 if 1/100 old data (that is, scaled to SA and THEN divided by 100)
		ps_mod.tvnf_inh = [120 20 100 80]; % delay = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.tsdvnf_inh = [5 20 10 1]; % delay_jitter = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4)
		ps_mod.velsf_inh = [0 1 1 1]; % velocity scaling factor = v(1)./(1+exp((nsyns-v(2))/v(3)))+v(4) -- NO EFFECT

		% generic inputs vectors
		ps_mod.I_inj_nA = [0 0 0]; % nA -- [ax dend]
		ps_mod.I_inj_start = 1; % ms
		ps_mod.I_inj_end = 1; % ms

		ps_mod.g_max_syn_exc = .47*.5; % mS/cm2 - for ONE synapse - .47 is you assume old data (which was 47 nS/synapse or .47mS/cm2)
		ps_mod.g_max_spont_exc = .047*.6; % mini size; .0047 if 1/100 old data (that is, scaled to SA and THEN divided by 100)
		ps_mod.g_max_syn_inh = 6*.3; % mS/cm2 - ORIGINALLY .6 10 works for loom
		ps_mod.g_max_spont_inh = .05*.2; % mini size; .0047 if 1/100 old data (that is, scaled to SA and THEN divided by 100)

    ps_mod.tsdvnf_exc = [0 1 1 5]; % I did this to not rely on variable input
  end

%
% geometry-dependent variables
%
function ps_mod = compute_geometry(ps_mod)
	% derive remaining geometric variables
	ps_mod.rad_d = ps_mod.Ad/(2*pi*ps_mod.len_d);
  ps_mod.Aa=2*pi*ps_mod.rad_a*ps_mod.len_a;
  ps_mod.Am=2*pi*ps_mod.rad_m*ps_mod.len_m;
  
  % passive properties - old wang model
  ps_mod.p_am=ps_mod.Am/(ps_mod.Am + ps_mod.Aa); % axonal area / total area
  ps_mod.p_ma=ps_mod.Aa/(ps_mod.Aa + ps_mod.Am); % axonal area / total area
  ps_mod.p_dm=ps_mod.Am/(ps_mod.Am + ps_mod.Ad); % axonal area / total area
  ps_mod.p_md=ps_mod.Ad/(ps_mod.Ad + ps_mod.Am); % axonal area / total area

  
	% intercompartmental coupling - new approach
	ps_mod.rax = .060; % 60 ohm cm --> .06 kOhm cm sicne we want to invert and get mS
	rd = (ps_mod.rax * ps_mod.len_d)/(2*pi*ps_mod.rad_d*ps_mod.rad_d);
	ra = (ps_mod.rax * ps_mod.len_a)/(2*pi*ps_mod.rad_a*ps_mod.rad_a);
	rm = (ps_mod.rax * ps_mod.len_m)/(2*pi*ps_mod.rad_m*ps_mod.rad_m);
	ps_mod.gc_dm = (1/(rm + rd))*(1/ps_mod.Am); % gc_source,target
	ps_mod.gc_am = (1/(rm + ra))*(1/ps_mod.Am);
	ps_mod.gc_md = (1/(rm + rd))*(1/ps_mod.Ad);
	ps_mod.gc_ma = (1/(rm + ra))*(1/ps_mod.Aa);


Loading data, please wait...