Human tactile FA1 neurons (Hay and Pruszynski 2020)

 Download zip file 
Help downloading and running models
"... 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"
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):
Gap Junctions:
Receptor(s): AMPA; NMDA;
Simulation Environment: MATLAB;
Model Concept(s): Sensory coding; Synaptic Integration; Receptive field;
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 m_loc = get_valid_locations(sim_param,d_mr)
	data =;
	dy = sim_param.dy;
	rf_length_x = sim_param.dot_xy(2,1) - sim_param.dot_xy(1,1);
	rf_length_y = sim_param.dot_xy(2,2) - sim_param.dot_xy(1,2);
	m_loc = zeros(round(rf_length_y/d_mr),round(rf_length_x/d_mr));
	for yi=1:((sim_param.dot_xy(2,2)-sim_param.dot_xy(1,2))/sim_param.dy)
		stim = {'dot',yi};
		[x1,x2,ytrial,t] = get_stim_param(stim,sim_param);
		spike_inds = intersect(intersect(find(data(:,3)>=x1),find(data(:,3)<=x2)),...
			intersect(find(data(:,2)>=(ytrial - dy/2)),find(data(:,2)<=(ytrial + dy/2))));
		if length(spike_inds) > 1
			spike_locs = x2 - data(spike_inds,3);
			j1 = ceil(min(spike_locs)/d_mr);
			j2 = ceil(max(spike_locs)/d_mr);
			i1 = round((yi-1)*sim_param.dy/d_mr) + 1;
			i2 = round(yi*sim_param.dy/d_mr);
			m_loc(i1:i2,j1:j2) = 1;