293 lines
12 KiB
Matlab
Executable File
293 lines
12 KiB
Matlab
Executable File
%***********User find and build composite of Selected Gene Composite and
|
|
%*************Plot it on OLay Plot and Trend plot DNLaxles
|
|
%***************For Chonological Studies (multi Day Studies)
|
|
%Called when Composite_ toggle button is clicked.
|
|
%Data stored for printable Trend Plot production (click [L] in DNLaxes )
|
|
%*********************
|
|
global ghandles
|
|
global Exp
|
|
global exDlst
|
|
global exFolder
|
|
|
|
|
|
traceN=Exp(expN).traceN;
|
|
DexpN= Exp(expN).DexpN; %Temp input for development
|
|
|
|
patrnN=strfind(selGnOrf{1},':'); %Extract Gene-Orf Name
|
|
patrndash= strfind(selGnOrf{1},'-');
|
|
selStrNm= char(selGnOrf)
|
|
if strcmpi(selStrNm(1:3),'RF-')
|
|
usrGene= selStrNm(4:(patrndash(2)-1));
|
|
else
|
|
usrGene= selStrNm(1:(patrnN(1)-1));
|
|
end
|
|
|
|
|
|
prompt = {'Enter Specifics Term if used to futher specify selection '}
|
|
dlg_title = 'User Specifics Term for Refinement Composite';
|
|
num_lines = 1;
|
|
def = {'None'};
|
|
answer = inputdlg(prompt,dlg_title,num_lines,def);
|
|
usrSpec= cell2mat(answer(1));
|
|
if strcmpi(usrSpec,'None'), usrGnSp= {strcat(usrGene,'-')};
|
|
elseif length(usrSpec)> 8,
|
|
trimUspec= usrSpec(1:8);
|
|
usrGnSp= strcat(usrGene,',',{trimUspec});
|
|
else
|
|
trimUspec= usrSpec;
|
|
usrGnSp= strcat(usrGene,',',{trimUspec});
|
|
end
|
|
|
|
|
|
|
|
for n=1:Exp(expN).DexpLength %LOOP Thru DayExps
|
|
|
|
MPnum=length(Exp(expN).Dexp(n).MP);
|
|
DMnum= length(Exp(expN).Dexp(n).DM.drug);
|
|
|
|
%Extract expDay from ExpName string
|
|
dayNpos= max(strfind(Exp(expN).Dexp(n).ExpFoldr, '_D'))
|
|
dayLbl= Exp(expN).Dexp(n).ExpFoldr(dayNpos+1:end);
|
|
|
|
|
|
%*********************************
|
|
|
|
dRF1indx=0;
|
|
|
|
usrSp= usrSpec; %user entry of Specifics for Ref selection
|
|
|
|
%*******************************************************
|
|
for mp=1:length(Exp(expN).Dexp(n).MP)
|
|
|
|
for ind384=1:384
|
|
try %
|
|
%Insert test for numeric in genename and orf if isnumeric
|
|
%Correct common EXCEL problem of converting OCT1 into a date numeric
|
|
if cell2mat(Exp(expN).Dexp(n).MP(mp).genename{1}(ind384))==38991,
|
|
Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)={'OCT1_'};
|
|
elseif isnumeric(cell2mat(Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)))
|
|
Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)={' '};
|
|
end
|
|
%*****************************************************************
|
|
|
|
%DISPersed REFerence capture and find Medians
|
|
if ( ((strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),usrGene) && ...
|
|
strcmpi((Exp(expN).Dexp(n).MP(mp).specifics{1}(ind384)),usrSp)))...
|
|
|| ((strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),usrGene) && ...
|
|
strcmpi(usrSp,'None'))) ),
|
|
|
|
dRF1indx=dRF1indx+1;
|
|
Exp(expN).Dexp(n).MP(mp).genename{1}(ind384) =strrep((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),':',' ');
|
|
drf(dRF1indx,1)= (Exp(expN).Dexp(n).MP(mp).genename{1}(ind384));
|
|
drf(dRF1indx,2)={mp}; drfMP(dRF1indx,mp)= mp;
|
|
drf(dRF1indx,3)={ind384}; drfPindx(dRF1indx,mp)= ind384;
|
|
%drf(dRF1indx,7)= (Exp(expN).Dexp(n).MP(mp).specifics{1}(ind384));
|
|
|
|
end %if isempty(regexpi(char((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384))),'blank'))...
|
|
%*******************************************************************************
|
|
catch
|
|
msgBadGeneName= strcat('check genename at mp=',num2str(mp),' indx=',num2str(ind384))
|
|
end
|
|
|
|
end %end associated with for ind384=1:384
|
|
mp
|
|
end %end associated with for mp=1:length(Exp(expN).Dexp(n).MP)
|
|
%*****************************************************
|
|
%************************************************************************************************
|
|
|
|
vvL=[]; %Initialize to cover case where all spot are Zero NoGrowth See NIGrowthflg==0
|
|
if exist('drf','var')
|
|
%Det. index of change from one MP to the next
|
|
i=2;
|
|
clear chgIndx
|
|
chgIndx(1)=1;
|
|
for j=1:length(drf(:,3))
|
|
if j>1
|
|
if cell2mat(drf(j,2))~= cell2mat(drf((j-1),2)), chgIndx(i)=j; i=i+1; end
|
|
end
|
|
end
|
|
chgIndx(length(chgIndx)+1)= size(drf,1) +1; %length(drf)+1;
|
|
|
|
vvL= zeros(size(drf,1),1 ); %length(drf)+1;
|
|
%************************************
|
|
dMPs= unique(cell2mat(drf(:,2)));
|
|
%*****************************************
|
|
|
|
for mm=1:length(dMPs) % length(chgIndx)
|
|
usrScNdisp=((dMPs(mm)-1)*DMnum)+(dmSel);
|
|
NZusrIndx= drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm)); medianIndxDisp= NZusrIndx;
|
|
vvL(chgIndx(mm):(chgIndx(mm+1)-1))=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZusrIndx,5);
|
|
%For Global Ref Composite 17_1009 %**************************************************************************
|
|
vvK(chgIndx(mm):(chgIndx(mm+1)-1))=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZusrIndx,3);
|
|
vvr(chgIndx(mm):(chgIndx(mm+1)-1))=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZusrIndx,4);
|
|
%*****************************************************************************************************
|
|
end %for mm=1:length(dMPs)
|
|
|
|
%****************CALC. GLOBAL MEAN, STD, AND MEDIAN FOR DISTRIBUTED REFERENCES******************************************************************
|
|
|
|
for d=dmSel:dmSel
|
|
NZusrIndxG=[];
|
|
NZusrIndxG= find(vvL);
|
|
|
|
if isempty(nonzeros(vvL)), nonZeroCntD=0;
|
|
else nonZeroCntD= length(nonzeros(vvL));
|
|
end
|
|
%Calc. of median value for composite doesn't require and odd number of Indx items
|
|
NZusrIndxG= NZusrIndxG(:);
|
|
if ~isempty(NZusrIndxG) && length(NZusrIndxG) > 0 %(.15*size(drf,1)) %To calc. a median, more than 15% of spots must be nonZero
|
|
|
|
UsrLvals{n}= vvL(NZusrIndxG);
|
|
UsrKvals{n}= vvK(NZusrIndxG);
|
|
Usrrvals{n}= vvr(NZusrIndxG);
|
|
end
|
|
end
|
|
|
|
end % if exist('drf','var')
|
|
|
|
%END OF DISPERSE Gene data collection
|
|
%*********************************************************************
|
|
%####################################################################
|
|
end %for n=1:Exp(expN).DexpLength %Loop thru Dayexps
|
|
if ~exist('drf','var'),
|
|
errordlg('Gene-Specifics combination not found. Check spelling of Specifics entry.','Entry Warning');
|
|
break;
|
|
end
|
|
|
|
NoGrowthflg=0;
|
|
if isempty(vvL),
|
|
warndlg('No Growth condition found for Gene-Specifics combination. . ','No Growth warning');
|
|
NoGrowthflg=1;
|
|
end
|
|
|
|
|
|
%Exp(expN).UgeneCnt= Exp(expN).UgeneCnt +1;
|
|
%Exp(expN).UgeneSpLst(Exp(expN).UgeneCnt)= usrGnSp;
|
|
%#######################################################################
|
|
|
|
|
|
%***********PLOT Values Selected Gene-Specifics Composite ******************************************try
|
|
if NoGrowthflg==0
|
|
smpSz= size(NZusrIndxG,1);
|
|
K= median(cell2mat((UsrKvals(DexpN)))); Ks= num2str(K); Kstd= std(cell2mat((UsrKvals(DexpN)))); KstdStr= num2str(Kstd);
|
|
r= median(cell2mat((Usrrvals(DexpN)))); rs= num2str(r); rstd= std(cell2mat((Usrrvals(DexpN)))); rstdStr= num2str(rstd);
|
|
l= median(cell2mat((UsrLvals(DexpN)))); Ls= num2str(l); Lstd= std(cell2mat((UsrLvals(DexpN)))); LstdStr= num2str(Lstd);
|
|
Kl= K - Kstd; %std(UsrKvals(DexpN));
|
|
Ku= K + Kstd; %std(UsrKvals(DexpN));
|
|
rl= r - rstd; %std(Usrrvals(DexpN));
|
|
ru= r + rstd; %std(UsrKvals(DexpN));
|
|
lfast= l - Lstd;
|
|
lslow= l + Lstd;
|
|
elseif NoGrowth==1 %if all data is zero (NoGrowth)
|
|
smpSz= size(NZusrIndxG,1);
|
|
K= 0; Ks= num2str(K); Kstd= 0; KstdStr= num2str(0);
|
|
r= 0; rs= num2str(r); rstd= 0; rstdStr= num2str(0);
|
|
l= 0; Ls= num2str(l); Lstd= 0; LstdStr= num2str(0);
|
|
Kl= K - Kstd;
|
|
Ku= K + Kstd;
|
|
rl= r - rstd;
|
|
ru= r + rstd;
|
|
lfast= l - Lstd;
|
|
lslow= l + Lstd;
|
|
end
|
|
|
|
try Kstr=Ks(1:5); catch, Kstr = Ks(1:length(Ks)); end
|
|
try rstr=rs(1:5); catch, rstr = rs(1:length(rs)); end
|
|
try Lstr=Ls(1:5); catch, Lstr = Ls(1:length(Ls)); end
|
|
|
|
|
|
pertSel=Exp(zoneSel).Dexp(DexpN).pertSel; %floor(get(handles.DMsldr1,'value'));
|
|
plateNum=(LBmp-1)*destPerMP + pertSel;
|
|
MP=Exp(zoneSel).Dexp(DexpN).MP;
|
|
|
|
try
|
|
|
|
t=1:200;
|
|
clear g;
|
|
|
|
try
|
|
g = K ./ (1 + exp(-r.* (t - l )));
|
|
gSlow= Kl ./ (1 + exp(-rl.* (t - lslow )));
|
|
gFast= Ku ./ (1 + exp(-ru.* (t - lfast )));
|
|
if K==0||r==0||l==0, g(1:200)=1;gSlow(1:200)=1;gFast(1:200)=1;end
|
|
|
|
if zoneSel==1, plotAxes=ghandles.Paxes1; OLaxes=ghandles.OLaxes1;
|
|
Dlaxes=ghandles.Dlaxes1;Dkaxes=ghandles.Dkaxes1;Draxes=ghandles.Draxes1;
|
|
Exp(1).traceN=Exp(1).traceN+1;
|
|
traceN=Exp(1).traceN;
|
|
end
|
|
if zoneSel==2, plotAxes=ghandles.Paxes2; OLaxes=ghandles.OLaxes2;Daxes=ghandles.Daxes2;
|
|
Dlaxes=ghandles.Dlaxes2;Dkaxes=ghandles.Dkaxes2;Draxes=ghandles.Draxes2;
|
|
Exp(2).traceN=Exp(2).traceN+1;
|
|
traceN=Exp(2).traceN;
|
|
end
|
|
if zoneSel==3, plotAxes=ghandles.Paxes3; OLaxes=ghandles.OLaxes3;Daxes=ghandles.Daxes3;
|
|
Dlaxes=ghandles.Dlaxes3;Dkaxes=ghandles.Dkaxes3;Draxes=ghandles.Draxes3;
|
|
Exp(3).traceN=Exp(3).traceN+1;
|
|
traceN=Exp(3).traceN;
|
|
end
|
|
plot(plotAxes,t,g);hold (plotAxes,'on');
|
|
plot(plotAxes,t,gSlow,'y');plot(plotAxes,t,gFast,'r');hold (plotAxes,'off');
|
|
|
|
Exp(expN).Trace(traceN).UsrGLB= usrGnSp;
|
|
Exp(expN).Trace(traceN).dmSel= dmSel;
|
|
for n=1:Exp(expN).DexpLength %LOOP Thru DayExps
|
|
Exp(expN).Trace(traceN).Dexp(n).DM(dmSel).UsrLvals= UsrLvals(n);
|
|
Exp(expN).Trace(traceN).Dexp(n).DM(dmSel).UsrKvals= UsrKvals(n);
|
|
Exp(expN).Trace(traceN).Dexp(n).DM(dmSel).Usrrvals= Usrrvals(n);
|
|
end
|
|
%************CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC**************************************
|
|
%Store L R and K valves for manual selected Composite [C] plots
|
|
Exp(expN).ll(traceN)= l; Exp(expN).rr(traceN)= r; Exp(expN).kk(traceN)= K;
|
|
Exp(expN).lslow(traceN)= lslow; Exp(expN).lfast(traceN)= lfast;
|
|
%************************************************************************
|
|
try for i=1:length(Exp(zoneSel).hOL(:)),set(Exp(zoneSel).hOL(i),'color',[0 0 1]); end, catch; end
|
|
Exp(zoneSel).hOL(traceN)=plot(OLaxes,t,g);hold on;
|
|
set(Exp(zoneSel).hOL(traceN),'color',[1 0 0])
|
|
|
|
catch
|
|
catchissue='Ln100 EZlstBoxExt'
|
|
end %trycatch
|
|
|
|
%Get the DM agar description
|
|
if expN==1,DMstr=char(get(handles.DM1,'string'));end
|
|
if expN==2,DMstr=char(get(handles.DM2,'string'));end
|
|
if expN==3,DMstr=char(get(handles.DM3,'string'));end
|
|
|
|
|
|
|
|
gene= usrGnSp; orf= '' %MP(1,LBmp).orf{1,1}(indx);
|
|
geneOrfstr= strcat(gene,'_',orf,'_');
|
|
grfgenestr= strcat(gene,'_',orf,'_');
|
|
|
|
graphStr= strcat(usrGnSp,'_','L=',Lstr,'_','Ls=',LstdStr,'_','r=',rstr,'_','rs=',rstdStr,'_','K=',Kstr,'Ks=',KstdStr);
|
|
spotDescrip=strcat(graphStr,'->',DMstr);
|
|
|
|
xp=char(Exp(zoneSel).Dexp(DexpN).resDir);
|
|
if ispc,
|
|
slashPos=strfind(char(Exp(zoneSel).Dexp(DexpN).resDir),'\');
|
|
else
|
|
slashPos=strfind(char(Exp(zoneSel).Dexp(DexpN).resDir),'/');
|
|
end
|
|
|
|
startPos=slashPos(length(slashPos)-1) +1;
|
|
endPos=slashPos(length(slashPos)) -1;
|
|
expStr= {xp(startPos:endPos)};
|
|
|
|
Exp(zoneSel).hOLname(traceN)= spotDescrip;
|
|
Exp(zoneSel).hOLexpNm(traceN)= expStr;
|
|
Exp(zoneSel).hOLresDir(traceN)= {Exp(zoneSel).Dexp(DexpN).resDir};
|
|
Exp(zoneSel).hOLplateNum(traceN)= plateNum;
|
|
|
|
|
|
|
|
if zoneSel==1,set(ghandles.GeneOrfLoc1,'string',geneOrfstr);end % Displays the value.
|
|
if zoneSel==2,set(ghandles.GeneOrfLoc2,'string',geneOrfstr);end
|
|
if zoneSel==3,set(ghandles.GeneOrfLoc3,'string',geneOrfstr);end
|
|
if zoneSel==1,set(ghandles.graphStrLoc1,'string',spotDescrip);end %graphStr);end % Displays the value.
|
|
if zoneSel==2,set(ghandles.graphStrLoc2,'string',spotDescrip);end %graphStr);end
|
|
if zoneSel==3,set(ghandles.graphStrLoc3,'string',spotDescrip);end %graphStr);end
|
|
catch
|
|
catchissue='Ln141 EZlstBoxExt'
|
|
msg='Error'
|
|
end % trycatch zoneSel<4 datatip selection from Image (not from an OverLay Plot)
|