% Author: Etay Hay
% Orientation processing by synaptic integration across first-order tactile neurons (Hay and Pruszynski 2020)

function [stim1,m_t] = get_stim(stim,sim_param)
	dx = sim_param.dx;
	dy = sim_param.dy;
	rf_size1 = round(sim_param.patch_length_y/dx);
	rf_size2 = round(sim_param.patch_length_x/dx);
	stim1 = zeros(rf_size1,rf_size2);
	dot_diam = dy;
	line_thickness = 0.5;
	if strcmp(stim{1},'dot') || strcmp(stim{1},'dot2') 
		i1 = 1 + round((stim{2}-1)*dot_diam/dx);
		i2 = round(stim{2}*dot_diam/dx);
		stim1(i1:i2,rf_size2-[1:floor(dot_diam/dx)]) = 0.5;
	elseif strcmp(stim{1},'line') || strcmp(stim{1},'line2') || strcmp(stim{1},'linepress') || strcmp(stim{1},'line3mm')
		line_angle = stim{2}*2*pi/360;
		for k = 1:rf_size1
			if line_angle <= 0
				yi = k;
			else
				yi = rf_size1 - k + 1;
			end
			stim1(yi,1 + [1:floor((((line_thickness^2) * (1 + tan(line_angle)^2))^0.5)/dx)] + floor((k-1)*abs(tan(line_angle)))) = 0.5;
		end
		stim1 = stim1(:,end:-1:1);
	elseif strcmp(stim{1},'2dots')
		for k = 1:length(stim{2})		
			i1 = 1 + round((stim{2}(k)-1)*dot_diam/dx);
			i2 = 1 + round(stim{2}(k)*dot_diam/dx);
			stim1(i1:i2,rf_size2 + [1:floor(dot_diam/dx)]) = 0.5;
		end
	end
	i0 = find(sum(stim1)~=0,1,'first');
	stim1 = stim1(:,i0:end);
	stim1 = [zeros(rf_size1,rf_size2), stim1, zeros(rf_size1,rf_size2)];
	if strcmp(stim{1},'linepress')
		j1 = max(1,round((size(stim1,2) - rf_size2)/2));
		j2 = j1 + rf_size2 - 1;
		stim1 = stim1(:,j1:j2);
		m_t = 0:1:200;
	else
		m_t = 0:(size(stim1,2)-rf_size2);
	end
	if strcmp(stim{1},'line3mm')
		l1 = 3*cos(line_angle);
		i1 = round(rf_size1/2 - l1/dx);
		i2 = round(rf_size1/2 + l1/dx);
		stim1(1:i1,:) = 0;
		stim1(i2:end,:) = 0;		
	end
end