Files
hartman-server/workflow/apps/matlab/ezview/EZfigTrendOL.m
2024-07-29 12:31:26 -04:00

594 lines
25 KiB
Matlab
Executable File

%EZfigTrendOL.m called from EZviewGui.m LKrTog__ Callback
%Uses data stored from OLay ; Clearing OLay clears data used by this
%Trending Utility
global Exp
global userPars
%try
kfiltLim= userPars.kfiltLim;
%catch
%kfiltLim= str2double(userPars.BPdefault(6));
%end
if get(handles.CompositeTog1, 'Value')
cmpTogFlg=1;
else
cmpTogFlg=0;
end
DexpN= Exp(expN).DexpN;
if strcmp(Exp(expN).DexpType, 'chrono')
maxRows=1; Lmax= 1; bpInd=0;
for n=1:length(Exp(expN).Dexp) %LOOP Thru DayExps
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
try
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
dmSel= Exp(expN).Trace(trc).dmSel;
if iscell(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)
rows= length(cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals));
else
rows=1;
end
if iscell(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)
if rows> maxRows, maxRows= rows; end
LsmpMax= max(cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals));
else
LsmpMax= max(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
end
if LsmpMax> Lmax, Lmax= LsmpMax; end
bpInd=bpInd+1;
end %if isequal(get(Exp(1).hOL(trc),'Visible'),'on')
catch
end
end % for trc= 1:
end %for n=1:length(Exp(expN).Dexp)
maxCols= bpInd; %length(Exp(expN).Dexp) * length(Exp(expN).Trace)
BPvals(1:maxRows,1:maxCols)= nan; %BoxPlot requires a matrix with uniform length even if data is not of the same length
bpInd=0;
for n=1:length(Exp(expN).Dexp) %LOOP Thru DayExps
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
try
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
dmSel= Exp(expN).Trace(trc).dmSel;
bpInd=bpInd+1;
if iscell(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)
kFiltrIndx= find((cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrKvals))<= kfiltLim);
tmp= cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
BPvals(1:length(kFiltrIndx),bpInd)= tmp(kFiltrIndx);
%BPvals(1:length(cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)),bpInd)= cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
cnt= length(kFiltrIndx); %length(cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals));
else
if length(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)> 1 %>= 1
kFiltrIndx= find(((Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrKvals))<= kfiltLim);
tmp= Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals;
BPvals(1:length(kFiltrIndx),bpInd)= tmp(kFiltrIndx);
cnt= length(kFiltrIndx);
%BPvals(1:length((Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)),bpInd)= Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals;
%cnt= length((Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals));
else
BPvals(1,bpInd)= Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals;
cnt= length(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
end
end
%scnt(bpInd)= strcat('[',num2str(cnt),']');
scnt= strcat('[',num2str(cnt),']');
%Get Agar DrugMedia
drug= Exp(expN).Dexp(n).DM.drug{dmSel};
conc= Exp(expN).Dexp(n).DM.conc{dmSel};
media= Exp(expN).Dexp(n).DM.media{dmSel};
mod1= Exp(expN).Dexp(n).DM.mod1{dmSel}; if isnan(cell2mat(mod1)), mod1='';end
conc1= Exp(expN).Dexp(n).DM.conc1{dmSel}; if isnan(cell2mat(conc1)), conc1='';end
mod2= Exp(expN).Dexp(n).DM.mod2{dmSel}; if isnan(cell2mat(mod2)), mod2='';end
conc2=Exp(expN).Dexp(n).DM.conc2{dmSel}; if isnan(cell2mat(conc2)), conc2='';end
dmStr= strcat(drug,conc,'_',media,'_',mod1,conc1,mod2,conc2);
%Extract expDay from ExpName string
dayNpos= max(strfind(Exp(expN).Dexp(n).ExpFoldr, '_D'));
dayLbl= Exp(expN).Dexp(n).ExpFoldr(dayNpos+1:end);
label= strcat(dayLbl,'-', Exp(expN).Trace(trc).UsrGLB, dmStr,scnt); %scnt(bpInd));
tickLabelStr{bpInd}= label;
end %if isequal(get(Exp(1).hOL(trc),'Visible'),'on')
catch
end
end %for trc=
end %for n=1:length(Exp(expN).Dexp)
else %if 'single' or 'multi' experiment setup for DM trends
maxRows=1; Lmax= 1; bpInd=0;
%for n=1:length(Exp(expN).Dexp) %LOOP Thru Multi Experiments
DexpN=Exp(expN).DexpN;
for dm=1:length(Exp(expN).Dexp(DexpN).DM.drug) %LOOP Thru DM perturbations
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
% tempLB= Exp(expN).Trace(trc).UsrGLB;
try
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
DexpN= Exp(expN).Trace(trc).DexpN;
if iscell(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals)
rows= length(cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals));
else
rows=1;
end
if iscell(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals)
if rows> maxRows, maxRows= rows; end
LsmpMax= max(cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals));
else
LsmpMax= max(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals);
end
if LsmpMax> Lmax, Lmax= LsmpMax; end
bpInd=bpInd+1;
end %if isequal(get(Exp(1).hOL(trc),'Visible'),'on')
catch
end
end % for trc= 1:
end %for
%end %for n=1:length(Exp(expN).Dexp)
%end
maxCols= bpInd; %length(Exp(expN).Dexp) * length(Exp(expN).Trace)
BPvals(1:maxRows,1:maxCols)= nan; %BoxPlot requires a matrix with uniform length even if data is not of the same length
bpInd=0;
for dm=1:length(Exp(expN).Dexp(DexpN).DM.drug) %LOOP Thru DM perturbations
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
try
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
DexpN= Exp(expN).Trace(trc).DexpN;
bpInd=bpInd+1;
if iscell(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals)
kFiltrIndx= find((cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrKvals))<= kfiltLim);
tmp= cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals);
BPvals(1:length(kFiltrIndx),bpInd)= tmp(kFiltrIndx);
cnt= length(kFiltrIndx);
%BPvals(1:length(cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals)),bpInd)= cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals);
%cnt= length(cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals));
else
if length(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals)> 1
kFiltrIndx= find(((Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrKvals))<= kfiltLim);
tmp= Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals;
BPvals(1:length(kFiltrIndx),bpInd)= tmp(kFiltrIndx);
cnt= length(kFiltrIndx);
else
BPvals(1,bpInd)= Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals;
cnt= length(Exp(expN).Trace(trc).Dexp(DexpN).DM(dm).UsrLvals);
end
end
%scnt(bpInd)= {strcat('[',num2str(cnt),']')};
scnt= {strcat('[',num2str(cnt),']')};
%Get Agar DrugMedia
drug= Exp(expN).Dexp(DexpN).DM.drug{dm};
conc= Exp(expN).Dexp(DexpN).DM.conc{dm};
media= Exp(expN).Dexp(DexpN).DM.media{dm};
mod1= Exp(expN).Dexp(DexpN).DM.mod1{dm}; if isnan(cell2mat(mod1)), mod1='';end
conc1= Exp(expN).Dexp(DexpN).DM.conc1{dm}; if isnan(cell2mat(conc1)), conc1='';end
mod2= Exp(expN).Dexp(DexpN).DM.mod2{dm}; if isnan(cell2mat(mod2)), mod2='';end
conc2=Exp(expN).Dexp(DexpN).DM.conc2{dm}; if isnan(cell2mat(conc2)), conc2='';end
dmStr= strcat(drug,'_',conc,'_',media,'_',mod1,conc1,mod2,conc2);
%Extract expDay from ExpName string
dayNpos= max(strfind(Exp(expN).Dexp(DexpN).ExpFoldr, '_D'));
dayLbl= Exp(expN).Dexp(DexpN).ExpFoldr(dayNpos+1:end);
if ~isempty(dayLbl), dayLbl=strcat(dayLbl,'_'); end
label= strcat(dayLbl,Exp(expN).Trace(trc).UsrGLB, dmStr,scnt);
tickLabelStr{bpInd}= label;
end %if isequal(get(Exp(1).hOL(trc),'Visible'),'on')
catch
end
end %for trc=
end %for dm=1:length(Exp(expN).Dexp(DexpN).DM.drug)
%{
if isequal(tempLB(4:6),'cmp')||isequal(tempLB(3:6),'cmpG'),
RFcmpFlg=1;
else
RFcmpFlg=0;
end
%}
end %if strcmp(Exp(expN).DexpType, 'chrono') else if Single or Multi experiment
%***********************************************************************************************
%Box Plot Plotting section
if userPars.boxplotFlg==1
BPoutliers= userPars.BPoutliers;
BPnotch= userPars.BPnotch;
sh= userPars.BPlblShft;
fontSize= userPars.BPfontSz;
rotation= userPars.BProt;
%fontSize = 8;
%tickLabelStr = {'Label alpha','Label beta','Label chi','Label delta',...
% 'Label epsilon','Label fish','Label gamma','Label hallo','Label ingo'}
% generate data
if size(BPvals,1)==1, BPvals(2,1:maxCols)= nan; end
final_res = BPvals; %10*randn(300,9)+10;
% group boxes
%sh = 0.3; %sh is shift value
width = .5*sh;
%pos = [1+sh 2-sh 3+sh 4-sh 5+sh 6-sh 7+sh 8-sh 9+sh];
bpn=1;
if strcmp(Exp(expN).DexpType, 'chrono')
ticDim= length(Exp(expN).Dexp);
else
ticDim= length(Exp(expN).Dexp(DexpN).DM.drug);
end
for dim=1:ticDim %LOOP Thru DM perturbations
shn=0;
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
pos(bpn)= dim + (shn*sh);
shn= shn+1;
bpn= bpn+1;
end
end
end
wid = width * ones(1,length(pos));
% boxplot
figure
set(gcf,'OuterPosition',(get(0,'screensize')))
if strcmpi(BPnotch,'on'),
boxplot(final_res, 'notch', 'on', ...
'positions', pos,...
'widths', wid)
elseif strcmpi(BPnotch,'off'),
boxplot(final_res, 'notch', 'off', ...
'positions', pos,...
'widths', wid)
end
% label, change fontsize
% y-axis
set(gca, 'FontSize', fontSize)
ylim([-.5 (Lmax+10)])
ylabel('L in Hours', 'FontSize', fontSize)
%x-labels
text_h = findobj(gca, 'Type', 'text');
%rotation = 45;
for cnt = 1:length(text_h)
set(text_h(cnt), 'FontSize', fontSize,...
'Rotation', rotation, ...
'String', tickLabelStr{length(tickLabelStr)-cnt+1}, ...
'HorizontalAlignment', 'right')
end
% 'VerticalAlignment', 'cap', ...
% smaller box for axes, in order to un-hide the labels
squeeze = 0.2;
left = 0.02;
right = 1;
bottom = squeeze;
top = 1-squeeze;
set(gca, 'OuterPosition', [left bottom right top])
% remove outliers
hout = findobj(gca,'tag','Outliers');
for out_cnt = 1 : length(hout)
if strcmpi(BPoutliers,'on'),
set(hout(out_cnt), 'Visible', 'on')
elseif strcmpi(BPnotch,'off'),
set(hout(out_cnt), 'Visible', 'off')
end
end
end %if userlPars.boxplotFlg==1
% END OF BOX PLOT CODE****************************************************
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%*****************PLOT OVERLAY CODE**************************************
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%++++++++PLOT OVERLAY OF TRENDS FOR CHRONO OR DRUG-MEDIA PERMUTATIONS++++++++
try
lnwidth= str2num(Exp(4).plotPars{1});
axisFontSz= str2num(Exp(4).plotPars{2});
legFontSz= str2num(Exp(4).plotPars{3});
markerSz= str2num(Exp(4).plotPars{4});
catch
lnwidth=4;
axisFontSz=36;
legFontSz= 10;
markerSz=5;
end
if userPars.boxplotFlg~=1 %PLOT OVERLAY OF TRENDS
figure
set(gcf,'OuterPosition',(get(0,'screensize')))
if strcmp(Exp(expN).DexpType, 'chrono') %Chrono
%Plot median values for each DAY of the selected Trace
%(Gene-Specifics)using single DM of trace
range=0;
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
%trcInd= 0;
scnt= '['; %Init for Sample Count String
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
for n=1:length(Exp(expN).Dexp) %LOOP Thru DayExps
tmp=[];
try
%if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
dmSel= Exp(expN).Trace(trc).dmSel;
if iscell(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)
kFiltrIndx= find((cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrKvals))<= kfiltLim);
tmp= cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
dayMed(trc,n)= median(tmp(kFiltrIndx)); %median(cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals));
dayStd(trc,n)= std(tmp(kFiltrIndx)); %std(cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals));
cnt= length(kFiltrIndx); %length(cell2mat(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals));
else
kFiltrIndx= find(((Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrKvals))<= kfiltLim);
tmp= (Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
dayMed(trc,n)= median(tmp(kFiltrIndx)); %median(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
dayStd(trc,n)= std(tmp(kFiltrIndx)); %std(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
cnt= length(kFiltrIndx); %length(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals);
end
%*************Make LEGEND list ********************************
%Make Sample Count Label item;
if n~=length(Exp(expN).Dexp)
scnt= strcat(scnt,num2str(cnt),',');
else
scnt= strcat(scnt,num2str(cnt),']');
end
%Get Agar DrugMedia;
dm= Exp(expN).Trace(trc).dmSel;
drug= Exp(expN).Dexp(n).DM.drug{dm};
conc= Exp(expN).Dexp(n).DM.conc{dm};
media= Exp(expN).Dexp(n).DM.media{dm};
mod1= Exp(expN).Dexp(n).DM.mod1{dm};
conc1= Exp(expN).Dexp(n).DM.conc1{dm};
mod2= Exp(expN).Dexp(n).DM.mod2{dm};
conc2=Exp(expN).Dexp(n).DM.conc2{dm};
dmStr= strcat(drug,'_',conc,'_',media,'_',mod1,conc1,mod2,conc2);
NmLst(trc)= strcat(Exp(expN).Trace(trc).UsrGLB, dmStr,scnt);
%Determine Actual Exp Day from the ExpDay folder
loc= strfind(Exp(expN).Dexp(n).ExpFoldr,'_D');
daystr= Exp(expN).Dexp(n).ExpFoldr((loc+2):end);
dayNums(n)= str2num(daystr);
%trcInd= trcInd+1;
catch
end
try
upperStd(trc,n)=dayMed(trc,n) + dayStd(trc,n);
lowerStd(trc,n)=dayMed(trc,n) - dayStd(trc,n);
catch
end
end %for n=1:length(Exp(expN).Dexp)
% end %if isequal(get(Exp(1).hOL(trc),'Visible'),'on')
%Plot Trend Data
% if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
try
if iscell(Exp(expN).Trace(trc).Dexp(n).DM(dmSel).UsrLvals)
hTrendFig=plot(dayNums,dayMed(trc,1:n),'lineWidth',2); hold on
linecolor(trc)={get(hTrendFig,'color')};
else
clear NmLstStr
if iscell(NmLst(trc)),NmLstStr= cell2mat(NmLst(trc)); else NmLstStr= NmLstStr(trc); end
if isequal(NmLstStr(4:6),'cmp') ||...
isequal(NmLstStr(3:6),'cmpG') || ...
isequal(NmLstStr(3:6),'cmpP'),
hTrendFig=plot(dayNums,dayMed(trc,1:n),'lineWidth',2); hold on
linecolor(trc)={get(hTrendFig,'color')};
else
hTrendFig=plot(dayNums,dayMed(trc,1:n),'marker','^','lineWidth',2); hold on
linecolor(trc)={get(hTrendFig,'color')};
end
%yTicks= get(gca,'yTickLabel'); Ydelta= max(max(yTicks))-min(min(yTicks));
%spacing= Ydelta* 0.0034; %line spacing for STD marker
end
catch
hTrendFig=plot(1:n,dayMed(trc,1:n),'lineWidth',2); hold on
linecolor(trc)={get(hTrendFig,'color')};
ylabel('Experiment Day Index')
end %try
end % if isequal(get(Exp(expN).hOL(trc),'Visible'),'on') approx ln322
grid on
%set(gca,'linewidth',4) %0.5 then 1.5 now 6
%set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
hold all
try % if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
tmpRange= ceil(max(upperStd(trc,1:end))) - floor(min(lowerStd(trc,1:end)));
range= max(range,tmpRange);
catch,end
end %for trc= 1:Exp(expN).traceN approx. ln319
%************** Standard Deviation range bars *****************************
% range= ceil(max(upperStd(trc,1:end))) - floor(min(lowerStd(trc,1:end)));
spacing= range*0.0034; %marker splacing for building range bars
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
for n=1:length(Exp(expN).Dexp) %LOOP Thru DayExps
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
try
line(dayNums(n),lowerStd(trc,n):spacing:(dayMed(trc,n)-.05),'marker','^','LineWidth',1,'markerEdgeColor',cell2mat(linecolor(trc))); hold on
line(dayNums(n),(dayMed(trc,n)+0.05):spacing:upperStd(trc,n),'marker','v','LineWidth',1,'markerEdgeColor',cell2mat(linecolor(trc))); hold on
catch
%line(n,lowerStd(trc,n):0.05:(dayMed(trc,n)-.1),'marker','^','LineWidth',1,'markerEdgeColor',cell2mat(linecolor(trc))); hold on
%line(n,(dayMed(trc,n)+0.1):0.05:upperStd(trc,n),'marker','v','LineWidth',1,'markerEdgeColor',cell2mat(linecolor(trc))); hold on
end
end
end %for n=1:length(Exp(expN).Dexp)
end % if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
end %for trc= 1:Exp(expN).traceN
%legName=strrep(NmLst,'_','-');
mm=1;
for nn= 1:length(NmLst)
if iscellstr(NmLst(nn))
legName(mm)=strrep(NmLst(nn),'_','-');
mm=mm+1;
end
end
legName =strrep(legName,'/','-');
hleg=legend((legName),'location','NEO');
set(hleg,'fontsize',legFontSz)
end
xlabel('Days')
ylabel('L in Hours')
title('Chronological Trend Plot with Standard Deviations')
hold off
%***************************************************************
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%***************************************************************
%SINGLE or MULTI-Experiment
if ~strcmp(Exp(expN).DexpType, 'chrono') %Single or Multi-Experiment
%Plot median values for each DM of the selected Trace (Gene-DM)
%(Gene-Specifics)using single DAY of trace
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
trcInd= 0;
DexpN= Exp(expN).Trace(trc).DexpN;
expFolder= Exp(expN).Dexp(DexpN).ExpFoldr;
if ispc
lastSlash= max(strfind(Exp(expN).Dexp(DexpN).ExpFoldr, '\'));
else
lastSlash= max(strfind(Exp(expN).Dexp(DexpN).ExpFoldr, '/'));
end
expName= expFolder(lastSlash+1:end);
if length(expName)>18
expNm= strcat('-',expName(1:18));
else
expNm= strcat('-',expName);
end
scnt= '['; %Init for Sample Count String
for n=1:length(Exp(expN).Dexp(DexpN).DM.drug) %LOOP Thru Drug-Media perturbations
tmp=[];
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
if iscell(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals)
kFiltrIndx= find((cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrKvals))<= kfiltLim);
tmp= (cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals));
dmMed(trc,n)= median(tmp(kFiltrIndx)); %median(cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals));
dmStd(trc,n)= std(tmp(kFiltrIndx)); %std(cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals));
cnt= length(kFiltrIndx); %length(cell2mat(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals));
else
kFiltrIndx= find(((Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrKvals))<= kfiltLim);
tmp= ((Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals));
dmMed(trc,n)= median(tmp(kFiltrIndx)); %median(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals);
dmStd(trc,n)= std(tmp(kFiltrIndx)); %std(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals);
cnt= length(kFiltrIndx); %length(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals);
end
%*************Make LEGEND list ********************************
%Make Sample Count Label item
if n~=length(Exp(expN).Dexp(DexpN).DM.drug)
scnt= strcat(scnt,num2str(cnt),',');
else
scnt= strcat(scnt,num2str(cnt),']');
end
%Get Agar DrugMedia
drug= Exp(expN).Dexp(DexpN).DM.drug{n};
conc= Exp(expN).Dexp(DexpN).DM.conc{n};
media= Exp(expN).Dexp(DexpN).DM.media{n};
mod1= Exp(expN).Dexp(DexpN).DM.mod1{n};
conc1= Exp(expN).Dexp(DexpN).DM.conc1{n};
mod2= Exp(expN).Dexp(DexpN).DM.mod2{n};
conc2=Exp(expN).Dexp(DexpN).DM.conc2{n};
dmStr= strcat(drug,'_',conc,'_',media,'_',mod1,conc1,mod2,conc2);
NmLst(trc)= strcat(Exp(expN).Trace(trc).UsrGLB, expNm,scnt);
trcInd= trcInd+1;
upperStd(trc,n)=dmMed(trc,n) + dmStd(trc,n);
lowerStd(trc,n)=dmMed(trc,n) - dmStd(trc,n);
end %if isequal(get(Exp(1).hOL(trc),'Visible'),'on')
end %for n=1:length(Exp(expN).Dexp(DexpN).DM.drug) %LOOP Thru Drug-Media perturbations
%Plot Trend Data
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
if iscell(Exp(expN).Trace(trc).Dexp(DexpN).DM(n).UsrLvals)
hTrendFig=plot(1:n,dmMed(trc,1:n),'lineWidth',2); hold on
linecolor(trc)={get(hTrendFig,'color')};
else
clear NmLstStr
if iscell(NmLst(trc)),NmLstStr= cell2mat(NmLst(trc)); else NmLstStr= NmLst(trc); end
if isequal(NmLstStr(4:6),'cmp') ||...
isequal(NmLstStr(3:6),'cmpG') || ...
isequal(NmLstStr(3:6),'cmpP'),
hTrendFig=plot(1:n,dmMed(trc,1:n),'lineWidth',2); hold on
linecolor(trc)={get(hTrendFig,'color')};
else
hTrendFig=plot(1:n,dmMed(trc,1:n),'marker','^','lineWidth',2); hold on
linecolor(trc)={get(hTrendFig,'color')};
end
end
% yTicks= get(gca,'yTickLabel'); Ydelta= max(max(yTicks))-min(min(yTicks));
%spacing= Ydelta* 0.0034; %line spacing for STD marker
end
grid on
%set(gca,'linewidth',4) %0.5 then 1.5 now 6
%set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
hold all
end %for trc= 1:Exp(expN).traceN
%************** Standard Deviation range bars *****************************
%range= ceil(max(max(upperStd))) - floor(min(min(lowerStd)));
range= ceil(max(upperStd(trc,1:end))) - floor(min(lowerStd(trc,1:end)));
spacing= range*0.0034;
for trc= 1:Exp(expN).traceN %length(Exp(expN).Trace)
for n=1:length(Exp(expN).Dexp(DexpN).DM.drug) %LOOP Thru Drug-Media perturbations
if isequal(get(Exp(expN).hOL(trc),'Visible'),'on')
try
line(n,lowerStd(trc,n):spacing:(dmMed(trc,n)-.05),'marker','^','LineWidth',1,'markerEdgeColor',cell2mat(linecolor(trc))); hold on
line(n,(dmMed(trc,n)+0.05):spacing:upperStd(trc,n),'marker','v','LineWidth',1,'markerEdgeColor',cell2mat(linecolor(trc))); hold on
catch
end
end
end %for n=1:length(Exp(expN).Dexp)
end %for trc= 1:Exp(expN).traceN
mm=1;
for nn= 1:length(NmLst)
if iscellstr(NmLst(nn))
legName(mm)=strrep(NmLst(nn),'_','-');
mm=mm+1;
end
end
legName= strrep(legName,'/','-');
hleg=legend((legName),'location','NEO');
set(hleg,'fontsize',legFontSz)
xlabel('Drug-Media Index')
ylabel('L in Hours')
title('Drug-Media Trend Plot with Standard Deviations')
hold off
end %if ~strcmp(Exp(expN).DexpType, 'chrono') %Single or Multi-Experiment 395
%***************************************************************
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%end
hold off
end %if userPars.boxplotFlg~=1 %PLOT OVERLAY OF TRENDS 266