% Last updated: Apr 27th, 2022
% Reproduces panels in Figure 5
clear all; close all; clc;
load('20200406_20x20_gridsearch_data.mat')
dt = 0.01;
PAUSE = zeros(y_n_pts,x_n_pts);
TAU = zeros(y_n_pts,x_n_pts);
CLASS = zeros(y_n_pts,x_n_pts);
class_c = zeros(y_n_pts,x_n_pts); %store colors for each class
color_list = ['r','y','g','c','b'];% r = 1; y = 2; g = 3; c = 4; b = 5
for i = 1:x_n_pts % gTRPC
for j = 1:y_n_pts % gGIRK
spike = spikes(j,i,:);
spike = spike(500/dt:end); % remove first 500 msec
spike_times = find(spike~=0);
ISI = diff(spike_times);
[pause pause_ind] = max(ISI); % maximum interspike interval
restart = pause_ind+1; % index of first spike after pause << double check
ISI = ISI*dt/1000;
IFR = 1./ISI; % reciprocal of interspike interval
d_IFF = IFR./IFR(1); %convert to percent change for tau calculation
spike_times = spike_times*dt/1000;% convert to sec
PAUSE(j,i) = pause*dt/1000; % convert to sec
% x = spike_times(restart:end-1);
% y = d_IFF(restart:end);
x = spike_times(1:end-1);
y = IFR; %d_IFF(1:end);
figure(1)
scatter(x,y,'.k')
xlabel('Time (s)'); ylabel('IFR (spk/s)')
% f = fit(x,y,'exp1'); % fit exponential function get tau
% [A, b] = coeffnames(f);
% TAU(j,i) = -1/b;
set(gcf,'position',[795 358 560 194])
%% For spike pattern classification:
[min_IFF min_IFF_ind] = min(IFR); % find minimum IFF
pre_pause = IFR(12:min_IFF_ind-1);
d_pre_pause = diff(pre_pause);
decel = IFR(min_IFF_ind-1) < 25;
if min_IFF >3 %>3.5 % no long pause (continuous)
CLASS(j,i) = 1;
else
if min_IFF_ind-12 < 2 %15 % I (strong GIRK) - long pause without Na inactivation block
CLASS(j,i) = 2;
else
if decel == 0 % acceleration
if IFR(min_IFF_ind+1) > IFR(min_IFF_ind+2) %compare adjacent indices
CLASS(j,i) = 3; % deceleration
else
CLASS(j,i) = 4; % acceleration
end
else % deceleration: slow spikes just before pause
% if min_IFF > 2 % no long pause (continuous)
% CLASS(j,i) = 1;
% else
CLASS(j,i) = 5; % q + i:% V shaped IFR
% end
end % end of decel ==0
end
end
%% FOR DE-BUGGING
fprintf(['gGIRK = ',num2str(gGIRK(j)),' gTRPC = ',num2str(gTRPC4(i)),'\n'])
fprintf(['Class: ',num2str(CLASS(j,i)),'\n'])
fprintf('\n\n')
class_c(j,i) = color_list(CLASS(j,i));
end
end
figure('name','LongestISI')
% RHEO(RHEO>100) = NaN;
[C,h] = contourf(gTRPC4,gGIRK,PAUSE,50);
set(h,'LineColor','none')
colorbar
xlabel('gTRPC4'); ylabel('gGIRK')
cb = colorbar; ylabel(cb,'Longest ISI (s)')
colormap(flipud(jet))
set(gca,'TickDir','out')
pbaspect([1 1 1])
figure
[ggirk,gtrpc4] = ndgrid(gGIRK,gTRPC4);
% V = surf(gtrpc4, ggirk,CLASS,'FaceColor','texturemap');
V = surf(gtrpc4, ggirk,CLASS);
pbaspect([1 1 1]); view([0 90])
xlabel('gTRPC4'); ylabel('gGIRK')
set(V,'edgecolor','none')
set(gca,'TickDir','out')
% V.EdgeColor = 'flat';
figure
[ggirk,gtrpc4] = ndgrid(gGIRK,gTRPC4);
V = surf(gtrpc4, ggirk,CLASS);
V.EdgeColor = 'flat';
V.Marker = '.';
V.FaceColor ='none';
% V.MarkerFaceColor='flat';
pbaspect([1 1 1]); view([0 90])
xlabel('gTRPC4'); ylabel('gGIRK')
set(gca,'TickDir','out')
% V.EdgeColor = 'flat';