%This program analyses the local multiple consecutive responses in
%experiments in which multiple indentations inducing deformation only were performed.
%The this program requires the expfit function, which I downloaded from the
%Matlab Central: http://www.mathworks.com/matlabcentral/fileexchange/21959-exponential-fit-without-start-guess
%and made s1=0 for caseval=1.

clc;
clear;

files=dir('*.xls');
fileIndex = find(~[files.isdir]);

for j=1:length(fileIndex)% here the number of files in that folder
    [status,sheets] = xlsfinfo(files(j).name);
    numel (sheets);
    
    for p=1:1:(numel(sheets)/2);% here the number of sheets from which you want to read the data/2, each represents an expeirment
        [num,txt,raw] = xlsread(files.name,(2*p)-1,'A1');%This loads the information on the entire sheet
        Data.Name{j}{p}= txt;%Reads the name of the file, which is located in the first entry of the sheet (2*i)-1
        Data.RAW{j}{p}= xlsread(files.name,p*2); %reads the data from the even excel sheets
        %size(Data.RAW{i});
        
        a=[Data.Name{j}{p}];
        
        
        NoFrames =numel(Data.RAW{j}{p}(:,1));%the number of frames
        NoCells =numel(Data.RAW{j}{p}(1,:));%the number of ellipses
        Data.NoCells{j}{p}=numel(Data.RAW{j}{p}(1,:));%to save pt in Data.m
        
        frame=(1:1:NoFrames);
        
        Data.TimePerFrame=.355;  % +-10ms Seconds
        TimeFrame =  frame*Data.TimePerFrame;
        
        
        colours='bgmckbgmck';
        for k=1:NoCells
            Data.Cell{j}{p}{k} =Data.RAW{j}{p}(:,k);%the number of ellipses
            % right now Data.Cell{j}{i}{k} contains the kth column intensity
            % profile of the ith sheet in the jth file
        end
        
        
        %now that we have named the cells in each of the sheets, in each of the
        %files, we will check if the local response is a linear comibination of the
        %cells{k>2}, to do this:
        Data.LocalInt{j}{p}=Data.Cell{j}{p}{1};
        Data.PrimaryInt{j}{p}=Data.Cell{j}{p}{2};
        
        Data.Vector{j}{p}=Data.Cell{j}{p}{3};
        for l=3:1:NoCells
            Data.Vector{j}{p}=[Data.Vector{j}{p}, Data.Cell{j}{p}{l}];
        end
        
        Data.CoeffVec{j}{p} = Data.Vector{j}{p}\Data.PrimaryInt{j}{p};
        %%% the linear combination will be given by the dot product of the matrix
        %%% CELL and the Vector.
        
        Data.LinearComb{j}{p} = Data.Vector{j}{p} * Data.CoeffVec{j}{p};
        Data.Cell{j}{p}{NoCells+1} =Data.LinearComb{j}{p};
        
        %selecting the start
        figure()
        plot(Data.PrimaryInt{j}{p},'r','LineWidth',2);
        title('Select the point where the light was turned off')
        hold on;
        
        [x1,y1]=ginput(1);%cuts the data in case the light was on
        close(gcf);
        
        figure();
        for k=1:NoCells+1
            Data.s{j}{p}{k}=expfit(frame(x1:end),Data.Cell{j}{p}{k}(x1:end) ,1); %here we are doing the fit with the exponential to account for the bleaching
            Data.y{j}{p}{k}=Data.s{j}{p}{k}(2)*exp(-frame/Data.s{j}{p}{k}(3));
            
            %plots local, primary, lin comb and exp fit
            S1=size(Data.Cell{j}{p}{k}(x1:end));
            plot((Data.Cell{j}{p}{k}(x1:end)-Data.Cell{j}{p}{k}(end-S1(1)+1)),[colours(k)],'LineWidth',2);
            hold on;
            S2=size(Data.y{j}{p}{k}(x1:end));
            plot((Data.y{j}{p}{k}(x1:end)-Data.Cell{j}{p}{k}(end-S1(1)+1))','k','LineWidth',2);
            title([files.name ' Cell_' num2str(p)]);
            xlabel('frame'); ylabel('Avg Intensity');
            legend('Local','Exp','Primary','Exp','Cell3','Exp','Cell4','Exp','Cell5','Exp','Linear Combination','Exp')
            
        end
        plot((Data.Cell{j}{p}{k}(x1:end)-Data.Cell{j}{p}{k}(end-S1(1)+1)),'r.','LineWidth',1);%this is the linear combination cell
        
        
        
        %unbleaching each cell with the LC's exponential
        figure()
        for k=1:2
            
            Data.UnbLCCell{j}{p}{k}= Data.Cell{j}{p}{k}(x1:end)./(Data.y{j}{p}{NoCells+1}(x1:end))';
            
            plot((Data.UnbLCCell{j}{p}{k}-Data.UnbLCCell{j}{p}{k}(1)),[colours(k)],'LineWidth',2);
            title([files.name ' Cell_' num2str(p)]);
            xlabel('frame'); ylabel('Avg pntensity');
            legend('Local/eLC','Primary/eLC','Cell3/eLC','Linear Combination/eLC, thicker line')
            hold on;
        end
        
        %LC, with index: NoCells+1
        Data.UnbLCCell{j}{p}{NoCells+1}= Data.Cell{j}{p}{NoCells+1}(x1:end)./(Data.y{j}{p}{NoCells+1}(x1:end))';
        plot((Data.UnbLCCell{j}{p}{NoCells+1}-Data.UnbLCCell{j}{p}{NoCells+1}(1)),[colours(NoCells+1)],'LineWidth',2);
        plot(Data.UnbLCCell{j}{p}{NoCells+1}-Data.UnbLCCell{j}{p}{NoCells+1}(1),'r.','LineWidth',1);
        
        
        %plotting the local, primary and linear combination LC unbleached
        figure()
        plot((Data.UnbLCCell{j}{p}{1}-Data.UnbLCCell{j}{p}{1}(1))',[colours(1)],'LineWidth',2);%local
        hold on;
        plot((Data.UnbLCCell{j}{p}{2}-Data.UnbLCCell{j}{p}{2}(1))',[colours(2)],'LineWidth',2);%primary
        plot((Data.UnbLCCell{j}{p}{NoCells+1}-Data.UnbLCCell{j}{p}{NoCells+1}(1))','r');%LC
        plot((Data.UnbLCCell{j}{p}{NoCells+1}-Data.UnbLCCell{j}{p}{NoCells+1}(1))','r.','LineWidth',2);%LC
        title([files.name ' Cell_' num2str(p)]);
        xlabel('frame'); ylabel('Avg Intensity');
        legend('Local','Primary','Linear Combination')
        
        
        
        %Treatment for local responses:
        
        %SUBTRACTING THE PRIMARY GLOBAL FROM THE LOCAL
        Data.UnbLCLocal{j}{p}=Data.UnbLCCell{j}{p}{1}-Data.UnbLCCell{j}{p}{2};% calculated subtracting the unbleached local minus the unbleached global
        figure()
        plot(Data.UnbLCLocal{j}{p},[colours(2)],'LineWidth',2);  %AT THE ORIGIN
        title([files.name ' Cell_' num2str(p) ' LOCAL - GLOBAL (LC unbleaching)']);
        xlabel('frame'); ylabel('Avg Intensity');
        legend('Local/eLC - Primary/eLC')
        
        fileN=[files.name(1:end-4) '_Cell_' num2str(p)]
        
        Subtraction= input('If there is LOCAL RESPONSE AND NO GLOBAL press 1, otherwise press enter:');
        %LOCAL RESPONSE: features above the BASAL LEVEL in the graph of local
        %GLOBAL RESPONSE: features in the global normalized response above the
        %basal level; long amplitude and duration (see paper)
        %COULD HAPPEN THAT YOU HAVE BOTH LOCAL ON TOP OF GLOBAL. The program
        %has to ask if there is global after the local response analysis.
        
        
        
        Alphabet={'A','B','C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA','AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'};
        
        if Subtraction==1 %if there is LOCAL RESPONSE!!
            
            Data.UnbLocalCurve{j}{p}= (Data.UnbLCLocal{j}{p})+Data.UnbLCCell{j}{p}{2}(1);%THE UNBLEACHED LOCAL SUBTRACTION PLUS THE BASAL OF THE GLOBAL RESPONSE
            Data.UnbleachingExp{j}{p}= (Data.s{j}{p}{NoCells+1});%in this case we used the linear combination to unbleach
            
            SaveAllFigures(fileN,'fig');
            close(gcf);
            close(gcf);
            close(gcf);
            close(gcf);
            close(gcf);
            
            %now we measure the noise of the signal:
            figure()
            plot(Data.UnbLocalCurve{j}{p})
            hold on;
            title('Select the point from which you want to start the NOISE CALCULATION');
            xlabel('frame'); ylabel('Avg Fluorescence Intensity');
            [xNoise,yNoise] = ginput(2);
            frame=frame(1:size(Data.UnbLocalCurve{j}{p}));
            [q s] = polyfit(frame(xNoise(1):xNoise(2))', Data.UnbLocalCurve{j}{p}(xNoise(1):xNoise(2)), 1); %Takes the last fourth of the curve and fits a 1st grade polynomial
            [y_fit Data.delta{j}{p}] = polyval(q, frame(xNoise(1):xNoise(2))', s); %calculates the stdev around the fit
            
            plot(frame(xNoise(1):xNoise(2))', y_fit + 2 * Data.delta{j}{p}, ':', frame(xNoise(1):xNoise(2))', y_fit - 2 * Data.delta{j}{p}, ':') %plots the curve and the noise around it
            Data.Noise{j}{p}=2*mean(Data.delta{j}{p}); % 2 delta corresponding roughly to the 95% confidence interval. The mean is the average of the delta value.
            
            Noise={'Noise Intensity'; Data.Noise{j}{p}};%%% save the NOISE LEVEL!!!
            
            f=figure;
            h = uicontrol('Position',[20 20 200 40],'String','Continue',...
                'Callback','uiresume(gcbf)');
            plot(Data.UnbLocalCurve{j}{p}, 'r', 'LineWidth',2);
            title('SELECT THE START AND END OF EACH OF THE PEAKS, the start:determines the basal and A')
            xlabel('frame')
            ylabel('Avg Fluorescence Intensity')
            uiwait(gcf);
            
            Data.NoPeaks{j}{p}= input('How many peaks do you want to analyze?');
            P=Data.NoPeaks{j}{p}*2;
            NoPeaks= Data.NoPeaks{j}{p};
            [x,y] = ginput(P);
            Data.x{j}{p}=[x];
            Data.y{j}{p}=[y];
            point=[x,y];
            close (f);
            
            
            for m=1:2:P-1
                %here we determine the interval of each peak; the initial value
                %will determine the basal level
                myIndices1=find(frame>=x(m));
                myIndices2=find(frame<=x(m+1));
                frame2=frame(myIndices1(1):myIndices2(end));%frame effective piece
                Data.PeakFrames{j}{p}{m}=frame2%from the fple j, the cell i, the peak m
                
                Data.PeakInt{j}{p}{m}=Data.UnbLocalCurve{j}{p}(myIndices1(1):myIndices2(end)); %intensity effective piece, the response will start at zero
                
                figure()
                plot(Data.PeakInt{j}{p}{m},'k')
                hold;
                
                [maxintens,index1] =max(Data.PeakInt{j}{p}{m});
                Data.PeakAmpl{j}{p}{m} =max(Data.PeakInt{j}{p}{m})-Data.PeakInt{j}{p}{m}(1);%amplitude, measured from the basal
                
                Data.PeakHalfMax{j}{p}{m} =Data.PeakAmpl{j}{p}{m}/2; %save the Peak Half Max, now that we know it exists.
                plot(frame(index1),Data.PeakInt{j}{p}{m},'r.')%plots the peak intensity
                
                %Before: A
                intensA=Data.PeakInt{j}{p}{m}(1:index1)-Data.PeakInt{j}{p}{m}(1);%the portion before the maximum
                index2=find(intensA<=Data.PeakHalfMax{j}{p}{m});%before halfmax
                frameA{j}{p}{m}=frame(index2);
                Data.HalfMaxFrameA{j}{p}{m}=frameA{j}{p}{m}(end);
                plot(Data.HalfMaxFrameA{j}{p}{m},Data.PeakInt{j}{p}{m},'b.')
                
                %After: D
                intensD=Data.PeakInt{j}{p}{m}(index1:end)-Data.PeakInt{j}{p}{m}(1);%the portion after the maximum, translated the same amount as intensA
                index3=find(intensD>=Data.PeakHalfMax{j}{p}{m});%after del halfmax
                
                frameD{j}{p}{m}=frame(index1+index3);
                Data.HalfMaxFrameD{j}{p}{m}=frameD{j}{p}{m}(end);
                plot(Data.HalfMaxFrameD{j}{p}{m},Data.PeakInt{j}{p}{m},'b.')
                
                %%% SAVE THE NEXT THREE IN THE PROPER CASE!!!!
                Data.FrameDuration{j}{p}{m}=Data.HalfMaxFrameD{j}{p}{m}-Data.HalfMaxFrameA{j}{p}{m};%duration of avg amplitude
                Data.TimeDuration{j}{p}{m}= (Data.FrameDuration{j}{p}{m}).*Data.TimePerFrame;%duration of avg amplitude
                Data.Amount{j}{p}{m}=Data.PeakAmpl{j}{p}{m}*Data.TimeDuration{j}{p}{m};
                
                
                
            end
            
            
            
            %save the linear combination vector and the coefficients the coefficients
            
            myName{1}=['LCCoeffs'];
            myName{2}=['LC_Vector'];
            myName{3}=['LC_Exp'];
            myName{4}=['Unb_Local'];
            headers = [myName];
            
            letter1=[Alphabet(NoCells+(3))];
            CoeffPosition1A=[letter1 '1'];
            CoeffPosition1=strcat(CoeffPosition1A(1), CoeffPosition1A(2));
            varargin=CoeffPosition1;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, headers,p*2,myString);
            
            CoeffPosition2A=[letter1 '2'];
            CoeffPosition2=strcat(CoeffPosition2A(1), CoeffPosition2A(2));
            varargin=CoeffPosition2;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.CoeffVec{j}{p},p*2,myString);
            
            letter2=[Alphabet(NoCells+(4))];
            LinearCombPositionA=[letter2 '2'];
            LinearCombPosition=strcat(LinearCombPositionA(1), LinearCombPositionA(2));
            varargin=LinearCombPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.LinearComb{j}{p},p*2,myString);
            
            letter3=[Alphabet(NoCells+(5))];
            UnbExpPositionA=[letter3 '2'];
            UnbExpPosition=strcat(UnbExpPositionA(1), UnbExpPositionA(2));
            varargin=UnbExpPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.UnbleachingExp{j}{p}(2:3)',p*2,myString);
            
            letter4=[Alphabet(NoCells+(6))];
            UnbLocalPositionA=[letter4 '2'];
            UnbLocalPosition=strcat(UnbLocalPositionA(1), UnbLocalPositionA(2));
            varargin=UnbLocalPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.UnbLocalCurve{j}{p} ,p*2,myString);
            
            myName1{1}=['Noise'];
            headers1 = [myName1];
            L1=[Alphabet(2*NoCells +2)];
            
            NoisePosition1A=[L1 '3'];
            NoisePosition1=strcat(NoisePosition1A(1), NoisePosition1A(2));
            varargin=NoisePosition1;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, headers1,p*2-1,myString);
            
            NoisePosition2A=[L1 '4'];
            NoisePosition2=strcat(NoisePosition2A(1), NoisePosition2A(2));
            varargin=NoisePosition2;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.Noise{j}{p},p*2-1,myString);
            
            
            
            myName2{1}=['Basal Norm Constant'];
            headers2 = [myName2];
            L2=[Alphabet(2*NoCells +3)];
            
            BASALPosition1A=[L2 '3'];
            BASALPosition1=strcat(BASALPosition1A(1), BASALPosition1A(2));
            varargin=BASALPosition1;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, headers2,p*2-1,myString);
            
            
            for k=1:NoCells+1
                myCell{k}=['Cell' num2str(k)];
                ExpFitCell_1{k} =[Data.s{j}{p}{k}(2)];
                ExpFitCell_2{k} =[Data.s{j}{p}{k}(3)];
            end
            
            headerCell = [myCell]';
            NameExp{1}=['a*exp(-t/b)'];
            headerCELL= [NameExp ; headerCell];
            
            LetterCellExp=[Alphabet((NoCells+1)*2)];
            CellExpPosition1A=[LetterCellExp '6'];
            CellExpPosition1=strcat(CellExpPosition1A(1), CellExpPosition1A(2));
            varargin=CellExpPosition1;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, headerCELL,p*2-1,myString);
            
            
            
            LetterCellExp1=Alphabet(((NoCells+1)*2+1));
            CellExpPosition2A=[(LetterCellExp1) '7'];
            CellExpPosition2=strcat(CellExpPosition2A(1), CellExpPosition2A(2));
            varargin=CellExpPosition2;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, ExpFitCell_1' ,p*2-1,myString);
            
            CellExpPosition3A=[Alphabet(((NoCells+1)*2+2)) '7'];
            CellExpPosition3=strcat(CellExpPosition3A(1), CellExpPosition3A(2));
            varargin=CellExpPosition3;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, ExpFitCell_2' ,p*2-1,myString);
            
            finalExpLetter=Alphabet(((NoCells+1)*2+2));
            
            for l= 1:NoPeaks
                myPeak{2*l-1}=['Peak' num2str(l) 't_i'];
                myPeak{2*l}=['Peak' num2str(l) 't_f'];
            end
            
            for l= 1:(NoPeaks*2)-1
                
                PeakFrameDuration{l} =[Data.FrameDuration{j}{p}{l}];
                PeakTimeDuration{l}= [ Data.TimeDuration{j}{p}{l}];
                PeakAmpl{l} =[Data.PeakAmpl{j}{p}{l}];
                PeakAmount{l} = [Data.Amount{j}{p}{l}];
                
            end
            
            headerPeak = [myPeak]';
            
            
            PeakPositionHA=[Alphabet((NoCells+1)*2+4) '7'];
            PeakPositionH=strcat(PeakPositionHA(1), PeakPositionHA(2));
            varargin=PeakPositionH;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, headerPeak,p*2-1,myString);
            
            
            myPeakH{1}=['Frame'];
            myPeakH{2}=['Time'];
            myPeakH{3}=['Intensity i/f'];
            myPeakH{4}=['Frame duration'];
            myPeakH{5}=['Time duration'];
            myPeakH{6}=['Amplitude'];
            myPeakH{7}=['Amount'];
            myPeakH{8}=['TimeVsAmplLinearFitSlope'];
            myPeakH{9}=['LinearFitStdev'];
            
            PeakHeader= [myPeakH];
            PeakHPosA=[Alphabet((NoCells+1)*2+5) '6'];
            PeakHPos=strcat(PeakHPosA(1), PeakHPosA(2));
            varargin=PeakHPos;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, PeakHeader ,(p*2)-1,myString);
            
            PeakTimePositionA=[Alphabet((NoCells+1)*2+5) '7'];
            PeakTimePosition=strcat(PeakTimePositionA(1), PeakTimePositionA(2));
            varargin=PeakTimePosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.x{j}{p},p*2-1,myString);
            
            
            %             Time
            PeakTimePositionA=[Alphabet((NoCells+1)*2+6) '7'];
            PeakTimePosition=strcat(PeakTimePositionA(1), PeakTimePositionA(2));
            varargin=PeakTimePosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.x{j}{p}*Data.TimePerFrame,p*2-1,myString);
            
            
            
            
            
            PeakTimePositionA=[Alphabet((NoCells+1)*2+7) '7'];
            PeakTimePosition=strcat(PeakTimePositionA(1), PeakTimePositionA(2));
            varargin=PeakTimePosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.y{j}{p},p*2-1,myString);
            
            FrameDurationPositionA=[Alphabet((NoCells+1)*2+8) '7'];
            FrameDurationPosition=strcat(FrameDurationPositionA(1), FrameDurationPositionA(2));
            varargin=FrameDurationPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, PeakFrameDuration' ,p*2-1,myString);
            
            TimeDurationPositionA=[Alphabet((NoCells+1)*2+9) '7'];
            TimeDurationPosition=strcat(TimeDurationPositionA(1), TimeDurationPositionA(2));
            varargin=TimeDurationPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, PeakTimeDuration' ,p*2-1,myString);
            
            AmplitudePositionA=[Alphabet((NoCells+1)*2+10) '7'];
            AmplitudePosition=strcat(AmplitudePositionA(1), AmplitudePositionA(2));
            varargin=AmplitudePosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, PeakAmpl' ,p*2-1,myString);
            
            AmountPositionA=[Alphabet((NoCells+1)*2+11) '7'];
            AmountPosition=strcat(AmountPositionA(1), AmountPositionA(2));
            varargin=AmountPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, PeakAmount' ,p*2-1,myString);
            
            
            
            %             Saving the linear fit
            for n=1:numel(Data.x{j}{p})/2
                Data.xOdds{j}{p}(n)=Data.x{j}{p}(2*n-1);
                Data.PeakAmplOdds{j}{p}(n)=PeakAmpl(2*n-1);
            end
            v=zeros(size(Data.PeakAmplOdds{j}{p}));
            ix=~cellfun('isempty',Data.PeakAmplOdds{j}{p});
            Data.AmplOdds=[];
            Data.AmplOdds(ix)=[Data.PeakAmplOdds{j}{p}{ix}];
            
            Q=[(Data.xOdds{j}{p}*Data.TimePerFrame)', Data.AmplOdds'];
            [q1 s1] = polyfit(Q(:,1),Q(:,2), 1); %fits a 1st grade polynomial to Q
            q1';%the first entry is the first order, the second entry is the zeroth order
            Data.LinFit{j}{p}=q1';
            [y0_fit D] = polyval(q1, Q(:,1), s1); %calculates the stdev (D) around the fit
            Data.LinFitStdev=mean(D);%stdev
            Data.Noise2=2*mean(D) % 2 delta corresponding roughly to the 95% confidence interval. The mean is the average of the delta value.
            
            
            LinearFitPositionA=[Alphabet((NoCells+1)*2+12) '7'];
            LinearFitPosition=strcat(LinearFitPositionA(1), LinearFitPositionA(2));
            varargin=LinearFitPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, q1' ,p*2-1,myString);
            
            
            StdevPositionA=[Alphabet((NoCells+1)*2+13) '7'];
            StdevPosition=strcat(StdevPositionA(1), StdevPositionA(2));
            varargin=StdevPosition;
            myString = '';
            for i=1:length(varargin)
                if isnumeric(varargin{i})
                    myString = [myString num2str(varargin{i}) ','];
                else
                    myString = [myString varargin{i} ','];
                end
            end
            xlswrite(files.name, Data.Noise2 ,p*2-1,myString);
            
            
            close all;
        end
        close all;
    end
    close all;
end