Human tactile FA1 neurons (Hay and Pruszynski 2020)

 Download zip file 
Help downloading and running models
Accession:266798
"... we show that synaptic integration across the complex signals from the first-order neuronal population could underlie human ability to accurately (< 3°) and rapidly process the orientation of edges moving across the fingertip. We first derive spiking models of human first-order tactile neurons that fit and predict responses to moving edges with high accuracy. We then use the model neurons in simulating the peripheral neuronal population that innervates a fingertip. We train classifiers performing synaptic integration across the neuronal population activity, and show that synaptic integration across first-order neurons can process edge orientations with high acuity and speed. ... our models suggest that integration of fast-decaying (AMPA-like) synaptic inputs within short timescales is critical for discriminating fine orientations, whereas integration of slow-decaying (NMDA-like) synaptic inputs supports discrimination of coarser orientations and maintains robustness over longer timescales"
Reference:
1 . Hay E, Pruszynski JA (2020) Orientation processing by synaptic integration across first-order tactile neurons. PLoS Comput Biol 16:e1008303 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Axon; Realistic Network;
Brain Region(s)/Organism: Human;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s): AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Sensory coding; Synaptic Integration; Receptive field;
Implementer(s):
Search NeuronDB for information about:  AMPA; NMDA;
% Author: Etay Hay
% Orientation processing by synaptic integration across first-order tactile neurons (Hay and Pruszynski 2020)

function [] = plot_model_rf(model,patch_length,sim_param,stimdir1)
	dy = sim_param.dy;
	dx = sim_param.dx;
	drum_speed = sim_param.drum_speed;
	[indsR,indsC] = find(model.mr_loc == 1);
	shifti = (patch_length - model.d_mr*(max(indsR) + min(indsR)))/2; 
	shiftj = (patch_length - model.d_mr*(max(indsC) + min(indsC)))/2;
	if ismember(sim_param.cellnum,stimdir1)
		dottype = 'dot';
	else
		dottype = 'dot2';
	end
	stim_list = {};
	for stim_i = 1:(round(sim_param.patch_length_y/dy))
		stim_list{end+1} = {dottype,stim_i};
		[m_spike_times{stim_i},m_t{stim_i}] = run_drum_stim(model,stim_list{stim_i},sim_param,0,0,[]);
		m_spike_times{stim_i} = m_spike_times{stim_i} + shiftj/drum_speed;
		if (sim_param.patch_length_x > patch_length)
			m_t{stim_i} = m_t{stim_i}(1:(end - round((length(m_t{stim_i})*drum_speed - patch_length)/dx)));
		else
			temp = zeros(round(patch_length/dx),1);
			temp(1:length(m_t{stim_i})) = m_t{stim_i};
			m_t{stim_i} = temp;
		end
		m_spike_rate{stim_i} = get_spike_rate(m_spike_times{stim_i},m_t{stim_i});
	end
	mat1 = zeros(round(patch_length/drum_speed),length(m_spike_rate{1}));
	N1 = round(dy/dx);
	for k = 1:length(m_spike_rate)
		for k2 = 1:N1
			i0 = (k-1)*N1+k2+round(shifti/dx);
			if i0>0 && i0<size(mat1,2)
				mat1(i0,:) = m_spike_rate{k};
			end
		end
	end
	mat1 = imgaussfilt(mat1,5);
	imagesc(rot90(mat1'))
	colormap('hot')
	axis off
end