Hippocampal CA1 NN with spontaneous theta, gamma: full scale & network clamp (Bezaire et al 2016)

 Download zip file 
Help downloading and running models
Accession:187604
This model is a full-scale, biologically constrained rodent hippocampal CA1 network model that includes 9 cells types (pyramidal cells and 8 interneurons) with realistic proportions of each and realistic connectivity between the cells. In addition, the model receives realistic numbers of afferents from artificial cells representing hippocampal CA3 and entorhinal cortical layer III. The model is fully scaleable and parallelized so that it can be run at small scale on a personal computer or large scale on a supercomputer. The model network exhibits spontaneous theta and gamma rhythms without any rhythmic input. The model network can be perturbed in a variety of ways to better study the mechanisms of CA1 network dynamics. Also see online code at http://bitbucket.org/mbezaire/ca1 and further information at http://mariannebezaire.com/models/ca1
References:
1 . Bezaire MJ, Raikov I, Burk K, Vyas D, Soltesz I (2016) Interneuronal mechanisms of hippocampal theta oscillations in a full-scale model of the rodent CA1 circuit. Elife [PubMed]
2 . Bezaire M, Raikov I, Burk K, Armstrong C, Soltesz I (2016) SimTracker tool and code template to design, manage and analyze neural network model simulations in parallel NEURON bioRxiv
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA1 interneuron oriens alveus GABA cell; Hippocampus CA1 basket cell; Hippocampus CA1 stratum radiatum interneuron; Hippocampus CA1 bistratified cell; Hippocampus CA1 axo-axonic cell; Hippocampus CA1 PV+ fast-firing interneuron;
Channel(s): I Na,t; I K; I K,leak; I h; I K,Ca; I Calcium;
Gap Junctions:
Receptor(s): GabaA; GabaB; Glutamate; Gaba;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON; NEURON (web link to model);
Model Concept(s): Oscillations; Methods; Connectivity matrix; Laminar Connectivity; Gamma oscillations;
Implementer(s): Bezaire, Marianne [mariannejcase at gmail.com]; Raikov, Ivan [ivan.g.raikov at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; Hippocampus CA1 interneuron oriens alveus GABA cell; GabaA; GabaB; Glutamate; Gaba; I Na,t; I K; I K,leak; I h; I K,Ca; I Calcium; Gaba; Glutamate;
/
modeldbca1
customout
Generate_Article_Figures.m
Plot_Spike_Pies.m
Theta_Power_PS_Old.m
                            
function Generate_Article_Figures(~,~,handles)
global mypath myFontSize sl colorvec myFontWeight myFontName myhandles repodir savepath printflag draftqual printtable fid printsourcedata


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Editable parameters here
%%%%%%%%%%%%%%%%%%%%%%%%%%%
if exist([mypath sl 'data' sl 'myrepos.mat'],'file')
    load([mypath sl 'data' sl 'myrepos.mat'], 'myrepos')
end

q=getcurrepos(handles); %#ok<NASGU>

repodir=myrepos(q).dir;
tmp=findstr(repodir,sl);
savepath=[repodir(1:tmp(end)) 'papers' repodir(tmp(end):end) ];
if exist(savepath,'dir')==0
    mkdir(savepath)
end

ctrlstr='ca1_centerlfp_long_exc_065_01';%'ca1_nlfp_long_exc_065_01_02';

myElectrode=[2000 500];
maxdist=500;

whichFigs2Print=[6]; % Only figs 3-8 are implemented right now
% 1: Anatomical constraints 
% 2: Electrophysiological constraints
% 3: Spectrograms & Heat Maps
% 4: Spike raster, LFP and MP traces
% 5: Theta firing phases & modulation
% 6: Network manipulations including GABAB, also supplemental fig 6 freqs
% 7: Network Clamp
% 8: Model performance

% Supplemental figures
% 11: S1 - axonal distributions -TBA
% 12: S2 - SDF, LFP explanation
% 13: S3 - Fig 6 frequencies - not in operation. will print with argument
% of 6
% 14: S4 - Scaled up raster
% 15: S5 - GABA inset -TBA

% Placeholder figures
% 20: supplemental full raster -TBA
% 21: network clamp MP peak hist -TBA
% 22: edge effects -TBA

% If you want eps files printed into the 'savepath' directory, set 1. 
% Otherwise 0 for nothing printed.
% If you set the printflag, some figures will be consolidated into a single
% larger figure prior to printing to ensure the subfigures line up in the image.

printflag=1;
draftqual=0;
printtable=0;
printsourcedata=0;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if exist('FinalFig6Data.mat','file')
    load('FinalFig6Data.mat','FinalData','cellnumbers','LayerHeights','LongitudinalLength','TransverseLength','historical','BenchData');
else
    disp('Put the FinalFig6Data.mat file in your SimTracker directory and try again.');
    return
end

updatectrlflag=1;%0;
if isempty(strmatch(FinalData(1).Name,ctrlstr))
    FinalData(1).Name=ctrlstr;
    FinalData(1).Comments='Control';
    FinalData(1).Idx=0;
    updatectrlflag=1;
end

usenorm=0;
myszht = 1.15;

myFontSize=8;
myFontWeight='normal';
myFontName = 'Arial';

        colorvec=[.0 .0 .6;
                  .0 .75 .65;
                  1 .75 .0;
                  1 .5 .3;
                  1 .0 .0;
                  .6 .4 .1;
                  .5 .0 .6;
                  .6 .6 .6;
                  1 .1 1;
                  1 0 0;
                  0 0 1;];
              

            colorstruct.pyramidal.color=[.0 .0 .6];
            colorstruct.pvbasket.color=[.0 .75 .65];
            colorstruct.cck.color=[1 .75 .0];
            colorstruct.sca.color=[1 .5 .3];
            colorstruct.axoaxonic.color=[1 .0 .0];
            colorstruct.bistratified.color=[.6 .4 .1];
            colorstruct.olm.color=[.5 .0 .6];
            colorstruct.ivy.color=[.6 .6 .6];
            colorstruct.ngf.color=[1 .1 1];
            colorstruct.pyramidal.pos=1;
            colorstruct.pvbasket.pos=2;
            colorstruct.cck.pos=3;
            colorstruct.sca.pos=4;
            colorstruct.axoaxonic.pos=5;
            colorstruct.bistratified.pos=6;
            colorstruct.olm.pos=7;
            colorstruct.ivy.pos=8;
            colorstruct.ngf.pos=9;

mytypes=fieldnames(colorstruct);            
            
if ispc
    sl='\';
else
    sl='/';
end

load(['data' sl 'MyOrganizer.mat'],'general')


addpath outputtypes
addpath tools
rrrange=[];
 
missingflag=0;
for rr=1:length(FinalData) %#ok<NODEF>
    if isempty(FinalData(rr).Idx) || isempty(FinalData(rr).Pos)
        updatectrlflag=1;
        rrrange=[rrrange rr];
    end
    FinalData(rr).Idx=searchRuns('RunName',FinalData(rr).Name,0);
    if isempty(FinalData(rr).Idx)
        disp(['There is no run named ' FinalData(rr).Name ' in this SimTracker.'])
        missingflag=1;
    elseif length(FinalData(rr).Idx)>1
        disp(['Somehow there are multiple runs named ' FinalData(rr).Name ' and this is a problem but we will try to use the first one.'])
        FinalData(rr).Idx=FinalData(rr).Idx(1);
    end
end

if missingflag
    disp('Some runs are missing from your SimTracker. Import them and try again.')
    disp('Alternatively, you may be in a different repository. Switch back to ca1 and try again.')
    return
end


if isequal(historical.myElectrode,myElectrode) && isequal(historical.maxdist,maxdist)
    eval(['global ' ctrlstr])
    evalin('caller',['global ' ctrlstr])
    evalin('base',['global ' ctrlstr])
    if exist(ctrlstr,'var')==0 || eval(['isempty(' ctrlstr ')']) || eval(['isstruct(' ctrlstr ')==0'])
        % export again
        handles.curses=[];
        dd=strmatch(ctrlstr,{FinalData.Name},'exact');
        if isempty(dd)
            disp(['Cancelling...Could not find a run entitled "' ctrlstr '" within the FinalData list:'])
            disp({FinalData.Name}')
            return
        elseif dd~=1
            disp('Attempting to Continue, but Problem: control run is not first in FinalData list...')
        end
        handles.curses.ind=FinalData(dd).Idx;
        guidata(handles.btn_generate, handles)
        h=load_results([],handles);
    end
    if updatectrlflag
        rrrange=[rrrange 1];
    end
else
        rrrange=1:length(FinalData);
end
% load control data & analyze data
for rr=rrrange %#ok<NODEF>
    eval(['global ' FinalData(rr).Name])
    evalin('caller',['global ' FinalData(rr).Name])
    evalin('base',['global ' FinalData(rr).Name])
    
    if exist(FinalData(rr).Name,'var')==0 || eval(['isempty(' FinalData(rr).Name ')']) || eval(['isstruct(' FinalData(rr).Name ')==0'])
        % export again
        handles.curses=[];
        handles.curses.ind=FinalData(rr).Idx;
        guidata(handles.btn_generate, handles)
        h=load_results([],handles);
    end

    eval(['myresultsstruct = ' FinalData(rr).Name ';']);
    myresultsstruct.general=general;
    myresultsstruct.btn_generate = handles.btn_generate;
    if strcmp(ctrlstr,FinalData(rr).Name)==1
        myresultsstruct.optarg='pwelch,sdf,type,table';
    else
        myresultsstruct.optarg='pwelch,sdf,pyr,table';
    end

    if exist('myhandles','var')==0 || isempty(myhandles) || isstruct(myhandles)==0
        myhandles = CustomNearElectrode(myresultsstruct,cellnumbers,LayerHeights,LongitudinalLength,TransverseLength,myElectrode,maxdist);
    end
    myresultsstruct.curses.cells=myhandles.curses.cells;

    [~, tbldata]=plot_spectral(myresultsstruct);

    for t=1:size(tbldata,1)
        FinalData(rr).Pos.Freqs(t).Name=tbldata{t,1};
        FinalData(rr).Pos.Freqs(t).Theta=tbldata{t,2};
        FinalData(rr).Pos.Freqs(t).ThetaP=tbldata{t,3};
        FinalData(rr).Pos.Freqs(t).Gamma=tbldata{t,4};
        FinalData(rr).Pos.Freqs(t).GammaP=tbldata{t,5};
        FinalData(rr).Pos.Freqs(t).Overall=tbldata{t,6};
        FinalData(rr).Pos.Freqs(t).OverallP=tbldata{t,7};
    end
    
    FinalData(rr).Pyr=strmatch('Pyr.',tbldata(:,1));
end
historical.myElectrode=myElectrode;
historical.maxdist=maxdist;

%if ~isempty(rrrange)
    save('FinalFig6Data.mat','FinalData','cellnumbers','LayerHeights','LongitudinalLength','TransverseLength','historical','BenchData')
%end

dd=strmatch(ctrlstr,{FinalData.Name},'exact');
disp(['mycontrolstruct = ' ctrlstr ';'])
eval(['mycontrolstruct = ' ctrlstr ';'])
mycontrolstruct.general=general;
mycontrolstruct.timevec=FinalData(dd).timevec;

if exist('myhandles','var')==0 || isempty(myhandles) || isstruct(myhandles)==0
    myhandles = CustomNearElectrode(mycontrolstruct,cellnumbers,LayerHeights,LongitudinalLength,TransverseLength,myElectrode,maxdist);
end
mycontrolstruct.curses.cells=myhandles.curses.cells;
mycontrolstruct.btn_generate = handles.btn_generate;

if exist('mycontrolstruct','var')==0
    disp('No control results loaded')
    return
end

if sum(ismember(whichFigs2Print,[3:5]))>0
    otherCtrlFigs(FinalData,mycontrolstruct,colorstruct,whichFigs2Print)
end

if ismember(25,whichFigs2Print)
    alltypes={'awake','anesthetized','isolated','model'};
    for c=1:length(alltypes)
        condition=alltypes{c};
        theta_graphic(condition);
        hh=gcf;
        set(hh,'Units','inches','Position',[0 0 6 2],'Name',[upper(condition(1)) condition(2:end) 'PhaseGraph'],'PaperUnits','inches','PaperSize',[6 2],'PaperPosition',[0 0 6 2])
        ha=get(hh,'Children');
        if length(ha)>1
            delete(ha(1))
            ha(1)=[];
        end
        for h=1:length(ha)
            set(ha(h),'Units','inches','Position',[.2 .2 5.6 1.6])
            bf = findall(ha(h),'Type','text');
            for b=1:length(bf)
                set(bf(b),'FontName',myFontName,'FontWeight','bold','FontSize',myFontSize)
            end
        end
        printeps(hh,[savepath sl get(hh,'Name')])
    end
end


if ismember(7,whichFigs2Print)
    [anglebase, anglepv, anglesom, h, mydata]=mynewphaseshiftLFP();    
    if printflag
        for t=1:length(h)
            printeps(h(t),[savepath sl get(h(t),'Name')])
        end
    end
end


if ismember(8,whichFigs2Print)
    performancefig(BenchData);    
end

if ismember(2,whichFigs2Print)
    h=ephysFig2();
    if printflag
        for t=1:length(h)
            printeps(h(t),[savepath sl get(h(t),'Name')])
        end
    end
end

if ismember(12,whichFigs2Print)
    h=SDFwalkthru(mycontrolstruct);
    if printflag
        for t=1:length(h)
            printeps(h(t),[savepath sl get(h(t),'Name')])
        end
    end
end


if sum(ismember(6,whichFigs2Print))==0
    return;
end

if printtable
    fid=fopen([savepath sl 'Table_OscPower.tex'],'w');
    fprintf(fid,'\\begin{table}[position htb]\n');
    fprintf(fid,'\\begin{footnotesize}\n');
    fprintf(fid,'\\centering\n');
    fprintf(fid,'\\begin{tabular}{|p{1.5in}|R{.85in}R{.85in}|R{.85in}R{.85in}|R{.85in}R{.85in}|} \n');
    fprintf(fid,'\\hline\n');
    fprintf(fid,' & \\multicolumn{2}{c|}{\\textbf{Theta}}& \\multicolumn{2}{c|}{\\textbf{Gamma}}& \\multicolumn{2}{c|}{\\textbf{Overall}} \\\\ \n');
    fprintf(fid,'\\hline\n');
    fprintf(fid,'\\multicolumn{1}{|c|}{\\textbf{Condition}} & \\multicolumn{1}{c}{\\textbf{Frequency}} & \\multicolumn{1}{c|}{\\textbf{Power}} & \\multicolumn{1}{c}{\\textbf{Frequency}} & \\multicolumn{1}{c|}{\\textbf{Power}} & \\multicolumn{1}{c}{\\textbf{Frequency}} & \\multicolumn{1}{c|}{\\textbf{Power}}  \\\\ \n');
    fprintf(fid,'\\hline\n');

end
if printsourcedata
    GetAllSDFs(FinalData,handles)
end

%%% Everything below here is for generating figure 6:
GABAFig(FinalData,handles);
% Figure 6: Network Manipulations (Excitation, Reduced, Muted, Converge,

% Excitation Level
Runs2Use=[];
for r=1:length(FinalData)
    if ~isempty(strfind(FinalData(r).Comments,'Excitation')) || (~isempty(strfind(FinalData(r).Comments,'Control')) && isempty(strfind(FinalData(r).Comments,'GrrControl'))) %~isempty(find(myfigs(r).figs==2))
        Runs2Use=[Runs2Use r];
    end
end
exclevel=[FinalData(Runs2Use).DegreeStim];
[exclevel, sorti]=sort(exclevel);
ctrlevel=find(sorti==1);
Runs2Use=Runs2Use(sorti);
mdx=1;

thetafreq=[];
thetapow=[];
thetanorm=[];
for bb=1:length(Runs2Use)
    thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
    thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
    thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
end

myname='DiffExcLevel';
mytitle='Tonic Excitation Level (Hz)';
myapp='';

if usenorm==1
    myplotvals=thetanorm;
else
    myplotvals=thetapow;
end
mysize=[length(Runs2Use) myszht];
xL={};
for r=1:length(Runs2Use)
    xL{r}=sprintf('%.2f',exclevel(r));
end

%xL{ctrlevel} = {xL{ctrlevel},'Ctrl'};

if usenorm==1
    yL={'Norm. Theta Power','Relative to Control'};
else
    yL='Theta Power';
end

mycolors=[];
myfreqs=[];
freqstruct=[];
for r=1:length(Runs2Use)
        mycolors(r,:)=[0 0 0];
        myfreqs(r,:)=[FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Theta FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).ThetaP FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Overall FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).OverallP  FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Gamma FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).GammaP];
        freqstruct(r).freqs= FinalData(Runs2Use(r)).Pos.Freqs(1).Gamma;%unique([FinalData(mdx).tbldata{:,6}]);
        freqstruct(r).pows= FinalData(Runs2Use(r)).Pos.Freqs(1).GammaP;%unique([FinalData(mdx).tbldata{:,6}]);
