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

 Download zip file 
Help downloading and running models
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.
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;
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;
% Computes instantaneous firing frequency and returns it along with SD
function [inst_freq_vals] = get_inst_freq(time_vals, spike_idx)

  % The heart of the matter
	spike_times = time_vals(spike_idx);
	if (length(spike_times) > 1)
		for i=1:length(inst_freq_vals)
			pre_spike = find(spike_times < time_vals(i));
			pre_spike = max(pre_spike);
			post_spike = find(spike_times > time_vals(i));
			post_spike = min(post_spike);

			% Are we AT a spike?
			if (length(find(spike_times == time_vals(i))) == 1)
				if (length(pre_spike) > 0 & length(post_spike) > 0)
					inst_freq_vals(i) = 0.5/(time_vals(i)-spike_times(pre_spike)) ...
					+ 0.5/(spike_times(post_spike)-time_vals(i)); 
				% At first spike?
				elseif (length(pre_spike) == 0)
					inst_freq_vals(i) = 1/(spike_times(post_spike)-time_vals(i)); 
				% At last spike?
				elseif (length(post_spike) == 0)
					inst_freq_vals(i) = 1/(time_vals(i)-spike_times(pre_spike)); 
			% Not at a spike
				% Before first spike or after last?
				if (length(pre_spike) == 0 | length(post_spike) == 0) 
					inst_freq_vals(i) = 0; 
					inst_freq_vals(i) = 1/(spike_times(post_spike)-spike_times(pre_spike)); 

Loading data, please wait...