% The script was written by Natalia Maksymchuk for the article 
% Maksymchuk N, Sakurai A, Cox DN, Cymbalyuk GS. 
% Cold-Temperature Coding with Bursting and Spiking 
% Based on TRP Channel Dynamics in Drosophila Larva Sensory Neurons. 
% International Journal of Molecular Sciences. 2023; 24(19):14638. 
% https://doi.org/10.3390/ijms241914638

clear all
close all

FileName='Fig6B';

xlimit=70;
FRlim=21.5;
Calim=4000.;
IFlim=95.;

xstart=-10.;
load(FileName); 

R = 8.3100e-09;
Z=2;
F=9.6485e-05;
GCa=3.5;
      
%% ***************** GRAPHS ****************************
colorWT=[0./255. 127./255. 255./255.];
colorTem=[255./255. 0./255. 43./255.];
FontSz=16.;

t=t1;
V=ymp1(:,1);


Cai=ymp1(:,8);
CaMean=mean(Cai);
Ca=ymp1(:,8);
m_Ca=ymp1(:,6);
h_Ca=ymp1(:,7);
h_GLTest=ymp1(:,10);%hTRP
mTRP=ymp1(:,11);
TK = interp1(TimeS1,TempS1+273.15,t1);% Temperature K which corresponds every voltage point
TC=TK-273.15; %Temperature oC which corresponds every voltage point
ro=1.3.^((TK-25.)/10.);


L=log(Caout./Ca);
ECa=1000.*R*TK/(Z*F).*L;
        Ca_LT=kPCa*(V-ECa);
        Na_LT=kPNa*(V-ENa);
        K_LT=kPK*(V-EK);
       
G_LTest=mTRP.*h_GLTest*GleakTest;        
I_Test=mTRP.*h_GLTest*GleakTest.*(Ca_LT+Na_LT+K_LT);
G_Ca=m_Ca.*h_Ca*GCa;


figure; 
hp2=plot(t-tonset,V);
set(hp2, 'color', colorWT, 'linewidth', 1)
xlim([1.9 4.9]);
ylim([-80, 50]);
ylabel('V_m, mV')
     

%********* %for finding instantaneous spike requency ***********************
    spikeNN=FunkNNmax(t,V,thresh);
    if spikeNN>0
    spikeTime=t(spikeNN);
    ISI=t(spikeNN(2:end))-t(spikeNN(1:end-1));    
    Frequency=1./ISI;
    MF=mean(Frequency);
    else
        MF=0;
    end  
    
     
%% Firing rate ***************
if spikeNN>0
tlim=t(end);        
                    
                   

%% Inst Frequency with GCa and GTRP (not completed)********************************************
            f = figure;
            f.Position = [100 100 550 500];%[left bottom width height]
            axes('Position',[0.13 0.72 .85 0.28],'Visible','off'); %% x1, y1, width, hight
                        plot(t-tonset,V,'color',colorWT,'linewidth',0.3);
                        xlim([xstart xlimit]);
                        axis off
                        set(gca,'Ycolor',[0 0 0],'linewidth', 1, 'FontWeight','bold','fontsize',15,'FontName', 'Aparajita')
                        set(gca,'box','off')
                        set(gca,'xticklabel',[])
                        ylabel('V_m (mV)');
            axes('Position',[0.13 0.47 .85 0.242],'Visible','off'); %% x1, y1, width, hight
            hp1=plot(t-tonset,TC, 'linewidth',2);
                set(hp1, 'color', [0 0 0], 'linewidth', 2)
                ylim([4. 25.]);
                xlim([xstart xlimit]);
            ylabel('Temp ({}^oC)')
            set(gca,'Box', 'off');
            set(gca,'LineWidth',2,'Color',[1 1 1]); 
            set(gca,'YColor',[0 0 0]','fontsize',16,'FontWeight','bold','FontName', 'Aparajita');%'FontWeight','bold' for poster
            set(gca,'XColor',[0 0 0]','fontsize',16,'FontWeight','bold','FontName', 'Aparajita');
            set(gca,'xticklabel',[])
            axes('Position',[0.13 0.14 .85 0.25],'Visible','off'); %% x1, y1, width, hight
                h=plot(spikeTime(2:end)-tonset, Frequency,'.','MarkerSize',16,'Color',colorWT);
                ylabel('Frequency (Hz)');
                xlabel('Time (s)')
                xlim([xstart xlimit]);
                set(gca,'box','off')
                set(gca,'LineWidth',2,'Color',[1 1 1]); %% zhirni chorni osi :)
                set(gca,'YColor',[0 0 0]','fontsize',16,'FontWeight','bold','FontName', 'Aparajita');
                set(gca,'XColor',[0 0 0]','fontsize',16,'FontWeight','bold','FontName', 'Aparajita');


else 
    disp('There is no spiking activity');   
end
 
%% this will be used for heatmaps
G_LTestInt=interp1(t,G_LTest,spikeTime);  
TCint=interp1(t,TC,spikeTime);% Interpolation of Temperature(t)


%% ISI histogram
f = figure;
f.Position = [100 100 540 250];%[left bottom width height]
            hh=histogram(ISI,'BinWidth',0.05, 'BinLimits', [0. 1.]);
            set(gca,'Ycolor',[0 0 0],'linewidth', 2, 'FontWeight','bold','fontsize',15,'FontName', 'Aparajita')
            set(hh,'FaceColor',colorWT);
            box off
            xlabel('ISI (s)');
            ylabel('Counts');
            
            
%% GTRP and CGa
f = figure;
f.Position = [100 100 540 250];%[left bottom width height] 
yyaxis left 
plot(t-tonset,G_Ca,'color',[193/250, 27/250, 215/250],'linewidth',2);
set(gca,'Ycolor',[193/250, 27/250, 215/250],'linewidth',2, 'FontWeight','bold','fontsize',15);
xlabel('Time (s)');
ylabel('GCa (nS)');
ylim([0 1]);
xlim([xstart xlimit]);
hold on
yyaxis right
h1=plot(t-tonset,G_LTest,'color',[0/225, 0/225, 0/225],'linewidth',2);
set(gca,'Ycolor',[0 0 0],'linewidth', 2, 'FontWeight','bold','fontsize',15);
ylabel('G_{TRP} (nS)');
ylim([0 1]);
xlim([xstart xlimit]);
box off

            
HeatMaps