end
myplotvals(isnan(myplotvals))=0;
gy=plotmebaronly(myname, mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp,ctrlevel);
if printflag
printeps(gy(1),[savepath sl myname])
printeps(gy(2),[savepath sl myname 'Freq'])
end



% Ephys same
Runs2Use=[];
for r=1:length(FinalData)
    if ~isempty(strfind(FinalData(r).Comments,'Reduced')) || (~isempty(strfind(FinalData(r).Comments,'Control')) && isempty(strfind(FinalData(r).Comments,'GrrControl'))) %~isempty(find(myfigs(r).figs==2))
        Runs2Use=[Runs2Use r];
    end
end

thetafreq=[];
thetapow=[];
thetanorm=[];
for bb=1:length(Runs2Use)
    thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
    thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
    thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
end
    
myname='DiffCellEphys';
mytitle='Single Interneuron E''phys. Profile';
myapp='';

if usenorm==1
    myplotvals=thetanorm;
else
    myplotvals=thetapow;
end

mysize=[length(Runs2Use) myszht];
xL={};
ttL={};
for r=1:length(Runs2Use)
    if ~isempty(strfind(FinalData(Runs2Use(r)).Comments,'Control')) && isempty(strfind(FinalData(Runs2Use(r)).Comments,'GrrControl'))
        xL{r}='Ctrl';
        ttL{r}='Ctrl';
       ctrlevel=r;
    else
        ttmp=FinalData(Runs2Use(r)).Name(9:end-3);
        ttL{r}=ttmp;
        rr=strmatch(ttmp,{'OLM','CCK','PV','NGF'});
        nicett={'O-LM','CCK+B','PV+B','NGF'};
        xL{r}=nicett{rr};
    end
end

if usenorm==1
    yL={'Norm. Theta Power','Relative to Control'};
else
    yL='Theta Power';
end

mycolors=[];
myfreqs=[];
freqstruct=[];
for r=1:length(Runs2Use)
    tt=strmatch(lower(ttL{r}),mytypes);
    if isempty(tt)
        mycolors(r,:)=[0 0 0];
    else
        mycolors(r,:)=colorstruct.(mytypes{tt}).color;
    end
        myfreqs(r,:)=[FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Theta FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).ThetaP FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Overall FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).OverallP  FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Gamma FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).GammaP];
        freqstruct(r).freqs= FinalData(Runs2Use(r)).Pos.Freqs(1).Gamma;%unique([FinalData(mdx).tbldata{:,6}]);
        freqstruct(r).pows= FinalData(Runs2Use(r)).Pos.Freqs(1).GammaP;%unique([FinalData(mdx).tbldata{:,6}]);
end
myplotvals(isnan(myplotvals))=0;
gy=plotmebaronly(myname, mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp,ctrlevel);
if printflag
printeps(gy(1),[savepath sl myname])
printeps(gy(2),[savepath sl myname 'Freq'])
end

% Ephys same and PV Conv
Runs2Use=[];
for r=1:length(FinalData)
    if ~isempty(strfind(FinalData(r).Comments,'Conv PV')) || (~isempty(strfind(FinalData(r).Comments,'Control')) && isempty(strfind(FinalData(r).Comments,'GrrControl'))) %~isempty(find(myfigs(r).figs==2))
        Runs2Use=[Runs2Use r];
    end
end

thetafreq=[];
thetapow=[];
thetanorm=[];
for bb=1:length(Runs2Use)
    thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
    thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
    thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
end

myname='Converge2PVB';
mytitle='Inh. Cells Converge to PV+ B. Cells';
myapp='';

if usenorm==1
    myplotvals=thetanorm;
else
    myplotvals=thetapow;
end

mysize=[length(Runs2Use) myszht];
xL={};
myconvname={'E''phys.','+input wgt','+input #','All PV+B','Var. PV+B'};
chkr=1;
for r=1:length(Runs2Use)
    if ~isempty(strfind(FinalData(Runs2Use(r)).Comments,'Control')) && isempty(strfind(FinalData(Runs2Use(r)).Comments,'GrrControl'))
        xL{r}='Ctrl';
        ctrlevel=r;
        chkr=chkr-1;
    else
        xL{r}=myconvname{chkr};%char(str2num(FinalData(Runs2Use(r)).Name(end))-1+'A');
    end
    chkr=chkr+1;
end

%xL={myfigs(Runs2Use).label};
%xL={myfigs(1).mydata.name};
if usenorm==1
yL={'Norm. Theta Power','Relative to Control'};
else
yL='Theta Power';
end

mycolors=[];
myfreqs=[];
freqstruct=[];
for r=1:length(Runs2Use)
    mycolors(r,:)=[0 0 0];
        myfreqs(r,:)=[FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Theta FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).ThetaP FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Overall FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).OverallP  FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Gamma FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).GammaP];
        freqstruct(r).freqs= FinalData(Runs2Use(r)).Pos.Freqs(1).Gamma;%unique([FinalData(mdx).tbldata{:,6}]);
        freqstruct(r).pows= FinalData(Runs2Use(r)).Pos.Freqs(1).GammaP;%unique([FinalData(mdx).tbldata{:,6}]);
end
myplotvals(isnan(myplotvals))=0;
gy=plotmebaronly(myname, mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp,ctrlevel);
if printflag
printeps(gy(1),[savepath sl myname])
printeps(gy(2),[savepath sl myname 'Freq'])
end

% Disinh
Runs2Use=[];
for r=1:length(FinalData)
    if ~isempty(strfind(FinalData(r).Comments,'Disinh')) || (~isempty(strfind(FinalData(r).Comments,'Control')) && isempty(strfind(FinalData(r).Comments,'GrrControl'))) %~isempty(find(myfigs(r).figs==2))
        Runs2Use=[Runs2Use r];
    end
end

Runs2Use = Runs2Use([1 3 2]); %5 3 2 4]);

thetafreq=[];
thetapow=[];
thetanorm=[];
for bb=1:length(Runs2Use)
    thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
    thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
    thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
end

myname='Disinh';
mytitle='Outputs Muted';
myapp='';

if usenorm==1
    myplotvals=thetanorm;
else
    myplotvals=thetapow;
end

mysize=[length(Runs2Use) myszht];
xL={};
for r=1:length(Runs2Use)
    if ~isempty(strfind(FinalData(Runs2Use(r)).Comments,'Control')) && isempty(strfind(FinalData(Runs2Use(r)).Comments,'GrrControl'))
        xL{r}='Ctrl';
        ctrlevel=r;
    else
        whichnum=regexp(FinalData(Runs2Use(r)).Name,'[0-9][0-9]','match');
        if length(FinalData(Runs2Use(r)).Name)<17
            xL{r}= [strrep(FinalData(Runs2Use(r)).Name(14:end),'corr','')];% '-' whichnum{1} '%'];%strrep(strrep(FinalData(Runs2Use(r)).Comments(7:end),'.',''),' ','');
        else
            xL{r}= [FinalData(Runs2Use(r)).Name(14:end-4)];% '-' whichnum{1} '%'];%strrep(strrep(FinalData(Runs2Use(r)).Comments(7:end),'.',''),' ','');
        end
    end
end
if usenorm==1
yL={'Norm. Theta Power','Relative to Control'};
else
yL='Theta Power';
end

mycolors=[];
myfreqs=[];
freqstruct=[];
for r=1:length(Runs2Use)
    mycelltype=lower(strrep(strrep(strrep(strrep(xL{r},'-',''),'.',''),'+',''),' ',''));
    if strcmp(xL{r}(1:2),'PV')
        mycolors(r,:)=[0 1 0];
    elseif strcmp(xL{r}(1:2),'SO')
        mycolors(r,:)=[.8 .2 1];
    else
        mycolors(r,:)=[0 0 0];
    end
    myfreqs(r,:)=[FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Theta FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).ThetaP FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Overall FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).OverallP  FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Gamma FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).GammaP];
    freqstruct(r).freqs= FinalData(Runs2Use(r)).Pos.Freqs(1).Gamma;%unique([FinalData(mdx).tbldata{:,6}]);
    freqstruct(r).pows= FinalData(Runs2Use(r)).Pos.Freqs(1).GammaP;%unique([FinalData(mdx).tbldata{:,6}]);
end
myplotvals(isnan(myplotvals))=0;
gy=plotmebaronly(myname, mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp,ctrlevel);
if printflag
printeps(gy(1),[savepath sl myname])
printeps(gy(2),[savepath sl myname 'Freq'])
end


% Recurrent Collaterals
Runs2Use=[];
for r=1:length(FinalData)
    if ~isempty(strfind(FinalData(r).Comments,'RecColl')) || (~isempty(strfind(FinalData(r).Comments,'Control')) && isempty(strfind(FinalData(r).Comments,'GrrControl'))) %~isempty(find(myfigs(r).figs==2))
        Runs2Use=[Runs2Use r];
    end
end

Runs2Use=Runs2Use([2 1 3 4]);

thetafreq=[];
thetapow=[];
thetanorm=[];
for bb=1:length(Runs2Use)
    thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
    thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
    thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
end

myname='RecColl';
mytitle='Pyr to Pyr';
myapp='';

if usenorm==1
    myplotvals=thetanorm;
else
    myplotvals=thetapow;
end

mysize=[length(Runs2Use) myszht];
xL={};
ctrllevel=0;
for r=1:length(Runs2Use)
    if ~isempty(strfind(FinalData(Runs2Use(r)).Comments,'Control')) && isempty(strfind(FinalData(Runs2Use(r)).Comments,'GrrControl'))
        xL{r}='1.0x';
        ctrllevel=r;
    else
        xL{r}= FinalData(Runs2Use(r)).Comments(length('RecColl')+1:end);%strrep(strrep(FinalData(Runs2Use(r)).Comments(7:end),'.',''),' ','');
    end
end
if usenorm==1
yL={'Norm. Theta Power','Relative to Control'};
else
yL='Theta Power';
end

mycolors=[];
myfreqs=[];
freqstruct=[];
for r=1:length(Runs2Use)
    mycelltype=lower(strrep(strrep(strrep(strrep(xL{r},'-',''),'.',''),'+',''),' ',''));
    mycolors(r,:)=[0 0 0];
    myfreqs(r,:)=[FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Theta FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).ThetaP FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Overall FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).OverallP  FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Gamma FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).GammaP];
    freqstruct(r).freqs= FinalData(Runs2Use(r)).Pos.Freqs(1).Gamma;%unique([FinalData(mdx).tbldata{:,6}]);
    freqstruct(r).pows= FinalData(Runs2Use(r)).Pos.Freqs(1).GammaP;%unique([FinalData(mdx).tbldata{:,6}]);
end
myplotvals(isnan(myplotvals))=0;
gy=plotmebaronly(myname, mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp,ctrllevel);
if printflag
printeps(gy(1),[savepath sl myname])
printeps(gy(2),[savepath sl myname 'Freq'])
end

% Muted
Runs2Use=[];
for r=1:length(FinalData)
    if ~isempty(strfind(FinalData(r).Comments,'Muted')) || (~isempty(strfind(FinalData(r).Comments,'Control')) && isempty(strfind(FinalData(r).Comments,'GrrControl'))) %~isempty(find(myfigs(r).figs==2))
        Runs2Use=[Runs2Use r];
    end
end

thetafreq=[];
thetapow=[];
thetanorm=[];
for bb=1:length(Runs2Use)
    thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
    thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
    thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
end

myname='2All';
mytitle='Outputs Muted From Each Cell Type';
myapp='';

if usenorm==1
    myplotvals=thetanorm;
else
    myplotvals=thetapow;
end

mysize=[length(Runs2Use) myszht];
xL={};
for r=1:length(Runs2Use)
    if ~isempty(strfind(FinalData(Runs2Use(r)).Comments,'Control')) && isempty(strfind(FinalData(Runs2Use(r)).Comments,'GrrControl'))
        xL{r}='Ctrl';
        ctrlevel=r;
    else
        xL{r}=strrep(strrep(FinalData(Runs2Use(r)).Comments(7:end),'.',''),' ','');
    end
end
if usenorm==1
yL={'Norm. Theta Power','Relative to Control'};
else
yL='Theta Power';
end

mycolors=[];
myfreqs=[];
freqstruct=[];
for r=1:length(Runs2Use)
    mycelltype=lower(strrep(strrep(strrep(strrep(xL{r},'-',''),'.',''),'+',''),' ',''));
    tt=strmatch(mycelltype(1:3),mytypes);
    if isempty(tt)
        mycolors(r,:)=[0 0 0];
    else
        mycolors(r,:)=colorstruct.(mytypes{tt}).color;
    end
        myfreqs(r,:)=[FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Theta FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).ThetaP FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Overall FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).OverallP  FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Gamma FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).GammaP];
        freqstruct(r).freqs= FinalData(Runs2Use(r)).Pos.Freqs(1).Gamma;%unique([FinalData(mdx).tbldata{:,6}]);
        freqstruct(r).pows= FinalData(Runs2Use(r)).Pos.Freqs(1).GammaP;%unique([FinalData(mdx).tbldata{:,6}]);
end
myplotvals(isnan(myplotvals))=0;
gy=plotmebaronly(myname, mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp,ctrlevel);
if printflag
printeps(gy(1),[savepath sl myname])
printeps(gy(2),[savepath sl myname 'Freq'])
end

% PV Exc
Runs2Use=[];
for r=1:length(FinalData)
    if ~isempty(strfind(FinalData(r).Comments,'Exc PV')) %|| ~isempty(strfind(FinalData(r).Comments,'Control')) %~isempty(find(myfigs(r).figs==2))
        Runs2Use=[Runs2Use r];
    end
end
exclevel=[FinalData(Runs2Use).DegreeStim];
[exclevel, sorti]=sort(exclevel);
Runs2Use=[Runs2Use(sorti) mdx];
mdx=1;

    thetafreq=[];
    thetapow=[];
    thetanorm=[];
    
    for bb=1:length(Runs2Use)
        thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
        thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
        thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
    end

myname='DiffPVExcLevel';
mytitle='Pyr & PV+ B. Network: Tonic Excitation Level (Hz)';
myapp='';

if usenorm==1
    myplotvals=thetanorm;
else
    myplotvals=thetapow;
end
mysize=[length(Runs2Use) myszht];
xL={};
for r=1:length(Runs2Use)-1
    xL{r}=sprintf('%.2f',exclevel(r));
end
xL{length(Runs2Use)}='Ctrl';
ctrlevel=length(Runs2Use);

if usenorm==1
yL={'Norm. Theta Power','Relative to Control'};
else
yL='Theta Power';
end

mycolors=[];
myfreqs=[];
freqstruct=[];
for r=1:length(Runs2Use)
    %tt=strmatch(myfigs(Runs2Use(r)).label,{myfigs(1).mydata.name});
    %if isempty(tt)
        mycolors(r,:)=[0 0 0];
    %else
    %    mycolors(r,:)=myfigs(1).mydata(tt).color;
    %end

        myfreqs(r,:)=[FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Theta FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).ThetaP FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Overall FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).OverallP  FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).Gamma FinalData(Runs2Use(r)).Pos.Freqs(FinalData(Runs2Use(r)).Pyr).GammaP];
        freqstruct(r).freqs= FinalData(Runs2Use(r)).Pos.Freqs(1).Gamma;%unique([FinalData(mdx).tbldata{:,6}]);
        freqstruct(r).pows= FinalData(Runs2Use(r)).Pos.Freqs(1).GammaP;%unique([FinalData(mdx).tbldata{:,6}]);
end
myplotvals(isnan(myplotvals))=0;
gy=plotmebaronly(myname, mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp,ctrlevel);
if printflag
printeps(gy(1),[savepath sl myname])
printeps(gy(2),[savepath sl myname 'Freq'])
end


if printtable
    fprintf(fid,'\\end{tabular}\n');
    fprintf(fid,'\\caption[Spectral Analysis of Network Activity]{Peak, theta and gamma frequencies and powers of the pyramidal cell spike density function using Welch''s Periodogram.}\n');
    fprintf(fid,'\\label{tab:oscpower}\n');
    fprintf(fid,'\\end{footnotesize}\n');
    fprintf(fid,'\\end{table}\n');
    fclose(fid);
end


function formatter(ax,varargin)
global myFontSize myFontName myFontWeight
if isempty(varargin)
    set(ax,'LineWidth',1.0,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)  
elseif varargin{1}==0
    set(ax,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)  
else
    set(ax,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)  
end
box off

function GetAllSDFs(FinalData,handles)
global savepath sl
    load('FinalFig6Data.mat','cellnumbers','LayerHeights','LongitudinalLength','TransverseLength','historical')
load(['data' sl 'MyOrganizer.mat'],'general')
handles.general=general;
timewindow=2000;
timeflag=1;
myElectrode=historical.myElectrode ;%[2000 500];
maxdist=historical.maxdist ;%500;
fid=fopen([savepath sl 'Pyramidal_SDF_All_Conditions.txt'],'w');
fid2=fopen([savepath sl 'All_SDF_Ctrl_Condition.txt'],'w');
fprintf(fid,'Time');
fprintf(fid2,'Time');
for r=1:length(FinalData)-1
    if r==1 && isfield(FinalData(1),'sdftimevec') && ~isempty(FinalData(1).sdftimevec)
        mymat=zeros(length(FinalData(1).sdftimevec),length(FinalData)+1);
        onemat=zeros(length(FinalData(1).onetimevec),length(FinalData)+1);
        mymat(:,1)=FinalData(r).sdftimevec(:);
        onemat(:,1)=FinalData(r).onetimevec(:);
        onemat(:,r+1)=FinalData(r).tmpsdf(:);
        mymat(:,r+1)=FinalData(r).sdf(:);
    elseif r>1 &&  isfield(FinalData(r),'sdf') && ~isempty(FinalData(r).sdf) &&  isfield(FinalData(r),'tmpsdf') && ~isempty(FinalData(r).tmpsdf)
        onemat(:,r+1)=FinalData(r).tmpsdf(:);
        mymat(:,r+1)=FinalData(r).sdf(:);
    else
        
        if 1==1 %infig6
            eval(['global ' FinalData(r).Name])
            evalin('caller',['global ' FinalData(r).Name])
            evalin('base',['global ' FinalData(r).Name])
            if exist(FinalData(r).Name,'var')==0 || eval(['isempty(' FinalData(r).Name ')']) || eval(['isstruct(' FinalData(r).Name ')==0'])
                % export again
                handles.curses=[];
                handles.curses.ind=FinalData(r).Idx;
                guidata(handles.btn_generate, handles)
                h=load_results([],handles);
            end
            eval(['handles.curses=' FinalData(r).Name '.curses;']);
            eval(['handles.runinfo=' FinalData(r).Name '.runinfo;']);
            if exist('myhandles','var')==0 || isempty(myhandles) || isstruct(myhandles)==0
                myhandles = CustomNearElectrode(handles,cellnumbers,LayerHeights,LongitudinalLength,TransverseLength,myElectrode,maxdist);
            end
            handles.curses.cells=myhandles.curses.cells;
            
            fprintf(fid,'\t%s',FinalData(r).Name);
            
            pyrIdx=7;
            idx = find(ismember(handles.curses.spikerast(:,2),handles.curses.cells(pyrIdx).mygids)==1);
            if timeflag
                idt = find(handles.curses.spikerast(idx,1)>handles.general.crop & handles.curses.spikerast(idx,1)<timewindow);
            else
                idt = find(handles.curses.spikerast(idx,1)>handles.general.crop);
            end
            
            if timeflag
                binned= histc(handles.curses.spikerast(idx(idt),1),[handles.general.crop:1:timewindow]); % binned by 1 ms
                timevec=[handles.general.crop:1:timewindow];
            else
                binned= histc(handles.curses.spikerast(idx(idt),1),[handles.general.crop:1:handles.runinfo.SimDuration]); % binned by 1 ms
                timevec=[handles.general.crop:1:handles.runinfo.SimDuration];
            end
            window=3; % ms
            kernel=mynormpdf(-floor((window*6+1)/2):floor((window*6+1)/2),0,window);
            sdf = conv(binned,kernel,'same');
            if r==1
                mymat=zeros(length(timevec),length(FinalData)+1);
                mymat(:,1)=timevec(:);
                FinalData(r).sdftimevec=timevec(:);
                
                for q=1:length(handles.curses.cells)
                    fprintf(fid2,'\t%s',handles.curses.cells(q).name);
                    idx = find(ismember(handles.curses.spikerast(:,2),handles.curses.cells(q).mygids)==1);
                    if timeflag
                        idt = find(handles.curses.spikerast(idx,1)>handles.general.crop & handles.curses.spikerast(idx,1)<timewindow);
                    else
                        idt = find(handles.curses.spikerast(idx,1)>handles.general.crop);
                    end
                    
                    if timeflag
                        binned= histc(handles.curses.spikerast(idx(idt),1),[handles.general.crop:1:timewindow]); % binned by 1 ms
                        timevec=[handles.general.crop:1:timewindow];
                    else
                        binned= histc(handles.curses.spikerast(idx(idt),1),[handles.general.crop:1:handles.runinfo.SimDuration]); % binned by 1 ms
                        timevec=[handles.general.crop:1:handles.runinfo.SimDuration];
                    end
                    window=3; % ms
                    kernel=mynormpdf(-floor((window*6+1)/2):floor((window*6+1)/2),0,window);
                    tmpsdf = conv(binned,kernel,'same');
                    if q==1
                        onemat=zeros(length(timevec),length(FinalData)+1);
                        onemat(:,1)=timevec(:);
                        FinalData(r).onetimevec=timevec(:);
                    end
                    onemat(:,r+1)=tmpsdf(:);%onemat=[onemat tmpsdf(:)];
                    FinalData(r).tmpsdf=tmpsdf(:);
                    save('FinalFig6Data.mat','FinalData','-append')
                end
            end
            mymat(:,r+1)=sdf(:);%mymat=[mymat sdf(:)];
            FinalData(r).sdf=sdf(:);
            save('FinalFig6Data.mat','FinalData','-append')
        end
    end
end
fclose(fid);
fclose(fid2);
%fprintf(fid,'\n');
dlmwrite([savepath sl 'Pyramidal_SDF_All_Conditions.txt'],mymat,'-append',...
'delimiter','\t','roffset',1)
dlmwrite([savepath sl 'All_SDF_Ctrl_Condition.txt'],onemat,'-append',...
'delimiter','\t','roffset',1)


function h=printExpData(myresultsstruct)
global colorvec myFontSize myFontWeight myFontName sl
showmod = 0;
try
        ftmp = figure('GraphicsSmoothing','off', 'Renderer', 'painters','Color','w','Name','Theta ExpHist','Units','inches','Position',[.1 .1 1.75 6],'PaperUnits','inches','PaperPosition',[0 0 1.75 6],'PaperSize',[1.75 6]);
catch
        ftmp = figure('Renderer', 'painters','Color','w','Name','Theta ExpHist','Units','inches','Position',[.1 .1 1.75 6],'PaperUnits','inches','PaperPosition',[0 0 1.75 6],'PaperSize',[1.75 6]);
end
        nrninput = gettheta(-2);
        nrninputf = gettheta(0);
        
        a1=subplot('Position',[.05 1-1/10+.01 .9 1/10-.04]);
        nrninputmp=nrninput;
        for fg=1:length(nrninputmp)
            nrninputmp(fg).name=nrninputmp(fg).tech;
        end
        %h=Phases_figure('GraphicsSmoothing','off', 'Renderer', 'painters',nrninputmp,myRuns(myridx).Theta.freq,gca);
        period = 125;
        Hzval = 8;
        trace.data=0:.025:(period*2);
        trace.data=trace.data';

        excell = -sin((Hzval*(2*pi))*trace.data(:,1)/1000 + pi/2);  % -13.8/125);  %  - handles.phasepref +   -  (0.25)*Hzval*2*pi
        plot(trace.data,excell,'k','LineWidth',1.5)
        ylim([-1.1 1.1])
        xlim([0 max(trace.data)])
        set(gca,'XTickLabel',{})
        set(gca,'YTickLabel',{})
        set(gca,'XColor','w')
        set(gca,'YColor','w')
        title('Experimental','FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
        %celltypeNice={'Pyr.','PV+ B.','CCK+ B.','S.C.-A.','Axo.','Bis.','O-LM','Ivy','NGF.'};
        celltypeNice={'Pyr','PV+B','CCK+B','SC-A','Axo','Bis','O-LM','Ivy','NGF'};
        for r=1:length(myresultsstruct.curses.cells)
            celltype = myresultsstruct.curses.cells(r).name; %celltypevec{r};
            z = strmatch(celltype,{'pyramidalcell','pvbasketcell','cckcell','scacell','axoaxoniccell','bistratifiedcell','olmcell','ivycell','ngfcell'});
            if isempty(z)
                continue;
            end
                subplot('Position',[.05 1-(z+1)/10+.05+.01+.02 .72 .03]);
                % subplot('Position',[.05 1-marg-(z+1)/10+(1/10-.05) .72 1/10-.05]);
                axis off
                b(r) = text(0,.45,celltypeNice{z});
                if strcmp(celltype,'scacell')==1
                    set(b(r),'Color','w','FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
                else
                    set(b(r),'Color',colorvec(z,:),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
                end
%                 else
%                     set(b(r),'Color','w','FontWeight',myFontWeight,'FontName',myFontName)
%                 end
                subplot('Position',[.95 1-(z+1)/10+.05+.01+.02 .04 .03]);
                % subplot('Position',[.95 1-marg-(z+1)/10+(1/10-.05) .04 1/10-.05]);
                myz=strmatch(celltype,{nrninput.tech},'exact');
                if isempty(myz)
                    myz=strmatch('cckcell',{nrninput.name},'exact');
                end
                if isempty(myz)
                    b(r) = text(0,.5,[num2str(round(0)) '^o']);
                    set(b(r),'HorizontalAlignment','right')
                    axis off
                    set(b(r),'Color','w','FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
                elseif showmod==1
                    myx=strmatch(celltype,{nrninputf.tech});
                    mystr='';
                    if ~isempty(myx)
                    mystr=sprintf('%0.0f^o,',unique([nrninputf(myx).phase]));
                    mystr=['(awake='  mystr(1:end-1)  ') '];
                    end
                    b(r) = text(0,.5,[mystr  num2str(round(nrninput(myz).phase)) '^o']);
                    set(b(r),'HorizontalAlignment','right')
                    axis off
                    set(b(r),'Color',colorvec(z,:),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
                else
                    % myx=strmatch(celltype,{nrninput.tech});
                    if ~isempty(myz)
                    b(r) = text(0,.5,[ num2str(round(nrninput(myz).phase)) '^o']);
                    set(b(r),'HorizontalAlignment','right')
                    set(b(r),'Color',colorvec(z,:),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
                    else
                        'uh oh'
                    end
                    axis off
                end

            subplot('Position',[.05 1-(z+1)/10+.01 .9 .05+.015])
            %myim=imread(['C:\Users\maria_000\Documents\MATLAB\work\SimTracker\KS08\' celltype(1:end-4) '.bmp']);
            if exist(['.' sl 'KS08' sl celltype(1:end-4) '.bmp'],'file')
                myim=imread(['.' sl 'KS08' sl celltype(1:end-4) '.bmp']);
                image(myim)
                hold on
                xL=get(gca,'xLim');
                yL=get(gca,'yLim');
                fst = (xL(2) - xL(1))/4;
                snd= (xL(2) - xL(1))*3/4;
                if strcmp(celltype(1:end-4),'sca')
                    plot([fst fst], yL, 'Color',[1 1 1],'LineStyle','--')
                    plot([snd snd], yL, 'Color',[1 1 1],'LineStyle','--')
                    plot(xL, [yL(end) yL(end)],'Color',[1 1 1])
                else
                    plot([fst fst], yL, 'Color',[.5 .5 .5],'LineStyle','--')
                    plot([snd snd], yL, 'Color',[.5 .5 .5],'LineStyle','--')
                    plot(xL, [yL(end) yL(end)],'Color',[.75 .75 .75])
                end
                
%                 hold on
%                 xr=xlim();
%                 yr=ylim();
%                 plot([diff(xr)*.25+xr(1) diff(xr)*.25+xr(1)],yr)
%                 plot([xr(2)-diff(xr) xr(2)-diff(xr)],yr)
                
                axis off
            end
        end
        tt=MiniPhaseShift_Figure(nrninputmp,8,[]);
        ylim([-1.1-.8*(9-1) 1.1])
        bf = findall(tt,'Type','text');
        for b=1:length(bf)
            set(bf(b),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
        end
        bf = findall(tt,'Type','axis');
        for b=1:length(bf)
            set(bf(b),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
        end
        h=[ftmp tt];

function myh=tgcross(handles)
global myFontName myFontWeight myFontSize
%plot(handles.curses.lfp(:,1),handles.curses.lfp(:,2))
        mydata=handles.curses.lfp;
        
        
 dt=diff(mydata(1:2,1))/1000;
d=mydata(:,2)';  % -1 to convert to pyramidal layer LFP

t = (1:length(d))*dt;               %Define a time axis.
N = length(t);  Fs = 1/dt;          %Define other useful parameters.

if 1==0
deg=2;                              %Sets the filter order.
LowWn = [5*2/Fs,10*2/Fs]  ;             %Define the low frequency window of interest.
[B,A] = butter(deg,LowWn,'bandpass');  %Apply the filter to isolate the band.
dlo = filtfilt(B,A,d);

HighWn = [25*2/Fs,80*2/Fs] ;           %Define the high frequency window of interest.
[B,A] = butter(deg,HighWn,'bandpass');  %Apply the filter to isolate the band.
dhi = filtfilt(B,A,d);

%   How well does the filter work?  Let's compare the original signal with
%   the fitlered data.
else
    dlo=mikkofilter(handles.curses.lfp,1000/handles.runinfo.lfp_dt,[5 10]);
    dhi=mikkofilter(handles.curses.lfp,1000/handles.runinfo.lfp_dt,[25 80]);
    t=dlo(:,1);
    dlo=dlo(:,2);
    dhi=dhi(:,2);
end

%   We might notice that funny effects happen at the edges of the data.  So,
%   let's ignore these edge effects due to the filtering and concentrate on
%   the center of the data.

dlo = dlo(round(N/4):end-round(N/4)-1);
dhi = dhi(round(N/4):end-round(N/4)-1);
taxis = t(round(N/4):end-round(N/4)-1);

phi = angle(hilbert(dlo));    %Phase of low frequency signal.
amp = abs(hilbert(dhi));      %Amplitude envelope of high frequency signal.

p_bins = (-pi:0.2:pi);              %Define the phase bins.

a_mean = zeros(length(p_bins)-1,1); %Vector to hold avg amp env results.
theta_mean = zeros(length(p_bins)-1,1); %Vector to hold avg amp env results.
p_mean = zeros(length(p_bins)-1,1); %Vector to hold center of phase bins.
  
for k=1:length(p_bins)-1
    pL = p_bins(k);                         %Phase lower limit for this bin.
    pR = p_bins(k+1);                       %Phase upper limit for this bin.
    indices = find(phi >= pL & phi < pR);   %Find phase values in this range.
    a_mean(k) = mean(amp(indices));         %Compute mean amplitude at these phases.
    theta_mean(k) = -mean(amp(indices));         %Compute mean amplitude at these phases.
    p_mean(k) = mean([pL, pR]);             %Label the phase bin with the center phase.
end
h = max(a_mean)-min(a_mean);                %The difference between the max and min modulation.
[R,P] = corrcoef(phi,amp);
%   Plot the mean envelope versus phase.
myh=figure('Color','w','Name','ThetaGammaCross','Units','inches','PaperUnits','inches','Position',[1 1 3.75 3],'PaperPosition',[0 0 3.75 3],'PaperSize',[3.75 3]);
% subplot(2,1,1)
% plot([p_mean; p_mean+2*pi]*180/pi+180, [theta_mean; theta_mean], 'k', 'LineWidth', 2);
% set(gca,'XTick',[0:90:720],'xlim',[0 720])
% xlabel('Theta Phase (degrees)');ylabel('calculated LFP analog (mV)')
% subplot(2,1,2)
plot([p_mean; p_mean+2*pi]*180/pi+180, [a_mean; a_mean], 'k', 'LineWidth', 2);
xlabel('Theta Phase (^o)');ylabel('Gamma Amplitude (mV)')
bf = findall(myh,'Type','text');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end
bf = findall(myh,'Type','axis');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end
set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
box off
set(gca,'XTick',[0:90:720],'xlim',[0 720])

%xlabel('Low frequency phase');  ylabel('High frequency envelope height difference');
disp(['crosscorr Metric h=' num2str(h)])


function otherCtrlFigs(FinalData,mycontrolstruct,colorstruct,plotCtrlFigs)
global myFontSize sl colorvec myFontWeight myFontName myhandles repodir savepath printflag RunArray printtable

mrr=ver;

if ismember(3,plotCtrlFigs)
% Figure 3a: Spectrogram
mycontrolstruct.optarg='lfp';
h(1)=plot_spectro(mycontrolstruct);
set(h(1),'Name','Spectrogram')
title('LFP')
colormap(jet)
cbar_axes=colorbar;
set(get(cbar_axes,'ylabel'),'string','Power')
bf = findall(h(1),'Type','text');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end
bf = findall(h(1),'Type','axis');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end
set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
ylim([0 15])
set(h(1),'Units','inches','PaperUnits','inches','PaperSize',[3.75 3],'PaperPosition',[0 0 3.75 3],'Position',[.5 .5 3.75 3])

% Figure 3b: SDF Pwelch Periodogram
    mycontrolstruct.optarg='sdf,type,heat,norm,pwelch,[0 16]';
    h(2)=plot_spectral(mycontrolstruct);
    set(h(2),'Name','ThetaSpect')
    title('Theta')
    bf = findall(h(2),'Type','text');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    bf = findall(h(2),'Type','axis');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    xlim([0 15])
    set(h(2),'Units','inches','PaperUnits','inches','PaperSize',[2.5 3],'PaperPosition',[1 1 2.5 3],'Position',[.5 .5 2.5 3])
%     Gram_color = findall(h(1),'Type','colorbar');
%     Gram_axis = findall(h(1),'Type','axes');
%     set(Gram_axis,'Units','inches');
%     set(Gram_color,'Units','inches');
%     cpos=get(Gram_color,'Position');
%     apos=get(Gram_axis,'Position');
%     Gram_fig=get(h(1),'Position');
%     FFT_fig=get(h(2),'Position');
%     FFT_color = findall(h(2),'Type','colorbar');
%     FFT_axis = findall(h(2),'Type','axes');
%     set(FFT_axis,'Units','inches');
%     a2pos=get(FFT_axis,'Position');
%     if ~isempty(FFT_color) && ~isempty(cpos)
%         set(FFT_color,'Units','inches' ,'Position',[cpos(1)-Gram_fig(3)+FFT_fig(3) cpos(2)-Gram_fig(4)+FFT_fig(4) cpos(3)/2 cpos(4)]);
%     end
%     marg=Gram_fig(3)-(apos(1)+apos(3));
%     set(FFT_axis,'Units','inches' ,'Position',[a2pos(1) a2pos(2) FFT_fig(3)-marg-a2pos(1) a2pos(4)]);
    

        mycontrolstruct.optarg='sdf,type,heat,norm,pwelch,[25 81]';
    h(3)=plot_spectral(mycontrolstruct);
    set(h(3),'Name','GammaSpect')
    title('Gamma')
    bf = findall(h(3),'Type','text');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    bf = findall(h(3),'Type','axis');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    xlim([25 80])
    set(h(3),'Units','inches','PaperUnits','inches','PaperSize',[2.5 3],'PaperPosition',[1 1 2.5 3],'Position',[.5 .5 2.5 3])
%     Gram_color = findall(h(1),'Type','colorbar');
%     Gram_axis = findall(h(1),'Type','axes');
%     set(Gram_axis,'Units','inches');
%     set(Gram_color,'Units','inches');
%     cpos=get(Gram_color,'Position');
%     apos=get(Gram_axis,'Position');
%     Gram_fig=get(h(1),'Position');
%     FFT_fig=get(h(3),'Position');
%     FFT_color = findall(h(3),'Type','colorbar');
%     FFT_axis = findall(h(3),'Type','axes');
%     set(FFT_axis,'Units','inches');
%     a2pos=get(FFT_axis,'Position');
%     set(FFT_color,'Units','inches' ,'Position',[cpos(1)-Gram_fig(3)+FFT_fig(3) cpos(2)-Gram_fig(4)+FFT_fig(4) cpos(3)/2 cpos(4)]);
%     marg=Gram_fig(3)-(apos(1)+apos(3));
%     set(FFT_axis,'Units','inches' ,'Position',[a2pos(1) a2pos(2) FFT_fig(3)-marg-a2pos(1) a2pos(4)]);
%     %close(h(2))
% %     
% %     figure(h(1))
% %     ylim([0 200])
% %     set(h(1),'Units','inches','PaperUnits','inches','PaperSize',[5 6],'PaperPosition',[0 0 5 6],'Position',[.5 .5 5 6])
    
        mycontrolstruct.optarg='sdf,type,heat,norm,pwelch,[0 200]';
    h(4)=plot_spectral(mycontrolstruct);
    set(h(4),'Name','FullSpect')
    title('Welch''s Periodogram of SDF')
    bf = findall(h(4),'Type','text');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    bf = findall(h(4),'Type','axis');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    xlim([0 200])
    set(h(4),'Units','inches','PaperUnits','inches','PaperSize',[3.25 3],'PaperPosition',[0 0 3.25 3],'Position',[.5 .5 3.25 3])
    Gram_color = findall(h(1),'Type','colorbar');
    Gram_axis = findall(h(1),'Type','axes');
    set(Gram_axis,'Units','inches');
    set(Gram_color,'Units','inches');
    cpos=get(Gram_color,'Position');
    apos=get(Gram_axis,'Position');
    Gram_fig=get(h(1),'Position');
    FFT_fig=get(h(4),'Position');
    FFT_color = findall(h(4),'Type','colorbar');
    FFT_axis = findall(h(4),'Type','axes');
    set(FFT_axis,'Units','inches');
    a2pos=get(FFT_axis,'Position');
    set(FFT_color,'Units','inches' ,'Position',[cpos(1)-Gram_fig(3)+FFT_fig(3) cpos(2)-Gram_fig(4)+FFT_fig(4) cpos(3) cpos(4)]);
    marg=Gram_fig(3)-(apos(1)+apos(3));
    set(FFT_axis,'Units','inches' ,'Position',[a2pos(1) a2pos(2) FFT_fig(3)-marg-a2pos(1) a2pos(4)]);

if printflag
    for tt=1:length(h)
        printeps(figure(h(tt)),[savepath sl get(h(tt),'Name')])
    end
end
    
myh=tgcross(mycontrolstruct);
if printflag
printeps(figure(myh),[savepath sl get(myh,'Name')])
end
end

    if ismember(20,plotCtrlFigs)
        mycontrolstruct.optarg='pyremph,down';
        
        tmpstruct = mycontrolstruct;
        if isfield(tmpstruct.curses.cells, 'mygids')
            tmpstruct.curses.cells = rmfield(tmpstruct.curses.cells, 'mygids');
        end
        
        if datenum(mrr(1).Date)<735749 || olderflag==1
            tmph=figure('Name','fullraster','Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3]);
        else
            tmph=figure('Name','fullraster','GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3]);
        end
        tmph=plot_raster(tmpstruct,gca,colorstruct); % myresultsstruct
        bf = findall(tmph,'Type','text');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
        bf = findall(tmph,'Type','axes');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
        set(tmph,'Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3])
        if printflag
            printeps(figure(tmph),[savepath sl get(tmph,'Name')])
        end
    end
    
    if ismember(32,plotCtrlFigs)
        if datenum(mrr(1).Date)<735749 || olderflag==1
            tmph=figure('Name','StartRaster','Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 6],'PaperPosition',[0 0 6 6],'Position',[.5 .5 6 6]);
        else
            tmph=figure('Name','StartRaster','GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 6],'PaperPosition',[0 0 6 6],'Position',[.5 .5 6 6]);
        end
        tmpstruct.optarg='rasthist';
        tmph=plot_raster(tmpstruct,gca,colorstruct); % myresultsstruct
        xlim([0 140])
        bf = findall(tmph,'Type','text');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
        bf = findall(tmph,'Type','axes');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
        %set(tmph,'Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3])
        if printflag
            printeps(figure(tmph),[savepath sl get(tmph,'Name')])
        end
    end

    
if ismember(14,plotCtrlFigs) 
    olderflag=1;
    handles = mycontrolstruct;
    eval(['global ca1oVgH_ScaledUp_04'])
    evalin('caller',['global ca1oVgH_ScaledUp_04'])
    evalin('base',['global ca1oVgH_ScaledUp_04'])
    handles.curses=[];
    handles.curses.ind=strmatch('ca1oVgH_ScaledUp_04',{RunArray.RunName},'exact');
    if ~isempty(handles.curses.ind)
    guidata(handles.btn_generate, handles)
    h=load_results([],handles);

    myzoomstruct = ca1oVgH_ScaledUp_04;
    myzoomstruct.general=handles.general;
    myzoomstruct.btn_generate = handles.btn_generate;
    myzoomstruct.curses.cells=myhandles.curses.cells;
    if datenum(mrr(1).Date)<735749 || olderflag==1
        hfull=figure('Name','SpkRstrZoom','Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3]);
    else
        hfull=figure('Name','SpkRstrZoom','GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3]);
    end
    myzoomstruct.optarg='pyremph,posfil,down';
    hfull=plot_raster(myzoomstruct,gca,colorstruct); % myresultsstruct
    xlim([100 600])

    %set(get(hh(newi),'Children'),'xLim',zoomrange)
    bf = findall(hfull,'Type','text');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    bf = findall(hfull,'Type','axes');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
if printflag
    printeps(figure(hfull),[savepath sl get(hfull,'Name')])
end
    end
end
    
olderflag=1;
% Figure 4: LFP, Raster, Traces
    zoomrange=[1000 2000];
if ismember(4,plotCtrlFigs)

    [hh, colorstruct]=basictrace(mycontrolstruct.runinfo.RunName,mycontrolstruct,zoomrange); % myfigs(1).name,myresultsstruct
    for hz=1:4
        bf = findall(hh(hz),'Type','text');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
        bf = findall(hh(hz),'Type','axes');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
        if printflag
        printeps(figure(hh(hz)),[savepath sl get(hh(hz),'Name')])
        end
    end

    % next
    
    newi=length(hh)+1;
    
    if datenum(mrr(1).Date)<735749 || olderflag==1
        hh(newi)=figure('Name','SpkRstr','Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3]);
    else
        hh(newi)=figure('Name','SpkRstr','GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[6 3],'PaperPosition',[0 0 6 3],'Position',[.5 .5 6 3]);
    end
    mycontrolstruct.optarg='pyremph,posfil,down';
    hh(newi)=plot_raster(mycontrolstruct,gca,colorstruct); % myresultsstruct
    xlim(zoomrange)

    %set(get(hh(newi),'Children'),'xLim',zoomrange)
    bf = findall(hh(newi),'Type','text');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    bf = findall(hh(newi),'Type','axes');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize,'xLim',zoomrange)
    end
if printflag
    printeps(figure(hh(newi)),[savepath sl get(hh(newi),'Name')])
end

    consolflag=1;
    if consolflag
        % find highest position on intratrace
        vv=get(hh(1),'Children');
        for v=1:length(vv)
            set(vv(v),'Units','inches')
            vp=get(vv(v),'Position');
            vppos(v)=vp(2);
            vpht(v)=vp(4);
        end

        [maxp, maxi]=max(vppos);
        maxheight = maxp+vpht(maxi);
        mymarg=.08;
        figp=get(hh(1),'Position');
        maxht=7.5; %figp(4)+6+mymarg;
        set(hh(1),'Position',[0 0 figp(3) maxht],'PaperPosition',[0 0 figp(3) maxht],'PaperSize',[figp(3) maxht]);

        mych=get(hh(5),'Children');
        figrelpos=get(hh(5),'Position');
        for mv=1:length(mych)
            set(mych(mv),'Units','inches')
            bp=get(mych(mv),'Position');
            set(mych(mv),'Parent',hh(1),'Position',[bp(1) bp(2)+maxheight+mymarg bp(3) bp(4)])
        end
        close(hh(5));
        bp=get(mych(1),'Position');
        newmaxheight = bp(2)+mymarg + bp(4);

        lfpg=get(hh(4),'Children');
        lfpt=get(hh(3),'Children');
    
        set(lfpg(2),'Units','inches')
        mp=get(lfpg(2),'Position');
        set(lfpg(2),'Parent',hh(1),'Position',[mp(1) mp(2)+newmaxheight mp(3) mp(4)])

        newmaxheight = mp(2)+newmaxheight + mp(4);
        set(lfpt(2),'Units','inches')
        mp=get(lfpt(2),'Position');
        set(lfpt(2),'Parent',hh(1),'Position',[mp(1) mp(2)+newmaxheight mp(3) mp(4)])
        close(hh(3));
        close(hh(4));
        
        for hzz=1
            bf = findall(hh(hzz),'Type','text');
            for b=1:length(bf)
                set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
            end
            bf = findall(hh(hzz),'Type','axes');
            for b=1:length(bf)
                set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
            end
            if printflag

            printeps(figure(hh(hzz)),[savepath sl get(hh(hzz),'Name') 'New'])
            end
        end
    end
end   

if ismember(5,plotCtrlFigs)
% Figure 5: Firing rates and phases

    tmporg=mycontrolstruct;
    tmporg.curses.cells=mycontrolstruct.curses.cells([7 8 3 9 1 2 6 4 5]);
    tmporg.optarg='subset';
    [hhh(1), firedata] = plot_firingrates(tmporg);
    NiceAbbrev = {'Pyr','PV+B','CCK+B','SC-A','Axo','Bis','O-LM','Ivy','NGF'};

    set(hhh(1),'color','w','Name','Active Cell Firing Rates','units','inches','PaperUnits','inches','PaperSize',[3 2],'Position',[.5 .5 3 2],'PaperPosition',[0 0 3 2]);
    formatter(gca)
    ty=ylabel('Firing frequency (Hz)');
    formatter(ty)
    set(gca,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
    set(ty,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
    legstr={'Model','Exp. Anesth.','Exp. Awake'};
    bfm=legend(legstr,'Position',[0.5705    0.6719    0.4387    0.3003]);
    legend boxoff
    formatter(bfm);
    set(bfm,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
    title('')
    bf = findall(hhh(1),'Type','text');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    bf = findall(hhh(1),'Type','axis');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    set(gca,'xticklabel','','xlim',[.5 9.25])
    for ar=1:length(NiceAbbrev)
        myr(ar)=text(ar,-3,NiceAbbrev{ar},'Rotation',30,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize,'HorizontalAlignment','right');
    end
    set(gca,'Position',[.13 .15 .85 .83])
if printflag

    printeps(figure(hhh(1)),[savepath sl get(hhh(1),'Name')])
end

    hexp=printExpData(mycontrolstruct);
    close(hexp(2));
    hexp(2)=[];

    mycontrolstruct.optarg='hist';
    mdx=find([FinalData.Idx]==mycontrolstruct.curses.ind);

    if isfield(FinalData(mdx),'mydata') && ~isempty(FinalData(mdx).mydata)
        [tmp, mydata, peaks] = plot_phasemod([],mycontrolstruct,1,FinalData(mdx).mydata);
    else
        [tmp, mydata, peaks] = plot_phasemod([],mycontrolstruct,1);
        FinalData(mdx).mydata = mydata;
    end

    myHz=8; % Hz
    thetaper=1000/myHz;
    for r=1:length(mydata)
       % [angle, magnitude, modtimes]=getspikephase(mydata(r).activitytimes, thetaper, peaks);
        mycellSD(r).name=mydata(r).tech;
        mycellSD(r).sptimes=mydata(r).activitytimes;
        mycellSD(r).spphases=mydata(r).modactivitytimes/thetaper*360;
        
        fid=fopen([savepath sl 'Spike_Phase_Time_' mydata(r).tech '.txt'],'w');
        for q=1:length(mycellSD(r).spphases)
            fprintf(fid,'%f\t%.1f\n',mycellSD(r).sptimes(q),mycellSD(r).spphases(q));
        end
        fclose(fid);
    end
if printtable
fid=fopen([savepath sl 'Table_Phases.tex'],'w');
fprintf(fid,'\\begin{table}[position htb]\n');
fprintf(fid,'\\centering\n');
fprintf(fid,'\\begin{tabular}{|lrrrr|} \n');
fprintf(fid,'\\hline\n');
fprintf(fid,'\\textbf{Cell} &  \\textbf{Firing} &      \\multicolumn{2}{c}{\\textbf{Modulation}} &      \\textbf{Phase } \\\\ \n');
fprintf(fid,'\\textbf{Type} &  \\textbf{Rate (Hz)} &   \\textbf{Level}&       \\textbf{p} &        \\textbf{(0$^o$=trough)} \\\\ \n');
fprintf(fid,'\\hline\n');
for m=1:length(mydata)
    if m<10
        fprintf(fid,'%s &      %.1f &  %.2f & %.2e &   %.1f \\\\ \n', mydata(m).name, firedata(m).data(6), mydata(m).mod, mydata(m).pval, mydata(m).phase);
        fprintf(fid,'\\hline\n');
    end
end
fprintf(fid,'\\end{tabular}\n');
fprintf(fid,'\\caption[Model Preferred Spike Phases]{Preferred theta firing pha                    ses for each model cell type.}\n');
fprintf(fid,'\\label{tab:modelphases}\n');
fprintf(fid,'\\end{table}\n');
fclose(fid);
end


    myfg=figure('Color','w','Name','PhasexMod','units','inches','PaperUnits','inches','Position',[0 0 3 2.5],'PaperPosition',[0 0 3 2.5],'PaperSize',[3 2.5]);
    tmpphase=[];
    for m=1:9
        tmpphase(m)=mod(mydata(m).phase-90,360)+90;
        plot(mydata(m).phase,mydata(m).mod,'Color',mydata(m).color,'Marker','o','MarkerSize',5,'LineWidth',2,'LineStyle','none')
        if mydata(m).mod>.5
            btm=text(mydata(m).phase,mydata(m).mod,['    ' mydata(m).name],'Color',mydata(m).color,'HorizontalAlignment','right');
        else
            btm=text(mydata(m).phase,mydata(m).mod,[' ' mydata(m).name],'Color',mydata(m).color,'HorizontalAlignment','left');
        end
        if mod(length(find(mydata(m).mod>[mydata(1:9).mod])),2)==0
            set(btm,'VerticalAlignment','bottom')
        else
            set(btm,'VerticalAlignment','top')
        end
        hold on
    end
    p = polyfit(tmpphase,[mydata(1:9).mod],1);
    yfit = polyval(p,tmpphase);
    yresid = [mydata(1:9).mod] - yfit;
    SSresid = sum(yresid.^2);
    SStotal = (length([mydata(1:9).mod])-1) * var([mydata(1:9).mod]);
    rsq = 1 - SSresid/SStotal;
    plot(tmpphase,yfit,'k','LineWidth',2)
    text(mean(tmpphase),mean(yfit),['    r^2: ' sprintf('%.2f',rsq)])
    ylim([-.1 1])
    xlim([0 360])
    xlabel('Theta Phase Preference (^o)')
    ylabel('Theta Modulation of Spiking')

    bf = findall(myfg,'Type','text');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    bf = findall(myfg,'Type','axis');
    for b=1:length(bf)
        set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    end
    set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
    set(gca,'xtick',[0 90 180 270 360])
    box off
    if printflag

    printeps(figure(myfg),[savepath sl get(myfg,'Name')])
    end
    
    for r=1:length(FinalData(mdx).mydata)
        mycontrolstruct.curses.cells(r).phase=FinalData(mdx).mydata(r).phase;
        mycontrolstruct.curses.cells(r).color=FinalData(mdx).mydata(r).color;
        mycontrolstruct.curses.cells(r).offset=[0 0];
    end
    
    swap1=tmp;
    tmp=hexp(1);
    hexp(1)=swap1;
    
    bc=get(hexp(1),'Children');
    for b=1:length(bc)
        set(bc(b),'Units','inches')
    end
    set(hexp(1),'Units','inches','PaperUnits','inches')
    pos=get(hexp(1),'Position');
    set(hexp(1),'Position',[pos(1) pos(2) pos(3)*2 pos(4)],'PaperPosition',[pos(1) pos(2) pos(3)*2 pos(4)],'PaperSize',[pos(3)*2 pos(4)])
    movew=pos(3);
    bd=get(tmp,'Children');
    for b=1:length(bd)
        set(bd(b),'Units','inches')
        pos=get(bd(b),'Position');
        set(bd(b),'Position',[pos(1)+movew pos(2) pos(3) pos(4)])
        set(bd(b),'Parent',hexp(1))
    end
    close(tmp)

    hexp(2)=MiniPhaseShift_Figure(mycontrolstruct.curses.cells(1:9),FinalData(mdx).Pos.Freqs(FinalData(mdx).Pyr).Theta,[]);
    set(hexp(2),'Units','inches','Position',[3 1 3 2],'Units','inches','PaperPosition',[0 0 3 2],'PaperSize',[3 2])

%     for g=1:2
%         bc=get(hexp(g),'Children');
%         for b=1:length(bc)
%             set(bc(b),'Units','normalized')
%             rr=get(bc(b),'Children');
%             for r=1:length(rr)
%                 if isprop(rr(r),'Units')
%                     set(rr(r),'Units','normalized')
%                 end
%             end
%         end
%         pos=get(hexp(g),'Position');
%         sc=4/pos(3);
%         set(hexp(g),'Position',[pos(1) pos(2) pos(3)*sc pos(4)*sc*.9])
%     end

        for h=1:2
            bf = findall(hexp(h),'Type','text');
            for b=1:length(bf)
                set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
            end
            bf = findall(hexp(h),'Type','axes');
            for b=1:length(bf)
                set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
            end
            if printflag

            printeps(figure(hexp(h)),[savepath sl get(hexp(h),'Name')])
            end
        end
end

function GABAFig(FinalData,handles)
global myFontSize myFontWeight myFontName savepath printflag printtable fid sl
% This needs additional datasets so I sequestered this code for now unless
% you want to run it too, just let me know if you do.

% GABA
myh=1.1*1.5;
hsc=1.5;
hg=figure('GraphicsSmoothing','off', 'Renderer', 'painters','color','w','Name','GABA','units','inches','PaperUnits','inches','PaperSize',[2.5 myh],'Position',[.5 .5 2.5 myh],'PaperPosition',[0 0 2.5 myh]);
conds={'ctrl','a','w'};
xL={'Control','No GABA_B','Equiv. CT'};
xLline={'Control','No GABA$_B$','No GABA$_B$, Equiv. CT'};

if printtable
    fprintf(fid,'\\multicolumn{7}{|l|}{\\textbf{%s}} \\\\ \n', 'GABA$_{B}$');
    fprintf(fid,'\\hline\n');
end

usenorm=0;

mdx=1;

allgabadata=[];
grouping=[];
totspks=[];
totvar=[];
for x=1:length(conds)
    xa(x)=x;
    Runs2Use=[];
    
    for r=1:length(FinalData)
        if ~isempty(strfind(FinalData(r).Comments,['gaba ' conds{x}]))
            Runs2Use=[Runs2Use r];
        end
    end
    if strcmp(conds{x},'ctrl') % the control run will not have 'ctrl' in its comments, will instead have 'control', so add that in manually.
        Runs2Use=[Runs2Use mdx];
    end
        
    thetafreq=[];
    thetapow=[];
    thetanorm=[];
    gammafreq=[];
    gammapow=[];
    overallfreq=[];
    tmpspks=[];
    spkvar=[];
    
    for bb=1:length(Runs2Use)
        thetafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Theta;
        thetapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP;
        thetanorm(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).ThetaP/FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
        gammafreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Gamma;
        gammapow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).GammaP;
        overallfreq(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).Overall;
        overallpow(bb)=FinalData(Runs2Use(bb)).Pos.Freqs(FinalData(Runs2Use(bb)).Pyr).OverallP;
                
%         handles.curses=[];
%         handles.curses.ind=FinalData(Runs2Use(bb)).Idx;
%         if exist(FinalData(Runs2Use(bb)).Name,'var')
%             eval(['handles=' FinalData(Runs2Use(bb)).Name ';']);
%         else
%             guidata(handles.btn_generate, handles)
% 
%             spikeraster(handles.btn_generate,guidata(handles.btn_generate))
%             handles=guidata(handles.btn_generate);
% 
%             getcelltypes(handles.btn_generate,guidata(handles.btn_generate))
%             handles=guidata(handles.btn_generate);
%         end
% 
%         mdidx=find(handles.curses.spikerast(:,2)>=handles.curses.cells(7).range_st & handles.curses.spikerast(:,2)<=handles.curses.cells(7).range_en);
%         tmpspks(bb)=length(mdidx);
%         handles.curses.spikerast = handles.curses.spikerast(mdidx,:);
%         
%         handles.runinfo.SimDuration = FinalData(Runs2Use(bb)).SimDuration;
%         
%         tmphandles=getoscphaseamp(handles,'sdf',0);
%         pyrphase=tmphandles.curses.oscspikerast(:,end-2);        % tmphandles.curses.oscspikerast(:,3)==6
%         spkvar(bb) = std(pyrphase);
    end
    
    if usenorm==1
        ya(x)=mean(thetanorm);
        ea(x)=std(thetanorm);
    else
        ya(x)=mean(thetapow);
        ea(x)=std(thetapow);
    end
    fa(x)=mean(thetafreq);
    ga(x)=mean(gammafreq);
    gp(x)=mean(gammapow);
    fo(x)=mean(overallfreq);
    fp(x)=mean(overallpow);
    
    if printtable
        %fprintf(fid,'%s & %.1f & %.1e & %.1f & %.1e & %.1f & %.1e \\\\ \n', xLline{x}, mean(thetafreq), mean(thetapow), mean(gammafreq), mean(gammapow), mean(overallfreq), mean(overallpow));
        if ya(x)>0
            firstfreq=sprintf('%.1f',mean(thetafreq));
        else
            firstfreq='n/a';
        end
        if gp(x)>0
            secfreq=sprintf('%.1f',mean(gammafreq));
        else
            secfreq='n/a';
        end
        if fp(x)>0
            hirdfreq=sprintf('%.1f',mean(overallfreq));
        else
            hirdfreq='n/a';
        end
        fprintf(fid,'%s & %s & %.1e & %s & %.1e & %s & %.1e \\\\ \n', xLline{x}, firstfreq, mean(thetapow), secfreq, mean(gammapow), hirdfreq, mean(overallpow));
        fprintf(fid,'\\hline\n');  
    end
    
    
    
    % for x=1:length(conds)
    %eval(['newmag = max(synfigdata_' corsyndata{x} '.fig.axis.data(11).y)']);
    if usenorm==1
        allgabadata = [allgabadata; thetanorm(:)];
        %IPSCmag = [IPSCmag; newmag*ones(length(thetanorm),1)];
        grouping = [grouping; x*ones(length(thetanorm),1)];
    else
        allgabadata = [allgabadata; thetapow(:)];
        %IPSCmag = [IPSCmag; newmag*ones(length(thetapow),1)];
        grouping = [grouping; x*ones(length(thetapow),1)];
    end
    totspks = [totspks; tmpspks(:)];
    totvar = [totvar; spkvar(:)];
end
gabacolor={'k','r','g'};

%[h,atab,ctab,stats] = aoctool(IPSCmag,allgabadata,grouping);
% OR
try
P = anova1(allgabadata,grouping);

% OR
% [hp,atab,ctab,stats] = aoctool(totvar,allgabadata,grouping);

end
% 
% for r=1:3:9
%     p = polyfit(totvar(r:r+2),allgabadata(r:r+2),1);
%     yfit = polyval(p,totvar(r:r+2));
%     yresid = allgabadata(r:r+2) - yfit;
%     SSresid = sum(yresid.^2);
%     SStotal = (length(allgabadata(r:r+2))-1) * var(allgabadata(r:r+2));
%     rsq = 1 - SSresid/SStotal;
% %    disp(['r^2 = ' num2str(rsq) ' and rho = ' num2str(corr(totvar(r:r+2),allgabadata(r:r+2)))])
% end

figure(hg)
for i=1:length(ya)
    h(i) = bar(i, ya(i));
    if i == 1, hold on, end
    set(h(i), 'FaceColor', gabacolor{i},'EdgeColor','none','BarWidth',.4) % get(h(i),'BarWidth')*.7
    errorbar(i,ya(i),ea(i),'Color',gabacolor{i},'Marker','none','MarkerSize',15,'LineStyle','none','LineWidth',1.5)
end
%bar(xa,ya,'EdgeColor',[0 0 0],'FaceColor',[0 0 0],'BarWidth',.4)
set(gca,'Position',[.2 .18 .77 .77],'LineWidth',1.5)
hold on

try
sprintf('%.6f\n',P)
if P<.001
    H = sigstar({[1,2],[2,3],[3,1]});
end
end
figure(hg)
%errorbar(xa,ya,ea,'k','Marker','none','MarkerSize',15,'LineStyle','none','LineWidth',1.5)
set(gca,'XTickLabel',{});
ypos = -max(ylim)/45;% -max(ylim)/10;
N=length(xL);
gw=text(1:N,repmat(ypos,N,1),xL','verticalalignment','top','horizontalalignment','center','Rotation',0,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName);
formatter(gw)
set(gw,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
ylabel('Theta Power','FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
    for h=1:1
        bf = findall(hg(h),'Type','text');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
        bf = findall(hg(h),'Type','axes');
        for b=1:length(bf)
            set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
        end
    end
    
xlim([0.5 3.5])
bb=get(gca,'Position');
set(gca,'Position',[bb(1) bb(2) bb(3) .72])
if printflag
printeps(hg,[savepath sl get(hg,'Name')])
end

mycolors=[];
mycolors(1,:)=[0 0 0];
mycolors(2,:)=[1 0 0];
mycolors(3,:)=[0 1 0];
yL='Theta Power';

myfreqs=[];
freqstruct=[];
for r=1:length(fa)
    myfreqs(r,:)=[fa(r) ya(r) fo(r) fp(r) ga(r) gp(r)];
    freqstruct(r).freqs= ga(r);%unique([FinalData(mdx).tbldata{:,6}]);
    freqstruct(r).pows= gp(r);%unique([FinalData(mdx).tbldata{:,6}]);
end
mysize=[3 1.1];
mytitle='';
myapp='';
myplotvals=ya;
myplotvals(isnan(myplotvals))=0;

gy=plotmebaronly('GABAFreq', mycolors, myplotvals,mysize,xL,yL,myfreqs,freqstruct,mytitle,myapp);
if printflag
printeps(gy(2),[savepath sl 'GABAFreq'])
end

function gy=plotmebaronly(myname, mycolors, myplotvals, mysize,xL,yL,varargin)
global myFontSize myFontName myFontWeight printtable fid

alg=.5;
sc=.37;
hsc=1.5;
clipin=.5;

ctrlevel=[];
if isempty(varargin)
    myfreqs=[];
    freqstruct=[];
    mytitle='';
    myapp='';
    gy(1)=figure('Color','w','Name',myname,'Units','inches','PaperUnits','inches','PaperSize',[alg+mysize(1)*sc mysize(2)],'Position',[.5 .5 alg+mysize(1)*sc mysize(2)],'PaperPosition',[0 0 alg+mysize(1)*sc mysize(2)]);
    gy(2)=figure('Color','w','Name',[myname 'Freq'],'Units','inches','PaperUnits','inches','PaperSize',[alg+mysize(1)*sc mysize(2)],'Position',[.5 .5 alg+mysize(1)*sc mysize(2)],'PaperPosition',[0 0 alg+mysize(1)*sc mysize(2)]);
else
    myfreqs=varargin{1};
    freqstruct=varargin{2};
    mytitle=varargin{3};
    myapp=varargin{4};
    if length(varargin)>4
        ctrlevel=varargin{5};
    end
    gy(1)=figure('Color','w','Name',myname,'Units','inches','PaperUnits','inches','PaperSize',[alg+mysize(1)*sc mysize(2)*hsc],'Position',[.5 .5 alg+mysize(1)*sc mysize(2)*hsc],'PaperPosition',[0 0 alg+mysize(1)*sc mysize(2)*hsc]);
    gy(2)=figure('Color','w','Name',[myname 'Freq'],'Units','inches','PaperUnits','inches','PaperSize',[alg+mysize(1)*sc mysize(2)*hsc],'Position',[.5 .5 alg+mysize(1)*sc mysize(2)*hsc],'PaperPosition',[0 0 alg+mysize(1)*sc mysize(2)*hsc]);
    if 1==0 % don't sort again
        [~, sorti]=sort(myfreqs(:,3));
        sorti=[1; sorti(sorti~=1)];
        mycolors=mycolors(sorti,:);
        myplotvals=myplotvals(sorti);
        myfreqs=myfreqs(sorti,:);
        xL=xL(sorti);
        freqstruct=freqstruct(sorti);
    end
end
if ~isempty(myapp)
    for x=1:length(xL)
        xL{x}={xL{x},myapp};
    end
end

if printtable
    fprintf(fid,'\\multicolumn{7}{|l|}{\\textbf{%s}} \\\\ \n', strrep(strrep(strrep(mytitle,'&','\&'),'#','\#'),'GABA_B','GABA$_B$'));
    fprintf(fid,'\\hline\n');
end

N = numel(myplotvals);
% if isempty(myfreqs)
%     bargraph=subplot('Position',[alg/(alg+sc*mysize(1)) .14 1-1.1*alg/(alg+sc*mysize(1)) .8]);
% else
figure(gy(1))
    bargraph=subplot('Position',[alg/(alg+sc*mysize(1)) 0.1120+.1 1-1.1*alg/(alg+sc*mysize(1)) .7]);
% end
for i=1:N
    if printtable
        if myfreqs(i,2)>0
            firstfreq=sprintf('%.1f',myfreqs(i,1));
        else
            firstfreq='n/a';
        end
        if myfreqs(i,6)>0
            secfreq=sprintf('%.1f',myfreqs(i,5));
        else
            secfreq='n/a';
        end
        if myfreqs(i,4)>0
            hirdfreq=sprintf('%.1f',myfreqs(i,3));
        else
            hirdfreq='n/a';
        end
        if ~isempty(ctrlevel) && i==ctrlevel
            fprintf(fid,'%s & %s & %.1e & %s & %.1e & %s & %.1e \\\\ \n', [strrep(strrep(strrep(xL{i},'&','\&'),'#','\#'),'GABA_B','GABA$_B$') ' (Ctrl.)'], firstfreq, myfreqs(i,2), secfreq, myfreqs(i,6), hirdfreq, myfreqs(i,4));
        else
            fprintf(fid,'%s & %s & %.1e & %s & %.1e & %s & %.1e \\\\ \n', strrep(strrep(strrep(xL{i},'&','\&'),'#','\#'),'GABA_B','GABA$_B$'), firstfreq, myfreqs(i,2), secfreq, myfreqs(i,6), hirdfreq, myfreqs(i,4));
        end
        fprintf(fid,'\\hline\n');
    end
    h(i) = bar(i, myplotvals(i));
    if i == 1, hold on, end
    if ~isempty(ctrlevel) && i==ctrlevel
        set(h(i), 'FaceColor', [.1 .1 1],'EdgeColor','none','BarWidth',.8) % get(h(i),'BarWidth')*.7
        if isempty(strmatch('ctrl',lower(xL)))
            [gcco,icons,plots,legend_text] =legend(h(i),'Control','Location','NorthWest','FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName);
            set(gcco,'EdgeColor','none');
            icons(2).Children.Vertices(3:4)=[.28 .28];
            icons(1).Position=[.33 .5 0];
        end
    else
        set(h(i), 'FaceColor', mycolors(i,:),'EdgeColor','none','BarWidth',.8) % get(h(i),'BarWidth')*.7
    end
end   
set(gca, 'XTickLabel', '') 
yy=ylim;
set(gca,'ylim',[-yy(2)*.02 yy(2)])
for i=1:N
    h(i).BaseLine.BaseValue=-yy(2)*.02;
end
% mrr=get(gca,'YTickLabel');
% %mystr=length(strfind(num2str(mrr{2}),'0'));
% for m=2:length(mrr)
%     mystr=length(strfind(num2str(mrr{m}),'0'));
%     mrr{m}=[mrr{m}(1:end-mystr) 'e' num2str(mystr)];
%     if strcmp(mrr{m},'0')
%         m
%     end
% end
%set(gca,'YTickLabel',mrr)
set(gca,'YTickLabelMode','auto')
btmp2=xlabel(mytitle);
%set(btmp2,'Position',get(btmp2,'Position')- [0 diff(get(gca,'ylim'))/20 0])
set(btmp2,'Position',get(btmp2,'Position')- [0 diff(get(gca,'ylim'))/10 0])
mm=get(gca,'xlabel');
 mp=get(mm,'Position');
% set(mm,'Position',[mp(1) mp(2)-.2*mp(2) mp(3)])
ypos = -diff(ylim)/16;% -max(ylim)/10;
rotflag=0;
        hA='center';
for x=1:length(xL)
    if length(xL{x})>4
        ypos = -diff(ylim)/60;% -diff(ylim)/16;% -max(ylim)/10;
        rotflag=25;
        hA='right';
        set(mm,'Position',[length(xL) mp(2)+.6*mp(2) mp(3)],'HorizontalAlignment','right')
        set(bargraph,'Position',[alg/(alg+sc*mysize(1)) 0.1120+.04+.1 1-1.1*alg/(alg+sc*mysize(1)) .7-.04]);
    end
end
gw=text(1:N,repmat(ypos,N,1),xL','VerticalAlignment','top','horizontalalignment',hA,'Rotation',rotflag,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName);
formatter(gw)
set(gw,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
btmp=ylabel(yL);
%btmp2 = get(gca,'XLabel');

formatter(btmp)
formatter(btmp2)
set(btmp,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
set(btmp2,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
formatter(gca)
try
    set(get(gy,'Children'),'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
end

bf = findall(gy,'Type','text');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end
bf = findall(gy,'Type','axes');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end

figure(gy(2))    
thetagraph=subplot('Position',[alg/(alg+sc*mysize(1)) 0.1120+.2 1-1.1*alg/(alg+sc*mysize(1)) .6]);
%thetagraph=subplot('Position',[alg/(alg+sc*mysize(1)) .43 1-1.1*alg/(alg+sc*mysize(1)) .44]);
thetapos=get(thetagraph,'Position');
%set(thetagraph,'XLim',get(bargraph,'XLim'),'YLim',[0 80])
set(thetagraph,'XLim',get(bargraph,'XLim'),'YLim',[0 25])
th=.02*diff(get(thetagraph,'YLim'))*(.2/thetapos(4));
formatter(ylabel('Modul. Freq. of SDF (Hz)'),'VerticalAlignment','top')
%formatter(ylabel({'Frequency of','Modulation of SDF (Hz)'}),'VerticalAlignment','top')
set(get(gca,'ylabel'),'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
%formatter(ylabel('         Theta (Hz)'),'VerticalAlignment','top')
xrange=get(bargraph,'XLim');
patch([xrange(1) xrange(2) xrange(2) xrange(1) xrange(1)],[5 5 10 10 5],[.94 .94 .94],'EdgeColor','none')
hold on
%     patch([xrange(1) xrange(2) xrange(2) xrange(1) xrange(1)],[25 25 80 80 25],[.94 .94 .94],'EdgeColor','none')
for i=1:N
    ht=myfreqs(i,3);
    %ht=myfreqs(i,1);
    st=get(h(i),'XData')-get(h(i),'BarWidth')/2;
    en=get(h(i),'XData')+get(h(i),'BarWidth')/2;
    %if ht>25
            if ~isempty(ctrlevel) && i==ctrlevel
        gty=text(mean([st en]),25,{num2str(round(ht*10)/10),'Ctrl'});
        set(gty,'Color',[.1 .1 1],'HorizontalAlignment','center','VerticalAlignment','top','Interpreter','none')
            else
        gty=text(mean([st en]),25,num2str(round(ht*10)/10));
        set(gty,'Color',mycolors(i,:),'HorizontalAlignment','center','VerticalAlignment','top','Interpreter','none')
            end
    %else
    if ht<25
            if ~isempty(ctrlevel) && i==ctrlevel
        gcct=plot([st en],[ht ht],'Color',[.1 .1 1]);
%         gcco=legend(gcct,'Control');
%         set(gcco,'EdgeColor','none')
            else
        gcct=plot([st en],[ht ht],'Color',mycolors(i,:));
            end
    end
    if myplotvals(i)==0
        set(gty,'String','n/a')
        set(gcct,'Color','none')
    end
    hold on
%         for r=1:length(freqstruct(i).freqs)
%             hold on
%             plot([get(h(i),'XData')-get(h(i),'BarWidth')/2 get(h(i),'XData')+get(h(i),'BarWidth')/2],[freqstruct(i).freqs(r) freqstruct(i).freqs(r)],'Color',mycolors(i,:),'LineStyle','-.') %mycolors(i,:)
%         end
end

set(thetagraph, 'XTickLabel', '','XTick',[]) 

formatter(thetagraph)
% try
% set(thetagraph,'XColor','none');
% end
set(thetagraph,'Layer','top');
set(thetagraph,'Clipping','Off','FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)


    btmp2=xlabel(mytitle);
%set(btmp2,'Position',get(btmp2,'Position')- [0 diff(get(gca,'ylim'))/20 0])
set(btmp2,'Position',get(btmp2,'Position')- [0 diff(get(gca,'ylim'))/10 0])
mm=get(gca,'xlabel');
 mp=get(mm,'Position');
% set(mm,'Position',[mp(1) mp(2)-.2*mp(2) mp(3)])
ypos = -diff(ylim)/16;% -max(ylim)/10;
rotflag=0;
        hA='center';
for x=1:length(xL)
    if length(xL{x})>4
        ypos = -diff(ylim)/20;% -diff(ylim)/16;% -max(ylim)/10;
        rotflag=25;
        hA='right';
        set(mm,'Position',[length(xL) mp(2)+.6*mp(2) mp(3)],'HorizontalAlignment','right')
        set(thetagraph,'Position',[alg/(alg+sc*mysize(1)) 0.1120+.04+.1 1-1.1*alg/(alg+sc*mysize(1)) .7-.04]);
    end
end
gw=text(1:N,repmat(ypos,N,1),xL','horizontalalignment',hA,'Rotation',rotflag,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName);
formatter(gw)
set(gw,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
btmp=ylabel('Frequency (Hz)');
%btmp2 = get(gca,'XLabel');
%xlabel('')
formatter(btmp)
formatter(btmp2)
set(btmp,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
set(btmp2,'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
formatter(gca)
try
    set(get(gy,'Children'),'FontSize',myFontSize,'FontWeight',myFontWeight,'FontName',myFontName)
end

bf = findall(gy,'Type','text');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end
bf = findall(gy,'Type','axes');
for b=1:length(bf)
    set(bf(b),'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
end


function handles = CustomNearElectrode(handles,cellnumbers,LayerHeights,LongitudinalLength,TransverseLength,ElectrodeLoc,maxdist)

layers=regexp(LayerHeights,';','split');
LayerVec=str2double(layers(2:end-1));
layind=cellnumbers.data(:,2)+1;
ZHeight=zeros(1,length(handles.curses.cells));
for r=1:length(handles.curses.cells)
    BinInfo(r) = setBins(handles.curses.cells(r).numcells,LongitudinalLength,TransverseLength,LayerVec(layind(r)));
    ZHeight(r) = sum(LayerVec(1:layind(r)-1));
end

for postype=1:length(handles.curses.cells)
    handles.curses.cells(postype).mygids=[];
    for gid=handles.curses.cells(postype).range_st:handles.curses.cells(postype).range_en
        pos = getpos(gid, handles.curses.cells(postype).range_st, BinInfo(postype), ZHeight(postype));
        mydist=sqrt((pos.x - ElectrodeLoc(1)).^2 + (pos.y - ElectrodeLoc(2)).^2);
        if mydist<maxdist
            handles.curses.cells(postype).mygids=[handles.curses.cells(postype).mygids gid];
        end
    end
    disp(['Just finished cell type r=' num2str(postype)])
end

function [h, mytrace]=basictrace(resultname,handles,zoomrange)
global myFontSize sl repodir myFontWeight myFontName savepath

totrange=0;
myw=6;
olderflag=1;

posflag=0;
if isfield(handles.curses.cells(1),'mygids')
    posflag=1;
end

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'pyramidalcell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_pyramidalcell99180.dat']);
    disp('using a somatic recording that may be outside of the electrode range')
end
mytrace.pyramidal.trace=zztrace.data;
mytrace.pyramidal.color=[.0 .0 .6];
mytrace.pyramidal.pos=1;
mytrace.pyramidal.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.pyramidal.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'pvbasketcell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_pvbasketcell333500.dat']);
end
mytrace.pvbasket.trace=zztrace.data;
mytrace.pvbasket.color=[.0 .75 .65];
mytrace.pvbasket.pos=2;
mytrace.pvbasket.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.pvbasket.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'cckcell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_cckcell5840.dat']);
end
mytrace.cck.trace=zztrace.data;
mytrace.cck.color=[1 .75 .0];
mytrace.cck.pos=3;
mytrace.cck.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.cck.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'scacell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_scacell338400.dat']);
end
mytrace.sca.trace=zztrace.data;
mytrace.sca.color=[1 .5 .3];
mytrace.sca.pos=4;
mytrace.sca.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.sca.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'axoaxoniccell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_axoaxoniccell360.dat']);
end
mytrace.axoaxonic.trace=zztrace.data;
mytrace.axoaxonic.color=[1 .0 .0];
mytrace.axoaxonic.pos=5;
mytrace.axoaxonic.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.axoaxonic.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'bistratifiedcell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_bistratifiedcell1800.dat']);
end
mytrace.bistratified.trace=zztrace.data;
mytrace.bistratified.color=[.6 .4 .1];
mytrace.bistratified.pos=6;
mytrace.bistratified.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.bistratified.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'olmcell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_olmcell20900.dat']); % 20818
end
mytrace.olm.trace=zztrace.data;
mytrace.olm.color=[.5 .0 .6];
mytrace.olm.pos=7;
mytrace.olm.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.olm.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'ivycell');
end
zztrace=[];
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_ivycell10360.dat']); % 13000
end
mytrace.ivy.trace=zztrace.data;
mytrace.ivy.color=[.6 .6 .6];
mytrace.ivy.pos=8;
mytrace.ivy.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.ivy.range;

zztrace=[];
if posflag==1
    zztrace=loadmyfile(handles,resultname,'ngfcell');
end
if isempty(zztrace)
    zztrace=importdata([repodir sl 'results' sl resultname sl 'trace_ngfcell17870.dat']);
end
mytrace.ngf.trace=zztrace.data;
mytrace.ngf.color=[1 .1 1];
mytrace.ngf.pos=9;
mytrace.ngf.range=max(zztrace.data(:,2))-min(zztrace.data(:,2))+2;
totrange = totrange + mytrace.ngf.range;

matchstr={'pyramidalcell','olmcell','bistratifiedcell','axoaxoniccell','pvbasketcell','cckcell','scacell','ivycell','ngfcell'};
NiceAbbrev = {'Pyr.','O-LM','Bis.','Axo.','PV+ B.','CCK+ B.','S.C.-A.','Ivy','NGF.'};
handles.formatP.left = .065;
handles.formatP.bottom=.065;

intracehgt=4;
if olderflag==1
    h=figure('Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[myw intracehgt],'PaperPosition',[0 0  myw intracehgt],'Position',[.5 .5  myw intracehgt],'Name','IntracellularTrace');
else
    h=figure('GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','Units','inches','PaperUnits','inches','PaperSize',[myw intracehgt],'PaperPosition',[0 0  myw intracehgt],'Position',[.5 .5  myw intracehgt],'Name','Trace');
end
%pos=get(gcf,'Units');
%set(gcf,'Units','normalized','Position',[0.1 0.1 .9 .9]);
%set(gcf,'Units',pos);

prevend=.96;%+handles.formatP.bottom*2;
mycells=fieldnames(mytrace);
for m=1:length(mycells)
    %subplot(length(mycells),1,mytrace.(mycells{m}).pos)
    tidx=find(mytrace.(mycells{m}).trace(:,1)>=zoomrange(1) & mytrace.(mycells{m}).trace(:,1)<=zoomrange(2));
    g(m)=subplot('Position',[handles.formatP.left*2 prevend-mytrace.(mycells{m}).range/totrange*(.96-handles.formatP.bottom*2) .9-handles.formatP.left .95*mytrace.(mycells{m}).range/totrange*(.96-handles.formatP.bottom*2)]);
    prevend=prevend-mytrace.(mycells{m}).range/totrange*(.96-handles.formatP.bottom*2);
    plot(g(m),mytrace.(mycells{m}).trace(tidx,1),mytrace.(mycells{m}).trace(tidx,2),'Color',mytrace.(mycells{m}).color,'LineWidth',1.0)
    if mytrace.(mycells{m}).pos==9
        ylim([min(mytrace.(mycells{m}).trace(tidx,2))-5 max(mytrace.(mycells{m}).trace(tidx,2))+1])
    else
        ylim([min(mytrace.(mycells{m}).trace(tidx,2))-1*3 max(mytrace.(mycells{m}).trace(tidx,2))+1])
    end
    z=strmatch([mycells{m} 'cell'],matchstr,'exact');
    bd=ylabel(NiceAbbrev{z},'Rotation',0,'HorizontalAlignment','Right','FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize);
    set(bd, 'Units', 'Normalized', 'Position', [-0.03, 0.3, 0]);
    box off
    set(g(m),'Clipping','off','ycolor',mytrace.(mycells{m}).color,'xcolor','w','YTick',[],'YTickLabel',{},'LineWidth',0.5)
%     if mytrace.(mycells{m}).pos==9
%         xlabel('Time (ms)','FontName','ArialMT','FontWeight','bold','FontSize',myFontSize)
%         set(g(m),'FontName','ArialMT','FontWeight','bold','FontSize',myFontSize,'xcolor','w')
%     else
        set(g(m),'XTick',[],'XTickLabel',{})
%     end
    ax2(m) = axes('Position', get(g(m), 'Position'),'Color','none');
    set(ax2(m),'XTick',[],'YTick',[],'XColor','w','YColor','w','box','on','layer','top','LineWidth',1.1)
end
linkaxes(g,'x');

axes(g(end))
hold on
yL=get(gca,'YLim');
xL=get(gca,'XLim');
plot([xL(2)-3 xL(2)-3],[yL(1)+2 yL(1)+52],'k','LineWidth',2)
plot([xL(2)-103 xL(2)-3],[yL(1)+2 yL(1)+2],'k','LineWidth',2)
%text(xL(2)-30,yL(2),{'100 ms','20 mV'},'HorizontalAlignment','right','FontName','ArialMT','FontSize',myFontSize)
pospos=get(gca,'Position');
ngfdiff=(50/diff(ylim))*pospos(4);

if olderflag==1
    h(2)=figure('Renderer', 'painters','Visible','on','Color','w','PaperUnits','inches','PaperSize',[myw 1.2],'PaperPosition',[.3 .3 myw 1.2],'Name','LFP','Units','inches','Position',[.5 .5 myw 1.2]);
else
    h(2)=figure('GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','PaperUnits','inches','PaperSize',[myw 1.2],'PaperPosition',[.3 .3 myw 1.2],'Name','LFP','Units','inches','Position',[.5 .5 myw 1.2]);
end
%pos=get(gcf,'Units');
%set(gcf,'Units','normalized','Position',[0.1 0.1 .9 .3]);
%set(gcf,'Units',pos);
subplot('Position',[handles.formatP.left*2 handles.formatP.bottom*2 .9-handles.formatP.left .95*(1-handles.formatP.bottom*2)]);
tidx=find(handles.curses.lfp(:,1)>=zoomrange(1) & handles.curses.lfp(:,1)<=zoomrange(2));


% if posflag==1
%     plot(handles.curses.lfp(tidx,1),handles.curses.epos.lfp(tidx),'Color','k','LineWidth',2)
% else
    plot(handles.curses.lfp(tidx,1),handles.curses.lfp(tidx,2),'Color','k','LineWidth',2)
% end
bd=ylabel('LFP','Rotation',0,'HorizontalAlignment','Right','FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize);
set(bd, 'Units', 'Normalized', 'Position', [-0.03, 0.3, 0]);
box off
xlabel('Time (ms)','FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
set(gca,'Clipping','off','ycolor','k','xcolor','w','YTick',[],'YTickLabel',{})
ax2 = axes('Position', get(gca, 'Position'),'Color','none');
set(ax2,'XTick',[],'YTick',[],'XColor','w','YColor','w','box','on','layer','top')

lfpht=.7; %.55;

filteredlfp=mikkofilter(handles.curses.lfp,1000/handles.runinfo.lfp_dt);
thetalfp=filteredlfp;
if olderflag==1
    h(3)=figure('Renderer', 'painters','Visible','on','Color','w','PaperUnits','inches','PaperSize',[myw lfpht],'PaperPosition',[0 0 myw lfpht],'Name','Filtered LFP','Units','inches','Position',[.5 .5 myw 1]);
else
    h(3)=figure('GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','PaperUnits','inches','PaperSize',[myw lfpht],'PaperPosition',[0 0 myw lfpht],'Name','Filtered LFP','Units','inches','Position',[.5 .5 myw lfpht]);
end
subplot('Position',[handles.formatP.left*2 handles.formatP.bottom .9-handles.formatP.left .95*(1-handles.formatP.bottom*2)]);
tidx=find(filteredlfp(:,1)>=zoomrange(1) & filteredlfp(:,1)<=zoomrange(2));
plot(filteredlfp(tidx,1),filteredlfp(tidx,2),'Color','k','LineWidth',2)
bd=ylabel({'Theta','Filtered','LFP'},'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize,'Rotation',0,'HorizontalAlignment','Right');
set(bd, 'Units', 'Normalized', 'Position', [-0.03, 0.3, 0]);
set(bd,'Units','character')
box off
set(gca,'XTick',[],'XTickLabel',{},'XColor','w')
ylim([min(filteredlfp(tidx,2))-(max(filteredlfp(tidx,2))-min(filteredlfp(tidx,2)))*.1 max(filteredlfp(tidx,2))+(max(filteredlfp(tidx,2))-min(filteredlfp(tidx,2)))*.1])
hold on

disp(['Scale difference: 1 mV on ngf scale = ' num2str(ngfdiff/(.95*(1-handles.formatP.bottom*2))*diff(ylim)) ' mV on Theta LFP trace'])

set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
set(gca,'Clipping','off','ycolor','k','xcolor','k','YTick',[],'YTickLabel',{})
myax=gca;
ax2 = axes('Position', get(gca, 'Position'),'Color','none');
set(ax2,'XTick',[],'YTick',[],'XColor','w','YColor','w','box','off','layer','top','LineWidth',2)
yL=get(myax,'YLim');
xL=get(myax,'XLim');
hold(myax,'on')
plot(myax,[xL(2)-3 xL(2)-3],[yL(1)+.02 yL(1)+.2+.02],'k','LineWidth',2)
plot(myax,[xL(2)-103 xL(2)-3],[yL(1)+.02 yL(1)+.02],'k','LineWidth',2)
disp('LFP scale = .2 mV on theta LFP')
%text(xL(2)-30,yL(2),{'100 ms','5 mV'},'HorizontalAlignment','right','FontName','ArialMT','FontSize',myFontSize)

filteredlfp=mikkofilter(handles.curses.lfp,1000/handles.runinfo.lfp_dt,[25 40]);
if olderflag==1
    h(4)=figure('Renderer', 'painters','Visible','on','Color','w','PaperUnits','inches','PaperSize',[myw lfpht],'PaperPosition',[0 0 myw lfpht],'Name','Filtered LFP Gamma','Units','inches','Position',[.5 .5 myw lfpht]);
else
    h(4)=figure('GraphicsSmoothing','off', 'Renderer', 'painters','Visible','on','Color','w','PaperUnits','inches','PaperSize',[myw lfpht],'PaperPosition',[0 0 myw lfpht],'Name','Filtered LFP','Units','inches','Position',[.5 .5 myw lfpht]);
end
subplot('Position',[handles.formatP.left*2 handles.formatP.bottom .9-handles.formatP.left .95*(1-handles.formatP.bottom*2)]);
tidx=find(filteredlfp(:,1)>=zoomrange(1) & filteredlfp(:,1)<=zoomrange(2));
plot(filteredlfp(tidx,1),filteredlfp(tidx,2),'Color','k','LineWidth',2)
bd=ylabel({'Gamma','Filtered','LFP'},'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize,'Rotation',0,'HorizontalAlignment','Right');
set(bd, 'Units', 'Normalized', 'Position', [-0.03, 0.3, 0]);
set(bd,'Units','character')
box off
set(gca,'XTick',[],'XTickLabel',{},'XColor','w')
ylim([min(filteredlfp(tidx,2))-(max(filteredlfp(tidx,2))-min(filteredlfp(tidx,2)))*.1 max(filteredlfp(tidx,2))+(max(filteredlfp(tidx,2))-min(filteredlfp(tidx,2)))*.1])
hold on

disp(['Scale difference: 1 mV on ngf scale = ' num2str(ngfdiff/(.95*(1-handles.formatP.bottom*2))*diff(ylim)) ' mV on Gamma LFP trace'])

set(gca,'FontName',myFontName,'FontWeight',myFontWeight,'FontSize',myFontSize)
set(gca,'Clipping','off','ycolor','k','xcolor','k','YTick',[],'YTickLabel',{})
myax=gca;
ax2 = axes('Position', get(gca, 'Position'),'Color','none');
set(ax2,'XTick',[],'YTick',[],'XColor','w','YColor','w','box','off','layer','top','LineWidth',2)
disp(['LFP scale = ' num2str(diff(get(myax,'ylim'))/diff(yL)*.2) ' mV on gamma LFP'])

% get(myax,'YLim') yL);
% set(myax,'XLim',xL);
% hold(myax,'on')
% plot(myax,[xL(2)-3 xL(2)-3],[yL(1)+.02 yL(1)+.2+.02],'k','LineWidth',2)
% plot(myax,[xL(2)-103 xL(2)-3],[yL(1)+.02 yL(1)+.02],'k','LineWidth',2)
% text(xL(2)-30,yL(2),{'100 ms','.2 mV'},'HorizontalAlignment','right','FontName','ArialMT','FontSize',myFontSize)

fid=fopen([savepath sl 'LFP.txt'],'w');
ploffset=(length(handles.curses.lfp)-length(thetalfp))/2;
fprintf(fid,'Time\tRaw\n');
for f=1:length(thetalfp)
    fprintf(fid,'%f\t%f\n', handles.curses.lfp(f+ploffset,1), handles.curses.lfp(f+ploffset,2));
end
fclose(fid);

fid=fopen([savepath sl 'FilteredLFP.txt'],'w');
ploffset=(length(handles.curses.lfp)-length(thetalfp))/2;
fprintf(fid,'Time\tTheta\tGamma\n');
for f=1:length(thetalfp)
    fprintf(fid,'%f\t%f\t%f\n', handles.curses.lfp(f+ploffset,1), thetalfp(f,2), filteredlfp(f,2));
end
fclose(fid);

fid=fopen([savepath sl 'Membrane_Potentials.txt'],'w');
fprintf(fid,'Time');
mystr='%f\t';
myvars='mytrace.(mycells{1}).trace(q,1),';
for m=1:length(mycells)
    mystr=[mystr '%f\t'];
    myvars=[myvars 'mytrace.' mycells{m} '.trace(q,2),'];
    fprintf(fid,'\t%s',mycells{m});
end
fprintf(fid,'\n');

mystr=[mystr(1:end-1) 'n'];
myvars=myvars(1:end-1);

for q=1:length(mytrace.(mycells{1}).trace(:,1))
    eval(['fprintf(fid,''' mystr ''',' myvars ');']);
end
fclose(fid);
    %subplot(length(mycells),1,mytrace.(mycells{m}).pos)
    



function trace=loadmyfile(handles,resultname,celltype)
global sl repodir
    trace=[];
    fd=strmatch(celltype,{handles.curses.cells.name});
    myfile='';
    r=1;
    gg=0;
    while ~isempty(fd) && r<=length(handles.curses.cells(fd).mygids)
        if exist([repodir sl 'results' sl resultname sl 'trace_' celltype num2str(handles.curses.cells(fd).mygids(r)) '.dat'],'file')==2
            gg=gg+1;
            if isempty(myfile)
                myfile=[repodir sl 'results' sl resultname sl 'trace_' celltype num2str(handles.curses.cells(fd).mygids(r)) '.dat'];
            end
        end
        r=r+1;
    end
    if isempty(myfile)
        disp(['no ' celltype ' cells within area were recorded, using a recording from outside the Area of Interest!!'])
    else
        trace=importdata(myfile);
        disp(['Out of ' num2str(gg) ' recordings for ' num2str(r-1) ' '  celltype 's in area, Importing: ' myfile])
    end
    
    
function h=performancefig(FinalData)
global disspath savepath repodir sl

disspath = savepath;
    dd=strmatch('ca1_olmVar_gH_30_03',{FinalData.Name},'exact');
    if isempty(dd)
        disp('ca1_olmVar_gH_30_03 needs to be in FinalData')
        return
    end

    %ncrunmem=[FinalData(dd).memvec.memstruct([1 3 66 69]).VIRT]/10^6;
if exist([repodir sl 'networkclamp_results' sl 'ca1_olmVar_gH_30_03' sl '00002' sl 'topoutput.dat'],'file')
    filename = [repodir sl 'networkclamp_results' sl 'ca1_olmVar_gH_30_03' sl '00002' sl 'topoutput.dat'];
    fid = fopen(filename);
    c=textscan(fid,'%s','Delimiter','\t');
    fclose(fid);
    DivBy=1024*1024;
    ofint=[1 2 13 16];
    tempmem=[];
    for p=1:length(ofint)
        medrr=regexp(c{:}{p*2},'\s*','split');
        switch medrr{5}(end)
            case 'm'
                tempmem(p) = str2num(medrr{5}(1:end-1))*1024; % get into kb (from mb)
            case 'g'
                tempmem(p) = str2num(medrr{5}(1:end-1))*1048576; % get into kb (from gb)
            otherwise
                tempmem(p) = str2num(medrr{5}(1:end-1));  % assume kb
        end
    end


    ncrunmem=tempmem/DivBy; % VIRT is column 5



    yL='Memory (GB)';
    mf=perfgraphs([FinalData(dd).memvec.memstruct([1 3 66 69]).VIRT]*FinalData(dd).NumProcessors/(1024^2),ncrunmem,yL,'grouped');
    set(mf,'Position',[.5 .5 4 3],'PaperPosition',[0 0 4 3],'PaperSize',[4 3])
    setFonts(mf) 
    printeps(mf,[disspath 'ModelTypeMemory'])
else
    disp('Network clamp results not available to grab memory from, using hard coded value')
    yL='Memory (GB)';
    mf=perfgraphs([392.11 1917.89 3013.83 3000.70],ncrunmem,yL,'grouped');
    set(mf,'Position',[.5 .5 4 3],'PaperPosition',[0 0 4 3],'PaperSize',[4 3])
    setFonts(mf) 
    printeps(mf,[disspath 'ModelTypeMemory'])
end
ncrun=[27.22 1.75 370.17 192.53 0.23];

yL='Wall-Clock Time (s)';
mf=perfgraphs(FinalData(dd).timevec,ncrun,yL,'stacked');
    setFonts(mf) 
printeps(mf,[disspath 'ModelTypeWallTimes'])


yL='CPU Time (s)';
mf=perfgraphs(FinalData(dd).timevec*FinalData(dd).NumProcessors,ncrun,yL,'stacked');
    setFonts(mf) 
printeps(mf,[disspath 'ModelTypeCPUTimes'])

h=getperf(FinalData);


function setFonts(tt) 
global myFontWeight myFontName myFontSize

bf = findall(tt,'Type','text');
for b=1:length(bf)
    set(bf(b),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
end
bf = findall(tt,'Type','axis');
for b=1:length(bf)
    set(bf(b),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
end
bf = findall(tt,'Type','axes');
for b=1:length(bf)
    set(bf(b),'FontWeight',myFontWeight,'FontName',myFontName,'FontSize',myFontSize)
end

Loading data, please wait...