Squashed initial commit

This commit is contained in:
2024-09-10 13:47:29 -04:00
commit 8ebb6ad265
6221 changed files with 2512206 additions and 0 deletions

View File

@@ -0,0 +1,325 @@
%% CALLED BY EASYconsole.m %%
global mpdmFile
global masterPlateFile
global drugMediaFile
global matDir
% If we already have mpdmFile, don't recreate
if (exist(mpdmFile, 'file') && ~isempty(mpdmFile))
fprintf('The Drug Media/MasterPlate Annotation File: %s exists, skipping DMPexcel2mat.m\n', mpdmFile);
return
end
% Do our best to find and load a relevant MasterPlate file
if ~exist(masterPlateFile, 'file') || isempty(masterPlateFile)
if exist(fullfile(matDir), 'dir')
% Try to find the masterPlateFile automatically (newest created first)
try
files=dir(matDir);
mpFiles={files(strncmp(files.name, 'MasterPlate_', 12)).name};
if isempty(mpFiles)
throw(MException('MATLAB:dir', 'No MasterPlate_ files in the default MasterPlate directory'));
end
% this sorts by date (newest first)
[~, sortedIndices]=sort(datenum({files(strncmp(mpFiles.name, 'MasterPlate_', 12)).date}), 'descend');
sortedFiles=mpFiles(sortedIndices);
masterPlateFile=sortedFiles{1};
disp('Using newest MasterPlate file: ', masterPlateFile, ', skipping directory selection');
catch ME
% This can be silent, not really an error
end
try
% For standalone mode
% GUI input for selecting a MasterPlate Excel file
questdlg('Select MasterPlate Directory (containing DrugMedia_ & MasterPlate_ files)','Directory Selection','OK',...
struct('Default','OK','Interpreter','tex'))
dirToScan=uigetdir();
files=dir(dirToScan);
mpFiles={files(strncmp(files.name, 'MasterPlate_', 12)).name};
if isempty(mpFiles)
throw(MException('MATLAB:dir', 'No MasterPlate_ files in directory'))
end
% this sorts by date (newest first)
[~, sortedIndices]=sort(datenum({files(strncmp(mpFiles.name, 'MasterPlate_', 12)).date}), 'descend');
sortedFiles=mpFiles{sortedIndices};
masterPlateFile=sortedFiles{1};
disp('Using newest MasterPlate file: ', masterPlateFile, ', skipping directory selection');
break
catch ME
h=msgbox(ME.message, 'Error', 'error');
disp('Rerunning directory selection');
% I don't know what else we'll need to do here
end
else
try
% For standalone mode
% GUI input for selecting a MasterPlate Excel file
questdlg('Select MasterPlate Directory (containing DrugMedia_ & MasterPlate_ files)','Directory Selection','OK',...
struct('Default','OK','Interpreter','tex'))
dirToScan=uigetdir();
files=dir(dirToScan);
mpFiles={files(strncmp(files.name, 'MasterPlate_', 12)).name};
if isempty(mpFiles)
throw (MException('MATLAB:dir', 'No MasterPlate_ files in directory'));
end
% this sorts by date (newest first)
[~, sortedIndices]=sort(datenum({files(strncmp(mpFiles.name, 'MasterPlate_', 12)).date}), 'descend');
sortedFiles=mpFiles{sortedIndices};
masterPlateFile=sortedFiles{1};
disp('Using newest MasterPlate file: ', masterPlateFile, ', skipping directory selection');
break
catch ME
h=msgbox(ME.message, 'Error', 'error');
uiwait(h);
disp('Rerunning directory selection');
% I don't know what else we'll need to do here
end
end
else
fprintf('Using MasterPlate file: %s skipping directory selection\n', masterPlateFile);
end
% fid=fopen(masterPlateFile)%('exp23PrintTimes.xls'); % textread puts date and time sequentially into vector
% TODO needs explanation, it isn't clear what it is for
% The input files should be csv, not xlsx
% This whole file could be much better and more portable
if ispc
[num, txt, raw]=xlsread(masterPlateFile); %,'Yor1HitsMPsetFinal');
fields={txt(2,1:15)}; %or 1:17 for later but dont wish to exceed and cause error ? if used
else
clear MPtbl
opts=detectImportOptions(masterPlateFile);
MPtbl=readtable(masterPlateFile,opts);
MPtbl=readtable(masterPlateFile);
fields={opts.VariableNames}; %? if used anywhere although 'saved' to MPDMmat
MPcell=readcell(masterPlateFile);
end
numb=0;
clear MP;
try
if ispc
excLnNum=3;
while (isequal(txt{excLnNum,1},'###'))
numb=numb+1;
MP(numb).head={raw(excLnNum,2:6)};
MP(numb).recNum={raw((excLnNum+1):(excLnNum+384),1)};
MP(numb).orf={raw((excLnNum+1):(excLnNum+384),2)};
MP(numb).strain={raw((excLnNum+1):(excLnNum+384),3)};
MP(numb).genename={raw((excLnNum+1):(excLnNum+384),12)};
MP(numb).drug={raw((excLnNum+1):(excLnNum+384),8)};
MP(numb).media={raw((excLnNum+1):(excLnNum+384),7)};
if size(raw,2)>15
MP(numb).orfRep={raw((excLnNum+1):(excLnNum+384),16)}; % added 12_1005 to specify replicates Orfs in MP
MP(numb).specifics={raw((excLnNum+1):(excLnNum+384),17)}; % added 12_1008 to specify replicates Specific details in MP
else
MP(numb).orfRep=' ';
MP(numb).specifics= ' ';
end
% Future MP field
% if size(raw,2)>17
% MP(numb).specifics2= {raw((excLnNum+1):(excLnNum+384),18)}; % added 12_1008 to specify strain Bkground in MP
% else
% MP(numb).specifics2=' ';
% end
excLnNum=excLnNum+385;
msg=strcat('NumberOfMP=',num2str(numb), ' lastLineNo.=',num2str(excLnNum));
end
else
excLnNum=1;
while (isequal(MPcell{(excLnNum+2),1},'###'))
numb=numb+1;
MP(numb).head={MPtbl(excLnNum,2:6)};
MP(numb).head{1}=table2cell(MP(numb).head{1});
MP(numb).recNum={MPtbl((excLnNum+1):(excLnNum+384),1)};
MP(numb).recNum{1}=table2cell(MP(numb).recNum{1});
MP(numb).orf={MPtbl((excLnNum+1):(excLnNum+384),2)};
MP(numb).orf{1}=table2cell(MP(numb).orf{1});
MP(numb).strain={MPtbl((excLnNum+1):(excLnNum+384),3)};
MP(numb).strain{1}=table2cell(MP(numb).strain{1});
MP(numb).genename={MPtbl((excLnNum+1):(excLnNum+384),12)};
MP(numb).genename{1}= table2cell(MP(numb).genename{1});
MP(numb).media= {MPtbl((excLnNum+1):(excLnNum+384),7)};
MP(numb).media{1}= table2cell(MP(numb).media{1});
if size(MPtbl,2)>15
MP(numb).orfRep= {MPtbl((excLnNum+1):(excLnNum+384),16)}; % added 12_1005 to specify replicates Orfs in MP
MP(numb).orfRep{1}=table2cell(MP(numb).orfRep{1});
MP(numb).specifics={MPtbl((excLnNum+1):(excLnNum+384),17)}; % added 12_1008 to specify replicates Specific details in MP
MP(numb).specifics{1}=table2cell(MP(numb).specifics{1});
else
MP(numb).orfRep= ' ';
MP(numb).specifics= ' ';
end
excLnNum=excLnNum+385;
msg=strcat('NumberOfMP=',num2str(numb), 'lastLineNo.=',num2str(excLnNum));
end
end
catch ME
h=msgbox(ME.message, 'Error', 'error');
uiwait(h);
end
%DMupload
%Drug and Media Plate setup Upload from Excel
excLnNum=1;
numOfDrugs=0;
numOfMedias=0;
% Grabbing the bare filename from the MasterPlate file to see if we can automatically
% find a matching DrugMedia file
[mpFile, mpPath]=fullfile(masterPlateFile);
mpFileParts=strsplit(mpFile, '_');
mpBareFileName=strjoin(mpFileParts(2:end-1), '_');
if ~exist(drugMediaFile, 'file') || isempty(drugMediaFile)
if exist(fullfile(matDir), 'dir')
try
dmFileToTest=fullfile(mpPath, 'DrugMedia_', mpBareFileName, '.xlsx');
if exist(dmFileToTest, 'file') % Try to find a matching drug media file
drugMediaFile=dmFileToTest;
fprintf('Using matching DrugMedia file: %s, skipping directory selection\n', drugMediaFile);
else
% Try to find the DrugMedia file automatically (newest created first)
files=dir(matDir);
dmFiles={files(strncmp(files.name, 'DrugMedia_', 10)).name};
if isempty(dmFiles)
throw (MException('MATLAB:dir', 'No DrugMedia_ files in directory'));
end
% this sorts by date (newest first)
[~, sortedIndices]=sort(datenum({files(strncmp(dmFiles.name, 'DrugMedia_', 10)).date}), 'descend');
sortedFiles=dmFiles{sortedIndices};
drugMediaFile=sortedFiles{1};
fprintf('Using newest DrugMedia file: %s, skipping directory selection\n', drugMediaFile);
end
catch Me
% This can be silent, not really an error
end
else
for i=1:5 % give users 5 chances to get it right
try
% GUI input for selecting a DrugMedia file
% sort by newest matching DrugMedia file and return that if we find one
% For standalone mode
% GUI input for selecting a MasterPlate Excel file
questdlg('Select DrugMedia directory','Directory Selection','OK',...
struct('Default','OK','Interpreter','tex'))
dirToScan=uigetdir();
files=dir(dirToScan);
dmFiles={files(strncmp(files.name, 'DrugMedia_', 10)).name};
if isempty(dmFiles)
throw (MException('MATLAB:dir', 'No DrugMedia_ files in directory'));
end
% this sorts by date (newest first)
[~, sortedIndices]=sort(datenum({files(strncmp(dmFiles.name, 'DrugMedia_', 10)).date}), 'descend');
sortedFiles=dmFiles{sortedIndices};
drugMediaFile=sortedFiles{1};
catch ME
h=msgbox(ME.message, 'Error', 'error');
uiwait(h);
disp('Rerunning directory selection');
% I don't know what else we'll need to do here
end
end
end
else
fprintf('Using drugMediaFile: %s, skipping directory selection\n', drugMediaFile);
end
% Drug and Media Plate setup
% TODO needs better explanation
if ispc
[num, txt, raw]=xlsread(drugMediaFile); %'Yor1HitsMPsetFinal');
fields={txt(2,1:5)};
Linked=num(1,1);
else
opts=detectImportOptions(drugMediaFile);
DMtbl=readtable(drugMediaFile,opts);
fields=opts.VariableOptions;
Linked=DMtbl{1,1};
DMcell=readcell(drugMediaFile);
end
% TODO needs better explanation
numb=0;
if isequal(Linked,1) % Drugs and Media are linked 1 to 1; else they are combinatorial
clear DM;
excLnNum=2;
if ispc
while (~isequal(txt{excLnNum,2},'###'))
numb=numb+1;
DM.drug(numb)={raw(excLnNum,2)};
DM.conc(numb)={raw(excLnNum,3)};
DM.media(numb)={raw(excLnNum,4)};
DM.mod1(numb)={raw(excLnNum,5)};
DM.conc1(numb)={raw(excLnNum,6)};
DM.mod2(numb)={raw(excLnNum,7)};
DM.conc2(numb)={raw(excLnNum,8)};
excLnNum=excLnNum+1;
msg=strcat('NumberOf1:1DrugMediaPlates=',num2str(numb), ' lastLineNo.=',num2str(excLnNum));
end
else
clear DM
excLnNum=1;
while (~isequal(DMcell{excLnNum+1,2},'###'))
numb=numb+1;
DM.drug(numb)={DMtbl(excLnNum,2)};
DM.drug(numb)=table2cell(DM.drug{numb});
DM.conc(numb)={DMtbl(excLnNum,3)};
DM.conc(numb)=table2cell(DM.conc{numb});
DM.media(numb)={DMtbl(excLnNum,4)};
DM.media(numb)=table2cell(DM.media{numb});
DM.mod1(numb)={DMtbl(excLnNum,5)};
DM.mod1(numb)=table2cell(DM.mod1{numb});
DM.conc1(numb)={DMtbl(excLnNum,6)};
DM.conc1(numb)=table2cell(DM.conc1{numb});
DM.mod2(numb)={DMtbl(excLnNum,7)};
DM.mod2(numb)=table2cell(DM.mod2{numb});
DM.conc2(numb)={DMtbl(excLnNum,8)};
DM.conc2(numb)=table2cell(DM.conc2{numb});
excLnNum=excLnNum+1;
msg=strcat('NumberOf1:1DrugMediaPlates=',num2str(numb), ' lastLineNo.=',num2str(excLnNum));
end
end
end
% Legacy contengency: not ever used
if isequal(Linked,0) % 0 indicates Drugs and Media are combinatorial
clear DM;
excLnNum=2;
drgCnt=0;
medCnt=0;
if ispc
while (~isequal(txt{excLnNum,2},'###'))
drgCnt=drgCnt+1;
DM.drug(drgCnt)={raw(excLnNum,2)};
DM.conc(drgCnt)={raw(excLnNum,3)};
excLnNum=excLnNum+1;
end
while (~isequal(txt{excLnNum,4},'###'))
medCnt=medCnt+1;
DM.media(medCnt)={raw(excLnNum,4)};
excLnNum=excLnNum+1;
end
else
excLnNum=1;
while (~isequal(DMcell{excLnNum+1,2},'###'))
drgCnt=drgCnt+1;
DM.drug(drgCnt)={DMtbl(excLnNum,2)};
DM.conc(drgCnt)={DMtbl(excLnNum,3)};
excLnNum=excLnNum+1;
end
while (~isequal(DMcel{excLnNum+1,4},'###'))
medCnt=medCnt+1;
DM.media(medCnt)={DMtbl(excLnNum,4)};
excLnNum=excLnNum+1;
end
end
msg=strcat('NumberOfDrugs=',num2str(drgCnt), ' NumberOfMedias=',num2str(medCnt) );
end
save(mpdmFile, 'fields','MP','DM','Linked');
msgbox(sprintf('Drug-Media-MasterPlate Annotation File %s Generation Complete', mpdmFile))

View File

@@ -0,0 +1,652 @@
global projectScansDir
global projectName
global matFile
global defImParMat
global printResultsDir
global fotosResultsDir
global pointMapsFile
global pointMapsResultsDir
ln=1;
% Version compatability fixes
if verLessThan('matlab','8.3')
fd4=diff(sym('K / (1 + exp(-r* (t - l )))'),4);
sols=solve(fd4);
else % accomodate new matlab changes after 2014a
syms t K r l;
fd4=diff(K / (1 + exp(-r* (t - l ))),t,4);
sols=solve(fd4);
tmpswap=sols(1);
sols(1)=sols(3);
sols(3)=tmpswap;
end
% MPnum=ImParMat(1);
% opt=questdlg('Print Results Only (RES), DB Only (DB), or Both','Results Printout Options','Res','DB','Both','Both');
opt='Res';
if ~exist('defImParMat','var') || isempty(defImParMat) % TODO needs explanation
load(pointMapsFile);
end
destPerMP=ImParMat(2); % TODO this is weird, needs explanation
load(matFile);
load(mpdmFile)
numOfDrgs=length(DM.drug);
numOfMeds=length(DM.media);
destPerMP=numOfDrgs;
% TODO this should be rewritten or is unnecessary, what is this for
% Determine the longest set of intensity(tPts) for the Experiment Data Set
maxNumIntens=0;
for n=1:size(scan,2)
for m=1:size(scan(n).plate,2)
maxNumIntens=max(maxNumIntens,size(scan(n).plate(m).intens,2));
end
end
% if length(projectScansDir) == max(strfind(projectScansDir,'\'))
% localprojectScansDir=projectScansDir(1:end-1);
% else
% localprojectScansDir=projectScansDir;
% end
% DBupload=fullfile(drive,'EZdbFiles','DBupLOADfiles');
resultsFilename=fullfile(printResultsDir, 'results_elr.txt');
DBfilename=fullfile(printResultsDir, 'DbaseELr.txt');
if isequal(opt,'Res')||isequal(opt,'Both'),fid=fopen(resultsFilename,'w');end
if isequal(opt,'DB')||isequal(opt,'Both'),fid2=fopen(DBfilename,'w');end
if isequal(opt,'Res')||isequal(opt,'Both')
fprintf(fid,'%d\t',ln); % Results header
fprintf(fid,'%s\t\n',projectScansDir);
ln=ln+1;
fprintf(fid,'%d\t',ln);
end
mpCnt=0;
totPlCnt=0;
drgCnt=0;
medCnt=0;
try
load(fullfile(fotosResultsDir,'Nbdg')) % Convolute scan array data into plates
catch
load(fullfile(pointMapsResultsDir,'Nbdg')) % Convolute scan array data into plates
end
for s=1:size(scan,2)
% Convolute scan array data into plates DconB for DBcombo
clear Diag
try
Diag(:,:,:,1)=sbdg{s}(1:1:24,16:-1:1,:);
catch
sbdg{s};
end
for p=1:size((scan(s).plate),2)
totPlCnt=totPlCnt+1;
if destPerMP>1 && rem(totPlCnt,destPerMP)==1
mpCnt=mpCnt+1;
end
if destPerMP==1
mpCnt=mpCnt+1;
end
pertCnt=rem(totPlCnt,destPerMP);
if pertCnt==0
pertCnt=destPerMP;
end
pert=strcat('Perturb_',num2str(pertCnt));
s % TODO seems wrong
p % TODO seems wrong
clear outCmat
outCmat=scan(s).plate(p).CFout;
% Print Time Point HEADER for each plate for newly added intensity data
if isequal(opt,'Res')||isequal(opt,'Both')
fprintf(fid, '\n');
ln=ln+1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'Scan\tPlate\tRow\tCol\t');
try
asd=cell2mat(scan(s).plate(1).CFparameters(1));
aucEndPt=strcat('AUC',num2str(asd(9)));
catch
asd=cell2mat(scan(s).plate(1).CFparameters{1,1}(1,384));
aucEndPt=strcat('AUC',num2str(asd(9)));
end
fprintf(fid, 'Num.\tDiagnostics\tDrug\tConc\tMedia\tModifier1\tConc1\tModifier2\tConc2\tORF\tGene');
fprintf(fid, '\t %s',aucEndPt);
fprintf(fid, '\triseTm\tK\tr\tl\tR-squared\tK-lower\tK-upper\tr-lower\tr-upper\tl-lower\tl-upper\tArea\tLastInten\tSplineMaxRateTm\tLastFitTm\t1stFitTm\tMedianBase\tFitBase\tMinTm\tThreshTm');
if size(outCmat,2)==27
fprintf(fid, '\ttc11Cut\ttc12Cut\ttc21Cut\ttc22Cut'); % '\tEarly1\tEarly2\tLate1\tLate2'); 17_0629 MinBaseIntens update for MedianBase label
end
fprintf(fid, '\tTotFitPts\tPostThreshFitPts\t1stBackgrd\tLstBackgrd\t1stMeanTotBackgrd\tLstMeanTotBackgrd');
end
clear outTseries
outTseries=[];
outTseries=scan(s).plate(p).tSeries;
TseriesSize=size(outTseries,1);
clear outIntens
outIntens=[];
RawIntens=[];
RawIntens=scan(s).plate(p).intens;
RawIntensSize=size(RawIntens,2)
clear Ag; %Ag is Growth Area
Ag=scan(s).plate(p).Ag;
AgSize=size(Ag);
dataLength=min(TseriesSize,RawIntensSize);
if isequal(opt,'Res')||isequal(opt,'Both')
for j=1:dataLength
fprintf(fid, '\t%.5f', outTseries(j));
end
end
numBlkCol=(maxNumIntens - dataLength); % size(outTseries,1));
if isequal(opt,'Res')||isequal(opt,'Both')
for nn=1:numBlkCol % extend to col beyond longest rawDataSet
fprintf(fid, '\t');
end
fprintf(fid,'\tOrfRep');
fprintf(fid,'\tSpecifics');
fprintf(fid,'\tStrainBkGrd');
fprintf(fid, '\n');
ln=ln+1;
fprintf(fid,'%d\t',ln);
end
% Data
n=0;
for r=1:16
for c=1:24
n=n+1;
clear selcode;
Kval=outCmat(n,3);
rSq=outCmat(n,6);
lval=outCmat(n,5);
if Kval>160, selcode='K_Hi'; else selcode=' ';end
if Kval<40, selcode=strcat(selcode,' K_Lo');end
if rSq<.97 && rSq>0, selcode=strcat(selcode,' rSqLo');end
if lval>(0.85*(max(outTseries))), selcode=strcat(selcode,' late');end
if isnan(outCmat(n,7))||isnan(outCmat(n,8))||isnan(outCmat(n,9))...
|| isnan(outCmat(n,10))||isnan(outCmat(n,11))...
|| isnan(outCmat(n,12)), selcode=strcat(selcode,' NaN');
end
% RiseTime Calculation
K=(outCmat(n,3));
R=(outCmat(n,4));
L=(outCmat(n,5));
if R>0 && L>0 && K>0
rr=R; ll=L;
tc1=eval(sols(2));
tc2=eval(sols(3));
LL=eval(sols(1));
riseTm=LL-tc1;
else
riseTm=0;
end
if Ag(n)< .30*(scan(s).Awindow),selcode=strcat(selcode,' smArea'); end
if outCmat(n,3)==0,selcode=strcat('0 ',selcode);end
orf=cell2mat(MP(mpCnt).orf{1}(n));
gene=cell2mat(MP(mpCnt).genename{1}(n));
orfRep=cell2mat(MP(mpCnt).orfRep{1}(n));
specifics=cell2mat(MP(mpCnt).specifics{1}(n));
strain=cell2mat(MP(mpCnt).strain{1}(n));
drug=char(DM.drug{pertCnt});
conc=char(DM.conc{pertCnt});
media=char(DM.media{pertCnt});
try
mod1=char(DM.mod1{pertCnt});
conc1=char(DM.conc1{pertCnt});
catch
mod1=' ';
conc1=' ';
end
try
mod2=char(DM.mod2{pertCnt});
conc2=char(DM.conc2{pertCnt});
catch
mod2=' ';
conc2=' ';
end
if ~isempty(outCmat)
if isequal(opt,'Res')||isequal(opt,'Both')
fprintf(fid,'%d\t %d\t %d\t %d\t %d\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t',s,p,r,c,n,selcode,drug,conc,media,mod1,conc1,mod2,conc2,orf,gene);
fprintf(fid, '%.5f\t %.5f\t %.5f\t %.5f\t %.5f\t %.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f',...
outCmat(n,1),riseTm,outCmat(n,3),outCmat(n,4),...
outCmat(n,5),outCmat(n,6),outCmat(n,7),outCmat(n,8),...
outCmat(n,9),outCmat(n,10),outCmat(n,11),outCmat(n,12),...
outCmat(n,13),outCmat(n,14),outCmat(n,15),outCmat(n,16));
fprintf(fid, '\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f',...
outCmat(n,17),outCmat(n,18),outCmat(n,19),...
outCmat(n,20),outCmat(n,21));
% Added for data cut times used in 'r'optomized method 06/14/2018
if (size(outCmat,2) == 27)
fprintf(fid, '\t%.5f\t%.5f\t%.5f\t%.5f',...
outCmat(n,24),outCmat(n,25),outCmat(n,26),outCmat(n,27));
end
fprintf(fid, '\t%d\t%d\t%d\t%d\t%d\t%d',...
outCmat(n,22),outCmat(n,23),Diag(c,r,1,p),Diag(c,r,2,p),Diag(c,r,3,p),Diag(c,r,4,p)); %,Diag(r,c,3,p),Diag(r,c,4,p));
end
% DBfile
if isequal(opt,'DB')||isequal(opt,'Both')
dbRsq=0;dbKup=0; dbKlo=0; dbrup=0; dbrlo=0; dbLlo=0; dbLup=0;
if isnumeric(outCmat(n,6)), dbRsq=outCmat(n,6);end
if isnumeric(outCmat(n,7)), dbKup=outCmat(n,7);end
if isnumeric(outCmat(n,8)), dbKlo=outCmat(n,8);end
if isnumeric(outCmat(n,9)), dbrup=outCmat(n,9);end
if isnumeric(outCmat(n,10)), dbrlo=outCmat(n,10);end
if isnumeric(outCmat(n,11)), dbLlo=outCmat(n,11);end
if isnumeric(outCmat(n,12)), dbLup=outCmat(n,12);end
end
if isequal(opt,'DB')||isequal(opt,'Both')
fprintf(fid2,'%s\t %d\t %d\t %d\t %d\t %d\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t',projectName,s,p,r,c,n,selcode,drug,conc,media,mod1,conc1,mod2,conc2,orf,gene);
fprintf(fid2, '%.5f\t %.5f\t %.5f\t %.5f\t %.5f\t %.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f',...
outCmat(n,1),riseTm,outCmat(n,3),outCmat(n,4),...
outCmat(n,5),dbRsq,dbKup,dbKlo,dbrup,dbrlo,dbLlo,dbLup); %\t%.5f\t%.5f\t%.5f\t%.5f
end
% Add Intensities series to end of curve fit data
outIntens=[];
outIntens=zeros(384,dataLength);
intensBlob='';
tmBlob='';
for j=1:dataLength %size(RawIntens,2) %size(outTseries,1)
if Ag(n)==0,Ag(n)=scan(s).Awindow;end
outIntens(n,j)=RawIntens(n,j)/Ag(n);
if isequal(opt,'Res')||isequal(opt,'Both')
fprintf(fid, '\t%.5f', outIntens(n,j)); % Results print Intens
end
if isequal(opt,'DB')||isequal(opt,'Both')
if j<dataLength
intensBlob=strcat(intensBlob,num2str(outIntens(n,j)),';');
else
intensBlob=strcat(intensBlob,num2str(outIntens(n,j)));
end
if outTseries(j)<.0001,outTseries(j)=0;end
if j<dataLength
tmBlob=strcat(tmBlob,num2str(outTseries(j)),';');
else
tmBlob=strcat(tmBlob,num2str(outTseries(j)));
end
end
end
% Results
if isequal(opt,'Res')||isequal(opt,'Both')
for nn=1:numBlkCol %extend to col beyond longest rawDataSet
fprintf(fid, '\t');
end
% Masterplate sheet
if ~isnan(orfRep)
fprintf(fid, '\t%s', orfRep); %print OrfRep
else
fprintf(fid, '\t%s', ' ');
end
if ~isnan(specifics)
fprintf(fid, '\t%s', specifics);
else
fprintf(fid, '\t%s', ' ');
end
if ~isnan(strain)
fprintf(fid, '\t%s', strain);
else
fprintf(fid, '\t%s', ' ');
end
fprintf(fid, '\n');
ln=ln+1;
fprintf(fid,'%d\t',ln);
end
% DB Raw Intensities and Timepoints
if isequal(opt,'DB')||isequal(opt,'Both')
fprintf(fid2, '\t%s\t%s',intensBlob,tmBlob );
% Masterplate sheet
if ~isnan(orfRep)
fprintf(fid2, '\t%s',orfRep );
else
fprintf(fid2, '\t%s', ' ');
end
if ~isnan(specifics)
fprintf(fid2, '\t%s',specifics );
else
fprintf(fid2, '\t%s', ' ');
end
if ~isnan(strain)
fprintf(fid2, '\t%s',strain );
else
fprintf(fid2, '\t%s', ' ');
end
fprintf(fid2, '\n');
end
end
end
end
end
end
if isequal(opt,'Res')||isequal(opt,'Both')
fclose(fid);
end
% if isequal(opt,'DB')||isequal(opt,'Both')
% fclose(fid2);
% try
% copyfile(DBfilename,DBupload)
% catch ME
% fprintf('DB upload failed with error: %s\n', getReport(ME, 'basic'));
% rep=sprintf('Failed copyfile to %s - %s', DBupload, rep);
% errordlg(rep);
% end
% end
% Print results using the standard method
try
scan(1).plate(1).CFoutStd(1,1) %Test for 2018 r_refined version
ln=1;
resultsFilename=fullfile(printResultsDir, 'results_std.txt');
DBfilename=fullfile(printResultsDir, 'DbaseStd.txt');
if isequal(opt,'Res')||isequal(opt,'Both'),fid=fopen(resultsFilename,'w');end
if isequal(opt,'DB')||isequal(opt,'Both'),fid2=fopen(DBfilename,'w');end %121012 Combo
if isequal(opt,'Res')||isequal(opt,'Both') %print Results
fprintf(fid,'%d\t',ln); %Results header
fprintf(fid,'%s\t\n',projectScansDir);
ln=ln+1;
fprintf(fid,'%d\t',ln);
end
mpCnt=0;
totPlCnt=0;
drgCnt=0;
medCnt=0;
for s=1:size(scan,2)
%Convolute scan array data into plates DconB for DBcombo
clear Diag
try
Diag(:,:,:,1)= sbdg{s}(1:1:24,16:-1:1,:);
catch
sbdg{s};
end
for p=1:size((scan(s).plate),2)
totPlCnt=totPlCnt+1;
if destPerMP>1 &&rem(totPlCnt,destPerMP)==1, mpCnt=mpCnt+1; end
if destPerMP==1,mpCnt=mpCnt+1; end
pertCnt=rem(totPlCnt,destPerMP);
if pertCnt==0, pertCnt= destPerMP;end
pert=strcat('Perturb_',num2str(pertCnt));
s % BCR seems wrong
%Print Time Point HEADER for each plate for newly added intensity data
if isequal(opt,'Res')||isequal(opt,'Both')
fprintf(fid, '\n');
ln=ln+1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'Scan\tPlate\tRow\tCol\t');
try
asd=cell2mat(scan(s).plate(1).CFparameters(1));
aucEndPt=strcat('AUC',num2str(asd(9)));
catch
asd=cell2mat(scan(s).plate(1).CFparameters{1,1}(1,384));
aucEndPt=strcat('AUC',num2str(asd(9)));
end
fprintf(fid, 'Num.\tDiagnostics\tDrug\tConc\tMedia\tModifier1\tConc1\tModifier2\tConc2\tORF\tGene');
fprintf(fid, '\t %s',aucEndPt);
fprintf(fid, '\triseTm\tK\tr\tl\tR-squared\tK-lower\tK-upper\tr-lower\tr-upper\tl-lower\tl-upper\tArea\tLastInten\tSplineMaxRateTm\tLastFitTm\t1stFitTm\tMedianBase\tFitBase\tMinTm\tThreshTm\tTotFitPts\tPostThreshFitPts\t1stBackgrd\tLstBackgrd\t1stMeanTotBackgrd\tLstMeanTotBackgrd'); %17_0629 MinBaseIntens update for MedianBase label
end
clear outTseries
outTseries=[];
outTseries=scan(s).plate(p).tSeries;
TseriesSize= size(outTseries,1);
clear outCmat
outCmat=scan(s).plate(p).CFoutStd;
clear outIntens
outIntens=[];
RawIntens=[];
RawIntens=scan(s).plate(p).intens;
RawIntensSize=size(RawIntens,2);
clear Ag; %Ag is Growth Area
Ag=scan(s).plate(p).Ag;
AgSize= size(Ag);
dataLength= min(TseriesSize,RawIntensSize);
if isequal(opt,'Res')||isequal(opt,'Both')
for j=1:dataLength
fprintf(fid, '\t%.5f', outTseries(j));
end
end
numBlkCol=(maxNumIntens - dataLength); %size(outTseries,1));
if isequal(opt,'Res')||isequal(opt,'Both')
for nn=1:numBlkCol %extend to col beyond longest rawDataSet
fprintf(fid, '\t');
end
fprintf(fid,'\tOrfRep');
fprintf(fid,'\tSpecifics');
fprintf(fid,'\tStrainBkGrd');
fprintf(fid, '\n');
ln=ln+1;
fprintf(fid,'%d\t',ln);
end
% Data
n=0;
for r=1:16
for c=1:24
n=n+1;
clear selcode;
Kval=outCmat(n,3);
rSq=outCmat(n,6);
lval=outCmat(n,5);
if Kval>160, selcode='K_Hi'; else selcode=' ';end
if Kval<40, selcode=strcat(selcode,' K_Lo');end % TODO sprintf if you want a space
if rSq<.97 && rSq>0, selcode=strcat(selcode,' rSqLo');end
if lval>(0.85*(max(outTseries))), selcode=strcat(selcode,' late');end
if isnan(outCmat(n,7))||isnan(outCmat(n,8))||isnan(outCmat(n,9))...
||isnan(outCmat(n,10))||isnan(outCmat(n,11))...
||isnan(outCmat(n,12)), selcode=strcat(selcode,' NaN');
end
% RiseTime Calculation
K=(outCmat(n,3));
R=(outCmat(n,4));
L=(outCmat(n,5));
if R>0 && L>0 && K>0
rr=R; ll=L;
tc1=eval(sols(2));
tc2=eval(sols(3));
LL=eval(sols(1));
riseTm= LL-tc1;
else
riseTm=0;
end
if Ag(n)< .30*(scan(s).Awindow),selcode=strcat(selcode,' smArea'); end % same, need sprintf for space
if outCmat(n,3)==0,selcode=strcat('0 ',selcode); end
orf=cell2mat(MP(mpCnt).orf{1}(n));
gene=cell2mat(MP(mpCnt).genename{1}(n));
orfRep=cell2mat(MP(mpCnt).orfRep{1}(n));
specifics=cell2mat(MP(mpCnt).specifics{1}(n));
strain=cell2mat(MP(mpCnt).strain{1}(n));
drug=char(DM.drug{pertCnt});
conc=char(DM.conc{pertCnt});
media=char(DM.media{pertCnt});
try
mod1=char(DM.mod1{pertCnt});
conc1=char(DM.conc1{pertCnt});
catch
mod1=' ';
conc1=' ';
end
try
mod2=char(DM.mod2{pertCnt});
conc2=char(DM.conc2{pertCnt});
catch
mod2=' ';
conc2=' ';
end
if ~isempty(outCmat)
if isequal(opt,'Res')||isequal(opt,'Both')
fprintf(fid,'%d\t %d\t %d\t %d\t %d\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t',s,p,r,c,n,selcode,drug,conc,media,mod1,conc1,mod2,conc2,orf,gene);
fprintf(fid, '%.5f\t %.5f\t %.5f\t %.5f\t %.5f\t %.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f',...
outCmat(n,1),riseTm,outCmat(n,3),outCmat(n,4),...
outCmat(n,5),outCmat(n,6),outCmat(n,7),outCmat(n,8),...
outCmat(n,9),outCmat(n,10),outCmat(n,11),outCmat(n,12),...
outCmat(n,13),outCmat(n,14),outCmat(n,15),outCmat(n,16));
fprintf(fid, '\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%d\t%d',...
outCmat(n,17),outCmat(n,18),outCmat(n,19),...
outCmat(n,20),outCmat(n,21),outCmat(n,22),outCmat(n,23));
fprintf(fid, '\t%d\t%d\t%d\t%d',...
Diag(c,r,1,p),Diag(c,r,2,p),Diag(c,r,3,p),Diag(c,r,4,p)); %,Diag(r,c,3,p),Diag(r,c,4,p));
end
% DBFile
% RiseTime calculation
if isequal(opt,'DB')||isequal(opt,'Both')
dbRsq= 0;dbKup= 0; dbKlo= 0; dbrup= 0; dbrlo= 0; dbLlo= 0; dbLup= 0;
if isnumeric(outCmat(n,6)), dbRsq= outCmat(n,6);end
if isnumeric(outCmat(n,7)), dbKup= outCmat(n,7);end
if isnumeric(outCmat(n,8)), dbKlo= outCmat(n,8);end
if isnumeric(outCmat(n,9)), dbrup= outCmat(n,9);end
if isnumeric(outCmat(n,10)), dbrlo= outCmat(n,10);end
if isnumeric(outCmat(n,11)), dbLlo= outCmat(n,11);end
if isnumeric(outCmat(n,12)), dbLup= outCmat(n,12);end
end
if isequal(opt,'DB')||isequal(opt,'Both')
fprintf(fid2,'%s\t %d\t %d\t %d\t %d\t %d\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t',projectName,s,p,r,c,n,selcode,drug,conc,media,mod1,conc1,mod2,conc2,orf,gene);
fprintf(fid2, '%.5f\t %.5f\t %.5f\t %.5f\t %.5f\t %.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f',...
outCmat(n,1),riseTm,outCmat(n,3),outCmat(n,4),...
outCmat(n,5),dbRsq,dbKup,dbKlo,...
dbrup,dbrlo,dbLlo,dbLup);
end
% DB Analysis
% Add Intensities series to end of curve fit data
outIntens=[];
outIntens=zeros(384,dataLength);
intensBlob='';
tmBlob='';
for j=1:dataLength %size(RawIntens,2) %size(outTseries,1)
if Ag(n)==0,Ag(n)=scan(s).Awindow;end
outIntens(n,j)= RawIntens(n,j)/Ag(n);
if isequal(opt,'Res')||isequal(opt,'Both')
fprintf(fid, '\t%.5f', outIntens(n,j)); % Results print Intens
end
if isequal(opt,'DB')||isequal(opt,'Both')
if j<dataLength
intensBlob=strcat(intensBlob,num2str(outIntens(n,j)),';');
else
intensBlob=strcat(intensBlob,num2str(outIntens(n,j)));
end
if outTseries(j)<.0001,outTseries(j)=0;end
if j<dataLength
tmBlob=strcat(tmBlob,num2str(outTseries(j)),';');
else
tmBlob=strcat(tmBlob,num2str(outTseries(j)));
end
end
end
% Results fprint
if isequal(opt,'Res')||isequal(opt,'Both')
for nn=1:numBlkCol %extend to col beyond longest rawDataSet
fprintf(fid, '\t');
end
% Masterplate sheet
if ~isnan(orfRep)
fprintf(fid, '\t%s', orfRep); %print OrfRep
else
fprintf(fid, '\t%s', ' ');
end
if ~isnan(specifics)
fprintf(fid, '\t%s', specifics);
else
fprintf(fid, '\t%s', ' ');
end
if ~isnan(strain)
fprintf(fid, '\t%s', strain);
else
fprintf(fid, '\t%s', ' ');
end
fprintf(fid, '\n');
ln=ln+1;
fprintf(fid,'%d\t',ln);
end
% Raw Intensities and Timepoints
if isequal(opt,'DB')||isequal(opt,'Both')
fprintf(fid2, '\t%s\t%s',intensBlob,tmBlob );
% Masterplate sheet
if ~isnan(orfRep)
fprintf(fid2, '\t%s',orfRep );
else
fprintf(fid2, '\t%s', ' ');
end
if ~isnan(specifics)
fprintf(fid2, '\t%s',specifics );
else
fprintf(fid2, '\t%s', ' ');
end
if ~isnan(strain)
fprintf(fid2, '\t%s',strain );
else
fprintf(fid2, '\t%s', ' ');
end
fprintf(fid2, '\n');
end %DB print
end %if ~isempty(outCmat)
end %c
end %r
end %p
end %s
if isequal(opt,'Res')||isequal(opt,'Both')
fclose(fid);
end
% if isequal(opt,'DB')||isequal(opt,'Both')
% fclose(fid2);
% try
% copyfile(DBfilename,DBupload)
% catch ME
% fsprintf('DB upload failed with error: %s\n', getReport(ME, 'basic'));
% rep=sprintf('Failed copyfile to %s - %s\n', DBupload, rep);
% errordlg(rep)
% end
% end
msgbox([sprintf('Printing script complete. Check results sheets in %s for results.', printResultsDir)])
catch ME
fprintf('Printing script failed with error: %s\n', getReport(ME, 'basic'));
end

Binary file not shown.

View File

@@ -0,0 +1,508 @@
% Launch the MATLAB EASY console
% Updated 240727 Bryan C Roessler to improve file operations and portability
function varargout = EASYconsole(varargin)
global easyDir
global projectName
global projectScansDir
global easyResultsDir
global easyProjectName
global fotosResultsDir
global figsResultsDir
global pointMapsResultsDir
global pointMapsFile
global printResultsDir
global matDir
global matFile
global drugMediaFile
global masterPlateFile
global mpdmFile
global userName
global srchRange
global searchRangeFile
% Initialize some variables from matlab
easyPath=which(mfilename);
[easyDir,easyFileName]=fileparts(easyPath);
easyDir=fullfile(easyDir);
[parentDir, ~]=fileparts(easyDir);
parentDir=fullfile(parentDir); % ../easy/apps
userName=getenv('USER');
dt=datetime;
todayStr=char(dt, 'yyyyMMdd'); % This should match the parent workflow script 'hardcode'
outDir=fullfile(parentDir, '..','..', 'out'); % This should match the parent workflow script 'hardcode'
debug=1;
if debug
disp('Running in debug mode');
disp('Initialized variables:');
whos;
end
fprintf('This script name: %s\n', easyFileName);
% Allow EASY_DIR env to override hardcoded default EASY directory
if ~isempty(getenv('EASY_DIR'))
ed=fullfile(getenv('EASY_DIR'));
if ~strcmp(easyDir, ed) % sanity check
disp("WARNING: EASY_DIR does not match this script's hardcoded EASY location");
disp("This is probably OK but this pathway is not well-tested");
easyDir=ed;
end
fprintf('Using EASY script directory: %s from environment variable EASY_DIR\n', easyDir);
else
fprintf('Using EASY script directory: %s from hardcoded default\n', easyDir);
end
whos
% Set projectScansDir intelligently
if ~isempty(getenv('PROJECT_SCANS_DIR'))
projectScansDir=fullfile(getenv('PROJECT_SCANS_DIR'));
if exist(projectScansDir, 'dir')
fprintf('Using scans directory: %s from environment variable PROJECT_SCANS_DIR\n', projectScansDir);
disp('This usually indicates that we are in module mode');
else
disp('WARNING: PROJECT_SCANS_DIR does not exist');
end
elseif ~isempty(getenv('PROJECT_NAME')) % for standalone mode
projectName=getenv('PROJECT_NAME');
projectScansDir=fullfile(parentDir, '..', '..', 'scans', projectName);
fprintf('Using project path: %s from environment variable PROJECT\n', projectScansDir);
disp('This usually indicates that we are in standalone mode');
else
% TODO Lots of hardcoded logic, this TODO is just a reminder to change this block
% when changing EASY and other variables in the parent script
fprintf('WARNING: Running in standalone mode without PROJECT or PROJECT_SCANS_DIR environment variables (not recommended)\n');
fprintf('Beginning parent scans directory search\n');
dirsToScan={
fullfile(parentDir, '..', '..', 'scans')
fullfile(parentDir, '..', '..', 'ExpJobs')
fullfile('mnt','data','scans')
fullfile('mnt','data', 'ExpJobs')
fullfile(parentDir, '..', '..', 'templates', 'scans-demo')
};
for i=1:length(dirsToScan)
d=dirsToScan(i);
d=char(d);
if exist(d, 'dir')
matchedDirs={};
subDirs=dir(d);
pattern='^\d{6}_.*_.*';
for i=1:length(subDirs)
if ~isempty(strmatch(subDirs(i).name, pattern))
matchedDirs{end+1}=subDirs(i).name;
end
end
whos
if ~isempty(matchedDirs)
fprintf('Using scansDir %s\n', char(d));
end
fprintf('Scanning inside %s for a project directory\n', d);
sortedMatchedDirs=sortrows(matchedDirs);
projectScansDir=fullfile(sortedMatchedDirs{end}); % select the latest dir (by date prefix)
fprintf('Using project scans directory: %s\n', char(projectScansDir));
break
end
end
end
% Get the name of the project
[~, projectName]=fileparts(projectScansDir);
% Set the run-specific EASY output directory
if ~isempty(getenv('EASY_RESULTS_DIR'))
easyResultsDir=fullfile(getenv('EASY_RESULTS_DIR'));
fprintf('Using output directory: %s from environment variable EASY_RESULTS_DIR\n', easyResultsDir);
else
easyProjectName=strcat(todayStr, '_',userName, '_', projectName);
easyResultsDir=fullfile(parentDir, '..', '..', 'out', projectName, 'easy', easyProjectName);
if exist(easyResultsDir, 'dir')
fprintf('WARNING: EASY results dir %s already exists\n', easyResultsDir);
disp('Files in this directory may be overwritten')
fprintf('Using output directory: %s\n', easyResultsDir);
end
end
% Get the name of the EASY project
if ~isempty(getenv('EASY_PROJECT_NAME'))
easyProjectName=getenv('EASY_PROJECT_NAME');
else
[~, easyProjectName]=fileparts(easyResultsDir);
end
% User sanity check and warning
if ~isempty(getenv('PROJECT_USER'))
if ~strcmp(getenv('PROJECT_USER'), userName)
disp("WARNING: PROJECT_USER does not match the current namespace");
end
end
if ~isempty(getenv('MASTER_PLATE_FILE'))
masterPlateFile=fullfile(getenv('MASTER_PLATE_FILE'));
fprintf('Using drug media file: %s from environment variable MASTER_PLATE_FILE\n', masterPlateFile);
else % try to find MasterPlate_ file on our own
mp=fullfile(easyResultsDir, strcat('MasterPlate_', projectName,'.xlsx'));
if exist(mp, 'file')
masterPlateFile=mp;
fprintf('Using master plate file: %s from internal logic\n', masterPlateFile);
else
fprintf('WARNING: Could not find MasterPlate file: %s\n', mp);
fprintf('WARNING: Have you created a MasterPlate_ file in %s', easyResultsDir);
end
end
if ~isempty(getenv('DRUG_MEDIA_FILE'))
drugMediaFile=fullfile(getenv('DRUG_MEDIA_FILE'));
fprintf('Using drug media file: %s from environment variable DRUG_MEDIA_FILE\n', drugMediaFile);
else
dm=fullfile(easyResultsDir, strcat('DrugMedia_', projectName,'.xlsx'));
if exist(dm, 'file')
drugMediaFile=dm;
fprintf('Using drug media file: %s from internal logic\n', drugMediaFile);
else
fprintf('WARNING: Have you created a DrugMedia_ file in %s?\n', easyResultsDir);
end
end
matDir=fullfile(easyResultsDir, 'matResults');
matFile=fullfile(matDir,easyProjectName,'.mat');
mpdmFile=fullfile(matDir,'MPDM.mat');
printResultsDir=fullfile(easyResultsDir,'PrintResults');
fotosResultsDir=fullfile(easyResultsDir,'Fotos');
figsResultsDir=fullfile(easyResultsDir,'figs');
pointMapsResultsDir=fullfile(easyResultsDir,'PTmats');
pointMapsFile=fullfile(pointMapsResultsDir,'NImParameters.mat');
oldPointMapsFile=fullfile(pointMapsResultsDir,'ImParameters.mat');
searchRangeFile=fullfile(fotosResultsDir,'CSearchRange.mat');
% Decent time to print some helpful vars
if debug
disp('Vars at end of main loop:')
whos;
end
% This can be removed, I think it should add the previous search range?
% Might be nice feature but can remove if it causes issues
% We are using searchRangeNum to hold old CSrchRange value(s)
if exist(searchRangeFile, 'file')
searchRangeNum=load(searchRangeFile);
end
% Add easyDir to the MATLAB path
% I have not idea if this is necessary or works but theoretically should
% reduce directory scoping issues when calling scripts w/o a path
addpath(easyDir);
% GUI interface design
gui_Singleton=1;
gui_State=struct(...
'gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @EASYconsole_OpeningFcn, ...
'gui_OutputFcn', @EASYconsole_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
if nargout
[varargout{1:nargout}]=gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
end
% GUI
% Easyconcole_OpeningFcn executes just before the EASYconsole GUI is made visible.
% This function has no output args, see OutputFcn.
% hObject--handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles--structure with handles and user data (see GUIDATA)
% varargin--input arguments to EASYconsole (see VARARGIN)
function EASYconsole_OpeningFcn(hObject, ~, handles, varargin)
global fhconsole
global projectScansDir
% Choose default command line output for EASYconsole
handles.output=hObject;
% Update handles structure
guidata(hObject, handles);
%Figure header, Toolbar, etc. Setup
fhconsole=gcf;
set(fhconsole,'Toolbar','none');
fhconsole=gcf;
% Pulled this out of the opening function
% Seems better to wait until we have our vars set though?
if exist('projectScansDir','var') && ~isempty(projectScansDir)
set(fhconsole,'Name', sprintf('EASYconsole - %s', projectScansDir));
else
set(fhconsole,'Name','EASYconsole - No Active Experiment.')
end
end
% EASYconsole output
% Outputs from this function are returned to the command line.
% varargout--cell array for returning output args (see VARARGOUT);
% hObject--handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles--structure with handles and user data (see GUIDATA)
function varargout = EASYconsole_OutputFcn(~, ~, handles)
% Get default command line output from handles structure
varargout{1}=handles.output;
end
% Console button interfaces
% File Button Interface
function FileMenu_Callback(~, ~, ~)
% returnStartDir
end
% Load Experiment Button Interface
function LoadExp_Callback(~, ~, ~)
% returnStartDir
end
% New Experiment Button Interface
function NewExpDat_Callback(~, ~, ~)
global matDir
global matFile
global easyResultsDir
global easyProjectName
global fhconsole
global scan
global userName
global todayStr
% Create a new experiment
try
questdlg('Name the file and navigate to the directory with the image folders.','File Creation','OK', struct('Default','OK','Interpreter','tex'));
[matfile,easyResultsDir]=uiputfile('.mat');
inputFileName=strrep(inputFile,'.mat','');
[~, projectName]=fileparts(easyResultsDir);
% Set paths
matDir=fullfile(easyResultsDir,'matResults');
matFile=fullfile(matDir, projectName, '.mat');
% Added for 'parfor global' to preallocate 'scan' structure
nlist=dir(fullfile(projectScansDir,'*'));
nnn=0;
for n=1:size(nlist,1)
if (~isempty(str2num(nlist(n).name)))
nnn=nnn+1;
PnumLst(nnn)= (str2num(nlist(n).name));
sl(nnn,1)={(nlist(n).name)};
end
end
scanSize=size(sl,1);
scanMax=max(str2double(sl));
clear scan;
scan(scanMax)=struct(); % changed for parfor global 20_0118
save(matFile,'scan')
% create supporting dirs
% this is also in the workflow script but here for standalone mode
dirs={'PrintResults', 'CFfigs', 'Fotos'};
for i=1:length(dirs)
d=dirs{i};
if ~exist(fullfile(easyResultsDir, d), 'dir')
mkdir(fullfile(easyResultsDir, d));
end
end
% templateDirs are stored in the easy template directory
templates={'figs', 'PTmats'};
for i=1:length(templates)
d=dirs{i};
if ~exist(fullfile(easyResultsDir, d), 'dir')
copyfile((fullfile(easyDir,d)), (fullfile(easyResultsDir,d)));
end
end
clear sbdg % reduce possible retention of a previous job sdbg
sbdg= cell(1,scanMax);
save((fullfile(easyResultsDir,'Fotos','Nbdg')),'sbdg');
catch ME
fprintf('ERROR: %s\n', ME.message);
end
% set the title for fhconsole depending on existence
if exist('easyResultsDir','var') && ~isempty(easyResultsDir)
set(fhconsole,'Name',sprintf('EASYconsole - %s', easyResultsDir));
else
set(fhconsole,'Name','EASYconsole - Master Plate directory not selected.');
end
end
% Load a previous experiment
function LoadDatFile_Callback(~, ~, ~)
global matDir
global matFile
global projectName
global easyResultsDir
global easyProjectName
global easyPath
global fhconsole
try
questdlg('Load results .mat from ../out/project/','File Creation','OK', struct('Default','OK','Interpreter','tex'));
[matDir,matFile]=uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','off');
load(matFile);
easyResultsDir=fullfile(matDir,'..');
[~, projectName]=fileparts(easyResultsDir);
projectScansDir=fullfile(easyResultsDir, '..', '..', 'scans', projectName);
% TODO this is pretty hacky and needs something more explicit
if isfolder(fullfile(matDir, '..','..','1')) % If Inovation Vrobot Then
if load(pointMapsFile);
elseif load(fullfile(easyPath,'NImParameters.mat')); % hardcoded default
elseif load(fullfile(pointMapsResultsDir,'ImParameters.mat'));
elseif load(fullfile(easyPath,'ImParameters.mat'));
else
disp("Could not load the ImParameters.mat file");
end
else
disp('WARNING: cannot find project scans');
end
% Create supporting dirs
dirs={'PrintResults', 'figs', 'CFfigs', 'PTmats', 'Fotos'};
for i=1:length(dirs)
d=dirs{i};
if ~exist(fullfile(easyResultsDir, d), 'dir')
mkdir(fullfile(easyResultsDir, d));
end
end
catch
end
clear scan
if exist('easyResultsDir','var') && ~isempty(easyResultsDir)
fhconsole=gcf;
set(fhconsole,'Name',sprintf('EASYconsole - %s', easyResultsDir));
else
set(fhconsole,'Name','EASYconsole - Exp. Analysis NOT selected.');
end
end
% Callbacks
% 'Run' in the dropdown menu
function run_Callback(~, ~, ~)
end
function runPlateMapPintool_Callback(~, ~, ~)
try
NImapPT
catch
EASYconsole
end
end
function NImCFcombo_Callback(~, ~, ~)
try
par4Gbl_Main8c
EASYconsole
catch
EASYconsole
end
end
function runPlateImAnal_Callback(~, ~, ~)
try
NImStartupOnly
catch
EASYconsole
end
end
function PlateCFit_Callback(~, ~, ~)
% global matFile % TODO BCR not sure if needed
try
NCstart
catch
EASYconsole
end
end
function GenPrintouts_Callback(~, ~, ~)
end
function uploadExcelMP2DB_Callback(~, ~, ~)
end
function runDMPexcel_Callback(~, ~, ~)
try
DMPexcel2mat
catch
EASYconsole
end
end
function runResults_DBcombo_Callback(~, ~, ~)
try
DgenResults
catch ME
fprintf('Error in DgenResults: %s\n', ME.message);
EASYconsole
end
end
function Tools_Callback(~, ~, ~)
end
function runOverlayPlots_Callback(~, ~, ~)
try
DoverlayPlots2
EASYconsole
catch
EASYconsole
end
end
function runFotoStrip_Callback(~, ~, ~)
try
F_NImStartup_CentCir
EASYconsole
catch
EASYconsole
end
end
function runDisplayFig_Callback(~, ~, ~)
try
UfigDisplay
catch
EASYconsole
end
end
function runViewParameters_Callback(~, ~, ~)
try
catch
EASYconsole
end
end
function QkviewN_Callback(~, ~, ~)
try
QkviewImages
catch
EASYconsole
end
end
function CFdisplay_Callback(~, ~, ~)
try
NCsingleDisplay
EASYconsole
catch
EASYconsole
end
end

View File

@@ -0,0 +1,458 @@
%% CALLED WHEN ACCESSING 'CurveFit Display' %%
function [scLst, row, col] = NCdisplayGui(projectScansDir)
xPos=0.05;
btnWid=0.10;
btnHt=0.05;
spacing=0.02; % Spacing between the button and the next command's label
% Figure
% The ADD Groups button
btnNumber=1;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
row=1;
hedit=uicontrol(...
'Style', 'edit',...
'String',row,...
'Units','normalized',...
'Position', btnPos,... % [.002 .70 .08 .10],...
'callback',{@editRowNum}); % 'Position', [5 100 60 20])
function editRowNum(source,~)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<0)||(user_entry>17) )
errordlg('Enter a Row between 1 and 16','Bad Input','modal')
return
end
row=user_entry;
end
btnNumber=2;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
col=1;
hedit=uicontrol(...
'Style', 'edit',...
'String',col,...
'Units','normalized',...
'Position', btnPos,... % [.002 .70 .08 .10],...
'callback',{@entryColNum}); % 'Position', [5 100 60 20])
function entryColNum(source,~)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<0)||(user_entry>25))
errordlg('Enter a Column between 1 and 24','Bad Input','modal')
return
end
col=user_entry;
end
% Read in numeric folder names
nlist=dir(fullfile(projectScansDir,'*'));
nnn=0;
for n=1:size(nlist,1)
if (~isempty(str2num(nlist(n).name)))
nnn=nnn+1;
PnumLst(nnn)=(str2num(nlist(n).name));
slst(nnn,1)={nlist(n).name};
slst(nnn,1)={(nlist(n).name)};
end
end
hListbox=uicontrol(...
'Style', 'listbox',...
'String',sort(slst),...
'value',[],...
'max',1000,...
'min',1,...
'Units','normalized',...
'Position', [.40 .40 .10 .60],...
'callback',{@load_listbox}); %'uiresume(gcbf)'); 'Position', [5 100 60 20])
function load_listbox(source,~)
userIndx=(get(source,'value'));
userStr=(get(source,'string'));
%scLstIndx=str2num(char(strrep(userStr(userIndx), 'Scan', '')))
user_entry=userStr(userIndx);
scLst=user_entry;
end
btnNumber=10;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
hedit8=uicontrol(...
'Style', 'pushbutton',...
'String',{'Continue'},...
'Units','normalized',...
'Position', btnPos,...
'callback','uiresume(gcbf)');
% Labels
xLPos=0.175;
yPos=0;
btnWid=0.20;
lblNumber=1;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','Row',...
'Units','normalized',...
'Position', btnPos);
lblNumber=2;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','Column',...
'Units','normalized',...
'Position', btnPos);
% Not needed for Ncode ImRobot
uiwait(gcf);
end %function end $$$$$[/INST]
%}
%{
%-------------------333333-----------
lblNumber=3;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','BG Threshold (%above) Detection',...
'Units','normalized',...
'Position', btnPos);
%-------------------4-----------
lblNumber=4;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','SpotDetThres(1-60%)',...
'Units','normalized',...
'Position', btnPos);
%-------------------55555-----------
lblNumber=5;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','Radius',... %'String','Width',...
'Units','normalized',...
'Position', btnPos);
%-------------------66666-----------
lblNumber=6;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','Dither',...
'Units','normalized',...
'Position', btnPos);
%-------------------77777-----------
lblNumber=7;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','SearchRange',...
'Units','normalized',...
'Position', btnPos);
%-------------------88888-----------
%{
lblNumber=8;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','Blank2',...
'Units','normalized',...
'Position', btnPos);
%----------------------------------------
%}
%}
%{
%-------------------66666-----------
btnNumber=6;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcExtendFactor=ImParMat(7);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcLoIntensThres,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@entryExtendFactor});
function entryExtendFactor(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<1.8)||(user_entry>4.0))
errordlg('You must enter a numeric value between 1.8 and 2.1','Bad Input','modal')
return
end
ExtendFactor=user_entry
ImParMat(7)= ExtendFactor
ExtendFactor
end
%}
%{
%-------------------333333-----------
btnNumber=3;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcBGthreshold=ImParMat(3);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcBGthreshold,...
'Units','normalized',...
'Position', btnPos,... % [.002 .70 .08 .10],...
'callback',{@entryBGthreshold}); % 'Position', [5 100 60 20])
function entryBGthreshold(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<1)||(user_entry>100))
errordlg('Enter a numeric value between 1 and 100 percent to produce a Background Threshold value as a percent above the time series average background for each spot.','Bad Input','modal')
return
end
BGthresInput=user_entry
ImParMat(3)= BGthresInput
BGthresInput
end
%-------------------444444-----------
btnNumber=4; %Enter spot detection threshold (lock-in Image frame)
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcSpotThres=ImParMat(4);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcSpotThres,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@entrySpotThres});
function entrySpotThres(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<1)||(user_entry>60))
errordlg('You must enter a numeric value between 1 and 60','Bad Input','modal')
return
end
spotThres=user_entry
ImParMat(4)= spotThres
spotThres
end
%
%---------555555 Radius Entry After Sept.2014---------------------------------**
btnNumber=5;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcRadius=ImParMat(10);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcRadius,...
'Units','normalized',...
'Position', btnPos,... % [.002 .70 .08 .10],...
'callback',{@entryRadius}); % 'Position', [5 100 60 20])
function entryRadius(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<12)||(user_entry>17))
errordlg('You must enter a numeric value between 12 and 17','Bad Input','modal')
return
end
Radius=user_entry
ImParMat(10)= Radius
Radius
end
%---------555555 Width Entry prior the Sept.2014---------------------------------**
%{
btnNumber=5;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcWidth=ImParMat(5);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcWidth,...
'Units','normalized',...
'Position', btnPos,... % [.002 .70 .08 .10],...
'callback',{@entryWidth}); % 'Position', [5 100 60 20])
function entryWidth(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<5)||(user_entry>41))
errordlg('You must enter a numeric value between 5 and 40','Bad Input','modal')
return
end
Width=user_entry
ImParMat(5)= Width
Width
end
%}
%-------------------66666 Dither unnecessary after Sept.2014-----------
btnNumber=6;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcDither= ImParMat(6);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcDither,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@entryDither});
function entryDither(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<0)||(user_entry>5))
errordlg('You must enter a numeric value between 1 and 4','Bad Input','modal')
return
end
Dither=user_entry
ImParMat(6)= Dither
Dither
end
%-------------------77777----------- Added July 7,2015 to allow Search Range constraint
btnNumber=7;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
try
srchRange=ImParMat(12);
searchRangeNum=ImParMat(12)
catch %Legacy default value was 18 before being made a user input variable (ImParMat(12)). A preferable value now might be 12 or 14.
srchRange=18;
ImParMat(12)=18
searchRangeNum=ImParMat(12)
end
%{
if size(scLst)>1
srchRange=ImParMat(12);
else
try
srchRange=CSearchRange(str2double(scLst))
catch
srchRange=ImParMat(12);
end
end
%}
hSearchRange=uicontrol(...
'Style', 'edit',...
'String',srchRange,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@CsearchRange});
function CsearchRange(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<1)||(user_entry>50)) %originally 18; 19_0729 increased
errordlg('You must enter a numeric value between 1 and 18 12->18 recommended. (ImParMat(12)))','Bad Input','modal')
return
end
searchRangeNum=user_entry
end
%-------------------77777-----------
%{
btnNumber=7;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcExtend=ImParMat(7);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcExtend,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@entryExtend});
function entryExtend(source,eventdata)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<-0.10)||(user_entry>0.4))
errordlg('You must enter a numeric value between 0 and 0.4. 0.10 recommended','Bad Input','modal')
return
end
extend=user_entry
ImParMat(7)= extend
extend
end
%-------------------888888-----------
btnNumber=8;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
%ImParMat(8)=1;
srcpointExtend=ImParMat(8);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcpointExtend,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@entrypointExtend});
function entrypointExtend(source,eventdata)
user_entry=str2double(get(source,'string'));
user_entry= floor(user_entry);
if (isnan(user_entry)||(user_entry<-3)||(user_entry>5))
errordlg('You must enter an integer value between 0 and 5. 1 recommended','Bad Input','modal')
return
end
pointExtend=user_entry
ImParMat(8)= pointExtend
pointExtend
end
%}
%-------------------999999-----------
btnNumber=9;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
hedit=uicontrol(...
'Style', 'popupmenu',...
'String',{'GrowthArea','FixedArea'},...
'Units','normalized',...
'Position', btnPos,...
'callback',{@grwArea});
function grwArea(source,eventdata)
str=get(source, 'String');
val=get(source,'Value');
% Set current data to the selected data set.
switch str{val};
case 'GrowthArea' ;% User selects Peaks.
SWgrowthArea=1
case 'FixedArea' % User selects Membrane.
SWgrowthArea=0
end
end
%}

View File

@@ -0,0 +1,232 @@
%% CALLED BY par4GblFnc8c.m %%
function [par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC,outCstd]= ...
NCfitImCFparforFailGbl2(parMat,times, values, timeOffsets, fileSuffix, AUCfinalTime, ~, spotAreas, printResultsDir, ~,~, sols, ~) %,scan)
% Preallocation for parfor loop
st(1,1:size(times,2))=1111;
resMat(1,1:27)=0;
resMatStd=resMat;
outC=zeros(384,27);
outCstd=zeros(384,27);
for m=1:384
pa{m}=st;
par4scanCFparameters{m}=parMat;
par4scanCFdate{m}=datestr((now),31);
end
par4scanselTimesStd=pa;
par4scanselIntensStd=pa;
par4scanTimesELr=pa;
par4scanIntensELr=pa;
par4resMat=zeros(384,27);
par4resMatStd=zeros(384,27);
% Spot (cultures) loop
for ii=1:384 % startSpot:numCultures
ii; % db print out the culture number
timepts=[];
currValues=[];
currSpotAreas=[];
currSpotArea=[];
dataMatrix=[];
selTimesStd=[]; % 191024 parfor
selIntensStd=[]; % 191024 parfor
FiltTimesELr=[]; % 191024 parfor
NormIntensELr=[]; % 191024 parfor
% add offset...1 offset PER PLATE
timepts=times + timeOffsets; % (floor((ii-1)/arrayFormat) + 1);
currValues=values(ii,:); % change values(spotNum,:);
% get spot areas for this culture
currSpotArea=spotAreas(:,ii);
% just use the area at the last time point
% currSpotArea=currSpotAreas(1);
% Preallocate to accomodate parfor loop
resMatStd=zeros(1,27);
resMat=zeros(1,27);
currNormIntens=currValues/currSpotArea;
tmpx=find(currNormIntens>5); %15jh % 2.3);
validSpot=true;
if(isempty(tmpx) || length(tmpx)<3)
validSpot=false;
normIntens=currNormIntens;
filterTimes=timepts; %filterTimes; %currTimes;
selTimesStd=timepts;
selIntensStd=currNormIntens;
FiltTimesELr=timepts;
NormIntensELr=currNormIntens;
else
% NCfilImCF.m
% Preallocate incase something bails in NCscurImCFparfor
resMatStd=zeros(1,27);
resMat=zeros(1,27);
hold off;
dataMatrix=[];
K=0;r=0;l=0;Klow=0;Kup=0;rlow=0;rup=0;llow=0;lup=0;AUC=0;MSR=0;rsquare=0;
bl=0;
Tpt1=0;numFitTpts=0;thresGT2=0;minTime=0;fitbl=0; % diagnostic outputs only
timepts=timepts; % timepts=currTimes; parfor
normIntens=currNormIntens;
dataMatrix=[]; % arfor move clear from NCfitImCF...m
loIntensThres=parMat(4);
stdLoIntLim=parMat(5);
% Basic filtering
% [loInten Thres,stdbased Trim before Scurve start, and dropout detection]
if(max(normIntens) > 2.29)
threshold=loIntensThres; %1.9; %Increase this value to reduce low data point (flag=2)
else
threshold=0;
end
dropThreshold=-0.0001*max(normIntens);
% Initialize dataMatrix
dataMatrix(1,:)=timepts;
dataMatrix(2,:)=normIntens;
dataMatrix(3,:)=ones;
dataMatrix(4,:)=normIntens;
% Determine a mean Intensity Index point and assoc'd TimePt
a=min(normIntens(normIntens>=0)); %(find(normIntens>=0)));
b=max(normIntens(normIntens>=0)); %(find(normIntens>=0)));
c=0.5*(b-a);
d=b-c;
meanIntIndPt=find(normIntens>d,1);
meanInt=normIntens(meanIntIndPt);
meanTime=times(meanIntIndPt);
% NCLoIntstdTrim
% NCLoSstdTrim.m called by NCfilImCF and NCfil.m
flg1=0;
loScurvLim=stdLoIntLim;
loStimeN=1;
last2n=1;
stdDev=[];
nrmIntens0=normIntens;
for n=1:meanIntIndPt
if nrmIntens0(n)<=0
nrmIntens0(n)=0;
end
if(nrmIntens0(n)<threshold)
if (loStimeN-2)>0
dataMatrix(3,1:(n-2))=2; % add to lowIntensity cull flags, the pre S cull data
else
dataMatrix(3,1:n)=2;
end
dataMatrix(3,1:(n-2))=2;
last2n=n;
end
if n<(length(nrmIntens0)-3)
x=nrmIntens0(n:(n+3));
stdDev(n)=std(x);
if (stdDev(n)<loScurvLim && flg1~=1)
loStime=timepts(n);
loStimeN=n;
end
if stdDev(n)>6
flg1=1;
end
end
end
% TODO repetitive code
if (loStimeN-2)>0
dataMatrix(3,1:(loStimeN-2))=2; % add to lowIntensity cull flags, the pre S cull data
else
dataMatrix(3,1:(loStimeN-2))=2
end
qcutoff=2;
qind=find(normIntens>2); %,:,'first');
if ~isempty(qind(3))
qcutoff=qind(3);
end
[minInt,I]=min(normIntens(2:qcutoff));
bl=minInt;
minTime=dataMatrix(1,I);
if (length(qind)>5)&&I>1
dataMatrix(3,1:(I-1))=5;
end
tGT2Flg=0;
for n=1:length(normIntens)
dataMatrix(4,n)=normIntens(n)-bl;
if n>I && dataMatrix(4,n)>=2 && tGT2Flg==0
thresGT2=n;thresGT2Tm=dataMatrix(1,n);tGT2Flg=1;
end
end
resMat(18)=bl;
resMatStd(18)=bl;
resMatStd(20)=minTime;
resMat(20)=minTime;
% DropOut cull section (single drop points)
DropOutStartPt=length(normIntens);
for n=1:length(normIntens)
if(n>1)
if(((normIntens(n)- normIntens(n-1))< dropThreshold)) && ...
(n > max(meanIntIndPt,thresGT2) )
dataMatrix(3,n)=6;
end
end
end
% TODO should/could this be removed as recreated in%NCscurImCF_3parfor.m
% Post Stdtest cull for low intensities inclusion of additional low value points
% selTimes=[--,--] %don't know size before as it is a filtered output
tmpIndx=0;
for n=1:length(normIntens)
if (dataMatrix(3,n)==1)
tmpIndx=tmpIndx+1;
selTimes(tmpIndx)=dataMatrix(1,n); % selTimes(nn)=dataMatrix(1,n);
selIntens(tmpIndx)=dataMatrix(4,n); %s elIntens(nn)=dataMatrix(4,n);
end
end
selTimes=selTimes';
selIntens=selIntens';
filtNormIntens=normIntens;
dataMatrix0=dataMatrix;
filterTimes=timepts; % parfor
%NCscurImCF
%NCscurImCF_1
%NCscurImCF_2
%NCscurImCF_3
%NCscurImCF_3parfor
%NCscurImCF_3parfor(dataMatrix, AUCfinalTime)
%dataMatrix %debugging parfor gbl ok 85.7145; 126.4579,6, 124.5264 37tPt
%adsfj %debugging parfor gbl
[resMatStd, resMat, selTimesStd, selIntensStd, FiltTimesELr, NormIntensELr] =...
NCscurImCF_3parfor(dataMatrix0, AUCfinalTime, currSpotArea, sols, bl, minTime);
end
par4scanselTimesStd{ii}=selTimesStd %timepts'; %filterTimes';
par4scanselIntensStd{ii}=selIntensStd; %normIntens';
par4scanTimesELr{ii}=FiltTimesELr; % 19_1021 preserve for CurveDisplay and EZview
par4scanIntensELr{ii}=NormIntensELr; % 19_1021 preserve for CurveDisplay and EZview
outC(ii,:)=resMat; %{ii, par4resMat};
outCstd(ii,:)=resMatStd; %{ii, par4resMatStd};
end
% To accomodate parfor
% Copy par4scan thru global p4 functions inside of parfor loop --then outside to par4Gbl_Main8b.m
fileExt='.txt';
filePrefix='FitResultsComplete_';
fileNamePlate=[filePrefix fileSuffix fileExt];
fileName=fullfile(printResultsDir, fileNamePlate); %[printResultsDir fileNamePlate];
fid=fopen(fileName,'w');
fprintf(fid, 'Fit Results Complete\n');
%fprintf(fid, 'Num.\tAUC\tMSR\tK\tr\tl\tR-squared\tK-lower\tK-upper\tr-lower\tr-upper\tl-upper\tl-lower\tArea\tLastInten\tSpineMaxRateTimePt\tLastFitTimePt\n');
fclose(fid);
end

View File

@@ -0,0 +1,353 @@
%% CALLED BY NCfitImCFparforFailGbl2.m %%
function [resMatStd, resMat, selTimesStd, selIntensStd, FiltTimesELr, NormIntensELr] =...
NCscurImCF_3parfor(dataMatrix, AUCfinalTime, currSpotArea, sols, bl, minTime)
% Preallocate
resMatStd=zeros(1,27);
resMat=zeros(1,27);
% Set internal variables sent to matlab fit function
me=200;
meL=750;
mi=25;
miL=250;
rmsStg1=0;
rmsStg1I(1)=0;
slps=1;
filterTimes=[];
normIntens=[];
nn=1;
numFitTpts=0;
% Build filterTimes and normIntens from spot dataMatrix selection codes produced in filter section
for n=1:size(dataMatrix,2)
if (((dataMatrix(3,n)==1))||(dataMatrix(3,n)==3)||(dataMatrix(3,n)==2)...
||(dataMatrix(3,n)==0))
filterTimes(nn)=dataMatrix(1,n);
normIntens(nn)=dataMatrix(4,n);
nn=nn+1;
end
end
filterTimes=filterTimes';
selTimesStd=filterTimes;
normIntens=normIntens';
selIntensStd=normIntens;
lastTptUsed=1;
lastIntensUsed=1;
thresGT2TmStd=0;
try
lastTptUsed=max(filterTimes);
lastIntensUsed=normIntens(length(normIntens));
lastIntensUsedStd=lastIntensUsed;
lastTptUsedStd=lastTptUsed;
Tpt1Std=filterTimes(1);
numFitTptsStd=nnz((normIntens(:)>=0)==1);
thresGT2=find(((normIntens(:)>2)==1), 1);
if isempty(thresGT2)
thresGT2TmStd=0;
else
thresGT2TmStd=filterTimes(thresGT2);
end
numTptsGT2Std=nnz((normIntens(:)>=2)==1); % nnz(filterTimes(find(filterTimes>=thresGT2Tm)));
K_Guess=max(normIntens);
numTimePts=length(filterTimes);
opts=fitoptions('Method','Nonlinear','Robust','On','DiffMinChange',1.0E-11,'DiffMaxChange',0.001,...
'MaxFunEvals',me, 'MaxIter', mi, 'TolFun', 1.0E-12, 'TolX', 1.0E-10, 'Lower', [K_Guess*0.5,0,0],...
'StartPoint', [K_Guess,filterTimes(floor(numTimePts/2)),0.30], 'Upper', [K_Guess*2.0,max(filterTimes),1.0],'Display','off');
ftype=fittype('K / (1 + exp(-r* (t - l )))','independent','t','dependent',['K','r','l'],'options',opts);
% Carry out the curve fitting process
[fitObject, errObj]=fit(filterTimes,normIntens,ftype);
coeffsArray=coeffvalues(fitObject);
rmsStg1=errObj.rsquare;
rmsStg1I(slps)=errObj.rsquare;
sDat(slps,1)=errObj.rsquare;
K=coeffsArray(1); sDat(slps,2)=coeffsArray(1); % Carrying Capacity
l=coeffsArray(2); sDat(slps,3)=coeffsArray(2); % lag time
r=coeffsArray(3); sDat(slps,4)=coeffsArray(3); % rateS
% Integrate (from first to last time point)
numVals=size(filterTimes);
numVals=numVals(1);
t_begin=0;
t_end=AUCfinalTime;
AUC=(K/r*log(1+exp(-r*(t_end-l)))-K/r*log(exp(-r*(t_end-l)))) - (K/r*log(1+exp(-r*(t_begin-l)))-K/r*log(exp(-r*(t_begin-l))));
MSR=r;
rsquare=errObj.rsquare;
confObj=confint(fitObject,0.9); % get the 90% confidence
NANcond=0; stdNANcond=0; % stdNANcond added to relay not to attempt ELr as there is no curve to find critical point
confObj_filtered=confObj;
Klow=confObj(1,1); sDat(slps,5)=confObj(1,1);
Kup=confObj(2,1); sDat(slps,6)=confObj(2,1);
llow=confObj(1,2); sDat(slps,7)=confObj(1,2);
lup=confObj(2,2); sDat(slps,8)=confObj(2,2);
rlow=confObj(1,3); sDat(slps,9)=confObj(1,3);
rup=confObj(2,3); sDat(slps,10)=confObj(2,3);
if(isnan(Klow)||isnan(Kup)||isnan(llow)||isnan(lup)||isnan(rlow)||isnan(rup))
NANcond=1; stdNANcond=1; % stdNANcond added to relay not to attempt ELr as there is no curve to find critical point
end
catch
% if no data is given, return zeros
AUC=0;MSR=0;K=0;r=0;l=0;rsquare=0;Klow=0;Kup=0;
rlow=0;rup=0;lup=0;llow=0;
NANcond=1; stdNANcond=1; %stdNANcond added to relay not to attempt ELr as there is no curve to find critical point
end
if (exist('K','var')&& exist('r','var') && exist('l','var'))
t=(0:1:200);
Growth=K ./ (1 + exp(-r.* (t - l )));
fitblStd=min(Growth);
end
cutTm(1:4)=1000; %-1 means cuts not used or NA
% Preserve for ResultsStd
resMatStd(1)=AUC;
resMatStd(2)=MSR;
resMatStd(3)=K;
resMatStd(4)=r;
resMatStd(5)=l;
resMatStd(6)=rsquare;
resMatStd(7)=Klow;
resMatStd(8)=Kup;
resMatStd(9)=rlow;
resMatStd(10)=rup;
resMatStd(11)=llow;
resMatStd(12)=lup;
resMatStd(13)=currSpotArea;
resMatStd(14)=lastIntensUsedStd; % filtNormIntens(length(filtNormIntens));
maxRateTime=0; %[]; %Std shows []; ELr shows 0; %parfor
resMatStd(15)=0; %maxRateTimestdMeth;
resMatStd(16)=lastTptUsedStd;
if isempty(Tpt1Std)
Tpt1Std=777;
end
resMatStd(17)=Tpt1Std;
resMatStd(18)=bl; % perform in the filter section of NCfitImCFparfor
resMatStd(19)=fitblStd; % taken from NCfil... and not affected by NCscur...changes
resMatStd(20)=minTime; % not affected by changes made in NCscur...for refined 'r'
resMatStd(21)=thresGT2TmStd;
resMatStd(22)=numFitTptsStd;
resMatStd(23)=numTptsGT2Std;
resMatStd(24)=999; % yhe Standard method has no cuts .:.no cutTm
resMatStd(25)=999;
resMatStd(26)=999;
resMatStd(27)=999;
% ELr New Experimental data through L+deltaS Logistic fit for 'Improved r' Fitting
FiltTimesELr=[]; %{ii}=filterTimes;
NormIntensELr=[]; %{ii}=normIntens;
normIntens=selIntensStd;
filterTimes=selTimesStd;
stdIntens=selIntensStd;
tmpIntens=selIntensStd;
stdTimes=selTimesStd;
if stdNANcond==0
% Determine critical points and offsets for selecting Core Data based on
% Standard curve fit run. Put diff into NImStartupImCF02.m calling source
% to reduce repeated execution since it doesn't change.
% fd4=diff(sym('K / (1 + exp(-r* (t - l )))'),4);
% sols=solve(fd4);
tc1=eval(sols(2));
tc2=eval(sols(3));
LL=l; %eval(sols(1)); %exactly the same as 'l' from std. fit method-Save time
rsTmStd=LL-tc1; %%riseTime (first critical point to L)
deltS=rsTmStd/2;
tc1Early=tc1-deltS; %AKA- tc1AdjTm %2*tc1 -LL
L_Late=LL+deltS;
tc1EdatPt=find(filterTimes>(tc1Early),1,'first');
cutTm(1)=filterTimes(2);
cutDatNum(1)=2;
cutTm(2)=tc1Early;
cutDatNum(2)=tc1EdatPt-1;
L_LDatPt=find(filterTimes< L_Late,1,'last');
tc2LdatPt=find(filterTimes< tc2+rsTmStd,1,'last');
cutTm(3)=L_Late;
cutDatNum(3)=L_LDatPt;
% Select Core Data Set (Remove Early data before critical point)
ints=[];
ints(1:L_LDatPt-tc1EdatPt+2)=(tmpIntens(L_LDatPt));
ints(2:end)=tmpIntens(tc1EdatPt:L_LDatPt);
ints(1)=tmpIntens(1);
tms=[];
tms(1:L_LDatPt-tc1EdatPt+2)=(stdTimes(L_LDatPt));
tms(2:end)=stdTimes(tc1EdatPt:L_LDatPt);
tms(1)=stdTimes(1);
% Include/Keep late data that define K
if length(tmpIntens(tc2LdatPt:end))> 4
KlastInts=tmpIntens(tc2LdatPt:end);
KlastTms=stdTimes(tc2LdatPt:end);
lengthKlast=length(tmpIntens(tc2LdatPt:end));
ints(end:(end+ lengthKlast-1))=KlastInts;
tms(end:(end+ lengthKlast-1 ))=KlastTms;
cutTm(4)=tc2+rsTmStd;
cutDatNum(4)=tc2LdatPt-1;
else
lengthKlast=length(tmpIntens(tc2LdatPt-1:end));
if lengthKlast>1
KlastInts=tmpIntens(end-(lengthKlast-1):end);
KlastTms=stdTimes(end-(lengthKlast-1):end);
ints(end:(end+ lengthKlast-1 ))=KlastInts;
tms(end:(end+ lengthKlast-1 ))=KlastTms;
end
cutTm(4)=stdTimes(tc2LdatPt-1);
cutDatNum(4)=tc2LdatPt-2; %length(stdTimes(end-(lengthKlast-1):end));
end
Ints=[];
Tms=[];
Ints=ints';
Tms=tms';
try
filterTimes=Tms; filterTimes4=Tms;
normIntens=Ints; normIntens4=Ints;
% Classic symmetric logistic curve fit setup restated as COMMENTS for reference convenience
% opts=fitoptions is the same as for Std and so is redundant
% opts=fitoptions('Method','Nonlinear','Robust','On',...
% 'DiffMinChange',1.0E-11,'DiffMaxChange',0.001,...
% 'MaxFunEvals',me, 'MaxIter', mi, 'TolFun', 1.0E-12, 'TolX', 1.0E-10, 'Lower', [K_Guess*0.5,0,0], 'StartPoint', [K_Guess,filterTimes(floor(numTimePts/2)),0.30], 'Upper', [K_Guess*2.0,max(filterTimes),1.0]);
ftype=fittype('K / (1 + exp(-r* (t - l )))','independent','t','dependent',['K','l','r'],'options',opts);
fitObject=[]; errObj=[];
% carry out the curve fitting process
[fitObject, errObj]=fit(Tms,Ints,ftype);
coeffsArray=coeffvalues(fitObject);
r3=coeffsArray(3); % sDat(slps,4)=coeffsArray(3); % rateS
if (exist('K','var')&& exist('r','var') && exist('l','var'))
t=(0:1:200);
GrowthELr=K ./ (1 + exp(-r.* (t - l )));
fitblELr=min(GrowthELr); %jh diag
end
catch
% if no data is given, return zeros
AUC=0;MSR=0;K=0;r=0;l=0;rsquare=0;Klow=0;Kup=0;
rlow=0;rup=0;lup=0;llow=0; %normIntens=[];
end
end
% Update values if r is better(higher) with removal of early data
try
if r3>r && stdNANcond==0
r=r3; sDat(slps,4)=sDat(slps,4); % rateS
K=coeffsArray(1); sDat(slps,2)=coeffsArray(1); % Carrying Capacity
l=coeffsArray(2); sDat(slps,3)=coeffsArray(2); % lag time
coeffsArray=coeffvalues(fitObject);
rmsStg1=errObj.rsquare;
rmsStg1I(slps)=errObj.rsquare;
sDat(slps,1)=errObj.rsquare;
% JH diagnostics
numFitTpts=nnz((normIntens(:)>=0)==1);
thresGT2=find(((normIntens(:)>2)==1), 1);
thresGT2Tm=filterTimes(thresGT2);
numTptsGT2=nnz((normIntens(:)>=2)==1);
numTimePts=length(filterTimes);
AUC=(K/r*log(1+exp(-r*(t_end-l)))-K/r*log(exp(-r*(t_end-l)))) - (K/r*log(1+exp(-r*(t_begin-l)))-K/r*log(exp(-r*(t_begin-l))));
MSR=r3;
rsquare=errObj.rsquare;
confObj=confint(fitObject,0.9); % get the 90% confidence
NANcond=0;
confObj_filtered=confObj;
Klow=confObj(1,1); sDat(slps,5)=confObj(1,1);
Kup=confObj(2,1); sDat(slps,6)=confObj(2,1);
llow=confObj(1,2); sDat(slps,7)=confObj(1,2);
lup=confObj(2,2); sDat(slps,8)=confObj(2,2);
rlow=confObj(1,3); sDat(slps,9)=confObj(1,3);
rup=confObj(2,3); sDat(slps,10)=confObj(2,3);
if(isnan(Klow)||isnan(Kup)||isnan(llow)||isnan(lup)||isnan(rlow)||isnan(rup))
NANcond=1;
end
filterTimes=Tms;
normIntens=Ints;
resMat(17)=.00002;
resMat(18)=bl;
resMat(19)=fitblELr;
resMat(20)=minTime;
else % r is better than r3 so use the Std data in the ELr result sheet
filterTimes=selTimesStd;
normIntens=selIntensStd;
lastTptUsed=lastTptUsedStd; % Reinstall Std values for jh diags
Tpt1=filterTimes(1);
try
if isempty(Tpt1)
Tpt1=0.00002; %777;
end
catch
Tpt1=0.00002; %777;
end
resMat(17)=Tpt1;
numFitTpts=numFitTptsStd;
numTptsGT2=numTptsGT2Std;
thresGT2Tm=thresGT2TmStd;
cutTm(1:4)=1000; % 1 means cuts not used or NA
resMat(18)=bl; % only applicable to Std curve Fit; ELr superceeds and makes meaningless
resMat(19)=fitblStd; % only applicable to Std curve Fit; ELr superceeds and makes meaningless
resMat(20)=minTime; % only applicable to Std curve Fit; ELr superceeds and makes meaningless
end % if r3>r1
catch
% if no data is given, return zeros
AUC=0;MSR=0;K=0;r=0;l=0;rsquare=0;Klow=0;Kup=0;
rlow=0;rup=0;lup=0;llow=0; % normIntens=[];
end
resMat(1)=AUC;
resMat(2)=MSR;
resMat(3)=K;
resMat(4)=r;
resMat(5)=l;
resMat(6)=rsquare;
resMat(7)=Klow;
resMat(8)=Kup;
resMat(9)=rlow;
resMat(10)=rup;
resMat(11)=llow;
resMat(12)=lup;
resMat(13)=currSpotArea;
resMat(14)=lastIntensUsed; %filtNormIntens(length(filtNormIntens));
% spline fit unneccessary and removed therfor no max spline rate time->set 0
maxRateTime=0; % ELr will show 0; Std will show []
resMat(15)=maxRateTime;
resMat(16)=lastTptUsed; % filterTimes(length(filterTimes));
try % if Std fit used no cuts .:. no cutTm
resMat(24)=cutTm(1);
resMat(25)=cutTm(2);
resMat(26)=cutTm(3);
resMat(27)=cutTm(4);
catch
resMat(24)=999; % if Std fit used no cuts .:. no cutTm
resMat(25)=999;
resMat(26)=999;
resMat(27)=999;
end
FiltTimesELr=filterTimes;
NormIntensELr=normIntens;
lastTptUsed=max(filterTimes);
lastIntensUsed=normIntens(length(normIntens));
if (exist('K','var')&& exist('r','var') && exist('l','var'))
t=(0:1:200);
Growth=K ./ (1 + exp(-r.* (t - l )));
fitbl=min(Growth); % jh diag
end
try % jh diag
if isempty(thresGT2Tm)
thresGT2Tm=0
end
catch
thresGT2Tm=0;
numTptsGT2=0;
end
resMat(21)=thresGT2Tm;
resMat(22)=numFitTpts;
resMat(23)=numTptsGT2;
end

View File

@@ -0,0 +1,89 @@
%% CALLED WHEN ACCESSING 'CurveFit Display' %%
global scLst
global scan
hf=figure;
% Parameter Entry
[scLst, row, col]=NCdisplayGui(projectScansDir);
close(hf)
selSpot=(row-1)*24 + col;
for iPlate=1:length(scLst)
scanPltNum=str2double(scLst(iPlate));
K=scan(scanPltNum).plate(1).CFout((selSpot),3);
r=scan(scanPltNum).plate(1).CFout((selSpot),4);
l=scan(scanPltNum).plate(1).CFout((selSpot),5);
suffix=strcat('Scan-Plate', scLst(iPlate)); % char(QspLst(n));
% fileSpotSuffix=strcat('-Spot#',num2str(selSpot),'-Row=',selSpotRC(1),'-Col=',selSpotRC(2),'-FitData','-L=',num2str(l),'-r=',num2str(r),'-K=',num2str(K));
fileSpotSuffix=strcat('-Spot#',num2str(selSpot),'-Row=',num2str(row),'-Col=',num2str(col),'-FitData','-L=',num2str(l),'-r=',num2str(r),'-K=',num2str(K));
filenameNoExt=[suffix fileSpotSuffix];
timeArr=scan(scanPltNum).plate(1).tSeries;
rawIntens=scan(scanPltNum).plate(1).intens((selSpot),:)/scan(scanPltNum).plate(1).Ag((selSpot));
try
filterTms=scan(scanPltNum).plate(1).filterTimes{(selSpot)};
normInts=scan(scanPltNum).plate(1).normIntens{(selSpot)};
catch
end
if (exist('K','var')&& exist('r','var') && exist('l','var'))
t=(0:1:200);
Growth=K ./ (1 + exp(-r.* (t - l )));
end
if length(scLst)>1
figure
else
cla
end
hold on
plot(timeArr,rawIntens,'g*');
try
plot(filterTms,normInts,'o');
catch
end
hold on;
title(filenameNoExt); % this didn't make sense so changed
xlabel('Hours');
ylabel('Intensities Normalized by Area');
grid on;
if (exist('K','var')&& exist('r','var') && exist('l','var'))
plot(t, Growth,'b-');
% Plot L on curvefit figure
grL=Growth(round(l)); % growthCurve timePT for l in hours
plot(l,0:grL,'-b') % to display position of l
plot(l,grL,'^b') % to display l position on curve as an arrowhead
% Plot Arbitrary User Entry AUC "finalTimePt"
% plot(finalTimePt,0,'+m')
% plot(0:finalTimePt,bl,'-m')
end
end
%Spot entry form------------------------------------------------------
%{
prompt={'Enter spot to analyse:'};
dlg_title='Input spot to curve fit';
num_lines=1;
def={'1'};
selSpot=inputdlg(prompt,dlg_title,num_lines,def);
K=scan(scanPltNum).plate(1).CFout(str2double(selSpot),3);
r=scan(scanPltNum).plate(1).CFout(str2double(selSpot),4);
l=scan(scanPltNum).plate(1).CFout(str2double(selSpot),5);
suffix=strcat('Scan-Plate', scLst); %char(QspLst(n));
fileSpotSuffix=strcat('-Spot#',selSpot,'-FitData','-L=',num2str(l),'-r=',num2str(r),'-K=',num2str(K));
filenameNoExt=[suffix fileSpotSuffix];
timeArr=scan(scanPltNum).plate(1).tSeries;
rawIntens=scan(scanPltNum).plate(1).intens(str2double(selSpot),:)/scan(scanPltNum).plate(1).Ag(str2double(selSpot));
filterTms=scan(scanPltNum).plate(1).filterTimes{str2double(selSpot)};
normInts=scan(scanPltNum).plate(1).normIntens{str2double(selSpot)};
%}
%-----------------------------------------------------------------------
%{
prompt={'Enter Spot row:','Enter Spot column:'};
dlg_title='Input spot to curve fit';
num_lines=2;
def={'1','1'};
selSpotRC=inputdlg(prompt,dlg_title,num_lines,def);
row=str2double(selSpotRC(1)); col=str2double(selSpotRC(2));
%}
%row=cell2mat(row);

View File

@@ -0,0 +1,59 @@
%% CALLED BY par4Gbl_Main8c.m %%
%{
%Imaging ToolBox method
r=14;
A=zeros(70,70); %(fIntsc(refPtR:(refPtRExt),refPtC:(refPtCExt)))
m={40,40};
A(m{:})=1;
B=imdilate(A,strel('disk',r,0) );
imshow(B)
area=pi*r^2
clear all
%}
%without Image Proc. Toolbox
%r=14;
%A=zeros(70,70);
%A=zeros(r,r);
%P=[40,40];
%center=[refPtR+ round(.5*width), refPtC+ round(.5*width)];
%A=zeros(70,70);
%---------------------------------------------------------------------
%radius=14;
diaExt=2*(radius+1);
circBoxA=zeros(diaExt,diaExt);
center=[radius+2, radius+2];
[m,n]=size(circBoxA);
X=bsxfun(@plus,(1:m)', zeros(1,n));
Y=bsxfun(@plus,(1:n), zeros(m,1));
cirMask=sqrt(sum(bsxfun(@minus,cat(3,X,Y),reshape(center,1,1,[])) .^2,3))<=radius;
area=pi*radius^2;
cirPixA=nnz(cirMask);
optCirMask=double(cirMask);
optCirMask(optCirMask==0)=0.8;
% Foto Circle Fram(e)
expansion=2;
radExpan=radius+expansion;
FdiaExt=2*(radExpan);
circBoxA=zeros(FdiaExt,FdiaExt);
center=[radExpan+1, radExpan+1];
[m, n ]=size(circBoxA);
X=bsxfun(@plus,(1:m)', zeros(1,n));
Y=bsxfun(@plus,(1:n), zeros(m,1));
FcirMask=sqrt(sum(bsxfun(@minus,cat(3,X,Y),reshape(center,1,1,[])) .^2,3))<=radExpan;
%FcirPixA=nnz(cirMask);
FoptCirMask=double(FcirMask);
FoptCirMask(FoptCirMask==1)=2;
%FoptCirMask(FoptCirMask==0)=1;
%********Combine Masks to create circular boundry************
padOptCirMask=padarray(optCirMask,[expansion-1 expansion-1],0.8);
FoptCirMask=FoptCirMask .* padOptCirMask;
FoptCirMask(FoptCirMask==1.6)=0.8;
FoptCirMask(FoptCirMask==0)=1;
FoptCirMask(FoptCirMask==2)=1;
%---------------------------------------------------
%imagesc(cirMask)

View File

@@ -0,0 +1,247 @@
%% CALLED BY par4Gbl_Main8c.m %%
% TODO Should some of these vars be pulled out higher so they are easier to change?
%
function NImParamRadiusGui(projectScansDir)
global SWsingleSc
global SWgrowthArea
global scan
global scLst
global ImParMat
global searchRangeNum
global defImParMat
global fhImRun
global fhconsole
global easyResultsDir
global fotosResultsDir
global pointMapsResultsDir
global pointMapsFile
global matFile
global numRows
global numCols
global scanSize
global scanMax
global searchRangeFile
% Ncode ImRobot adaptation
% TODO this code block and variables needs explanation
defImParMat=[1,1,15,34,24,1,0,0,1,14,1,18];
if ImParMat(3)==0 || ImParMat(4)==0 ||ImParMat(5)==0 || ImParMat(10)==0 ||ImParMat(11)==0
ImParMat=defImParMat;
end
if size(ImParMat,2)<12
ImParMat(12)=18; % default before user input CsearchRange value
msg='Data made before SearchRange user entry added (ImParMat(12). 18 was the set value and the current default.)';
end
% ImParMat=defImParMat; %Activate for INITIAL USE only
MPnum=1;
destPerMP=1;
selScan=1;
SWgrowthArea=1;
if exist(pointMapsFile, 'file')
load(pointMapsFile);
else
load(fullfile(easyDir, 'PTmats', 'NImParameters')) % hardcoded default
disp('WARNING: Using hardcoded NImParameters.mat')
end
ImParMat;
% if ~exist('searchRangeNum','var') || isempty(searchRangeNum)
if exist(searchRangeFile, 'file')
load(searchRangeFile);
CSearchRange; % TODO, might be an issue, figure out what this is doing
end
% yInitPos=0.30;
xPos=0.05;
btnWid=0.10;
btnHt=0.05;
spacing=0.02;% Spacing between the button and the next command's label
% The ADD Groups button
btnNumber=1;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
fhImParm=gcf;
if exist('easyResultsDir','var')&& ~isempty(easyResultsDir)
set(fhImParm,'NumberTitle','off')
set(fhImParm,'Name',strcat('ImageAnalysis- ',char(easyResultsDir)))
else
set(fhImParm,'NumberTitle','off')
set(fhImParm,'Name','EASYconsole - Exp. Analysis NOT selected.')
end
btnNumber=5;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcRadius=ImParMat(10);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcRadius,...
'Units','normalized',...
'Position', btnPos,... % [.002 .70 .08 .10],...
'callback',{@entryRadius}); % 'Position', [5 100 60 20])
function entryRadius(source,~)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<12)||(user_entry>17))
errordlg('You must enter a numeric value between 12 and 17','Bad Input','modal')
return
end
Radius=user_entry;
ImParMat(10)=Radius;
Radius;
end
btnNumber=6;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
srcDither=ImParMat(6);
hedit=uicontrol(...
'Style', 'edit',...
'String',srcDither,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@entryDither});
function entryDither(source,~)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<0)||(user_entry>5))
errordlg('You must enter a numeric value between 1 and 4','Bad Input','modal')
return
end
Dither=user_entry;
ImParMat(6)=Dither;
Dither;
end
btnNumber=7;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
% TODO, I don't think these are defined?
try
srchRange=ImParMat(12);
catch % Legacy default value was 18 before being made a user input variable (ImParMat(12)). A preferable value now might be 12 or 14.
srchRange=18;
ImParMat(12)=18;
end
hSearchRange=uicontrol(...
'Style', 'edit',...
'Value',searchRangeNum,...
'Units','normalized',...
'Position', btnPos,...
'callback',{@searchRangeCallback});
function searchRangeCallback(source,~)
user_entry=str2double(get(source,'string'));
if (isnan(user_entry)||(user_entry<1)||(user_entry>50)) %originally 18; 19_0729 increased
errordlg('You must enter a numeric value between 1 and 18 12->18 recommended. (ImParMat(12)))','Bad Input','modal')
return
end
searchRangeNum=user_entry;
end
% Ncode 12_0120 for reading in numeric folder names
nlist=dir(fullfile(projectScansDir,'*'));
nnn=0;
for n=1:size(nlist,1)
if (~isempty(str2num(nlist(n).name)))
nnn=nnn+1;
PnumLst(nnn)=(str2num(nlist(n).name));
sl(nnn,1)={(nlist(n).name)};
end
end
scanSize=size(sl,1);
scanMax=max(str2double(sl));
hListbox=uicontrol(...
'Style', 'listbox',...
'String',sort(sl),...
'value',[],...
'max',1000,...
'min',1,...
'Units','normalized',...
'Position', [.70 .40 .10 .60],...
'callback',{@load_listbox}); %'uiresume(gcbf)'); 'Position', [5 100 60 20])
function load_listbox(source,~)
userIndx=(get(source,'value'));
userStr=(get(source,'string'));
%scLstIndx=str2num(char(strrep(userStr(userIndx), 'Scan', '')))
user_entry=userStr(userIndx);
scLst=user_entry;
if size(scLst,1)>1
% searchRangeNum=num2str(ImParMat(12))
set(hSearchRange,'string',num2str(ImParMat(12)))
else
try
searchRangeNum=CSearchRange(str2double(scLst));
set(hSearchRange,'string',CSearchRange(str2double(scLst)))
catch
% CSrchRng=num2str(ImParMat(12))
% set(hSearchRange,'string',num2str(ImParMat(12)))
end
end
end
scLst;
btnNumber=10;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
hedit8=uicontrol(...
'Style', 'pushbutton',...
'String',{'Continue'},...
'Units','normalized',...
'Position', btnPos,...
'callback','uiresume(gcbf)');
% Labels
xLPos=0.175;
yPos=0;
btnWid=0.20;
lblNumber=5;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','Radius',... %'String','Width',...
'Units','normalized',...
'Position', btnPos);
lblNumber=6;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','Dither',...
'Units','normalized',...
'Position', btnPos);
lblNumber=7;
yPos=0.85-(lblNumber-1)*(btnHt+spacing);
btnPos=[xLPos yPos-spacing btnWid btnHt];
htxt=uicontrol(...
'Style', 'text',...
'String','SearchRange',...
'Units','normalized',...
'Position', btnPos);
uiwait(gcf);
for i=1:length(scLst)
CSearchRange(str2double(scLst(i)))=CSrchRng;
ImParMat(12)=CSrchRng;
end
ImParMat;
searchRangeNum;
save(pointMapsFile, 'ImParMat');
save(searchRangeFile,'searchRangeNum');
close
return
end

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,15 @@
%% PART OF GUI FUNCTIONALITY %%
% Display the position of the data cursor
function output_txt = datatipp(~,event_obj)
% obj Currently not used (empty)
% event_obj Handle to event object
% output_txt Data cursor text string (string or cell array of strings).
pos=get(event_obj,'Position');
output_txt={['X: ',num2str(pos(1),4)],['Y: ',num2str(pos(2),4)]};
% If there is a Z-coordinate in the position, display it as well
if length(pos) > 2
output_txt{end+1}=['Z: ',num2str(pos(3),4)];
end
end

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,36 @@
%% CALLED BY par4Gbl_Main8c.m %%
function[p4L4,...
TmpexpScanIntens4,TmpFexpScanSpots4,TmpFexpScanBMtp4,TmpanlZoneRefs4,Tmpsbdg4]= ...
p4loop8c(parMat,tptLength,numScans,selScanNumLst,SWsingleSc,Fflg,PTmapPos,optCirMask,diaExt,doCircle,cirPixA,cirMask,width, ...
TmpexpScanIntens00,TmpFexpScanSpots00,TmpFexpScanBMtp00,TmpanlZoneRefs00,~,tifFileLstP4,pathname,ImParMat, ...
numRows,numCols,scLst,easyResultsDir,projectScansDir, p4L00,TmpexpScanIntens4,TmpFexpScanSpots4,TmpFexpScanBMtp4,TmpanlZoneRefs4, Tmpsbdg00, Tmpsbdg4)
p4L0=p4L00;
TmpexpScanIntens0=TmpexpScanIntens00;
TmpFexpScanSpots0=TmpFexpScanSpots00;
TmpFexpScanBMtp0=TmpFexpScanBMtp00;
TmpanlZoneRefs0=TmpanlZoneRefs00;
Tmpsbdg0= Tmpsbdg00;
% for scCount=1:numScans
if SWsingleSc==1
parforArg=0;
else
parforArg=inf;
end
% for (scCount=1:numScans)
parfor (scCount=1:numScans,parforArg)
scCount % for debugging
p4L0=cell(18,1);
[p4L3,TmpexpScanIntens3,TmpFexpScanSpots3,TmpFexpScanBMtp3,TmpanlZoneRefs3,Tmpsbdg3]= ...
par4GblFnc8c(parMat,tptLength,numScans,selScanNumLst,SWsingleSc,Fflg,PTmapPos,optCirMask,diaExt,doCircle,cirPixA,cirMask,width, ...
TmpexpScanIntens0,TmpFexpScanSpots0,TmpFexpScanBMtp0,TmpanlZoneRefs0,scCount,tifFileLstP4,pathname,ImParMat, ...
numRows,numCols, scLst,easyResultsDir,projectScansDir, p4L0,Tmpsbdg0);
p4L4(:,scCount)=p4L3; % (:,scCount);
TmpexpScanIntens4(scCount)=TmpexpScanIntens3;
TmpFexpScanSpots4(scCount)=TmpFexpScanSpots3;
TmpFexpScanBMtp4(scCount)=TmpFexpScanBMtp3;
TmpanlZoneRefs4(scCount)=TmpanlZoneRefs3;
Tmpsbdg4(scCount)=Tmpsbdg3;
end

View File

@@ -0,0 +1,300 @@
%% CALLED By p4loop8c.m %%
function [p4L2, TmpexpScanIntens3,TmpFexpScanSpots3,TmpFexpScanBMtp3,TmpanlZoneRefs3,Tmpsbdg3]= ...
par4GblFnc8c(parMat,tptLength,~,selScanNumLst,~,Fflg,PTmapPos,optCirMask,diaExt,doCircle,cirPixA,cirMask,~,...
TmpexpScanIntens,TmpFexpScanSpots,TmpFexpScanBMtp,TmpanlZoneRefs,scCount,tifFileLstP4,~,ImParMat, ...
numRows,numCols,scLst,easyResultsDir,projectScansDir,~, Tmpsbdg)
global printResultsDir
selScan=selScanNumLst(scCount);
tptLength0=length(tifFileLstP4{scCount});
% tptLength=numFiles;
tifFileLst={tifFileLstP4(scCount)};
% Extract the Imaging time stamps from selected tif files
% clear('e','f'); %can't use clear inside a parfor loop. Preallocation
% can be larger than useable .bmp files! Therefore must be small and
% increased during for loop to maintain cell size integrity between e & f
e=cell(1,2); f=cell(1,2); %(tptLength,2); f=cell(tptLength,2);
nndx=0;
for tPt=1:tptLength0 %size(tifFileLst,1) %length(tifFileLst)
tifFileLstP4{scCount}(tPt)
scLst;
scLst(scCount)
char(scLst(scCount))
char(fullfile(projectScansDir,char(scLst(scCount))))
projectScansDir;
swCatch=0;
nndx=nndx+1;
tifFile=char(fullfile(projectScansDir,char(scLst(scCount)), tifFileLstP4{scCount}(tPt)));
try
info=imfinfo(tifFile); % D:\jwrDevel\DevelCurveFittingJWR\ImageScans\Scan2\020hr002.tif
catch ME
% Note: During parallel operation Matlab will not open file (fid)
% etc. Therefore error message text will not be written.The only way
% to get it out would be to pass variable through called function to
% the ..Main8c script outside the parfor loop and print to file from
% there. Consequently for now it only prints error to file when one
% edits p4loop8c.m from 'parfor' to ordinary 'for' loop
fFail=((fullfile(printResultsDir,'ImageFileReadFailure.txt')));
fid=fopen(fFail,'a'); %create,open and append
% fprintf(fid,'%s \n',char(tifFile))
fclose(fid);
nndx=nndx-1;
swCatch=1;
rep=getReport(ME, 'basic');
rep=strcat('Read info failure for-',tifFile,' -', rep);
% fprintf(fid,'%s \n',rep) %See Note:
end
tptLength=nndx;
scTmNumeric=1; %initialize for parfor
if swCatch==0
scTmNumeric(nndx)=datenum(info.FileModDate);
e(nndx,:)={tifFile, scTmNumeric(nndx)};
% newtifFileLst(nndx)=tifFileLst(tPt);
end
end
% Clear tifFileLst;
tifFileLst=cell(nndx,1);
f={sortrows(e,2)};
tifFileLst=f{1,1}(:,1);
areaOfIntensAboveBG=zeros(24,16,length(tifFileLst));
% Calculate Time series for each Plate of Selected Scan
lastPlateOnScan=1; %Ncode
tSeriesv=[]; t0Seriesv=[];
if tptLength>0 % added to jump over and fill data for invalid Sscan(plate runs
scTmNumv=cell2mat(f{1,1}(:,2)); % (:,2))120613 fix for variant length data
prtTmNumv=min(scTmNumv)-.000001;
tSeriesv=((scTmNumv-prtTmNumv)*24);
t0Seriesv=((scTmNumv-scTmNumv(1))*24);
end
% Added to jump over and fill data for invalid Sscan(plate runs
if tptLength>=3
% Create blank scan
ImHeigth=2075;
ImWidth=1400;
Empsc=zeros(ImHeigth,ImWidth); %Ncode
% Start scan loop
lastPlateOnScan=1; %Ncode
disp('Before call to NIscanIntens.....')
% Execute Image conversion into Intensity Data
[Tmpsbdg2, scanIntens, ~, ~, ~, TmpexpScanIntens2, TmpFexpScanSpots2, TmpFexpScanBMtp2, TmpanlZoneRefs2,areaOfIntensAboveBG]= ...
NIscanIntensBGpar4GblFnc(Fflg,tifFileLst, ImParMat, PTmapPos,optCirMask,diaExt,doCircle,cirPixA,numRows,numCols,ImHeigth,ImWidth,cirMask, ...
tptLength,selScan,Empsc,TmpexpScanIntens,TmpFexpScanSpots,TmpFexpScanBMtp,TmpanlZoneRefs,easyResultsDir, Tmpsbdg);
TmpexpScanIntens3=TmpexpScanIntens2;
TmpFexpScanSpots3=TmpFexpScanSpots2;
TmpFexpScanBMtp3=TmpFexpScanBMtp2;
TmpanlZoneRefs3=TmpanlZoneRefs2;
Tmpsbdg3=Tmpsbdg2;
% clear plate
CFscanIntens=zeros(384,1); % zeros(16,24);
plate=[];
plate=zeros(24,16,tptLength);
plate(:,:,:,1)=scanIntens(1:1:24,16:-1:1,:); % TmpexpScanIntens2(1:1:24,16:-1:1,:);%Ncode Dev3Vertical Similar to below
% NIcheck: Check for bad scans at time points (swapped plates etc.)
% Set up cell arrays for storing each plate in each Scan ..(scan,plate)
SWprint=0;
% Construct Legacy ...Intens.txt file
if SWprint==1
filename=fullfile(easyResultsDir,'PrintResults',(strcat('Plate',num2str(selScan),'_Intens.txt')));
fid=fopen(filename,'w');
end
if length(size(plate))==2 % only two dims if only one image
numOfImages=1;
else
numOfImages=size(plate,3);
end
CFscanIntens=zeros(384,numOfImages);
locIndx=0; pl=1;
for n=1:numCols % Ncode changed to 16 for Vert
for m=1:numRows % Ncode change to 24 for Vert
locIndx=locIndx+1;
for k=1:numOfImages
if SWprint==1
if k==1 && numOfImages==1, fprintf(fid,'%.2f\n',plate(m,n,k,pl));end
if k==1 && numOfImages~=1, fprintf(fid,'%.2f',plate(m,n,k,pl));end
if k>1 && k<numOfImages, fprintf(fid,'\t%.2f',plate(m,n,k,pl));end %
if k~=1 && k==numOfImages,fprintf(fid,'\t%.2f\n',plate(m,n,k,pl));end
end
CFscanIntens(locIndx,k)=plate(m,n,k,pl);
end
end
end
if SWprint==1
fclose(fid);
end
% printGrwAreas
% Area as the max number of pixels with intensities greater than the Background
% grArea(row,col,tPt,Plate) Note that images r and c are 90 degrees shifted
% and then mirror imaged. Thus data must be inverted and rotated to get
% for the rows a-p and col 1-24 (and the EMS expected 1-384) orientation
% clear grArea
grArea=ones(24,16,tptLength);
grArea(:,:,:,1)=areaOfIntensAboveBG(1:1:24,16:-1:1,:); %for Ncode dev3vert
% for p=1:lastPlateOnScan
if SWprint==1
if SWgrowthArea==1
filename=fullfile(printResultsDir,(strcat('Plate',num2str(selScan),'_Areas.txt')));
else
filename=fullfile(printResultsDir,(strcat('ALTgrowthA_Scan',num2str(selScan),'_Plate',num2str(1),'_Areas.txt')));
filename=fullfile(printResultsDir,(strcat('ALTgrowthA_Plate',num2str(selScan),'_Plate','_Areas.txt')));
end
fid=fopen(filename,'w');
end
locIndx=0;
Ag=zeros(1,384);
for m=1:16 % Ncode change from 16 %Vert back to 16
for n=1:24 % Ncode change from 24 %Vert back to 24
growthArea=max(grArea(n,m,:,1));
if SWprint==1
fprintf(fid,'%3.f\n',growthArea);
end
locIndx=locIndx+1;
Ag(locIndx)=growthArea;
end
end
if SWprint==1
fclose(fid);
% fclose('all'); % TODO do we need this?
end
% AutoImCF curveFit kickoff setup
autoImCFlag=1;
if autoImCFlag==1, SWgrowthArea=1;end
times=tSeriesv;
scanAreas=Ag; % growthArea;
offsets=0;
suffix=strcat('Scan', num2str(selScan),'_Plate', num2str(1)); % char(QspLst(n));
AUCfinalTime=96;
arrayFormat=384;
% Version compatability fixes
%{
v11a='7.12.0.635 (R2011a)';
v14a='8.3.0.532 (R2014a)';
%v14b='8.4.0.150421 (R2014b)';
v18a='9.4.0.813654 (R2018a)';
v18b='9.5.0.944444 (R2018b)';
% Fourth order derivative of logistic equation
if isequal(v18a,version)||isequal(v18b,version)
syms t K r l;
fd4=diff(K / (1 + exp(-r* (t - l ))),t,4);
else
fd4=diff(sym('K / (1 + exp(-r* (t - l )))'),4);
end
sols=solve(fd4);
if isequal(v11a,version) || isequal(v14a,version)
else
tmpswap=sols(1);
sols(1)=sols(3);
sols(3)=tmpswap;
end
%}
if verLessThan('matlab','8.3') % original work 23_0227 updated 23_0525 (8.4 changed to 8.3)
fd4=diff(sym('K / (1 + exp(-r* (t - l )))'),4);
sols=solve(fd4);
else % accomodate new matlab changes after 2014a fix 2nd update 23_0227
syms t K r l;
fd4=diff(K / (1 + exp(-r* (t - l ))),t,4);
sols=solve(fd4);
tmpswap=sols(1);
sols(1)=sols(3);
sols(3)=tmpswap;
end
% CFscanIntens
% Call CurveFit routine
% NCfitImCF(times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, printResultsDir, autoImCFlag, selScan,sols) %,scan)%, scPltList) outputDirectory;
% [scanTmp2]=NCfitImCFparforFailGbl(times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, printResultsDir, autoImCFlag, selScan, sols, scanTmp); %,scan)%, scPltList) outputDirectory;
[par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC2,outCstd2]= ...
NCfitImCFparforFailGbl2(parMat,times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, printResultsDir, autoImCFlag, selScan, sols); %,scan)%, scPltList) outputDirectory;
else %fill with default values when an invalid plate scan occurs
CFscanIntens=zeros(16,24);
Ag=zeros(1,384);
% Preallocation for parfor loop
times=tSeriesv;
st(1,1:size(times,2))=1111;
resMat(1,1:27)=0;
resMatStd=resMat;
outC2=zeros(384,27);
outCstd2=zeros(384,27);
for m=1:384
pa{m}=st;
par4scanCFparameters{m}=parMat;
par4scanCFdate{m}=datestr((now),31);
end
par4scanselTimesStd=pa;
par4scanselIntensStd=pa;
par4scanTimesELr=pa;
par4scanIntensELr=pa;
par4resMat=zeros(384,27);
par4resMatStd=zeros(384,27);
%{
TmpexpScanIntens00=cell(1); %cell(1,scanMax);
TmpFexpScanSpots00=cell(1); %cell(1,scanMax);
TmpFexpScanBMtp00=cell(1); %cell(1,scanMax);
TmpanlZoneRefs00=cell(1); %cell(1,scanMax);
Tmpsbdg00=cell(1);
%}
TmpexpScanIntens3=cell(1); %TmpexpScanIntens2;
TmpFexpScanSpots3=cell(1); %TmpFexpScanSpots2;
TmpFexpScanBMtp3=cell(1); %TmpFexpScanBMtp2;
TmpanlZoneRefs3=cell(1); %TmpanlZoneRefs2;
Tmpsbdg3=cell(1); %Tmpsbdg2;
end %if tptLenth>=3 line19 20_0928
tSeriesv; %debuggin parfor
p4L1{1}=tSeriesv;
p4L1{2}=t0Seriesv;
p4L1{3}=datestr(prtTmNumv,31);
p4L1{4}=CFscanIntens;
locIndx=0;
for n=1:numCols % Ncode changed to 16 for Vert
for m=1:numRows % Ncode change to 24 for Vert
locIndx=locIndx+1;
rc=[n,m];
p4rcTmp(locIndx)={rc};
p4pIndxTmp(locIndx)=locIndx;
end
end
p4L1{5}=p4rcTmp;
p4L1{6}=p4pIndxTmp;
p4L1{7}=Ag;
p4L1{8}=par4scanselIntensStd;
p4L1{9}=par4scanselTimesStd;
p4L1{10}=par4scanTimesELr;
p4L1{11}=par4scanIntensELr;
p4L1{12}=par4scanCFparameters;
p4L1{13}=par4scanCFdate;
p4L1{14}=outC2;
p4L1{15}=outCstd2;
p4L1{16}=selScan;
p4L1{17}=cirPixA;
p4L1{18}=datestr((now),31); % TODO this seems bad
p4L2=p4L1;
end

View File

@@ -0,0 +1,244 @@
global SWgrowthArea
global scLst
global ImParMat
global projectScansDir
global matFile
global fhconsole
global easyResultsDir
global printResultsDir
global pointMapsResultsDir
global fotosResultsDir
global matDir
global ImWidth
global ImHeigth
global numRows
global numCols
global scan
global scanMax
global tptLength
global easyDir
numRows=24; % for Single Vertical
numCols=16; % for Single Vertical
% CIRCLE related
doCircle=1; % use Circle area analysis 14_0807
radius=14;
ImParMat(10)=radius;
ImParMat(11)=doCircle;
% TODO what is this for?
Fflg=1;
% Don't think we need this
% fclose('all'); % close all open files
% Unset some vars just in case they are already set
clear('scanIntens','Scanfiles','pathname','tifFileLstP4');
try
clf(fhconsole,'reset');
catch
end
% No idea why we're doing this so commenting out
% close
% EASYconsole
if exist(matFile, 'file')
bkUpMatFile=fullfile(matFile, '.bk');
copyfile(matFile,bkUpMatFile);
end
% Reloacated from 'PTmats' to prevent potential overwrite when PTmats is
% copied into new job when the PT template is about the same. We also
% now have a default template if one is not made. i.e., when the images
% from the new experiment are too sketchy to make a good pintool
% template. By moving it to 'Fotos' we avoid possible issues due to
% copying the Nbdg.mat file along with the default template '.mat' files.
% A copy of Ndbg.mat is placed also saved to the 'PTmats' directory
% after each run to allow previous version of EASY to access data made
% by EASY versions after 20_0819.
try
load(fullfile(fotosResultsDir,'Nbdg')); % modified to load from 'Fotos' 20_0819
catch
load(fullfile(pointMapsResultsDir,'Nbdg')); % left in to accomodate loads of work before 20_0819
end
% Load Fotos stored data
fotosToLoad={'Coordinates', 'BGatTpts', 'anlZones', 'NCFparms'};
for i=1:length(fotosToLoad)
try
load(fullfile(fotosResultsDir, fotosToLoad{i}));
catch
load(fullfile(easyDir,'parameters'));
end
end
% Get Print Times
PrintTimes=[];
scLst={};
% Parameter Entry
NImParamRadiusGui(projectScansDir); % Ncode 122111replaced removed ,numOfPrtTimes)
width=24;
widthEx=width-1; % width extention from reference point
dither=ImParMat(6);
radius=ImParMat(10);
NIcircle;
% Load Stuff
lastPlateOnLastScan=1; % Ncode
if size(scLst,1)==1
SWsingleSc=1;
else
SWsingleSc=0;
end
dvec=datevec(datestr(floor(now))); %method to get current offset year '01-Jan-"currentyr"'
dvec(2)=1;
dvec(3)=1;
% yrOffset=datenum('01-Jan-2012');%(dvec); %('01-Jan-2009'); %time num default is currentyear jan1
numScans=size(scLst,1);
if(isequal(SWsingleSc,1))
selScan=str2double(char(scLst(1)));
else
% startScan=1;
end
SWgrowthArea=ImParMat(9);
load(fullfile(pointMapsResultsDir,'NPTmapSearch'));
PTmapPos=detPos;
selScanNumLst=[];
Scanfiles=[];
pathname=[];
for ii=1:length(scLst)
if (SWsingleSc == 1)
% TODO proably need to make this more explicit with paths
[Scanfiles, pathname]=uigetfile('*.bmp', 'Select files','MultiSelect','on'); % change '*hr*.bmp' 12/20/2011
if ischar(Scanfiles)
scd=imread(char(Scanfiles));
tptLength=1;
else
scd=imread(char(Scanfiles(1,1)));
tptLength=length(Scanfiles);
end
ImHeigth=size(scd,1);
ImWidth=size(scd,2);
sc=scd(1:ImHeigth,1:ImWidth);
end
numFiles=size(Scanfiles,2);
% Initialize tifFilesLst for parfor loop
dir(fullfile(projectScansDir, char(scLst(ii)), '*.bmp'));
numFiles=length(tifFileLst4MultiT);
tptLength=numFiles;
tifFileLstP4{ii}={tifFileLst4MultiT.name};
end
for jj=1:numScans % startScan:numScans
selScan=str2double(char(scLst(jj)));
selScanNumLst(jj)=selScan;
end
selScanNumLst2=selScanNumLst; % function passthrough, passback to par4gbl_Main 20_0205
% Preallocation
scCount=[];
TmpexpScanIntens00=cell(1); % cell(1,scanMax);
TmpFexpScanSpots00=cell(1); % cell(1,scanMax);
TmpFexpScanBMtp00=cell(1); % cell(1,scanMax);
TmpanlZoneRefs00=cell(1); % cell(1,scanMax);
Tmpsbdg00=cell(1);
TmpexpScanIntens4=cell(1,numScans);
TmpFexpScanSpots4=cell(1,numScans);
TmpFexpScanBMtp4=cell(1,numScans);
TmpanlZoneRefs4=cell(1,numScans);
Tmpsbdg4=cell(1,numScans);
TmpexpScanIntens5=cell(1,numScans);
TmpFexpScanSpots5=cell(1,numScans);
TmpFexpScanBMtp5=cell(1,numScans);
TmpanlZoneRefs5=cell(1,numScans);
Tmpsbdg5=cell(1,numScans);
p4L00=cell(18,1);
p4L0=p4L00;
p4L4=cell(18,numScans);
p4L5=p4L4;
Ag=ones(384);
CFscanIntens=zeros(16,24);
[p4L4,TmpexpScanIntens5,TmpFexpScanSpots5,TmpFexpScanBMtp5,TmpanlZoneRefs5,Tmpsbdg5]= ...
p4loop8c(parMat,tptLength,numScans,selScanNumLst,SWsingleSc,Fflg,PTmapPos,optCirMask,diaExt,doCircle,cirPixA,cirMask,width, ...
TmpexpScanIntens00,TmpFexpScanSpots00,TmpFexpScanBMtp00,TmpanlZoneRefs00,scCount,tifFileLstP4,pathname,ImParMat, ...
numRows,numCols,scLst,easyResultsDir,projectScansDir, p4L00,TmpexpScanIntens4,TmpFexpScanSpots4,TmpFexpScanBMtp4,TmpanlZoneRefs4, ...
Tmpsbdg00,Tmpsbdg4);
for scanCnt=1:numScans
selScan=p4L4{16,scanCnt}; % determine the actual scan in the scanCnt parfor distributed "id"
scan(selScan).plate(1).tSeries=cell2mat(p4L4(1,scanCnt));
scan(selScan).plate(1).t0Series=cell2mat(p4L4(2,scanCnt));
scan(selScan).plate(1).printTm=cell2mat(p4L4(3,scanCnt));
scan(selScan).plate(1).intens=cell2mat(p4L4(4,scanCnt));
scan(selScan).plate(1).rc=p4L4(5,scanCnt);
scan(selScan).plate(1).pIndx=cell2mat(p4L4(6,scanCnt));
scan(selScan).plate(1).Ag=cell2mat(p4L4(7,scanCnt));
scan(selScan).plate(1).selIntens=p4L4(8,scanCnt);
scan(selScan).plate(1).selTimes=p4L4(9,scanCnt);
scan(selScan).plate(1).filterTimes=p4L4(10,scanCnt);
scan(selScan).plate(1).normIntens=p4L4(11,scanCnt);
% scan(selScan).plate(1).CFparameters=p4L4(12,scanCnt); %Need to convert to a matrix form like Old versions
CFparm(1:384)=p4L4{12,scanCnt}(1:384);
scan(selScan).plate(1).CFparameters=CFparm;
scan(selScan).plate(1).CFdate=p4L4(13,scanCnt);
scan(selScan).plate(1).CFout=cell2mat(p4L4(14,scanCnt));
scan(selScan).plate(1).CFoutStd=cell2mat(p4L4(15,scanCnt));
scan(selScan).Awindow=cell2mat(p4L4(17,scanCnt));
scan(selScan).Idate=cell2mat(p4L4(18,scanCnt));
expScanIntens(selScan)=TmpexpScanIntens5(scanCnt);
FexpScanSpots(selScan)=TmpFexpScanSpots5(scanCnt);
FexpScanBMtp(selScan)=TmpFexpScanBMtp5(scanCnt);
anlZoneRefs(selScan)=TmpanlZoneRefs5(scanCnt);
if ~isempty(Tmpsbdg5{scanCnt})
sbdg(selScan)=Tmpsbdg5(scanCnt);
else
sbdg{selScan}=uint8(zeros(24,16,4));
end
end
% Save data in .mat files
save(matFile,'scan');
% save((fullfile(easyResultsDir,'PTmats','Nbdg')), 'sbdg'); % legacy location can probably get rid of in time
save((fullfile(fotosResultsDir,'Nbdg')), 'sbdg');
save((fullfile(fotosResultsDir,'Coordinates')),'FexpScanSpots') % saves frames at each tPt
save((fullfile(fotosResultsDir,'BGatTpts')),'FexpScanBMtp')
save((fullfile(fotosResultsDir,'anlZones')),'anlZoneRefs') % saves anl Positions at each tPt
% Print FitResults
fileExt='.txt';
filePrefix='FitResults_';
for scanCnt=1:numScans
selScan=p4L4{16,scanCnt}; % determine the actual scan in the scanCnt parfor distributed "id"
fileSuffix=sprintf('Scan%d_Plate%d', selScan, 1);
fileNamePlate=[filePrefix fileSuffix fileExt];
fileName=fullfile(printResultsDir, fileNamePlate); % [outputDirectory fileNamePlate];
% This,fprint for loop,is an very old legacy feature which slows processing. Could be
% removed but allows easy observation of how a run is progressing and can be
% used as a diagnostic tool.
outCprint=p4L4;
fid=fopen(fileName,'w');
fprintf(fid, 'Num.\tAUC\tMSR\tK\tr\tl\tR-squared\tK-lower\tK-upper\tr-lower\tr-upper\tl-upper\tl-lower\tArea\tLastInten\tSpineMaxRateTimePt\tLastFitTimePt\n');
for n=1:384 % startCount:numCultures
fprintf(fid,'%d\t',n);
fprintf(fid, '%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\n',...
outCprint{14,scanCnt}(n,1),outCprint{14,scanCnt}(n,2),outCprint{14,scanCnt}(n,3),outCprint{14,scanCnt}(n,4),...
outCprint{14,scanCnt}(n,5),outCprint{14,scanCnt}(n,6),outCprint{14,scanCnt}(n,7),outCprint{14,scanCnt}(n,8),...
outCprint{14,scanCnt}(n,9),outCprint{14,scanCnt}(n,10),outCprint{14,scanCnt}(n,11),outCprint{14,scanCnt}(n,12),...
outCprint{14,scanCnt}(n,13),outCprint{14,scanCnt}(n,14),outCprint{14,scanCnt}(n,15),outCprint{14,scanCnt}(n,16));
end
fclose(fid);
end

View File

@@ -0,0 +1,23 @@
close all
figure('units','pix','pos',[200 200 850 750])
ax=axes;
plot((1:10).^2)
set(ax,'units','pix')
legend('x^2')
xlabel('X Label','fontsize',12)
ylabel('Y Label','fontsize',12)
title('Title','fontsize',24)
drawnow
% Now capture the axes and labels.
P=get(ax,'pos');
T=get(ax,'tightinset');
h=[P(1)-T(1)-5 P(2)-T(2)-5 P(3)+P(1)/2+T(3)+15 P(4)+P(2)/2+T(4)+10];
F=getframe(gcf,h);
[X,Map]=frame2im(F);
% I put the funny background color so the captured area stands out.
figure('color',[.6 .2 .2],'units','pix','pos',[26 33 1184 925])
image(X)
set(gca,'visible','off')
axis normal
imwrite(X,'myimage.jpg') % save the image

View File

@@ -0,0 +1,133 @@
% EZRFs4DayComp Called by EZmDayComp.m
% For this multiDay Exp series the actual perturbation being studied is
% Aging as related in the time series experiment i.e.,(nn) or DexpN
% That is holding the DrugMedia pert constant(at the DM slider number) and plotting
RFconfig=Exp(zoneSel).Dexp(DexpN).RFconfig;
RFsel=Exp(zoneSel).htmapRFanswer;
j=pertSel; m=MPsel;
if RFconfig==1
try
RF1mdIndx(nn)=Exp(zoneSel).Dexp(nn).RFmd1indx(pertSel);
RF1mdPltN(nn)=Exp(zoneSel).Dexp(nn).RFmd1pltN; %This is the MP number for RF1
RFmdVal(nn)=Exp(zoneSel).Dexp(nn).RFmd1val(pertSel);
catch, end
try
RF2mdIndx(nn)=Exp(zoneSel).Dexp(nn).RFmd2indx(pertSel);
RF2mdPltN(nn)=Exp(zoneSel).Dexp(nn).RFmd2pltN;
% special case for 'RFmd2val' See Calc. at EZmDayComp ~ln139
catch, end
try Rn(nn)=Exp(expN).Dexp(nn).RFmean(pertSel); catch, Rn(nn)=0; end
try Rs(nn)=Exp(expN).Dexp(nn).RFstd(pertSel); catch, Rs(nn)=0; end
end
if RFconfig==2
ctrlRF=RFsel{1};
j=pertSel; m=MPsel;
switch ctrlRF
case {'G','g'}
% Set to (nn) day as these median values are being plotted directly
RFmdIndx(nn)=Exp(zoneSel).Dexp(nn).RFmdGindx(pertSel);
RFmdPltN(nn)=Exp(zoneSel).Dexp(nn).RFmdGpltN(pertSel); %G could have a different MP for each DM;At any rate it is stored for each DM regardless.
RFmdVal(nn)=Exp(zoneSel).Dexp(nn).RFmedianG(pertSel);
% Set mean values to Day 1 as these are used in Interaction Calc.
% as the first reference ctrlRF 'Aging Perturbation'
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(pertSel);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(pertSel);
case {'L','l'}
% Set to (nn) day as these median values are being plotted directly
RFmdVal(nn)=Exp(zoneSel).Dexp(nn).RFmedianP(pertSel);
% Set mean values to Day 1 as these are used in Interaction Calc.
% as the first reference ctrlRF 'Aging Perturbation'
if Exp(expN).Dexp(nn).meanP(j,m)~=0
Rn(nn)=Exp(expN).Dexp(nn).meanP(j,m);
Rs(nn)=Exp(expN).Dexp(nn).stdP(j,m);
elseif Exp(expN).Dexp(nn).meanP(j,m)==0||isempty(Exp(expN).Dexp(nn).meanP(j,m)) ...
&& strcmpi(ctrlRF,'G')
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(pertSel);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(pertSel);
end
end
pertRF=RFsel{2}; % These results are only used for N2 future Interaction Calc.
% nn is ordered number of the selected chronological day Experiment
% In the chronological study, Age (day sequence results) is the
% 'Perturbation' of interest instead of DrugMedia concentration.
switch pertRF
case {'G','g'}
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(pertSel);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(pertSel);
case {'L','l'}
j=pertSel; m=MPsel;
if Exp(expN).Dexp(nn).meanP(j,m)~=0
Rn(nn)=Exp(expN).Dexp(nn).meanP(j,m);
Rs(nn)=Exp(expN).Dexp(nn).stdP(j,m);
elseif Exp(expN).Dexp(nn).meanP(j,m)==0||isempty(Exp(expN).Dexp(nn).meanP(j,m)) ...
&& strcmpi(ctrlRF,'G')
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(j);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(j);
end
end
end
if RFconfig==3
j=pertSel; m=MPsel;
ctrlRF=RFsel{1};
switch ctrlRF
case {'F','f'}
try
RF1mdIndx(nn)=Exp(zoneSel).Dexp(nn).RFmd1indx(pertSel);
RF1mdPltN(nn)=Exp(zoneSel).Dexp(nn).RFmd1pltN;
RFmdVal(nn)=Exp(zoneSel).Dexp(nn).RFmd1val(pertSel);
catch, end
try
RF2mdIndx(nn)=Exp(zoneSel).Dexp(nn).RFmd2indx(pertSel);
RF2mdPltN(nn)=Exp(zoneSel).Dexp(nn).RFmd2pltN(pertSel);
%special case for 'RFmd2val' See Calc. at EZmDayComp ~ln139
catch, end
try Rn(nn)=Exp(expN).Dexp(nn).RFmean; catch, Rn(nn)=0; end
try Rs(nn)=Exp(expN).Dexp(nn).RFstd; catch, Rs(nn)=0; end
Rn(nn)=Exp(expN).Dexp(nn).RFmean(nn);
Rs(nn)=Exp(expN).Dexp(nn).RFstd(nn);
case {'G','g'}
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(nn);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(nn);
case {'L','l'}
Rn(nn)=Exp(expN).Dexp(nn).meanP(j,m);
Rs(nn)=Exp(expN).Dexp(nn).stdP(j,m);
if Exp(expN).Dexp(nn).meanP(j,m)~=0
Rn(nn)=Exp(expN).Dexp(nn).meanP(j,m);
Rs(nn)=Exp(expN).Dexp(nn).stdP(j,m);
elseif Exp(expN).Dexp(nn).meanP(j,m)==0 && strcmpi(ctrlRF,'G')
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(j);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(j);
elseif Exp(expN).Dexp(nn).meanP(j,m)==0 && strcmpi(ctrlRF,'F')
Rn(nn)=Exp(expN).Dexp(nn).RFmean(j);
Rs(nn)=Exp(expN).Dexp(nn).RFstd(j);
elseif Exp(expN).Dexp(nn).meanP(1,m)==0 && strcmpi(ctrlRF,'L')
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(1);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(1);
end
end
pertRF=RFsel{2};
switch pertRF
case {'F','f'}
Rn(nn)=Exp(expN).Dexp(nn).RFmean(pertSel);
Rs(nn)=Exp(expN).Dexp(nn).RFstd(pertSel);
case {'G','g'}
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(pertSel);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(pertSel);
case {'L','l'}
if Exp(expN).Dexp(nn).meanP(j,m)~=0,
Rn(nn)=Exp(expN).Dexp(nn).meanP(j,m);
Rs(nn)=Exp(expN).Dexp(nn).stdP(j,m);
elseif Exp(expN).Dexp(nn).meanP(j,m)==0 && strcmpi(ctrlRF,'G')
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(j);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(j);
elseif Exp(expN).Dexp(nn).meanP(j,m)==0 && strcmpi(ctrlRF,'F')
Rn(nn)=Exp(expN).Dexp(nn).RFmean(j);
Rs(nn)=Exp(expN).Dexp(nn).RFstd(j);
elseif Exp(expN).Dexp(nn).meanP(j,m)==0 && strcmpi(ctrlRF,'L')
Rn(nn)=Exp(expN).Dexp(nn).RFmeanG(j);
Rs(nn)=Exp(expN).Dexp(nn).RFstdG(j);
end
end
end

View File

@@ -0,0 +1,227 @@
% ImageDisplay
global Exp
global ghandles
global zonePB
prntHt=0;
% Test for Bad MP cell array (usually 384 [NaN}'s)
% replaced length(Exp(expN).Dexp(1).MP) with MPnum
for mx=1:length(Exp(expN).Dexp(1).MP)
try
char((Exp(expN).Dexp(1).MP(mx).genename{1}(384)))
MPnum=mx;
catch
break
end
end
if expN==1,DexpN=(get(handles.DN1,'value')); end
if expN==2,DexpN=(get(handles.DN2,'value')); end
if expN==3,DexpN=(get(handles.DN3,'value')); end
Exp(expN).DexpN=DexpN;
if strcmp(Exp(expN).DexpType,'single')
DexpN=1;
elseif ~strcmp(Exp(expN).DexpType,'single')
if expN==1
set(handles.MPsldr1,'min',1,'max',MPnum)
DMnum=length(Exp(expN).Dexp(DexpN).DM.drug);
set(handles.DMsldr1,'min',1,'max',DMnum)
tPtsSize=size(Exp(expN).Dexp(DexpN).FexpScanBMtp{1,1},(3));
set(handles.Tptsldr1,'min',1,'max',tPtsSize)
end
if expN==2
set(handles.MPsldr2,'min',1,'max',MPnum)
DMnum=length(Exp(expN).Dexp(DexpN).DM.drug);
set(handles.DMsldr2,'min',1,'max',DMnum)
tPtsSize=size(Exp(expN).Dexp(DexpN).FexpScanBMtp{1,1},(3));
set(handles.Tptsldr2,'min',1,'max',tPtsSize)
end
if expN==3
set(handles.MPsldr3,'min',1,'max',MPnum)
DMnum=length(Exp(expN).Dexp(DexpN).DM.drug);
set(handles.DMsldr3,'min',1,'max',DMnum)
tPtsSize=size(Exp(expN).Dexp(DexpN).FexpScanBMtp{1,1},(3));
set(handles.Tptsldr3,'min',1,'max',tPtsSize)
end
end
ghandles=handles;
scan=Exp(expN).Dexp(DexpN).scan;
destPerMP=length(Exp(expN).Dexp(DexpN).DM.drug);
if expN==1,MPsel=floor(get(handles.MPsldr1,'value')); end
if expN==2,MPsel=floor(get(handles.MPsldr2,'value')); end
if expN==3,MPsel=floor(get(handles.MPsldr3,'value')); end
if expN==1,pertSel=floor(get(handles.DMsldr1,'value')); end
if expN==2,pertSel=floor(get(handles.DMsldr2,'value')); end
if expN==3,pertSel=floor(get(handles.DMsldr3,'value')); end
if expN==1,tPtSel=floor(get(handles.Tptsldr1,'value')); end
if expN==2,tPtSel=floor(get(handles.Tptsldr2,'value')); end
if expN==3,tPtSel=floor(get(handles.Tptsldr3,'value')); end
plateNum=(MPsel-1)*destPerMP + pertSel;
tPtsSize=[];
tPtsSize=length(Exp(expN).Dexp(DexpN).scan(plateNum).plate(1).tSeries(:))
n=1;
for ii=1:tPtsSize
if exist(fullfile(Exp(expN).Dexp(DexpN).ExpFoldr,num2str(plateNum),strcat((num2str(ii)),'.bmp'))) ==2; %the .bmp file exists
bmpLst(n)=ii
n=n+1
end
end
if tPtSel> tPtsSize
tPtSel=tPtsSize
end
if exist(fullfile(Exp(expN).Dexp(DexpN).ExpFoldr,num2str(plateNum),strcat((num2str(tPtSel)),'.bmp'))) ==0; %the .bmp file exists
tPtSel=bmpLst(find(bmpLst>tPtSel,1,'first'))
end
if expN==1,
set(handles.Tptsldr1,'max',tPtsSize);
set(ghandles.Tptsldr1,'max',tPtsSize);
set(handles.Tpted1,'string', num2str(tPtSel));
set(ghandles.Tpted1,'string', num2str(tPtSel));
if tPtsSize<=tPtSel,
set(handles.Tptsldr1,'value', tPtsSize)
set(ghandles.Tptsldr1,'value', tPtsSize)
tPtSel=tPtsSize
set(handles.Tpted1,'string', num2str(tPtsSize))
set(ghandles.Tpted1,'string', num2str(tPtsSize))
end
end
if expN==2
set(handles.Tptsldr2,'max',tPtsSize);
set(ghandles.Tptsldr2,'max',tPtsSize);
set(handles.Tpted2,'string', num2str(tPtSel));
set(ghandles.Tpted2,'string', num2str(tPtSel));
if tPtsSize<=tPtSel,
set(handles.Tptsldr2,'value', tPtsSize)
set(ghandles.Tptsldr2,'value', tPtsSize)
tPtSel=tPtsSize
set(handles.Tpted2,'string', num2str(tPtsSize))
set(ghandles.Tpted2,'string', num2str(tPtsSize))
end
end
if expN==3
set(handles.Tptsldr3,'max',tPtsSize);
set(ghandles.Tptsldr3,'max',tPtsSize);
set(handles.Tpted3,'string', num2str(tPtSel));
set(ghandles.Tpted3,'string', num2str(tPtSel));
if tPtsSize<=tPtSel,
set(handles.Tptsldr3,'value', tPtsSize)
set(ghandles.Tptsldr3,'value', tPtsSize)
tPtSel=tPtsSize
set(handles.Tpted3,'string', num2str(tPtsSize))
set(ghandles.Tpted3,'string', num2str(tPtsSize))
end
end
Exp(expN).Dexp(DexpN).MPsel=MPsel;
Exp(expN).Dexp(DexpN).destPerMP=destPerMP;
Exp(expN).Dexp(DexpN).pertSel=pertSel;
Exp(expN).Dexp(DexpN).tPtSel=tPtSel;
Exp(expN).Dexp(DexpN).plateNum=plateNum;
%try
I=imread(fullfile(Exp(expN).Dexp(DexpN).ExpFoldr,num2str(plateNum),strcat(num2str(tPtSel),'.bmp')));
%set(ghandles.Iaxes1,'CurrentAxes')
if expN==1, expAxes=ghandles.Iaxes1;end
if expN==2, expAxes=ghandles.Iaxes2;end
if expN==3, expAxes=ghandles.Iaxes3;end
axes(expAxes)
imshow(I)
set(expAxes,'xtick',[],'ytick',[])
DMstr=char(strcat('Agar-',Exp(expN).Dexp(DexpN).DM.media{pertSel},' ', ...
Exp(expN).Dexp(DexpN).DM.drug{pertSel},Exp(expN).Dexp(DexpN).DM.conc{pertSel},' ', ...
Exp(expN).Dexp(DexpN).DM.mod1{pertSel},Exp(expN).Dexp(DexpN).DM.conc1{pertSel},' ', ...
Exp(expN).Dexp(DexpN).DM.mod2{pertSel},Exp(expN).Dexp(DexpN).DM.conc2{pertSel}))
if expN==1,set(handles.DM1,'string',DMstr); end
if expN==2,set(handles.DM2,'string',DMstr); end
if expN==3,set(handles.DM3,'string',DMstr); end
tPtStr=strcat('T=', num2str(scan(1,plateNum).plate(1).t0Series(tPtSel)));
if expN==1,set(handles.tptTm1,'string',tPtStr); end
if expN==2,set(handles.tptTm2,'string',tPtStr); end
if expN==3,set(handles.tptTm3,'string',tPtStr); end
xp=char(Exp(expN).Dexp(DexpN).resDir);
if ispc
slashPos=strfind(char(Exp(expN).Dexp(DexpN).resDir),'\');
else
slashPos=strfind(char(Exp(expN).Dexp(DexpN).resDir),'/');
end
startPos=slashPos(length(slashPos)-2) +1;
endPos=(slashPos(length(slashPos)) -1);
expStrg=xp(startPos:end);
if expN==1,set(handles.expName1,'string',expStrg); end
if expN==2,set(handles.expName2,'string',expStrg); end
if expN==3,set(handles.expName3,'string',expStrg); end
try
htMapTogPBfg=0;
EZhtMap
catch
end
% zonePB handle control from left graph spot side to communicate to right side 23_0818
% This section was based on the zoneRad Section for Radiobuttons which were
% unusable with the new form of Radio Buttons in AppDesigner.
if expN==1
zonesel=1;
zonePB=1;
set(handles. zonePB1,'value',1)
set(handles. zonePB2,'value',0)
set(handles. zonePB3,'value',0)
set(handles.zonePB1,'BackgroundColor',[1.0 0.6 0.6])
set(handles.zonePB2,'BackgroundColor',[1.0 1.0 1.0])
set(handles.zonePB3,'BackgroundColor',[1.0 1.0 1.0])
orfLstSel=get(handles.GeneOrfTog,'value');
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(1).Dexp(DexpN).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(1).Dexp(DexpN).srtGnLst)
end
end
if expN==2
zonesel=2;
zonePB=2;
set(handles. zonePB2,'value',1)
set(handles. zonePB1,'value',0)
set(handles. zonePB3,'value',0)
set(handles.zonePB2,'BackgroundColor',[1.0 0.6 0.6])
set(handles.zonePB1,'BackgroundColor',[1.0 1.0 1.0])
set(handles.zonePB3,'BackgroundColor',[1.0 1.0 1.0])
orfLstSel=get(handles.GeneOrfTog,'value');
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(2).Dexp(DexpN).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(2).Dexp(DexpN).srtGnLst)
end
end
if expN==3
zonesel=3;
zonePB=3;
set(handles. zonePB3,'value',1)
set(handles. zonePB2,'value',0)
set(handles. zonePB1,'value',0)
set(handles.zonePB3,'BackgroundColor',[1.0 0.6 0.6]);
set(handles.zonePB1,'BackgroundColor',[1.0 1.0 1.0]);
set(handles.zonePB2,'BackgroundColor',[1.0 1.0 1.0]);
orfLstSel=get(handles.GeneOrfTog,'value');
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(3).Dexp(DexpN).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(3).Dexp(DexpN).srtGnLst)
end
end

View File

@@ -0,0 +1,122 @@
%EZcompositePlot
global Exp
global ghandles
if (Exp(expN).cTraceN>1 && length(Exp(expN).ll)<=(Exp(expN).cTraceIndx((Exp(expN).cTraceN)))) ||...
isempty(Exp(expN).ll)
return;
end
Exp(expN).CompositPlot=1;
if expN==1, OLaxes=ghandles.OLaxes1; end
if expN==2, OLaxes=ghandles.OLaxes2; end
if expN==3, OLaxes=ghandles.OLaxes3; end
cTraceN=mod(Exp(expN).cTraceN,10);
%cTraceN=Exp(expN).cTraceN;
if cTraceN==1, colour='b';
elseif cTraceN==2, colour='g';
elseif cTraceN==3, colour='r';
elseif cTraceN==4, colour='c';
elseif cTraceN==5, colour='m';
elseif cTraceN==6, colour='b';
elseif cTraceN==7, colour='g';
elseif cTraceN==8, colour='r';
elseif cTraceN==9, colour='c';
elseif cTraceN==0, colour='m';
end
AddCplot=1; %Test need for user question dialog boxS
if AddCplot==1,
cTraceN=Exp(expN).cTraceN
cTraceIndx=Exp(expN).cTraceIndx(cTraceN)
cTstart=cTraceIndx;
cTend=length(Exp(expN).ll);
jj=0; ii=0; RFcmpTraces=0; maxRFcmpLStd=0; maxRFcmpKStd=0; maxRFcmprStd=0;
for ic=cTstart:cTend
if strcmp(get(Exp(expN).hOL(ic),'visible'), 'on')
jj=jj+1;
mlstL(jj)=Exp(expN).ll(ic); mlstR(jj)=Exp(expN).rr(ic); mlstK(jj)=Exp(expN).kk(ic);
LBcheck=char(Exp(expN).hOLname(ic))
if isequal(LBcheck(4:6),'cmp'),
if Exp(expN).lstd(ic)> maxRFcmpLStd
maxRFcmpLStd=Exp(expN).lstd(ic);
ii=ii+1;
lstds(ii)=Exp(expN).lstd(ic);
RFcmpTraces(ii)=ic;
end
if Exp(expN).kstd(ic)> maxRFcmpKStd
maxRFcmpKStd=Exp(expN).kstd(ic);
end
if Exp(expN).rstd(ic)> maxRFcmprStd
maxRFcmprStd=Exp(expN).rstd(ic);
end
end
end
end
end
maxLstd=max(std(mlstL), maxRFcmpLStd);
maxKstd=max(std(mlstK), maxRFcmpKStd);
maxrstd=max(std(mlstR), maxRFcmprStd);
Exp(expN).cLmean(cTraceN)=mean(mlstL); Exp(expN).cLstd(cTraceN)=maxLstd;
Exp(expN).cRmean(cTraceN)=mean(mlstR); Exp(expN).cKstd(cTraceN)=maxKstd; %std(mlstR);
Exp(expN).cKmean(cTraceN)=mean(mlstK); Exp(expN).cRstd(cTraceN)=maxrstd; %std(mlstK);
% Mean calculation plot
l=Exp(expN).cLmean(cTraceN);
r=Exp(expN).cRmean(cTraceN);
K=Exp(expN).cKmean(cTraceN);
lslow=l + Exp(expN).cLstd(cTraceN); lfast=l - Exp(expN).cLstd(cTraceN);
rl=r - Exp(expN).cRstd(cTraceN); ru=r + Exp(expN).cRstd(cTraceN);
Kl=K - Exp(expN).cKstd(cTraceN); Ku=K + Exp(expN).cKstd(cTraceN);
clear g;
t=1:200;
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
Exp(expN).hCmean(cTraceN)=plot(OLaxes,t,g);hold on; % plot the composit mean of traces
Exp(expN).hBound1(cTraceN)=plot(OLaxes,t,gSlow,'y');
Exp(expN).hBound2(cTraceN)=plot(OLaxes,t,gFast,'y');
%c1=c1-((cTraceN-1)*0.2); c2=c2+((cTraceN-1)*0.2); c3=c3+((cTraceN-1)*0.2);
set(Exp(expN).hCmean(cTraceN),'color',colour) %[c1 c2 c3]) %Set latest trace red
set(Exp(expN).hCmean(cTraceN),'linewidth',3)
Lstr=num2str(Exp(expN).cLmean(cTraceN)); Lsstr=num2str(Exp(expN).cLstd(cTraceN));
Rstr=num2str(Exp(expN).cRmean(cTraceN)); Rsstr=num2str(Exp(expN).cRstd(cTraceN));
Kstr=num2str(Exp(expN).cKmean(cTraceN)); Ksstr=num2str(Exp(expN).cKstd(cTraceN));
try
cPlotLB=strcat('Composite', num2str(cTraceN),'->','L=',Lstr(1:4),';','Ls=',Lsstr(1:4),';',...
'r=',Rstr(1:4),';','rs=',Rsstr(2:6),';','K=',Kstr(1:4),';','Ks=',Ksstr(1:4))
catch
try
cPlotLB=strcat('Composite', num2str(cTraceN),'->','L=',Lstr(1:4),';','r=',Rstr(1:4),';','K=',Kstr(1:4),'-SingleSource');
catch
end
end
Exp(expN).cName(cTraceN)={cPlotLB};
if expN==1, set(ghandles.OLay1,'string', cPlotLB); end
if expN==2, set(ghandles.OLay2,'string', cPlotLB); end
if expN==3, set(ghandles.OLay3,'string', cPlotLB); end
% Hide source traces leaving only the Composite traces and STD traces
for i=1:length(Exp(expN).hOL)
set(Exp(expN).hOL(i),'Visible','off')
try set(Exp(expN).hOLb(i),'Visible','off')
catch
msg='No raw data RFcmp'
end
end
% Increment the CompositeTrace count and update the correlated reference OLAY cTraceIndx
Exp(expN).cTraceN=(Exp(expN).cTraceN) + 1 ;
Exp(expN).cTraceIndx(Exp(expN).cTraceN)=length(Exp(expN).hOL(:))+1;
%cPlotLB=strcat('Composite', num2str(cTraceN),'L=',num2str(Exp(expN).cLmean(cTraceN)),'Ls=',num2str(Exp(expN).cLstd(cTraceN))) %,'-',(Exp(expN).hOLname(cTraceIndx)))
%Exp(expN).cName(cTraceN)={cPlotLB};

View File

@@ -0,0 +1,558 @@
%EZdestConp.m GraphicDestinationPertibationComparison**15_821
%Produces Trend plots across perturbation (DrugMedia) plates
%Called by EZvDatatip.m and EZlstBoxExt.m
%Provides Trace data storage for use by EZfigTrendOL.m
if lstBoxCmpFlg==1
Exp(zoneSel).seltraceN=traceN;
seltraceN=traceN;
end
if expN==1 && get(ghandles.CompositeTog1,'value')==1 ||...
expN==2 && get(ghandles.CompositeTog2,'value')==1 ||...
expN==3 && get(ghandles.CompositeTog3,'value')==1
CompositeTrendFlg=1; else CompositeTrendFlg=0;
end
destPerMP=Exp(expN).Dexp(DexpN).destPerMP;
if EZdatatip==1 %adaptation for image spot selection
% plNums=plateNum;
% destPerMP=Exp(expN).Dexp(DexpN).destPerMP;
plNums=(MPsel-1)*destPerMP + (1:destPerMP)
zoneSel=expN;
tracN=Exp(zoneSel).traceN;
if zoneSel==1,Dlaxes=ghandles.Dlaxes1;Dkaxes=ghandles.Dkaxes1;Draxes=ghandles.Draxes1; end
if zoneSel==2,Dlaxes=ghandles.Dlaxes2;Dkaxes=ghandles.Dkaxes2;Draxes=ghandles.Draxes2; end
if zoneSel==3,Dlaxes=ghandles.Dlaxes3;Dkaxes=ghandles.Dkaxes3;Draxes=ghandles.Draxes3; end
if zoneSel==1,DNLaxes=ghandles.DNLaxes1;end
if zoneSel==2,DNLaxes=ghandles.DNLaxes2;end
if zoneSel==3,DNLaxes=ghandles.DNLaxes3;end
elseif EZdatatip==2 % adaption for Overlay plot selection
% destPerMP=Exp(expN).Dexp(DexpN).destPerMP;
MPlateN=ceil(OLplateNum/destPerMP);
plNums=(MPlateN-1)*destPerMP + (1:destPerMP);
zoneSel=expN;
tracN=Exp(zoneSel).traceN;
if zoneSel==1,Dlaxes=ghandles.Dlaxes1;Dkaxes=ghandles.Dkaxes1;Draxes=ghandles.Draxes1; end
if zoneSel==2,Dlaxes=ghandles.Dlaxes2;Dkaxes=ghandles.Dkaxes2;Draxes=ghandles.Draxes2; end
if zoneSel==3,Dlaxes=ghandles.Dlaxes3;Dkaxes=ghandles.Dkaxes3;Draxes=ghandles.Draxes3; end
if zoneSel==1,DNLaxes=ghandles.DNLaxes1;end %2016_0222
if zoneSel==2,DNLaxes=ghandles.DNLaxes2;end %2016_0222
if zoneSel==3,DNLaxes=ghandles.DNLaxes3;end %2016_0222
elseif EZdatatip==0
if lstBoxCmpFlg~=1
DexpN=Exp(expN).DexpN;
plNums=(LBmp-1)*destPerMP + (1:destPerMP);
tracN=Exp(zoneSel).traceN;
Exp(expN).Trace(traceN).DexpN=DexpN;
elseif lstBoxCmpFlg==1
DexpN=Exp(expN).DexpN;
tracN=Exp(zoneSel).traceN;
end
% determin if selection is a User chosen RF-****-mdG or RF-****-mdP
Lbl=cell2mat(selGnOrf);
if ~isempty(strfind(Lbl,'RF')) && ~isempty(strfind(Lbl,'md'))
strLoc=strfind(Lbl,'md');
MPloc=strfind(Lbl,':');
dMP=str2double(Lbl((MPloc(1)+1):(MPloc(2)-1)));
if strcmp(Lbl(strLoc:strLoc+3),'-mdG(');
RFmdFlg='mdG';
elseif strcmp(Lbl(strLoc:strLoc+3),'-mdP(')
RFmdFlg='mdP';
elseif strcmp(Lbl(strLoc:strLoc+2),'md(')
RFmdFlg='md';
end
end
if zoneSel==1,DNLaxes=ghandles.DNLaxes1;end %2016_0222
if zoneSel==2,DNLaxes=ghandles.DNLaxes2;end %2016_0222
if zoneSel==3,DNLaxes=ghandles.DNLaxes3;end %2016_0222
end % if EZdatatip==1 %adaptation for image spot selection
if EZdatatip==2 % Response to Overlay click
% seltraceN comes from EZvDatatip;
% Exp(OLay).seltraceN iscaptured from EZvDatatip
% if an OLay trace is selected
% else it is captured below if EZdatatip is not equal to 2
try
set(Exp(zoneSel).hLRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hLRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hL(seltraceN),'visible','on'); set(Exp(zoneSel).hLb(seltraceN),'visible','on');
catch, end
% Plot new intL
try
set(Exp(zoneSel).hintL(seltraceN),'visible','on'); set(Exp(zoneSel).hintLb(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hintLadj(seltraceN),'visible','on'); set(Exp(zoneSel).hintLadjb(seltraceN),'visible','on');
catch, end
if zoneSel==1,set(ghandles.DNLaxes1,'xlim',[-75,75]); end
for J=1:(tracN)
try
set(Exp(zoneSel).hKRF1(J),'visible','off'); set(Exp(zoneSel).hKRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hK(J),'visible','off'); set(Exp(zoneSel).hKb(J),'visible','off');
catch, end
end
try
set(Exp(zoneSel).hKRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hKRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hK(seltraceN),'visible','on'); set(Exp(zoneSel).hKb(seltraceN),'visible','on');
catch, end
for J=1:(tracN),
try
set(Exp(zoneSel).hrRF1(J),'visible','off'); set(Exp(zoneSel).hrRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hr(J),'visible','off'); set(Exp(zoneSel).hrb(J),'visible','off');
catch, end
end
try
set(Exp(zoneSel).hrRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hrRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hr(seltraceN),'visible','on'); set(Exp(zoneSel).hrb(seltraceN),'visible','on');
catch, end
else
% Plot RFmd1 and RFmd2 indexes
if EZdatatip==0
end
%if ~exist(RFmdFlg)
RF1mdIndx=Exp(zoneSel).Dexp(DexpN).RFmd1indx;
RF1mdPltN=Exp(zoneSel).Dexp(DexpN).RFmd1pltN;
RF2mdIndx=Exp(zoneSel).Dexp(DexpN).RFmd2indx;
RF2mdPltN=Exp(zoneSel).Dexp(DexpN).RFmd2pltN;
try Rn=Exp(expN).Dexp(DexpN).RFmean; catch, Rn=0; end
try Rs=Exp(expN).Dexp(DexpN).RFstd; catch, Rs=0; end
if isempty(RF1mdIndx)
try Rn=Exp(expN).Dexp(DexpN).RFmeanG; catch, Rn=0; end
try Rs=Exp(expN).Dexp(DexpN).RFstdG; catch, Rs=0; end
end
if lstBoxCmpFlg~=1
Exp(zoneSel).seltraceN=tracN;
seltraceN=tracN;
end
% Plot L K r for all pertibation(destination) Plates
if lstBoxCmpFlg~=1 % If selection is a "normal" item with a location in the label
try RF1mdNums=(RF1mdPltN-1)*destPerMP + (1:destPerMP); catch, end %RF1mdPltN %
try RF2mdNums=(RF2mdPltN-1)*destPerMP + (1:destPerMP); catch, end %RF2mdPltN %
for I=1:length(plNums),
if CompositeTrendFlg==0 || EZdatatip==1 %'Normal' gene/orf spot image or listbox item with location data
Exp(expN).Trace(traceN).dmSel=pertSel;
Exp(expN).Trace(traceN).DexpN=DexpN;
Exp(expN).Trace(traceN).UsrGLB=selGnOrf; %usrGnSp;
if ~exist('RFmdFlg')
lvals(I)=scan(1,plNums(I)).plate(1).CFout(indx,5);
if lvals(I)==0, lvals(I)=140; end
kvals(I)=scan(1,plNums(I)).plate(1).CFout(indx,3);
rvals(I)=scan(1,plNums(I)).plate(1).CFout(indx,4);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals=lvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrKvals=kvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).Usrrvals=rvals(I);
elseif strcmp(RFmdFlg,'mdG')
lvals(I)=Exp(expN).Dexp(DexpN).RFcmpGL.dm(I).med;
if lvals(I)==0, lvals(I)=140; end
kvals(I)=Exp(expN).Dexp(DexpN).RFcmpGK.dm(I).med;
rvals(I)=Exp(expN).Dexp(DexpN).RFcmpGr.dm(I).med;
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals=lvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrKvals=kvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).Usrrvals=rvals(I);
elseif strcmp(RFmdFlg,'mdP')
lvals(I)=Exp(expN).Dexp(DexpN).RFmedianP(I,dMP);
if lvals(I)==0, lvals(I)=140; end
kvals(I)=scan(1,plNums(I)).plate(1).CFout(indx,3); %No P med.Kvals /dms currently avail.
rvals(I)=scan(1,plNums(I)).plate(1).CFout(indx,4); %No P med.rvals /dms currently avail.
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals=lvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrKvals=kvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).Usrrvals=rvals(I);
elseif strcmp(RFmdFlg,'md')
lvals(I)=Exp(expN).Dexp(DexpN).RFmean(I);
if lvals(I)==0, lvals(I)=140; end
kvals(I)=scan(1,plNums(I)).plate(1).CFout(indx,3); %No P med.Kvals /dms currently avail.
rvals(I)=scan(1,plNums(I)).plate(1).CFout(indx,4); %No P med.rvals /dms currently avail.
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals=lvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrKvals=kvals(I);
Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).Usrrvals=rvals(I);
end
elseif CompositeTrendFlg==1 && EZdatatip==0 %Gene-Specifics Composite from listBox
lvals(I)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals));
if lvals(I)==0, lvals(I)=140; end
kvals(I)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrKvals));
rvals(I)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).Usrrvals));
end
try
if ~isempty(RF1mdIndx)
lvalsRF1md(I)=scan(1,RF1mdNums(I)).plate(1).CFout(RF1mdIndx(I),5);
if lvalsRF1md(I)==0, lvalsRF1md(I)=140; end
kvalsRF1md(I)=scan(1,RF1mdNums(I)).plate(1).CFout(RF1mdIndx(I),3);
rvalsRF1md(I)=scan(1,RF1mdNums(I)).plate(1).CFout(RF1mdIndx(I),4);
elseif ~isempty(Exp(expN).Dexp(DexpN).RFcmpGL.dm(I).med)
lvalsRF1md(I)=Exp(expN).Dexp(DexpN).RFcmpGL.dm(I).med;
if lvalsRF1md(I)==0, lvalsRF1md(I)=140; end
kvalsRF1md(I)=Exp(expN).Dexp(DexpN).RFcmpGK.dm(I).med;
rvalsRF1md(I)=Exp(expN).Dexp(DexpN).RFcmpGr.dm(I).med;
end
catch
end
try
lvalsRF2md(I)=scan(1,RF2mdNums(I)).plate(1).CFout(RF2mdIndx(I),5);
if lvalsRF2md(I)==0, lvalsRF2md(I)=140; end
kvalsRF2md(I)=scan(1,RF2mdNums(I)).plate(1).CFout(RF2mdIndx(I),3);
rvalsRF2md(I)=scan(1,RF2mdNums(I)).plate(1).CFout(RF2mdIndx(I),4);
catch
end
% Added for INTERACTION Calculating Utility 2016_0219
try
if CompositeTrendFlg==0 || EZdatatip==1
Xn(I)=Exp(expN).Dexp(DexpN).scan(plNums(I)).plate(1).CFout(indx,5);
Xln(I)=Exp(expN).Dexp(DexpN).scan(plNums(I)).plate(1).CFout(indx,11);
Xhn(I)=Exp(expN).Dexp(DexpN).scan(plNums(I)).plate(1).CFout(indx,12);
elseif CompositeTrendFlg==1 && EZdatatip~=1
Xn(I)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals));
Xln(I)=Xn(I) - std(cell2mat(Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals));
Xhn(I)=Xn(I) + std(cell2mat(Exp(expN).Trace(tracN).Dexp(DexpN).DM(I).UsrLvals));
end
if Xn(I)==0, deltaXR(I)=140; end
if isnan(Xhn(I))||isnan(Xln(I))|| Xhn(I)==0||Xln(I)==0||isnan(Rs(I))
deltaXR(I)=140;
elseif Xn(I) >=Rn(I)
deltaXR(I)=Xln(I)-(Rn(I)+Rs(I));
else
deltaXR(I)=Xhn(I)-(Rn(I)-Rs(I));
end
catch
msg='No Refs! ->No Interaction Calculations!'
end
end
elseif lstBoxCmpFlg==1 %Determine values of RF1cmp or RFcmpG or RFcmpP composites
for dm=1:destPerMP
if RFcmpGFlg==0 %RF1cmp or RF2cmp clicked
lvals(dm)=Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(dm).med;
if lvals(dm)==0, lvals(dm)=140; end
kvals(dm)=Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(dm).med;
rvals(dm)=Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(dm).med;
elseif RFcmpGFlg==1
lvals(dm)=Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).med;% Ls=num2str(l);
if lvals(dm)==0, lvals(dm)=140; end
kvals(dm)=Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).med; %Ks=num2str(K);
rvals(dm)=Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).med; %rs=num2str(r);
end
% Added for INTERACTION Calculating Utility 2016_0219
try
Xn(dm)=lvals(dm);
Xln(dm)=lvals(dm)- Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std ;
Xhn(dm)=lvals(dm)+ Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
if Xn(dm)==0, deltaXR(dm)=140; end
if isnan(Xhn(dm))||isnan(Xln(dm))|| Xhn(dm)==0||Xln(dm)==0||isnan(Rs(dm))
deltaXR(dm)=140;
elseif Xn(dm) >=Rn(dm)
deltaXR(dm)=Xln(dm)-(Rn(dm)+Rs(dm));
else
deltaXR(dm)=Xhn(dm)-(Rn(dm)-Rs(dm));
end
catch
msg='No Refs! ->No Interaction Calculations!'
end
end % for dm=1:destPerMP
Exp(expN).Trace(traceN).UsrGLB=selGnOrf; %Added 18_0118 for tickLabelStr issue in EZfigTrendOL.m assoc'd with RFcmpG(-)
end
% INTERACTION Plotting Utility 2016_021
try
if Rn(1)==0 % if Ref mean is zero
intL=0; proGrIntL=0; intLadj=0; proGrIntLadj=0;
intNormL=6.66;intNormLadj=6.66; proGrIntNormL=6.66;proGrIntNormLadj=6.66;
else
% if Xn(I)==0 || Xn(I)==140,intL =140; else intL=(Xn-Rn); end
intL=(Xn-Rn);
intL(Xn==0)=140;
intLadj=(deltaXR);
Exp(expN).Trace(tracN).Dexp(DexpN).UsrIntL=intL;
%{
intNormL=(intL) ./ Rn(1)
intNormLadj=((deltaXR)./ Rn(1))
proGrIntL=-(intL)
proGrIntLadj=-(deltaXR)
proGrIntNormL=-(intL ./ Rn(1))
proGrIntNormLadj=-((deltaXR)./ Rn(1))
%find where Xn(j)==0 and set interactL to a fixed Max interaction value
intNormL(find(Xn==0))=2
intNormLadj(find(Xn==0))=2
proGrIntLadj(find(Xn==0))=-2
proGrIntNormLadj(find(Xn==0))=-2
%}
end
catch
FailMessage='Problem with Reference Rn value; Unable to produce Interaction values! Ln119 EZdestComp'
end
hidem(ghandles.Daxes1)
if zoneSel==1,showm(ghandles.Dlaxes1);showm(ghandles.Dkaxes1);showm(ghandles.Draxes1);end
if zoneSel==2,showm(ghandles.Dlaxes2);showm(ghandles.Dkaxes2);showm(ghandles.Draxes2);end
if zoneSel==3,showm(ghandles.Dlaxes3);showm(ghandles.Dkaxes3);showm(ghandles.Draxes3);end
set(Dlaxes,'NextPlot','add'); set(Dkaxes,'NextPlot','add'); set(Draxes,'NextPlot','add')
if zoneSel==1,showm(ghandles.DNLaxes1); end
if zoneSel==2,showm(ghandles.DNLaxes2); end
if zoneSel==3,showm(ghandles.DNLaxes3); end
set(DNLaxes,'NextPlot','add');
% Make visible the current L plot and store it for retrieval by OLay code
if verLessThan('matlab','8.4')
else % accomodate new matlab changes after 2014a fix 23_0807
tempFig2=figure;
end
try % some experiments do not have ref. plates
Exp(zoneSel).hLRF1(tracN)=plot(Dlaxes,lvalsRF1md,1:destPerMP,'b'); hold on
catch
end
try
Exp(zoneSel).hLRF2(tracN)=plot(Dlaxes,lvalsRF2md,1:destPerMP,'c'); hold on
catch
end
try
Exp(zoneSel).hL(tracN)=plot(Dlaxes,lvals,1:destPerMP); Exp(zoneSel).hLb(tracN)=plot(Dlaxes,lvals,1:destPerMP,'rs');
catch
end
if zoneSel==1,set(ghandles.Dlaxes1,'xlim',[0,140]); end
if zoneSel==2,set(ghandles.Dlaxes2,'xlim',[0,140]); end
if zoneSel==3,set(ghandles.Dlaxes3,'xlim',[0,140]); end
% Make visible Plot for Interaction Data, Store and Hide unless a N (InteractionPBsel) set that plot on Top of the RawData Plots.
% Plot new intL
try
% zeroCLn=zeros(1,destPerMP)
% Exp(zoneSel).hzeroCLn=plot(DNLaxes,zeroCLn,1:destPerMP,'y');
Exp(zoneSel).hintL(tracN)=plot(DNLaxes,intL,1:destPerMP); Exp(zoneSel).hintLb(tracN)=plot(DNLaxes,intL,1:destPerMP,'rs');
Exp(zoneSel).hintLadj(tracN)=plot(DNLaxes,intLadj,1:destPerMP,'g'); Exp(zoneSel).hintLadjb(tracN)=plot(DNLaxes,intLadj,1:destPerMP,'gs');
catch
end
if zoneSel==1,set(ghandles.DNLaxes1,'xlim',[-75,75]); end
if zoneSel==2,set(ghandles.DNLaxes2,'xlim',[-75,75]); end
if zoneSel==3,set(ghandles.DNLaxes3,'xlim',[-75,75]); end
% intNormL
% intNormLadj
% ProGrIntLadj Plot
% ProGrintLadj Plot
% ProGrintNormL
% proGrintNormLadj
% Hide all K plots
for J=1:(tracN-1),
try
set(Exp(zoneSel).hKRF1(J),'visible','off'); set(Exp(zoneSel).hKRF2(J),'visible','off');
catch
end
try
set(Exp(zoneSel).hK(J),'visible','off'); set(Exp(zoneSel).hKb(J),'visible','off');
catch
end
end
% Make visible the current L plot and store it for retrieval by OLay code
try % some experiments do not have ref. plates
Exp(zoneSel).hKRF1(tracN)=plot(Dkaxes,kvalsRF1md,1:destPerMP,'b');
Exp(zoneSel).hKRF2(tracN)=plot(Dkaxes,kvalsRF2md,1:destPerMP,'c');
catch
end
try
Exp(zoneSel).hK(tracN)=plot(Dkaxes,kvals,1:destPerMP,'b'); Exp(zoneSel).hKb(tracN)=plot(Dkaxes,kvals,1:destPerMP,'rs');
catch
end
set(Dkaxes,'xlim',[0,200]) % max(kvals+20)
set(Dkaxes,'ycolor',[.9,.9,1])
% Hide all r plots
for J=1:(tracN-1),
try
set(Exp(zoneSel).hrRF1(J),'visible','off'); set(Exp(zoneSel).hrRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hr(J),'visible','off'); set(Exp(zoneSel).hrb(J),'visible','off');
catch, end
end
% Make visible the current r plot and store it for retrieval by OLay code
try %Some experiments do not have ref. plates
Exp(zoneSel).hrRF1(tracN)=plot(Draxes,rvalsRF1md,1:destPerMP,'b');
Exp(zoneSel).hrRF2(tracN)=plot(Draxes,rvalsRF2md,1:destPerMP,'c');
catch, end
try
Exp(zoneSel).hr(tracN)=plot(Draxes,rvals,1:destPerMP,'b'); Exp(zoneSel).hrb(tracN)=plot(Draxes,rvals,1:destPerMP,'rs');
catch, end
set(Draxes,'xlim',[0,1])
set(Draxes,'ycolor',[.9,.9,1])
end
if zoneSel==1, set(ghandles.geneOrfLKr1,'string', grfgenestr);end
if zoneSel==2, set(ghandles.geneOrfLKr2,'string', grfgenestr);end
if zoneSel==3, set(ghandles.geneOrfLKr3,'string', grfgenestr);end
% Display Selection PlotFilter
if Exp(4).interacPBsel==0
% replace ghandles.DNLaxes1 (Dlaxes2)etc. with a single
% Exp(zoneSel).DNLaxes,....
set(ghandles.Dlaxes1,'Visible','on')
set(ghandles.Dlaxes2,'Visible','on')
set(ghandles.Dlaxes3,'Visible','on')
set(ghandles.DNLaxes1,'Visible','off')
set(ghandles.DNLaxes2,'Visible','off')
set(ghandles.DNLaxes3,'Visible','off')
for n=1:Exp(zoneSel).traceN
try
set(Exp(zoneSel).hLRF1(n),'visible','off'); set(Exp(zoneSel).hLRF2(n),'visible','off');
catch, end
try
set(Exp(zoneSel).hL(n),'visible','off'); set(Exp(zoneSel).hLb(n),'visible','off');
catch, end
try
set(Exp(zoneSel).hintL(n),'visible','off'); set(Exp(zoneSel).hintLb(n),'visible','off');
catch, end
try
set(Exp(zoneSel).hintLadj(n),'visible','off'); set(Exp(zoneSel).hintLadjb(n),'visible','off');
catch, end
end
try
set(Exp(zoneSel).hLRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hLRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hL(seltraceN),'visible','on'); set(Exp(zoneSel).hLb(seltraceN),'visible','on');
catch, end
for i=1:Exp(zoneSel).expLoadCnt,
try set(Exp(zoneSel).hzeroCLn(i),'visible','off'); catch ME, end
end
elseif Exp(4).interacPBsel==1
set(ghandles.DNLaxes1,'Visible','on')
set(ghandles.DNLaxes2,'Visible','on')
set(ghandles.DNLaxes3,'Visible','on')
set(ghandles.Dlaxes1,'Visible','off')
set(ghandles.Dlaxes2,'Visible','off')
set(ghandles.Dlaxes3,'Visible','off')
for n=1:Exp(zoneSel).traceN
try set(Exp(zoneSel).hLRF1(n),'visible','off'); catch, end
try set(Exp(zoneSel).hLRF2(n),'visible','off'); catch, end
try set(Exp(zoneSel).hL(n),'visible','off'); set(Exp(zoneSel).hLb(n),'visible','off'); catch, end
try set(Exp(zoneSel).hintL(n),'visible','off'); set(Exp(zoneSel).hintLb(n),'visible','off'); catch, end
try set(Exp(zoneSel).hintLadj(n),'visible','off'); set(Exp(zoneSel).hintLadjb(n),'visible','off'); catch, end
end
try set(Exp(zoneSel).hintL(seltraceN),'visible','on'); set(Exp(zoneSel).hintLb(seltraceN),'visible','on'); catch, end
try set(Exp(zoneSel).hintLadj(seltraceN),'visible','on'); set(Exp(zoneSel).hintLadjb(seltraceN),'visible','on'); catch, end
for i=1:Exp(zoneSel).expLoadCnt,
try set(Exp(zoneSel).hzeroCLn(i),'visible','on'); catch ME, end
end
elseif Exp(4).interacPBsel==2
end
if verLessThan('matlab','8.4')
else % accomodate new matlab changes after 2014a fix update 23_0807
close(tempFig2)
end
% Deprecated functions
%{
for J=1:(tracN),
try
set(Exp(zoneSel).hintL(J),'visible','off'); set(Exp(zoneSel).hintLb(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hintLadj(J),'visible','off'); set(Exp(zoneSel).hintLadjb(J),'visible','off');
catch, end
end
%}
%{
for J=1:(tracN),
try
set(Exp(zoneSel).hLRF1(J),'visible','off'); set(Exp(zoneSel).hLRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hL(J),'visible','off'); set(Exp(zoneSel).hLb(J),'visible','off');
catch, end
end
%}
%Hide all L plots
%{
for J=1:(tracN-1),
try
set(Exp(zoneSel).hLRF1(J),'visible','off'); set(Exp(zoneSel).hLRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hL(J),'visible','off'); set(Exp(zoneSel).hLb(J),'visible','off');
catch, end
end
%}
%Hide all intL plots
%{
for J=1:(tracN),
try
set(Exp(zoneSel).hintL(J),'visible','off'); set(Exp(zoneSel).hintLb(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hintLadj(J),'visible','off'); set(Exp(zoneSel).hintLadjb(J),'visible','off');
catch, end
end
%}
% set(Dlaxes,'xlim',[0,max(lvals+20)])
% catch
% set(Dlaxes,'NextPlot','add');
% Exp(zoneSel).hL(tracN)=plot(Dlaxes,lvals,1:destPerMP);
% Exp(zoneSel).hLb(tracN)=plot(Dlaxes,lvals,1:destPerMP,'rs');
%hDaxL=plot(Dlaxes,lvals,1:destPerMP);hold(Dlaxes); plot(Dlaxes,lvals,1:destPerMP,'rs');...
% hold(Dlaxes);
%{
if max(lvals)>90
set(Dlaxes,'xlim',[0,max(lvals+20)])
else
set(Dlaxes,'xlim',[0,90])
end
%}
%end
%{
try
hDaxK=plot(Dkaxes,kvalsRF1md,1:destPerMP,'y'); hold(Dkaxes); plot(Dkaxes,kvalsRF2md,1:destPerMP,'y');...
plot(Dkaxes,kvals,1:destPerMP); plot(Dkaxes,kvals,1:destPerMP,'rs');...
hold(Dkaxes);
set(Dkaxes,'xlim',[0,200]) %max(kvals+20)
set(Dkaxes,'ycolor',[.9,.9,1])
catch
set(Dkaxes,'NextPlot','replace');
hDaxK=plot(Dkaxes,kvals,1:destPerMP); hold(Dkaxes); plot(Dkaxes,kvals,1:destPerMP,'rs');...
hold(Dkaxes);
set(Dkaxes,'xlim',[0,200]) %max(kvals+20)
set(Dkaxes,'ycolor',[.9,.9,1])
end
%}
%{
try
hDaxR=plot(Draxes,rvalsRF1md,1:destPerMP,'y'); hold(Draxes); plot(Draxes,rvalsRF2md,1:destPerMP,'y');...
plot(Draxes,rvals,1:destPerMP); plot(Draxes,rvals,1:destPerMP,'rs');...
hold(Draxes);
set(Draxes,'xlim',[0,1])
set(Draxes,'ycolor',[.9,.9,1])
catch
set(Draxes,'NextPlot','replace')
hDaxR=plot(Draxes,rvals,1:destPerMP); hold(Draxes); plot(Draxes,rvals,1:destPerMP,'rs');...
hold(Draxes);
set(Draxes,'xlim',[0,1])
set(Draxes,'ycolor',[.9,.9,1])
end
%}

View File

@@ -0,0 +1,105 @@
global Exp
try % Try the whole routine
if strcmp(Exp(expN).DexpType,'multi') ||...
strcmp(Exp(expN).DexpType,'chrono')
DexpN=n;
end
rnames=[];
data=[];
try
cnames={'RF Name','Median','Mean','STD','Minimum','Maximum'};
rCnt=0;
RFfilename= fullfile(Exp(expN).Dexp(DexpN).resDir,'PrintResults','!RFsDiagnostics.txt');
fid=fopen(RFfilename,'w'); %('RFdiagnostic.txt','w');
ftitle= strcat(ExpPath,':::Reference Diagnostic Values');
try
fprintf(fid,'%s\n',ftitle);
catch mErr
errorMessage=mErr.message
msg='Check Permissions of PrintResult folder. !RFsDiagnostics.txt may not be created';
warning((msg));
warndlg('Check Permissions of PrintResult folder. !RFsDiagnostics.txt may not be created');
end
fprintf(fid,'%s\t %s\t %s\t %s\t %s\t %s','RF Name','Median','Mean','STD','Min','Max');
fprintf(fid,'\n');
rnames= cell(1,1);
for d=1:DMnum
try
% RF1 MasterPlate Stats
RFmd1LB=Exp(expN).Dexp(DexpN).RFmd1LB(d);
mval1=Exp(expN).Dexp(DexpN).RFmd1val(d);
mean1=Exp(expN).Dexp(DexpN).mean1(d);
std1=Exp(expN).Dexp(DexpN).std1(d);
min1=Exp(expN).Dexp(DexpN).min1(d);
max1=Exp(expN).Dexp(DexpN).max1(d);
fprintf(fid,'%s\t %7.2f\t %7.4f\t %7.4f\t %7.4f\t %7.4f\t\n',...
cell2mat(RFmd1LB), mval1,mean1,std1,min1,max1)
rCnt=rCnt+1;
data(rCnt,1:5)=[mval1,mean1,std1,min1,max1];
rnames(rCnt)=RFmd1LB;
catch
message='No RF1 MasterPlate'
end
try
% RF2 MasterPlate Stats
RFmd2LB=Exp(expN).Dexp(DexpN).RFmd2LB(d);
mval2=Exp(expN).Dexp(DexpN).RFmd2val(d);
mean2=Exp(expN).Dexp(DexpN).mean2(d);
std2=Exp(expN).Dexp(DexpN).std2(d);
min2=Exp(expN).Dexp(DexpN).min2(d);
max2=Exp(expN).Dexp(DexpN).max2(d);
fprintf(fid,'%s\t %7.2f\t %7.4f\t %7.4f\t %7.4f\t %7.4f\t\n', cell2mat(RFmd2LB),mval2,mean2,std2,min2,max2)
rCnt=rCnt+1;
data(rCnt,1:5)= [mval2,mean2,std2,min2,max2];
rnames(rCnt)= RFmd2LB;
catch
message='No RF2 MasterPlate'
end
% Distributed Global stats
try
RFmdGLB=Exp(expN).Dexp(DexpN).RFmdGLB(d);
mvalsDG=Exp(expN).Dexp(DexpN).RFmedianG(d);
RFmeanG=Exp(expN).Dexp(DexpN).RFmeanG(d);
RFstdG=Exp(expN).Dexp(DexpN).RFstdG(d);
maxG=Exp(expN).Dexp(DexpN).RFmaxG(d);
minG=Exp(expN).Dexp(DexpN).RFminG(d);
fprintf(fid,'%s\t %7.2f\t %7.4f\t %7.4f\t %7.4f\t %7.4f\t\n', cell2mat(RFmdGLB),mvalsDG,RFmeanG,RFstdG,minG,maxG)
rCnt=rCnt+1;
data(rCnt,1:5)=[mvalsDG,RFmeanG,RFstdG,minG,maxG];
rnames(rCnt)=RFmdGLB;
catch
message='No RF2 MasterPlate'
end
end
% Distributed RF1 Plates Stats Print
try
for d=1:DMnum
for mm=1:length(dMPs)
% RFmd1posD= Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm));
% dMP= Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm)); %This is a storage of the MasterPlate used NOT the ScanPlate? WeMight wish to store the ScanPlateNumber also???
% rf1scNdisp= Exp(expN).Dexp(DexpN).RFmdPscanN(d,dMPs(mm));
RFmdPLB=Exp(expN).Dexp(DexpN).RFmdPLB(d,dMPs(mm));
mval1Disp=Exp(expN).Dexp(DexpN).RFmedianP(d,dMPs(mm));
mean1Disp=Exp(expN).Dexp(DexpN).meanP(d,dMPs(mm));
std1Disp=Exp(expN).Dexp(DexpN).stdP(d,dMPs(mm));
minDisp=Exp(expN).Dexp(DexpN).minP(d,dMPs(mm));
maxDisp=Exp(expN).Dexp(DexpN).maxP(d,dMPs(mm));
fprintf(fid,'%s\t %7.2f\t %7.4f\t %7.4f\t %7.4f\t %7.4f\t\n', cell2mat(RFmdPLB),mval1Disp,mean1Disp,std1Disp,minDisp,maxDisp);
rCnt=rCnt+1;
data(rCnt,1:5)=expjobsfld[mval1Disp,mean1Disp,std1Disp,minDisp,maxDisp];
rnames(rCnt)=RFmdPLB;
end
end
catch
message='No Distributed RF1 MasterPlates'
end
catch
Warndlg('Problem writing the RFdiagnosticSheet.txt file')
end
fclose(fid)
catch
msg='EZdiagRFsSheet.m failed. Check Permissions'
end

View File

@@ -0,0 +1,63 @@
% Diagnostic sheet called by EZvInitLoad.m, EZexpSel.m ?EZinteractDev_.m?
global Exp
intLfilename1=fullfile(Exp(expN).resDir,'PrintResults','!RFsDiagnostics.txt');
fid=fopen(RFdiagnostic,'w');
ln=1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\ExpName:::','Reference Diagnostic Values');
% Will need to reverse the equals pulling data from the Exp source as needed
% to populate the printout diagnostice sheet.
for d=1:DMnum
fprintf(fid,'RF Name\Median\Mean\STD\Max\Min');
fprintf(fid,'\n')
fprintf(fid,'\n')
RFmd1pos= Exp(expN).RFmd1indx(d+1);
RF1mp= Exp(expN).RFmd1pltN;
std1= Exp(expN).std1(:);
mean1= Exp(expN).mean1(:);
min1= Exp(expN).min1(:);
max1= Exp(expN).max1(:);
RFmd2pos= Exp(expN).RFmd2indx(d+1);
RF2mp= Exp(expN).RFmd2pltN;
std2= Exp(expN).std2(d+1);
mean2= Exp(expN).mean2(d+1);
min2= Exp(expN).min2(d,dMPs(mm));
max2= Exp(expN).max2(d,dMPs(mm));
nzPosIndxDG= Exp(expN).RFmdGindx(d);
dMP= Exp(expN).RFmdGpltN(d);
rf1scNdisp= Exp(expN).RFmdGscanN(d);
mvalsDGx= Exp(expN).RFmedianG(d);
RFstdGx= Exp(expN).RFstdG(d);
RFmeanGx= Exp(expN).RFmeanG(d);
RFmeanG=Exp(expN).minG(d,dMPs(mm));
maxG= Exp(expN).maxG(d,dMPs(mm));
minG= Exp(expN).minG(d,dMPs(mm));
end
for mm=1:length(dMPs)
for d=1:DMnum
RFmd1posD= Exp(expN).RFmdPindx(d,dMPs(mm));
dMP= Exp(expN).RFmdPpltN(d,dMPs(mm)); % This is a storage of the MasterPlate used NOT the ScanPlate? WeMight wish to store the ScanPlateNumber also???
rf1scNdisp= Exp(expN).RFmdPscanN(d,dMPs(mm));
mval1Disp= Exp(expN).RFmedianP(d,dMPs(mm));
std1Disp= Exp(expN).stdP(d,dMPs(mm));
mean1Disp= Exp(expN).meanP(d,dMPs(mm));
minDisp= Exp(expN).minP(d,dMPs(mm));
maxDisp= Exp(expN).maxP(d,dMPs(mm));
end
end
%{
RFcombValList= cat(1,medValList1{d+1},medValList2{d+1});
rf12mean(RFcombValList)= Exp(expN).RFmean(d+1);
std12(RFcombValList)= Exp(expN).RFstd(d+1);
Exp(expN).RFmin(d+1)=min(RFcombValList);
Exp(expN).RFmax(d+1)=max(RFcombValList);
%}
fclose(fid)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,549 @@
%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
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 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
catch
end
end
end
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
catch
end
end
end
% end <- to stop here
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
end
%{
if isequal(tempLB(4:6),'cmp')||isequal(tempLB(3:6),'cmpG'),
RFcmpFlg=1;
else
RFcmpFlg=0;
end
%}
end
% 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
% 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
% end
% 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
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
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
% 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
end
end
% 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
end
% 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
% 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
end
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
hold off
end %if userPars.boxplotFlg~=1 %PLOT OVERLAY OF TRENDS 266

View File

@@ -0,0 +1,405 @@
%EZhtMap
global Exp
global ghandles
global adj
global flip
if isempty(adj), adj=1.5; flip='T'; end
load('MyColormap1','modJet1')
load('MyColormap2','modJet2')
%load('MyColormap2','modJet0')
%adj=1.5;
cleanPallet=zeros(24,16);
if expN==1,DexpN=(get(handles.DN1,'value')); end
if expN==2,DexpN=(get(handles.DN2,'value')); end
if expN==3,DexpN=(get(handles.DN3,'value')); end
Exp(expN).DexpN=DexpN;
try
if expN==1,MPsel=floor(get(ghandles.MPsldr1,'value')); end
if expN==2,MPsel=floor(get(ghandles.MPsldr2,'value')); end
if expN==3,MPsel=floor(get(ghandles.MPsldr3,'value')); end
if expN==1,pertSel=floor(get(ghandles.DMsldr1,'value')); end
if expN==2,pertSel=floor(get(ghandles.DMsldr2,'value')); end
if expN==3,pertSel=floor(get(ghandles.DMsldr3,'value')); end
catch
MPsel=1;
pertSel=1;
end
if expN==1, expAxes=ghandles.Iaxes1;end
if expN==2, expAxes=ghandles.Iaxes2;end
if expN==3, expAxes=ghandles.Iaxes3;end
dmN=length(Exp(expN).Dexp(DexpN).DM.drug);
mpSel=Exp(expN).Dexp(DexpN).MPsel;
dmSel=Exp(expN).Dexp(DexpN).pertSel;
scnN=dmSel + (dmN*(mpSel-1));
if expN==1,htTog=Exp(1).htmapPBsel;end
if expN==2,htTog=Exp(2).htmapPBsel;end
if expN==3,htTog=Exp(3).htmapPBsel;end
if htTog==0
colormap(flipud(modJet1)) % colormap(modJet2)
L=Exp(expN).Dexp(DexpN).scan(scnN).plate.CFout(:,5);
L=reshape(L,24,16);
LpStd=mean(nonzeros(L(:)))+(adj*std(nonzeros(L(:))));
LnStd=mean(nonzeros(L(:))-(adj*std(nonzeros(L(:)))));
% Data rescaling for Heatmap display (color range- mean+/std*adjustment)
for i=1:size(L,1)
for j=1:size(L,2)
if L(i,j)>LpStd,
L4hMap(i,j)=LpStd;
elseif L(i,j)<LnStd && L(i,j)~=0
L4hMap(i,j)=LnStd;
elseif L(i,j)==0
L4hMap(i,j)=LpStd+0.2*std(L(:));
else
L4hMap(i,j)=L(i,j);
end
end
end
% L4hMap=1-(L4hMap/(max(L4hMap(:))));
if prntHt==0
hTogHt=figure;
h=image(cleanPallet); % hTogHt=image(cleanPallet);
h=image(L4hMap); % hTogHt=image(L4hMap);
if isequal(char(flip) , 'T')
colormap(flipud(modJet1)) %(flipud(hot)) %(jet); % invert heat map for L so that fastgrowth is 'hotter' red
else
colormap(modJet2)
end
set(h,'CDataMapping','scale') %set(hTogHt,'CDataMapping','scale')
else
figure
h=image(cleanPallet); %hTogHt=image(cleanPallet);
h=image(L4hMap); %hTogHt=image(L4hMap);
if isequal(char(flip) , 'T')
colormap(flipud(modJet1)) %(flipud(hot)) %(jet); % invert heat map for L so that fastgrowth is 'hotter' red
else
colormap(modJet2)
end
set(h,'CDataMapping','scale')
end
% h=image(L);
% colormap(flipud(hot)) %(jet); % invert heat map for L so that fastgrowth is 'hotter' red
% set(h,'CDataMapping','scale')
if expN==1,cla(handles.HtMap1);copyobj(h,ghandles.HtMap1);end
if expN==2,cla(handles.HtMap2);copyobj(h,ghandles.HtMap2);end
if expN==3,cla(handles.HtMap3);copyobj(h,ghandles.HtMap3);end
if prntHt==0
%if expN==1,cla(handles.HtMap1);copyobj(hTogHt,ghandles.HtMap1);end
%if expN==2,cla(handles.HtMap2);copyobj(hTogHt,ghandles.HtMap2);end
%if expN==3,cla(handles.HtMap3);copyobj(hTogHt,ghandles.HtMap3);end
close(hTogHt)
else %if clicking to produce a 'printable' save display
set(gca,'XDir','reverse')
set(gca,'XTickMode','manual')
%set(gca,'XTickLabel',{'2';'4';'6';'8';'10';'12';'14';'16'})
%set(gca,'XTickLabel',{'16';'14';'12';'10';'8';'6';'4';'2'})
%set(gca,'XTick',{0;2;4;6;8;10;12;14;16;18})
colorbar
expLblHtmap=Exp(expN).Dexp.ExpFoldr;
mediaLBhtmap=char(strcat(', Agar-',Exp(expN).Dexp(DexpN).DM.media{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.drug{pertSel},Exp(expN).Dexp(DexpN).DM.conc{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod1{pertSel},Exp(expN).Dexp(DexpN).DM.conc1{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod2{pertSel},Exp(expN).Dexp(DexpN).DM.conc2{pertSel}));
title({strcat('L HeatMap for - ',expLblHtmap),strcat('MP=',num2str(mpSel),' ,DM=',num2str(dmSel),mediaLBhtmap)})
end
colormap(modJet1)
elseif htTog==1
colormap(modJet1);
K=Exp(expN).Dexp(DexpN).scan(scnN).plate.CFout(:,3);
K=reshape(K,24,16);
%Data rescaling for Heatmap display (color ranged mean+/std*multiplier)
pStd=mean(nonzeros(K(:)))+(adj*std(nonzeros(K(:))));
nStd=mean(nonzeros(K(:)))-(adj*std(nonzeros(K(:))));
for i=1:size(K,1)
for j=1:size(K,2)
if K(i,j)>pStd,
hMap(i,j)=pStd;
elseif K(i,j)<nStd && K(i,j)~=0
hMap(i,j)=nStd;
elseif K(i,j)==0
hMap(i,j)=nStd-0.2*std(K(:));
else
hMap(i,j)=K(i,j);
end
end
end
if prntHt==0
hTogHt=figure;
h=image(cleanPallet);
else
figure
h=image(cleanPallet);
end
% h=image(cleanPallet);
h=image(hMap);
colormap(modJet1); % heat map
set(h,'CDataMapping','scale')
if expN==1,cla(handles.HtMap1);copyobj(h,ghandles.HtMap1);end
if expN==2,cla(handles.HtMap2);copyobj(h,ghandles.HtMap2);end
if expN==3,cla(handles.HtMap3);copyobj(h,ghandles.HtMap3);end
if prntHt==0
close(hTogHt)
else
set(gca,'XDir','reverse')
set(gca,'XTickMode','manual')
%set(gca,'XTickLabel',{'2';'4';'6';'8';'10';'12';'14';'16'})
%set(gca,'XTickLabel',{'16';'14';'12';'10';'8';'6';'4';'2'})
%set(gca,'XTick',{0;2;4;6;8;10;12;14;16;18})
colorbar
expLblHtmap=Exp(expN).Dexp.ExpFoldr;
mediaLBhtmap=char(strcat(', Agar-',Exp(expN).Dexp(DexpN).DM.media{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.drug{pertSel},Exp(expN).Dexp(DexpN).DM.conc{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod1{pertSel},Exp(expN).Dexp(DexpN).DM.conc1{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod2{pertSel},Exp(expN).Dexp(DexpN).DM.conc2{pertSel}));
title({strcat('K HeatMap for - ',expLblHtmap),strcat('MP=',num2str(mpSel),' ,DM=',num2str(dmSel),mediaLBhtmap)})
end
elseif htTog==2
colormap(modJet1);
r=Exp(expN).Dexp(DexpN).scan(scnN).plate.CFout(:,4);
r=reshape(r,24,16);
% Data rescaling for Heatmap display (color ranged mean+/std*multiplier)
pStd=mean(nonzeros(r(:)))+(adj*std(nonzeros(r(:))));
nStd=mean(nonzeros(r(:)))-(adj*std(nonzeros(r(:))));
for i=1:size(r,1)
for j=1:size(r,2)
if r(i,j)>pStd,
hMap(i,j)=pStd;
elseif r(i,j)<nStd && r(i,j)~=0,
hMap(i,j)=nStd;
elseif r(i,j)==0
hMap(i,j)=nStd-0.2*std(r(:));
else
hMap(i,j)=r(i,j);
end
end
end
if prntHt==0
hTogHt=figure;
h=image(cleanPallet);
else
figure
h=image(cleanPallet);
end
% h=image(cleanPallet);
h=image(hMap);
colormap(modJet1); % heat map
set(h,'CDataMapping','scale')
if expN==1,cla(handles.HtMap1);copyobj(h,ghandles.HtMap1);end
if expN==2,cla(handles.HtMap2);copyobj(h,ghandles.HtMap2);end
if expN==3,cla(handles.HtMap3);copyobj(h,ghandles.HtMap3);end
if prntHt==0
close(hTogHt)
else
set(gca,'XDir','reverse')
set(gca,'XTickMode','manual')
%set(gca,'XTickLabel',{'2';'4';'6';'8';'10';'12';'14';'16'})
%set(gca,'XTickLabel',{'16';'14';'12';'10';'8';'6';'4';'2'})
%set(gca,'XTick',{0;2;4;6;8;10;12;14;16;18})
colorbar
expLblHtmap=Exp(expN).Dexp.ExpFoldr;
mediaLBhtmap=char(strcat(', Agar-',Exp(expN).Dexp(DexpN).DM.media{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.drug{pertSel},Exp(expN).Dexp(DexpN).DM.conc{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod1{pertSel},Exp(expN).Dexp(DexpN).DM.conc1{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod2{pertSel},Exp(expN).Dexp(DexpN).DM.conc2{pertSel}));
title({strcat('r HeatMap for - ',expLblHtmap),strcat('MP=',num2str(mpSel),' ,DM=',num2str(dmSel),mediaLBhtmap)})
end
elseif htTog==3
RFconfig=Exp(expN).RFconfig; %ZoneRelated
if htMapTogPBfg==1
if RFconfig==2,
QctrlRF='Select Distributed Control RF option: (G)Global, (L)Local';
QpertRF='Select Distributed Perturbation RF option: (G)Global, (L)Local';
defaultanswer={'G','L'}; %{'80','60','100','3,4,5','N','39','Y','G','L'};
try defaultanswer=Exp(expN).htmapRFanswer; catch, defaultanswer={'G','L'};end %ZoneRelated
end
if RFconfig==3,
QctrlRF='Select Control RF option: (F)FullPlate, (G)GlobalDistributed, (L)LocalDistributed';
QpertRF='Select Perturbation RF option: (F)FullPlate, (G)GlobalDistributed, (L)LocalDistributed';
defaultanswer={'F','L'}; %{'80','60','100','3,4,5','N','39','Y','F','L'};
try defaultanswer=Exp(expN).htmapRFanswer; catch, defaultanswer={'F','L'}; end %ZoneRelated
end
if RFconfig~=1,
prompt={QctrlRF,QpertRF};
name='Interaction User Input';
numlines=1;
answer=inputdlg(prompt,name,numlines,defaultanswer);
if RFconfig==2,
if ~ismember(answer{1},['g' 'G' 'l' 'L']), answer(1)=defaultanswer(1); end
if ~ismember(answer{2},['g' 'G' 'l' 'L']), answer(2)=defaultanswer(2); end
end
if RFconfig==3,
if ~ismember(answer{1},['f' 'F' 'g' 'G' 'l' 'L']), answer(1)=defaultanswer(1); end
if ~ismember(answer{2},['f' 'F' 'g' 'G' 'l' 'L']), answer(2)=defaultanswer(2); end
end
answer(1)=strrep(answer(1),'f','F'); answer(1)=strrep(answer(1),'g','G'); answer(1)=strrep(answer(1),'l','L');
answer(2)=strrep(answer(2),'f','F'); answer(2)=strrep(answer(2),'g','G'); answer(2)=strrep(answer(2),'l','L');
Exp(expN).htmapRFanswer=answer; %ZoneRelated %store user last selections
end
end
htMapTogPBfg=0;
answer=Exp(expN).htmapRFanswer; %ZoneRelated
% for j=1:1 %dmN
% for m=1:1 %mpN
j=dmSel;
DM0=dmSel; DMj=dmSel;
m=mpSel;
anN=[1 2];
% Call subroutine to interpret user RF inputs & det. Rn and Rs values
EZintRFs
scnNdm1=1 + (dmN*(m-1))
scnN=j + (dmN*(m-1)) % 1,6,11..; 2,7,12 ..; 3,8,13..;
Xn{m,j,1}=[];
Xln{m,j,1}=[];
Xhn{m,j,1}=[];
Xn{m,1,:}=Exp(expN).Dexp(DexpN).scan(scnNdm1).plate(1).CFout(:,5);
Xln{m,1,:}=Exp(expN).Dexp(DexpN).scan(scnNdm1).plate(1).CFout(:,11); %Exp(expN).Dexp(DexpN).scan(DM{j}(m)).plate(1).CFout(:,11);
Xhn{m,1,:}=Exp(expN).Dexp(DexpN).scan(scnNdm1).plate(1).CFout(:,12); %Exp(expN).Dexp(DexpN).scan(DM{j}(m)).plate(1).CFout(:,12);
Xn{m,j,:}=Exp(expN).Dexp(DexpN).scan(scnN).plate(1).CFout(:,5); %Exp(expN).Dexp(DexpN).scan(DM{j}(m)).plate(1).CFout(:,5);
htmpCpyXn=Xn{m,j,:}'; % Use to find and delineate no growth spots with 999 in text field (infinite interaction) value;
Xn{m,j,:}(Xn{m,j,:}==0)=1.2*(max(Xn{m,j,:})); %to keep the colormap scale tighter %=140;
Xln{m,j,:}=Exp(expN).Dexp(DexpN).scan(scnN).plate(1).CFout(:,11); %Exp(expN).Dexp(DexpN).scan(DM{j}(m)).plate(1).CFout(:,11);
Xhn{m,j,:}=Exp(expN).Dexp(DexpN).scan(scnN).plate(1).CFout(:,12); %Exp(expN).Dexp(DexpN).scan(DM{j}(m)).plate(1).CFout(:,12);
%intL{m,j,:}=((Xn{m,j,:} - Xn{m,1,:}) - (Rn(j)-Rn(1)));
intL=((Xn{m,j,:} - Xn{m,1,:}) - (Rn(j)-Rn(1)));
Exp(expN).HtMpIntN2=intL; %ZoneRelated
%{
intL{m,j,:}(Xn{m,j,:}==1.2*(max(Xn{m,j,:})))=100;
intL{m,j,:}(intL{m,j,:}==0)=-0.0001;
%}
percentRs=100;
RsReduced(j)=percentRs/100* Rs(j);
deltaRp(j)=(Rn(j)+RsReduced(j))-(Rn(1)+RsReduced(1));
deltaRn(j)=(Rn(j)-RsReduced(j))-(Rn(1)-RsReduced(1));
if deltaRp(j)==0, deltaRp(j)=0.0002; end
if deltaRn(j)==0, deltaRn(j)=0.0002; end
deltaYp=zeros(1,384); deltaYn=zeros(1,384);
deltaXRp=zeros(1,384); deltaXRn=zeros(1,384);
deltaXR{m,j}=zeros(1,384);
for i=1:384
% Select lower or upper boundary value based on Yn(1)
if Xn{m,j}(i) >=(Rn(j)+RsReduced(j));
deltaYp(i)= Xln{m,j}(i)-Xln{m,1}(i);
elseif Xn{m,j}(i) < (Rn(j)-RsReduced(j));
deltaYn(i)= Xhn{m,j}(i)-Xhn{m,1}(i);
% Insert else
end
% Calculate deltaXRp and deltaXRn for each plate based on growth relative to deltaRp or deltaRn
if deltaYp(i)>=deltaRp(j)
deltaXRp(i)=deltaYp(i)-deltaRp(j);
deltaXR{m,j}(i)=deltaXRp(i); %Consoludate into deltaXR{m,j}(i) cell array
elseif deltaYn(i) < deltaRn(j)
deltaXRn(i)=deltaYn(i)-deltaRn(j);
deltaXR{m,j}(i)=deltaXRn(i); %Consoludate into deltaXR{m,j}(i) cell array
if deltaYn(i)==0, deltaXR{m,j}(i)=0; end
end
% Ambiguous results that have delta gene values that are less than the variance of Reference+/-std
end
deltaXRl=deltaXR{m,j,:};
htMpN1Lzeros999=deltaXR{m,j,:};
deltaXRl(htmpCpyXn==0)=1.2*max(deltaXRl);
htMpN1Lzeros999(htmpCpyXn==0)=999;
Exp(expN).HtMpIntN1=htMpN1Lzeros999';
I=reshape(deltaXRl,24,16);
if prntHt==0
hTogHt=figure;
h=image(cleanPallet);
else
figure
h=image(cleanPallet);
end
% h=figure;
h=image(I);
colormap(jet); % heat map
set(h,'CDataMapping','scale')
if expN==1,cla(handles.HtMap1);copyobj(h,ghandles.HtMap1);end
if expN==2,cla(handles.HtMap2);copyobj(h,ghandles.HtMap2);end
if expN==3,cla(handles.HtMap3);copyobj(h,ghandles.HtMap3);end
if prntHt==0
close(hTogHt)
else
set(gca,'XDir','reverse')
set(gca,'XTickMode','manual')
% set(gca,'XTickLabel',{'2';'4';'6';'8';'10';'12';'14';'16'})
% set(gca,'XTickLabel',{'16';'14';'12';'10';'8';'6';'4';'2'})
% set(gca,'XTick',{0;2;4;6;8;10;12;14;16;18})
colorbar
expLblHtmap=Exp(expN).Dexp.ExpFoldr;
mediaLBhtmap=char(strcat(', Agar-',Exp(expN).Dexp(DexpN).DM.media{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.drug{pertSel},Exp(expN).Dexp(DexpN).DM.conc{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod1{pertSel},Exp(expN).Dexp(DexpN).DM.conc1{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod2{pertSel},Exp(expN).Dexp(DexpN).DM.conc2{pertSel}));
title({strcat('N1 HeatMap for - ',expLblHtmap),strcat('MP=',num2str(mpSel),' ,DM=',num2str(dmSel),mediaLBhtmap)})
end
elseif htTog==4
answer=Exp(expN).htmapRFanswer; % ZoneRelated
RFconfig=Exp(expN).RFconfig; % ZoneRelated
answer=Exp(expN).htmapRFanswer; % ZoneRelated
j=dmSel;
DM0=dmSel; DMj=dmSel;
m=mpSel;
anN=[1 2];
EZintRFs % Call subroutine to interpret user RF inputs
scnNdm1=1 + (dmN*(m-1))
scnN=j + (dmN*(m-1)) % 1,6,11..; 2,7,12 ..; 3,8,13..;
Xn{m,j,1}=[];
Xn{m,1,:}=Exp(expN).Dexp(DexpN).scan(scnNdm1).plate(1).CFout(:,5);
Xn{m,j,:}=Exp(expN).Dexp(DexpN).scan(scnN).plate(1).CFout(:,5);
htmpCpyXn=Xn{m,j,:}'; % Use to find and delineate no growth spots with 999 in text field (infinite interaction) value;
intL=((Xn{m,j,:} - Xn{m,1,:}) - (Rn(j)-Rn(1)));
Exp(expN).HtMpIntN2=intL; % ZoneRelated
intL=Exp(expN).HtMpIntN2; % ZoneRelated
I=reshape(intL,24,16);
if prntHt==0
hTogHt=figure;
h=image(cleanPallet);
elseif
figure
h=image(cleanPallet);
end
%h=figure
h=image(I)
colormap(jet); % heat map
set(h,'CDataMapping','scale')
if expN==1,cla(handles.HtMap1);copyobj(h,ghandles.HtMap1);end
if expN==2,cla(handles.HtMap2);copyobj(h,ghandles.HtMap2);end
if expN==3,cla(handles.HtMap3);copyobj(h,ghandles.HtMap3);end
if prntHt==0
close(hTogHt)
else
set(gca,'XDir','reverse')
set(gca,'XTickMode','manual')
% set(gca,'XTickLabel',{'2';'4';'6';'8';'10';'12';'14';'16'})
% set(gca,'XTickLabel',{'16';'14';'12';'10';'8';'6';'4';'2'})
% set(gca,'XTick',{0;2;4;6;8;10;12;14;16;18})
colorbar
expLblHtmap=Exp(expN).Dexp.ExpFoldr;
mediaLBhtmap=char(strcat(', Agar-',Exp(expN).Dexp(DexpN).DM.media{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.drug{pertSel},Exp(expN).Dexp(DexpN).DM.conc{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod1{pertSel},Exp(expN).Dexp(DexpN).DM.conc1{pertSel},' ',...
Exp(expN).Dexp(DexpN).DM.mod2{pertSel},Exp(expN).Dexp(DexpN).DM.conc2{pertSel}));
title({strcat('N2 HeatMap for - ',expLblHtmap),strcat('MP=',num2str(mpSel),' ,DM=',num2str(dmSel),mediaLBhtmap)})
end
end
prntHt=0;
% Update htMapText for location on the first 'roll thru of htMapPB
EZhtMapText

View File

@@ -0,0 +1,79 @@
%EZhtMapText.m
% HeatMap Text Field
try
indx=Exp(expN).Dexp(DexpN).spotIndx;
l=Exp(expN).Dexp(DexpN).scan(scnN).plate.CFout(indx,5);
k=Exp(expN).Dexp(DexpN).scan(scnN).plate.CFout(indx,3);
r=Exp(expN).Dexp(DexpN).scan(scnN).plate.CFout(indx,4);
try
ll=num2str(l);
if length(ll)>5,htl=ll(1:5);else htl=ll;end
if ~isempty(htl), htl=strcat('_L=',htl);else htl=' ';end
catch
htl=' ';
end
try
kk=num2str(k);
if length(kk)>5,htk=kk(1:5);else htk=kk;end
if ~isempty(htk), htk=strcat('_K=',htk);else htk=' ';end
catch
htk=' ';
end
try
rr=num2str(r);
if length(rr)>5,htr=rr(1:5);else htr=rr;end
if ~isempty(htr), htr=strcat('_r=',htr);else htr=' ';end
catch
htr=' ';
end
try
n1=num2str(Exp(expN).HtMpIntN1(indx)); %num2str(Exp(expN).Dexp(DexpN).HtMpIntN1(indx));
if length(n1)>5,N1=n1(1:5);else N1=n1; end
if ~isempty(N1), htN1=strcat('_N1=',N1);else htN1=' ';end
catch
htN1=' ';
end
try
n2=num2str(Exp(expN).HtMpIntN2(indx)); %num2str(Exp(expN).Dexp(DexpN).HtMpIntN2(indx));
if length(n2)>5,N2=n2(1:5);else N2=n2; end
if ~isempty(N2), htN2=strcat('_N2=',N2);else htN2=' ';end %htN2=strcat('_N2=',N2);
catch
htN2=' ';
end
try
if htTog==0 || htTog> 2
htmapStr=strcat(htl, htN1,htN2)
if expN==1,set(ghandles.HtMapVals1,'string',htmapStr);end
if expN==2,set(ghandles.HtMapVals2,'string',htmapStr);end
if expN==3,set(ghandles.HtMapVals3,'string',htmapStr);end
end
catch
end
try
if htTog==1
htmapStr=htk %strcat(htl, htN1,htN2)
if expN==1,set(ghandles.HtMapVals1,'string',htmapStr);end
if expN==2,set(ghandles.HtMapVals2,'string',htmapStr);end
if expN==3,set(ghandles.HtMapVals3,'string',htmapStr);end
end
catch
end
try
if htTog==2
htmapStr=htr %strcat(htl, htN1,htN2)
if expN==1,set(ghandles.HtMapVals1,'string',htmapStr);end
if expN==2,set(ghandles.HtMapVals2,'string',htmapStr);end
if expN==3,set(ghandles.HtMapVals3,'string',htmapStr);end
end
catch
end
catch
msg='No spot selected (indx=Exp(expN).Dexp(DexpN).spotIndx)'
end

View File

@@ -0,0 +1,150 @@
%print Interaction Data Output file
%resDir=Exp(expN).Dexp(DexpN).resDir;
%expN=1; %temp entry
if strcmp(Exp(expN).DexpType, 'single') || strcmp(Exp(expN).DexpType,'multi')
pertTypeLB= '; DMselections:';
Rsmax=max(Rs(1),Rs(1:dmN));
intLfilename1= fullfile(Exp(expN).Dexp(DexpN).resDir,'PrintResults','!AggrevatingL-DM.txt'); %Longer shorter
intLfilename2= fullfile(Exp(expN).Dexp(DexpN).resDir,'PrintResults','!AlleviatingL-DM.txt');
intLfilename3= fullfile(Exp(expN).Dexp(DexpN).resDir,'PrintResults','!AggrevatingLadjusted-DM.txt');
intLfilename4= fullfile(Exp(expN).Dexp(DexpN).resDir,'PrintResults','!AlleviatingLadjusted-DM.txt');
elseif strcmp(Exp(expN).DexpType, 'chrono')
pertTypeLB= '; Dayselections:';
Rsmax=max(Rs(1),Rs(1:dmN));
%MKDIR for ChonologicalStudy results in Exp Group folder
%For chrono studies, put the interaction results in the first Exp of selected group. i.e., DexpN=1;
intLfilename1= fullfile(Exp(expN).Dexp(1).resDir,'PrintResults','!AggrevatingL-Chrono.txt');
intLfilename2= fullfile(Exp(expN).Dexp(1).resDir,'PrintResults','!AlleviatingL-Chrono.txt');
intLfilename3= fullfile(Exp(expN).Dexp(1).resDir,'PrintResults','!AggrevatingLadjusted-Chrono.txt');
intLfilename4= fullfile(Exp(expN).Dexp(1).resDir,'PrintResults','!AlleviatingLadjusted-Chrono.txt');
end
userInputs=cell2mat(strcat( 'ExpZone:',num2str(expN), '; LeftPercent',answer(1),'; RightPercent:',answer(2),...
'; RFstdPercent:',answer(3),pertTypeLB,answer(4),'; RemoveNoGrowthInfLs:',answer(5),...
'; NumberOfHistogramBins:',answer(6),'; Subplots:',answer(7))); %answer(7)
% Interaction Printout for Positive (longer L interaction values) Non-Adjusted for Ref std and curve fit boundaries
fid=fopen(intLfilename1,'w');
ln=1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\userInputs',strcat('AggrevatingInteractionResults for User Input: ',userInputs));
for j=1:dmN, fprintf(fid,'%s',strcat(', Rstd',num2str(j),'_',num2str(Rs(j)))); end
fprintf(fid, '\n');
ln=2;
fprintf(fid,'%d\t',ln);
fprintf(fid, 'Orf\tGene\t');
for j=1:length(DMsel), fprintf(fid,'%s\t',strcat('IntLdm',num2str(DMsel(j)))); end
%fprintf(fid, 'L\tLlower\tLupper\t')
fprintf(fid,'Specifics\tReplicate\tStrain\tMP\tRow\tCol\tIndex');
fprintf(fid, '\n');
if ~isempty(InterslstPos{1})
for i=1:size(selIntP,1)
ln=ln+1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\t%s\t',cell2mat(IPorf(i)),cell2mat(IPgene(i)));
for j=1:length(DMsel) % 'Scan\tPlate\tRow\tCol\t');
fprintf(fid,'%.5f\t',IntersValsPos(i,j))
end
% fprintf(fid,'%.5f\t%.5f\t%.5f\t',ipL(i),ipLlower(i),ipLupper(i))
fprintf(fid,'%s\t%s\t%s\t',cell2mat(IPspecifics(i)),cell2mat(IPorfRep(i)),cell2mat(IPstrain(i)));
fprintf(fid,'%.5f\t%.5f\t%.5f\t',selIntPx{1}(i,2),selIntPx{1}(i,4),selIntPx{1}(i,5),InterslstPos{1}(i))
fprintf(fid, '\n');
end
else
ln=ln+1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\t','Empty Set, No interaction found within set range.');
end
% fprintf(fid, 'Num.\tDiagnostics\tDrug\tConc\tMedia\tModifier1\tConc1\tModifier2\tConc2\tORF\tGene\tAUC\triseTm\tK\tr\tl\tR-squared\tK-lower\tK-upper\tr-lower\tr-upper\tl-lower\tl-upper\tArea\tLastInten\tSplineMaxRateTm\tLastFitTm\t1stFitTm\tMedianBase\tFitBase\tMinTm\tThreshTm\tTotFitPts\tPostThreshFitPts\t1stBackgrd\tLstBackgrd\t1stMeanTotBackgrd\tLstMeanTotBackgrd');
fclose(fid)
% Interaction Printout for Negative (shorter L interaction values) Non-Adjusted for Ref std and curve fit boundaries
fid=fopen(intLfilename2,'w');
ln=1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\userInputs',strcat('AlleviatingInteractionResults for User Input: ',userInputs)); %fprintf(fid,'%s\userInputs',userInputs);
for j=1:dmN, fprintf(fid,'%s',strcat(', Rstd',num2str(j),'_',num2str(Rs(j)))); end
fprintf(fid, '\n');
ln=2;
fprintf(fid,'%d\t',ln);
fprintf(fid, 'Orf\tGene\t');
for j=1:length(DMsel), fprintf(fid,'%s\t',strcat('IntLdm',num2str(DMsel(j)))); end
%fprintf(fid, 'L\tLlower\tLupper\t')
fprintf(fid,'Specifics\tReplicate\tStrain\tMP\tRow\tCol\tIndex');
fprintf(fid, '\n');
if ~isempty(InterslstNeg{1})
for i=1:size(selIntN,1)
ln=ln+1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\t%s\t',cell2mat(INorf(i)),cell2mat(INgene(i)));
for j=1:length(DMsel) % 'Scan\tPlate\tRow\tCol\t');
fprintf(fid,'%.5f\t',IntersValsNeg(i,j))
end
% fprintf(fid,'%.5f\t%.5f\t%.5f\t',ipL(i),ipLlower(i),ipLupper(i))
fprintf(fid,'%s\t%s\t%s\t',cell2mat(INspecifics(i)),cell2mat(INorfRep(i)),cell2mat(INstrain(i)));
fprintf(fid,'%.5f\t%.5f\t%.5f\t%.5f\t',selIntNx{1}(i,2),selIntNx{1}(i,4),selIntNx{1}(i,5),InterslstNeg{1}(i))
fprintf(fid, '\n');
end
end
fclose(fid)
% Interaction Printout for Positive (longer L interaction values) "ADJUSTED" for Ref std and curve fit boundaries
fid=fopen(intLfilename3,'w');
ln=1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\userInputs',strcat('Adjusted AggrevatingInteractionResults for User Input: ',userInputs));
for j=1:dmN, fprintf(fid,'%s',strcat(', Rstd',num2str(j),'_',num2str(Rs(j)))); end
fprintf(fid, '\n');
ln=2;
fprintf(fid,'%d\t',ln);
fprintf(fid, 'Orf\tGene\t');
for j=1:length(DMsel), fprintf(fid,'%s\t',strcat('IntLdm',num2str(DMsel(j)))); end
% fprintf(fid, 'L\tLlower\tLupper\t')
fprintf(fid,'Specifics\tReplicate\tStrain\tMP\tRow\tCol\tIndex');
fprintf(fid, '\n');
for i=1:size(selIntPAdj,1)
ln=ln+1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\t%s\t',cell2mat(IPorfAdj(i)),cell2mat(IPgeneAdj(i)));
for j=1:length(DMsel) %'Scan\tPlate\tRow\tCol\t');
fprintf(fid,'%.5f\t',IntersValsPosAdj(i,j))
end
% fprintf(fid,'%.5f\t%.5f\t%.5f\t',ipL(i),ipLlower(i),ipLupper(i))
fprintf(fid,'%s\t%s\t%s\t',cell2mat(IPspecificsAdj(i)),cell2mat(IPorfRepAdj(i)),cell2mat(IPstrainAdj(i)));
fprintf(fid,'%.5f\t%.5f\t%.5f\t',selIntPxAdj{1}(i,2),selIntPxAdj{1}(i,4),selIntPxAdj{1}(i,5),InterslstPosAdj{1}(i))
fprintf(fid, '\n');
end
% fprintf(fid, 'Num.\tDiagnostics\tDrug\tConc\tMedia\tModifier1\tConc1\tModifier2\tConc2\tORF\tGene\tAUC\triseTm\tK\tr\tl\tR-squared\tK-lower\tK-upper\tr-lower\tr-upper\tl-lower\tl-upper\tArea\tLastInten\tSplineMaxRateTm\tLastFitTm\t1stFitTm\tMedianBase\tFitBase\tMinTm\tThreshTm\tTotFitPts\tPostThreshFitPts\t1stBackgrd\tLstBackgrd\t1stMeanTotBackgrd\tLstMeanTotBackgrd');
fclose(fid)
fid=fopen(intLfilename4,'w');
ln=1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\userInputs',strcat('AlleviatingInteractionResults for User Input: ',userInputs)); %fprintf(fid,'%s\userInputs',userInputs);
for j=1:dmN, fprintf(fid,'%s',strcat(', Rstd',num2str(j),'_',num2str(Rs(j)))); end
fprintf(fid, '\n');
ln=2;
fprintf(fid,'%d\t',ln);
fprintf(fid, 'Orf\tGene\t');
if ~isempty(InterslstNegAdj{1})
for j=1:length(DMsel), fprintf(fid,'%s\t',strcat('IntLdm',num2str(DMsel(j)))); end
%fprintf(fid, 'L\tLlower\tLupper\t')
fprintf(fid,'Specifics\tReplicate\tStrain\tMP\tRow\tCol\tIndex');
fprintf(fid, '\n');
for i=1:size(selIntNAdj,1)
i
ln=ln+1;
fprintf(fid,'%d\t',ln);
fprintf(fid,'%s\t%s\t',cell2mat(INorfAdj(i)),cell2mat(INgeneAdj(i)));
for j=1:length(DMsel) %'Scan\tPlate\tRow\tCol\t');
fprintf(fid,'%.5f\t',IntersValsNegAdj(i,j))
end
% fprintf(fid,'%.5f\t%.5f\t%.5f\t',ipL(i),ipLlower(i),ipLupper(i))
fprintf(fid,'%s\t%s\t%s\t',cell2mat(INspecificsAdj(i)),cell2mat(INorfRepAdj(i)),cell2mat(INstrainAdj(i)));
fprintf(fid,'%.5f\t%.5f\t%.5f\t',selIntNxAdj{1}(i,2),selIntNxAdj{1}(i,4),selIntNxAdj{1}(i,5),InterslstNegAdj{1}(i))
fprintf(fid, '\n');
end
end
fclose(fid)

View File

@@ -0,0 +1,87 @@
if RFconfig==1
Rn=Exp(expN).Dexp(DexpN).RFmean; Rs=Exp(expN).Dexp(DexpN).RFstd;
end
if RFconfig==2
ctrlRF=cell2mat(answer(anN(1)))
switch ctrlRF
case {'G','g'}
Rn(1)=Exp(expN).Dexp(DexpN).RFmeanG(DM0);
Rs(1)=Exp(expN).Dexp(DexpN).RFstdG(DM0);
case {'L','l'}
if Exp(expN).Dexp(DexpN).meanP(DMj,m)~=0
Rn(1)=Exp(expN).Dexp(DexpN).meanP(DN0,m);
Rs(1)=Exp(expN).Dexp(DexpN).stdP(DM0,m);
elseif Exp(expN).Dexp(DexpN).meanP(DMj,m)==0||isempty(Exp(expN).Dexp(DexpN).meanP(DMj,m)) &&...
strcmpi(ctrlRF,'G')
Rn(1)=Exp(expN).Dexp(DexpN).RFmeanG(DM0);
Rs(1)=Exp(expN).Dexp(DexpN).RFstdG(DM0);
end
end
pertRF=cell2mat(answer(anN(2)))
switch pertRF
case {'G','g'}
Rn(2:dmN)=Exp(expN).Dexp(DexpN).RFmeanG(2:end);
Rs(2:dmN)=Exp(expN).Dexp(DexpN).RFstdG(2:end);
case {'L','l'}
if Exp(expN).Dexp(DexpN).meanP(DMj,m)~=0
Rn(j)=Exp(expN).Dexp(DexpN).meanP(DMj,m);
Rs(j)=Exp(expN).Dexp(DexpN).stdP(DMj,m);
elseif Exp(expN).Dexp(DexpN).meanP(DMj,m)==0||isempty(Exp(expN).Dexp(DexpN).meanP(DMj,m)) &&...
strcmpi(ctrlRF,'G')
Rn(j)=Exp(expN).Dexp(DexpN).RFmeanG(DMj);
Rs(j)=Exp(expN).Dexp(DexpN).RFstdG(DMj);
end
end
end
if RFconfig==3
ctrlRF=cell2mat(answer(anN(1)))
switch ctrlRF
case {'F','f'}
Rn(1)=Exp(expN).Dexp(DexpN).RFmean(DM0);
Rs(1)=Exp(expN).Dexp(DexpN).RFstd(DM0);
case {'G','g'}
Rn(1)=Exp(expN).Dexp(DexpN).RFmeanG(DM0);
Rs(1)=Exp(expN).Dexp(DexpN).RFstdG(DM0);
case {'L','l'}
Rn(1)=Exp(expN).Dexp(DexpN).meanP(DM0,m);
Rs(1)=Exp(expN).Dexp(DexpN).stdP(DM0,m);
if Exp(expN).Dexp(DexpN).meanP(DMj,m)~=0,
Rn(1)=Exp(expN).Dexp(DexpN).meanP(DM0,m);
Rs(1)=Exp(expN).Dexp(DexpN).stdP(DM0,m);
elseif Exp(expN).Dexp(DexpN).meanP(DM0,m)==0 && strcmpi(ctrlRF,'G')
Rn(1)=Exp(expN).Dexp(DexpN).RFmeanG(DM0);
Rs(1)=Exp(expN).Dexp(DexpN).RFstdG(DMj);
elseif Exp(expN).Dexp(DexpN).meanP(DM0,m)==0 && strcmpi(ctrlRF,'F')
Rn(1)=Exp(expN).Dexp(DexpN).RFmean(DM0);
Rs(1)=Exp(expN).Dexp(DexpN).RFstd(DM0);
elseif Exp(expN).Dexp(DexpN).meanP(DM0,m)==0 && strcmpi(ctrlRF,'L')
Rn(1)=Exp(expN).Dexp(DexpN).RFmeanG(DM0);
Rs(1)=Exp(expN).Dexp(DexpN).RFstdG(DM0);
end
end
pertRF=cell2mat(answer(anN(2)))
switch pertRF
case {'F','f'}
Rn(2:dmN)=Exp(expN).Dexp(DexpN).RFmean(2:end);
Rs(2:dmN)=Exp(expN).Dexp(DexpN).RFstd(2:end);
case {'G','g'}
Rn(2:dmN)=Exp(expN).Dexp(DexpN).RFmeanG(2:end);
Rs(2:dmN)=Exp(expN).Dexp(DexpN).RFstdG(2:end);
case {'L','l'}
if Exp(expN).Dexp(DexpN).meanP(DMj,m)~=0,
Rn(j)=Exp(expN).Dexp(DexpN).meanP(DMj,m);
Rs(j)=Exp(expN).Dexp(DexpN).stdP(DMj,m);
elseif Exp(expN).Dexp(DexpN).meanP(DMj,m)==0 && strcmpi(ctrlRF,'G')
Rn(j)=Exp(expN).Dexp(DexpN).RFmeanG(DMj);
Rs(j)=Exp(expN).Dexp(DexpN).RFstdG(DMj);
elseif Exp(expN).Dexp(DexpN).meanP(DMj,m)==0 && strcmpi(ctrlRF,'F')
Rn(j)=Exp(expN).Dexp(DexpN).RFmean(DMj);
Rs(j)=Exp(expN).Dexp(DexpN).RFstd(DMj);
elseif Exp(expN).Dexp(DexpN).meanP(DMj,m)==0 && strcmpi(ctrlRF,'L')
Rn(j)=Exp(expN).Dexp(DexpN).RFmeanG(DMj);
Rs(j)=Exp(expN).Dexp(DexpN).RFstdG(DMj);
end
end
end

View File

@@ -0,0 +1,393 @@
%single gene L based interaction shift display
function EZinterAgingDev0
global Exp
global matFile
[matFile,scansDir]=uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','on');
AgMPDM=load(fullfile(scansDir,'MasterPlateFiles','MPDMmat.mat'));
for i=1:size(matFile,2)
ExpOutmat{i}=fullfile(scansDir,matFile{i});
EScan{i}=load(ExpOutmat{1});
end
% single gene L based interaction shift display
% function EZinteractDev3
% expN=1;
% User Input decode for application
prompt={...
'Enter LeftSide Central Boundary in Percent:',...
'Enter RightSide Central Boundary in Percent:', ...
'Enter Perturbation Numbers for set intersect:' ...
'Remove No Growth Infinite Interactors:' ...
'Number of Bins for Histograms'...
'Subplots(Y), Multiple Plots(N), Suspend Plots(S)'};
% 'Select Experiment(zone) number:'
name='Interaction User Input';
numlines=1;
defaultanswer={'80','60','1','N','39','Y'};
answer=inputdlg(prompt,name,numlines,defaultanswer);
negPercent=str2double(cell2mat(answer(1)));
posPercent=str2double(cell2mat(answer(2)));
DMstr=cell2mat(answer(3));
DMcomas=strfind((cell2mat(answer(3))),',');
removInfinL=answer(4);
numBins=str2double(cell2mat(answer(5)));
subplotX=answer(6);
% expN=str2double(cell2mat(answer(7)));
n=0;
for i=DMcomas,
n=n+1
DMsel(n)=str2double(DMstr(i-1:i))
if i==max(DMcomas)
DMsel(n+1)=str2double(DMstr(i:end))
end
end
Rn=Exp(expN).RFmean;
Rs=Exp(expN).RFstd;
dmN=length(Exp(expN).DM.drug);
mpN=length(Exp(expN).MP);
% Intc1=3; IntcLst=5;
% Calculate Interaction values (with and without
% standardDeviation/Upper-Lower boundary compensation
for j=1:dmN
for m=1:mpN
scnN=j + (dmN*(m-1)) % 1,6,11..; 2,7,12 ..; 3,8,13..;
Xn{m,j,:}=Exp(expN).scan(scnN).plate(1).CFout(:,5); % Exp(expN).scan(DM{j}(m)).plate(1).CFout(:,5);
Xn{m,j,:}(Xn{m,j,:}==0)=140;
Xln{m,j,:}=Exp(expN).scan(scnN).plate(1).CFout(:,11); % Exp(expN).scan(DM{j}(m)).plate(1).CFout(:,11);
Xhn{m,j,:}=Exp(expN).scan(scnN).plate(1).CFout(:,12); % Exp(expN).scan(DM{j}(m)).plate(1).CFout(:,12);
intL{m,j,:}=(Xn{m,j,:} - Rn(j));
intL{m,j,:}(Xn{m,j,:}==140)=100;
intLhw{m,j,:}=((Xn{m,1,:}-Xn{m,j,:}) - Rn(1)-Rn(j));
intLhw{m,j,:}(Xn{m,j,:}==140)=100;
deltaXR{m,j}(Xn{m,j} >=(Rn(j)+Rs(j)))=( Xln{m,j}(Xn{m,j} >=(Rn(j)+Rs(j))))- (Rn(j)+Rs(j));
deltaXR{m,j}(Xn{m,j} < (Rn(j)-Rs(j)))=( Xhn{m,j}(Xn{m,j} < (Rn(j)-Rs(j))))- (Rn(j)-Rs(j));
Xneg=Xhn{m,j}- (Rn(j)-Rs(j));
Xpos=Xln{m,j}- (Rn(j)+Rs(j));
deltaXR{m,j}=zeros(1,384);
for i=1:length(Xpos(:))
% deltaXR{m,j}(i)=Xpos(i);
if deltaXR{m,j}(i)==0
try
if abs(Xpos(i))<abs(Xneg(i)), deltaXR{m,j}(i)=Xpos(i);end
catch
end
end
end
for i=1:length(Xneg(:))
if deltaXR{m,j}(i)==0, deltaXR{m,j}(i)=Xneg(i); end
try
if abs(Xpos(i))>abs(Xneg(i)), deltaXR{m,j}(i)=Xneg(i); end
catch
end
end
deltaXR{m,j,:}(Xln{m,j,:}==0)=100;
deltaXR{m,j,:}(isnan(Xln{m,j,:}))=120;
deltaXR{m,j,:}(Xhn{m,j,:}==0)=100;
deltaXR{m,j,:}(isnan(Xhn{m,j,:}))=120;
% Compile all gene related L values for the each pert-DM (j).
addend=(1+((m-1)*384)) % ((((m-1)*j)*384)+1);
intLcmp(addend:addend+383,j)=cell2mat(intL(m,j,:)); % ((addend:addend+383),j)=cell2mat(intL(j,m,:));
intLadjcmp(addend:addend+383,j)=cell2mat(deltaXR(m,j,:)); % ((addend:addend+383),j)=cell2mat(deltaXR(j,m,:));
end
% Remove RFs and Blank (or non annotated ' ') orf data Then
% Filter data per user intput
intLc{j}=intLcmp(:,j);
intLwoRFs{j}(1,:)=intLcmp(Exp(expN).mutSpotIndx.woRFs,j);
intLwoRFs{j}(2,:)=Exp(expN).mutSpotIndx.woRFs; % index of non-RF non-blank spots %Crude early intLcmp(385:(mpN-1)*384,j);
if strcmpi(removInfinL,'Y')
intLwoRFs0{j}(1,:)=intLwoRFs{j}(1,(intLwoRFs{j}(1,:)~=100)); % intLcmp(Exp(1).mutSpotIndx.woRFs,j);
intLwoRFs0{j}(2,:)=intLwoRFs{j}(2,(intLwoRFs{j}(1,:)~=100)); % intLcmp(385:(mpN-1)*384,j);
clear intLwoRFs
intLwoRFs{j}(1,:)=intLwoRFs0{j}(1,:);
intLwoRFs{j}(2,:)=intLwoRFs0{j}(2,:);
end
intLwoRFsorted{j}=sortrows(intLwoRFs{j}',1);
clear intLcmpSortGT0 intLcmpSortLT0
tempIntL=intLwoRFsorted{j}(:,1);
intLcmpSortGT0=tempIntL((tempIntL) >=0);
intLcmpSortLT0=tempIntL((tempIntL) <0);
centPosCnt=round(posPercent/100 * length(intLcmpSortGT0));
centNegCnt=round(negPercent/100 * length(intLcmpSortLT0));
intLposSel{j}=intLwoRFsorted{j}((length(intLcmpSortLT0)+centPosCnt): end,:);
intLnegSel{j}=intLwoRFsorted{j}((1:(length(intLcmpSortLT0)-centNegCnt)),:);
posIntboundryCentralVal(j)=intLcmpSortGT0((centPosCnt),:); % For Histogram use
negIntboundryCentralVal(j)=intLcmpSortLT0(((length(intLcmpSortLT0))-(centNegCnt)),:); % For Histogram use
% Find potential Interactors within selected range
if j==DMsel(1) % Intc1,
InterslstPos{1}=intLposSel{DMsel(1)}(:,2) % intLcmpposInd{Intc1}
InterslstNeg{1}=intLnegSel{DMsel(1)}(:,2) % intLcmpnegInd{Intc1}
elseif sum(ismember(DMsel,j))==1 %Intc1 && j<=IntcLst
InterslstPos{1}=(intersect(InterslstPos{1},intLposSel{j}(:,2))); % ,intLcmpposInd{j}))
InterslstNeg{1}=(intersect(InterslstNeg{1},intLnegSel{j}(:,2))); % ,intLcmpnegInd{j}))
end
% Convolute experiment spot index to get scan#, MP# and plateIndx needed
% later to obtain genename and other descriptors and correlate data
intLposDIndx{j}(:,2)=ceil((intLposSel{j}(:,2))/384); % mp plate numb column
intLposDIndx{j}(:,3)=(rem(intLposSel{j}(:,2),384));
nn=(intLposDIndx{j}(:,3)==0);
intLposDIndx{j}(nn,3)=384;
intLposDIndx{j}(:,1)=j + (dmN*((intLposDIndx{j}(:,2))-1)); % scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3);
intLnegDIndx{j}(:,2)=ceil((intLnegSel{j}(:,2))/384); % mp plate numb column
intLnegDIndx{j}(:,3)=(rem(intLnegSel{j}(:,2),384));
nn=(intLposDIndx{j}(:,3)==0);
intLnegDIndx{j}(nn,3)=384;
intLnegDIndx{j}(:,1)=j + (dmN*((intLnegDIndx{j}(:,2))-1)); % scan numb
% ADJUSTED L for Reference Standard deviation(More conservative) Interaction List compilation
intLadjwoRFs{j}(1,:)=intLadjcmp(Exp(expN).mutSpotIndx.woRFs,j);
intLadjwoRFs{j}(2,:)=Exp(expN).mutSpotIndx.woRFs; % intLadjcmp(385:(mpN-1)*384,j); %intLadjcmp(Exp(expN).mutSpotIndx.woRFs,j);
if strcmpi(removInfinL,'Y')
intLadjwoRFs0{j}(1,:)=intLadjwoRFs{j}(1,(intLadjwoRFs{j}(1,:)~=100)) ; %intLcmp(Exp(1).mutSpotIndx.woRFs,j);
intLadjwoRFs0{j}(2,:)=intLadjwoRFs{j}(2,(intLadjwoRFs{j}(1,:)~=100)) ; % Remove Index where spots are infinite (=100);
clear intLadjwoRFs
intLadjwoRFs{j}(1,:)=intLadjwoRFs0{j}(1,:);
intLadjwoRFs{j}(2,:)=intLadjwoRFs0{j}(2,:);
end
intLwoRFsortedAdj{j}=sortrows(intLadjwoRFs{j}',1);
clear intLadjSortGT0 intLadjSortLT0
tempIntLadj=intLwoRFsortedAdj{j}(:,1);
intLadjSortGT0=tempIntLadj((tempIntLadj) >=0);
intLadjSortLT0=tempIntLadj((tempIntLadj) <0);
centPosCntAdj=round(posPercent/100 * length(intLadjSortGT0));
centNegCntAdj=round(negPercent/100 * length(intLadjSortLT0));
intLposSelAdj{j}=intLwoRFsortedAdj{j}((length(intLadjSortLT0)+centPosCntAdj): end,:);
intLnegSelAdj{j}=intLwoRFsortedAdj{j}((1:(length(intLadjSortLT0)-centNegCntAdj)),:);
posIntboundryCentralValAdj(j)=intLadjSortGT0((centPosCntAdj),:);
negIntboundryCentralValAdj(j)=intLadjSortLT0(((length(intLadjSortLT0))-(centNegCntAdj)),:);
if j==DMsel(1) % Intc1
InterslstPosAdj{1}=intLposSelAdj{DMsel(1)}(:,2) % intLcmpposInd{Intc1}
InterslstNegAdj{1}=intLnegSelAdj{DMsel(1)}(:,2) % intLcmpnegInd{Intc1}
elseif sum(ismember(DMsel,j))==1 % j>Intc1 && j<=IntcLst
InterslstPosAdj{1}=(intersect(InterslstPosAdj{1},intLposSelAdj{j}(:,2))); % ,intLcmpposInd{j}))
InterslstNegAdj{1}=(intersect(InterslstNegAdj{1},intLnegSelAdj{j}(:,2))); % ,intLcmpnegInd{j}))
end
% Convolute experiment spot index to get scan#, MP# and plateIndx needed
% later to obtain genename and other descriptors and correlate data
intLposDIndxAdj{j}(:,2)=ceil((intLposSelAdj{j}(:,2))/384); % mp plate numb column
intLposDIndxAdj{j}(:,3)=(rem(intLposSelAdj{j}(:,2),384));
nn=(intLposDIndxAdj{j}(:,3)==0);
intLposDIndx{j}(nn,3)=384;
intLposDIndxAdj{j}(:,1)=j + (dmN*((intLposDIndxAdj{j}(:,2))-1)); % scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3);
intLnegDIndxAdj{j}(:,2)=ceil((intLnegSelAdj{j}(:,2))/384); % mp plate numb column
intLnegDIndxAdj{j}(:,3)=(rem(intLnegSelAdj{j}(:,2),384));
nn=(intLposDIndxAdj{j}(:,3)==0);
intLnegDIndxAdj{j}(nn,3)=384;
intLnegDIndxAdj{j}(:,1)=j + (dmN*((intLnegDIndxAdj{j}(:,2))-1)); % scan numb
end
% Get interaction values for each DM drugmedia agar type
IntersValsPos=intLcmp(InterslstPos{1},DMsel);
IntersValsNeg=intLcmp(InterslstNeg{1},DMsel);
IntersValsPosAdj=intLadjcmp(InterslstPosAdj{1},DMsel);
IntersValsNegAdj=intLadjcmp(InterslstNegAdj{1},DMsel);
% Build 'genelist' data sheet for interactors
selIntPx{1}(:,6)=InterslstPos{1};
selIntPx{1}(:,2)=ceil((InterslstPos{1})/384); % mp plate numb column
selIntPx{1}(:,3)=(rem(InterslstPos{1},384));
nn=(selIntPx{1}(:,3)==0);
selIntPx{1}(nn,3)=384;
selIntPx{1}(:,4)=ceil(selIntPx{1}(:,3)/24); % row numb
selIntPx{1}(:,5)=rem(selIntPx{1}(:,3),24);
mm=(selIntPx{1}(:,5)==0);
selIntPx{1}(mm,5)=24;
selIntPx{1}(:,1)=j + (dmN*((selIntPx{1}(:,2))-1)); % scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3);
selIntP=cell2mat(selIntPx);
selIntNx{1}(:,6)=InterslstNeg{1};
selIntNx{1}(:,2)=ceil((InterslstNeg{1})/384); % mp plate numb column
selIntNx{1}(:,3)=(rem(InterslstNeg{1},384));
nn=(selIntNx{1}(:,3)==0);
selIntNx{1}(nn,3)=384;
selIntNx{1}(:,4)=ceil(selIntNx{1}(:,3)/24); % row numb
selIntNx{1}(:,5)=rem(selIntNx{1}(:,3),24);
mm=(selIntNx{1}(:,5)==0);
selIntNx{1}(mm,5)=24;
selIntNx{1}(:,1)=j + (dmN*((selIntNx{1}(:,2))-1)); % scan numb
selIntN=cell2mat(selIntNx);
for i=1:size(selIntP,1)
IPgene(i)=Exp(expN).MP(selIntP(i,2)).genename{1}(selIntP(i,3));
IPorf(i)=Exp(expN).MP(selIntP(i,2)).orf{1}(selIntP(i,3));
IPstrain(i)=Exp(expN).MP(selIntP(i,2)).strain{1}(selIntP(i,3));
IPspecifics(i)=Exp(expN).MP(selIntP(i,2)).specifics{1}(selIntP(i,3));
IPorfRep(i)=Exp(expN).MP(selIntP(i,2)).orfRep{1}(selIntP(i,3));
% Bad this is the L data for only the last selected DM perturbation
% Would need to calculate each scan# for each DMsel value
ipL(i)=Exp(expN).scan(selIntP(i,1)).plate(1).CFout(selIntP(i,3),5);
ipLlower(i)=Exp(expN).scan(selIntP(i,1)).plate(1).CFout(selIntP(i,3),11);
ipLupper(i)=Exp(expN).scan(selIntP(i,1)).plate(1).CFout(selIntP(i,3),12);
end
for i=1:size(selIntN,1)
INgene(i)=Exp(expN).MP(selIntN(i,2)).genename{1}(selIntN(i,3));
INorf(i)=Exp(expN).MP(selIntN(i,2)).orf{1}(selIntN(i,3));
INstrain(i)=Exp(expN).MP(selIntN(i,2)).strain{1}(selIntN(i,3));
INspecifics(i)=Exp(expN).MP(selIntN(i,2)).specifics{1}(selIntN(i,3));
INorfRep(i)=Exp(expN).MP(selIntN(i,2)).orfRep{1}(selIntN(i,3));
% Bad this is the L data for only the last selected DM perturbation
% Would need to calculate each scan# for each DMsel value
inL(i)=Exp(expN).scan(selIntN(i,1)).plate(1).CFout(selIntN(i,3),5);
inLlower(i)=Exp(expN).scan(selIntN(i,1)).plate(1).CFout(selIntN(i,3),11);
inLupper(i)=Exp(expN).scan(selIntN(i,1)).plate(1).CFout(selIntN(i,3),12);
end
% ADJUSTED with STD and curve fit boundaries to produce more conservative interaction values
% Build 'genelist' data sheet for interactors
selIntPxAdj{1}(:,2)=ceil((InterslstPosAdj{1})/384); %mp plate numb column
selIntPxAdj{1}(:,3)=(rem(InterslstPosAdj{1},384));
nn=(selIntPxAdj{1}(:,3)==0);
selIntPxAdj{1}(nn,3)=384;
selIntPxAdj{1}(:,4)=ceil(selIntPxAdj{1}(:,3)/24); %row numb
selIntPxAdj{1}(:,5)=rem(selIntPxAdj{1}(:,3),24);
mm=(selIntPxAdj{1}(:,5)==0);
selIntPxAdj{1}(mm,5)=24;
selIntPxAdj{1}(:,1)=j + (dmN*((selIntPxAdj{1}(:,2))-1)); %scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3);
selIntPAdj=cell2mat(selIntPxAdj);
selIntNxAdj{1}(:,2)=ceil((InterslstNegAdj{1})/384); %mp plate numb column
selIntNxAdj{1}(:,3)=(rem(InterslstNegAdj{1},384));
nn=(selIntNxAdj{1}(:,3)==0);
selIntNxAdj{1}(nn,3)=384;
selIntNxAdj{1}(:,4)=ceil(selIntNxAdj{1}(:,3)/24); %row numb
selIntNxAdj{1}(:,5)=rem(selIntNxAdj{1}(:,3),24);
mm=(selIntNxAdj{1}(:,5)==0);
selIntNxAdj{1}(mm,5)=24;
selIntNxAdj{1}(:,1)=j + (dmN*((selIntNxAdj{1}(:,2))-1)); %scan numb
selIntNAdj=cell2mat(selIntNxAdj);
for i=1:size(selIntPAdj,1)
IPgeneAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).genename{1}(selIntPAdj(i,3));
IPorfAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).orf{1}(selIntPAdj(i,3));
IPstrainAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).strain{1}(selIntPAdj(i,3));
IPspecificsAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).specifics{1}(selIntPAdj(i,3));
IPorfRepAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).orfRep{1}(selIntPAdj(i,3));
% Bad this is the L data for only the last selected DM perturbation
% Would need to calculate each scan# for each DMsel value
ipLAdj(i)=Exp(expN).scan(selIntPAdj(i,1)).plate(1).CFout(selIntPAdj(i,3),5);
ipLlowerAdj(i)=Exp(expN).scan(selIntPAdj(i,1)).plate(1).CFout(selIntPAdj(i,3),11);
ipLupperAdj(i)=Exp(expN).scan(selIntPAdj(i,1)).plate(1).CFout(selIntPAdj(i,3),12);
end
for i=1:size(selIntNAdj,1)
INgeneAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).genename{1}(selIntNAdj(i,3));
INorfAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).orf{1}(selIntNAdj(i,3));
INstrainAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).strain{1}(selIntNAdj(i,3));
INspecificsAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).specifics{1}(selIntNAdj(i,3));
INorfRepAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).orfRep{1}(selIntNAdj(i,3));
%Bad this is the L data for only the last selected DM perturbation
%Would need to calculate each scan# for each DMsel value
inLAdj(i)=Exp(expN).scan(selIntNAdj(i,1)).plate(1).CFout(selIntNAdj(i,3),5);
inLlowerAdj(i)=Exp(expN).scan(selIntNAdj(i,1)).plate(1).CFout(selIntNAdj(i,3),11);
inLupperAdj(i)=Exp(expN).scan(selIntNAdj(i,1)).plate(1).CFout(selIntNAdj(i,3),12);
end
% Plot Histogram
% subplotX=1;
figure
if strcmpi(subplotX,'Y')
for j=1:dmN
histLdata=intLwoRFsorted{j}(:,1); % intLcmp(385:(mpN-1)*384,j);
% histLadjData=intLadjcmp(385:(mpN-1)*384,j);
hgLdat{j}=histfitJR(histLdata,numBins,'kernel');
x{j}=get(hgLdat{j}(2),'xdata');
y{j}=get(hgLdat{j}(2),'ydata');
xb{j}=get(hgLdat{j}(1),'xdata');
yb{j}=get(hgLdat{j}(1),'ydata');
ybpostot{j}=sum(yb{j}(2,(xb{j}(1,:)>=0)));
ybnegtot{j}=sum(yb{j}(2,(xb{j}(1,:) <0)));
xbb(j,:)=xb{j}(2,:);
ybb(j,:)=yb{j}(2,:);
clf
end
% Figure
for j=1:dmN
histLdata=intLwoRFsorted{j}(:,1); % intLcmp(385:(mpN-1)*384,j);
hgL{j}=subplot(2, 4, j), histfitJR(histLdata,numBins,'kernel') ; hold %hgL{j}=histfit(intLcmp(:,j),31,'kernel')
subplot(2, 4, j),plot(posIntboundryCentralVal(j), 1:3000,'--r')
subplot(2, 4, j),plot(negIntboundryCentralVal(j), 1:3000,'--g')
hold off
end
scnsize=get(0,'screensize')
pos1=[round(scnsize(3)/40), round(scnsize(4)/2 +(scnsize(3)/80)),...
round(scnsize(3) -round(scnsize(3)/80)),round(scnsize(4)/2 -round(scnsize(4)/80))]
set(gcf,'outerposition',pos1)
set(gcf,'Name', 'Interaction Values ');
figure
for j=1:dmN
histLadjData=intLwoRFsortedAdj{j}(:,1); %intLadjcmp(385:(mpN-1)*384,j);
hgLadj{j}=subplot(2, 4, j),histfitJR(histLadjData,numBins,'kernel') ; hold %hgLadj{j}=histfit(intLadjcmp(:,j),31,'kernel')
subplot(2, 4, j),plot(posIntboundryCentralValAdj(j), 1:3000,'--r')
subplot(2, 4, j),plot(negIntboundryCentralValAdj(j), 1:3000,'--g')
hold off
end
pos2=[round(scnsize(3)/40), round(scnsize(4)/30),...
round(scnsize(3) -scnsize(3)/80),round(scnsize(4)/2 -scnsize(4)/80)]
set(gcf,'outerposition',pos2)
set(gcf,'Name', 'Interaction Compensated by Standard Deviation and Upper/Lower Curvefit boundaries')
elseif strcmpi(subplotX,'N')
for j=1:dmN
histLdata=intLwoRFsorted{j}(:,1); %intLcmp(385:(mpN-1)*384,j);
histLadjData=intLwoRFsortedAdj{j}(:,1); %intLadjcmp(385:(mpN-1)*384,j);%intLadjcmp(385:(mpN-1)*384,j); %intLcmp(:,j); %intLadjcmp(:,j);
figure
hgL{j}=histfitJR(histLdata,numBins,'kernel') ; hold %hgL{j}=histfit(intLcmp(:,j),31,'kernel')
plot(posIntboundryCentralVal(j), 1:3000,'--r')
plot(negIntboundryCentralVal(j), 1:3000,'--g')
hold off
figure
hgLadj{j}=histfitJR(histLadjData,numBins,'kernel') ; hold %hgLadj{j}=histfit(intLadjcmp(:,j),31,'kernel')
plot(posIntboundryCentralValAdj(j), 1:3000,'--r')
plot(negIntboundryCentralValAdj(j), 1:3000,'--g')
hold off
x{j}=get(hgL{j}(2),'xdata')
y{j}=get(hgL{j}(2),'ydata');
xb{j}=get(hgL{j}(1),'xdata')
yb{j}=get(hgL{j}(1),'ydata')
ybpostot{j}=sum(yb{j}(2,(xb{j}(1,:)>=0)))
ybnegtot{j}=sum(yb{j}(2,(xb{j}(1,:) <0)))
xbb(j,:)=xb{j}(2,:);
ybb(j,:)=yb{j}(2,:);
end
if strcmpi(subplotX,'N')
figure
bar3(ybb);
% xxbb=yb{1}(2,:);
% figure
end
else
end
% histograms placed in subplot figure else multiple histogram plots
if strcmpi(subplotX,'Y')
figure
bar3(ybb);
set(gcf,'Name', 'Unfiltered Interaction Histogram for all DrugMedias; NoGrowth Interactors set to 100hr (highest bin)')
%xxbb=yb{1}(2,:);
%figure
end
EZintPrint
a=1 % TODO what is this for
end

View File

@@ -0,0 +1,217 @@
%EZlstBoxExtCmp.m
%Called by EZviewGui.m NOT by EZvDatatip.m and EZlstBoxExt.m
%Provides Trace data storage for use by EZfigTrendOL.m
RFcmpGFlg=0;
if isequal(tempLB(4:6),'cmp')
RFnum=str2double(tempLB(3));
elseif isequal(tempLB(3:6),'cmpG')
RFcmpGFlg=1;
elseif isequal(tempLB(3:6),'cmpP')
RFcmpGFlg=1; %I beleive handling will be the same as RFcmpG
end
Exp(expN).cLmdEven=0; %Added for Cummulative Median and Mean 'C' plot
RFDMflg=0;
if zoneSel==1,DexpN=(get(ghandles.DN1,'value')); end
if zoneSel==2,DexpN=(get(ghandles.DN2,'value')); end
if zoneSel==3,DexpN=(get(ghandles.DN3,'value')); end
try
p1=cell2mat(strfind(selGnOrf,'('));
p2=cell2mat(strfind(selGnOrf,')'));
dmNum=str2num(selGnOrf{1}(p1+1:p2-1));
inDM=str2num(selGnOrf{1}(p1+1:p2-1));
if (~isempty(dmNum)&& isnumeric(dmNum)),RFDMflg=1; end
catch
end
if RFDMflg, Exp(zoneSel).Dexp(DexpN).pertSel=dmNum; end %pertSel=pert;
sgdInfoOnly=get(handles.InfoToggle,'value');
if sgdInfoOnly==1
EZviewInfoBox
else % Runs to end of EZlstBoxExt.m within this else condition
% Plot Selected Gene/Orf Spot
%try
if RFcmpGFlg==0
K=Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).med; Ks=num2str(K);
r=Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).med; rs=num2str(r);
l=Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).med; Ls=num2str(l);
Kl=K - Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
Ku=K + Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
rl=r - Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
ru=r + Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
lfast=l - Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
lslow=l + Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
elseif RFcmpGFlg==1
K=Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).med; Ks=num2str(K);
r=Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).med; rs=num2str(r);
l=Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).med; Ls=num2str(l);
Kl=K - Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).std;
Ku=K + Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).std;
rl=r - Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).std;
ru=r + Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).std;
lfast=l - Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).std;
lslow=l + Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).std;
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
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
%tser=(scan(1,plateNum).plate(1).t0Series(:));
%rawData=scan(1,plateNum).plate(1).intens(indx,:)/scan(1,plateNum).plate(1).Ag(indx);
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,tser,rawData,'g*');
plot(plotAxes,t,gSlow,'y'); plot(plotAxes,t,gFast,'r');hold (plotAxes,'off');
% Store L R and K valves for Composite [C] plots
Exp(expN).ll(traceN)=l; Exp(expN).rr(traceN)=r; Exp(expN).kk(traceN)=K;
if RFcmpGFlg==0
Exp(expN).lstd(traceN)=Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
Exp(expN).kstd(traceN)=Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
Exp(expN).rstd(traceN)=Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
for dm=1:length(Exp(expN).Dexp(DexpN).DM.drug)
Exp(expN).Trace(traceN).Dexp(DexpN).DM(dm).UsrLvals={Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(dm).Lvals};
Exp(expN).Trace(traceN).Dexp(DexpN).DM(dm).UsrKvals={Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(dm).Kvals};
Exp(expN).Trace(traceN).Dexp(DexpN).DM(dm).Usrrvals={Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(dm).rvals};
end
Exp(expN).Trace(traceN).dmSel=inDM;
Exp(expN).Trace(traceN).DexpN=DexpN;
Exp(expN).Trace(traceN).UsrGLB=selGnOrf;
elseif RFcmpGFlg==1
Exp(expN).lstd(traceN)=Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).std;
Exp(expN).kstd(traceN)=Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).std;
Exp(expN).rstd(traceN)=Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).std;
if strcmp(Exp(expN).DexpType,'chrono')
for nn=1:length(Exp(expN).Dexp) %replaced dmSel with inDM for 'chrono' and RFcmpGFlg
Exp(expN).Trace(traceN).Dexp(nn).DM(inDM).UsrLvals=Exp(expN).Dexp(nn).RFcmpGL.dm(inDM).Lvals;
Exp(expN).Trace(traceN).Dexp(nn).DM(inDM).UsrKvals=Exp(expN).Dexp(nn).RFcmpGK.dm(inDM).Kvals;
Exp(expN).Trace(traceN).Dexp(nn).DM(inDM).Usrrvals=Exp(expN).Dexp(nn).RFcmpGr.dm(inDM).rvals;
end
else
for dm=1:length(Exp(expN).Dexp(DexpN).DM.drug)
Exp(expN).Trace(traceN).Dexp(DexpN).DM(dm).UsrLvals=Exp(expN).Dexp(DexpN).RFcmpGL.dm(dm).Lvals;
Exp(expN).Trace(traceN).Dexp(DexpN).DM(dm).UsrKvals=Exp(expN).Dexp(DexpN).RFcmpGK.dm(dm).Kvals;
Exp(expN).Trace(traceN).Dexp(DexpN).DM(dm).Usrrvals=Exp(expN).Dexp(DexpN).RFcmpGr.dm(dm).rvals;
end
end
Exp(expN).Trace(traceN).dmSel=inDM;
Exp(expN).Trace(traceN).DexpN=DexpN;
Exp(expN).Trace(traceN).UsrGLB=selGnOrf;
end
Exp(expN).lslow(traceN)=lslow; Exp(expN).lfast(traceN)=lfast;
Exp(expN).lKl(traceN)=Kl; Exp(expN).Ku(traceN)=Ku;
Exp(expN).lrl(traceN)=rl; Exp(expN).ru(traceN)=ru;
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])
% Exp(zoneSel).hOLb(traceN)=plot(OLaxes,tser,rawData,'g*'); %No Raw Data, Ref Composite 17_1009
% catch
% catchissue='Ln68 EZlstBoxCmpExt'
% 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
if isequal(selGnOrf{1}(1:3),'RF1')|| isequal(selGnOrf{1}(1:3),'RF2')|| RFcmpGFlg==1
gene={selGnOrf{1}(1:p2)};
geneOrfstr=gene;
grfgenestr=gene;
else
gene=MP(1,LBmp).genename{1,1}(indx); orf=MP(1,LBmp).orf{1,1}(indx);
geneOrfstr=strcat(gene,'_',orf,'_','m',num2str(LBmp),'r',num2str(LBr),'c',num2str(LBc),'_',tPtStr);
grfgenestr=strcat(gene,'_',orf,'_','m',num2str(LBmp),'r',num2str(LBr),'c',num2str(LBc));
end
%spec=MP(1,LBmp).specifics{1,1}(indx); %orfrep=MP(1,plateNum).orfRep{1,1}(indx);
%tPtStr=strcat('T=', num2str(scan(1,plateNum).plate(1).t0Series(tPtSel)));
graphStr=strcat(grfgenestr,'_','L=',Lstr,'_','r=',rstr,'_','K=',Kstr);
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; %graphStr; %ghandles.Exp(zoneSel).hOLname(traceN)=graphStr;
Exp(zoneSel).hOLexpNm(traceN)=expStr; %ghandles.Exp(expN).hOLexpNm(traceN)=expStr;
Exp(zoneSel).hOLresDir(traceN)={Exp(zoneSel).Dexp(DexpN).resDir};
%Exp(zoneSel).hOLplateNum(traceN)=plateNum;
%traceData=vertcat(get(Exp(OLay).hOL(traceN),'XData'),get(ghandles.Exp(OLay).hOL(traceN),'YData'));
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
% Write Spot and Exp Info to OLay title areas
if zoneSel==1, %&& get(ghandles.rotPB1,'value')~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay1,'FontSize',8);end
set(ghandles.OLay1,'string', Exp(zoneSel).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp1,'FontSize',8);end
set(ghandles.OLexp1,'string',Exp(zoneSel).hOLexpNm(traceN));
end
if zoneSel==2 %&& get(ghandles.rotPB2,'value') ~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay2,'FontSize',8);end
set(ghandles.OLay2,'string', Exp(zoneSel).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp2,'FontSize',8);end
set(ghandles.OLexp2,'string',Exp(zoneSel).hOLexpNm(traceN));
end
if zoneSel==3 %&& get(ghandles.rotPB3,'value') ~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay3,'FontSize',8);end
set(ghandles.OLay3,'string', Exp(OLay).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp3,'FontSize',8);end
set(ghandles.OLexp3,'string',Exp(OLay).hOLexpNm(traceN));
end
end
% GraphicDestinationPerturbationComparison**15_0821
lstBoxCmpFlg=1;
EZdatatip=0;
if strcmp((Exp(expN).DexpType),'single') || strcmp((Exp(expN).DexpType),'multi')
EZdestComp
elseif strcmp((Exp(expN).DexpType),'chrono')
EZmDayTrend
end

View File

@@ -0,0 +1,277 @@
%EZlstBoxExt.m
% Calls either EZdestComp.m
% or if 'Chrono' EZmDayPlotUCmp.m and EZmDayTrend.m and if ghandles.CompositeTog_,EZmDayPlotUcomposite
% or by EZviewGui.m (listboxGnOrf_Callback)
% Replace get(ghandles.CompositeTog1,'value')==1 ... with get(handles....
if expN==1 && get(handles.CompositeTog1,'value')==1 ...
|| expN==2 && get(handles.CompositeTog2,'value')==1 ...
|| expN==3 && get(handles.CompositeTog3,'value')==1
CompositeTrendFlg=1; else CompositeTrendFlg=0;
end
Exp(expN).cLmdEven=0; % Added for Cummulative Median and Mean 'C' plot
RFDMflg=0;
if zoneSel==1,DexpN=(get(handles.DN1,'value')); end
if zoneSel==2,DexpN=(get(handles.DN2,'value')); end
if zoneSel==3,DexpN=(get(handles.DN3,'value')); end
try
p1=cell2mat(strfind(selGnOrf,'('));
p2=cell2mat(strfind(selGnOrf,')'));
dmNum=str2num(selGnOrf{1}(p1+1:p2-1));
inDM=selGnOrf{1}(p1+1:p2-1);
if (~isempty(dmNum)&& isnumeric(dmNum)),RFDMflg=1; end
catch
end
if RFDMflg, Exp(zoneSel).Dexp(DexpN).pertSel=dmNum; end % pertSel=pert;
inMP=selGnOrf{1}((LBdlims{:,:}(1))+1:(LBdlims{:,:}(2))-1)
% LBmp=str2double(inMP);
sgdInfoOnly=get(handles.InfoToggle,'value');
if sgdInfoOnly==1
EZviewInfoBox
else % Runs to end of EZlstBoxExt.m within this else condition
if zoneSel==1
Max=floor(get(handles.MPsldr1,'max'));
Min=floor(get(handles.MPsldr1,'min'));
if str2num(inMP) >=Min && str2num(inMP) <=Max
set(handles.MPed1,'string',inMP)
set(handles.MPsldr1,'value',str2double(inMP));
else
if str2num(inMP) >=Max, set(handles.MPsldr1,'value',Max); set(handles.MPed1,'string',num2str(Max));end
if str2num(inMP) <=Min, set(handles.MPsldr1,'value',Min),set(handles.MPed1,'string',num2str(Min));end
end
end
if zoneSel==2
Max=floor(get(handles.MPsldr2,'max'));
Min=floor(get(handles.MPsldr2,'min'));
if str2num(inMP) >=Min && str2num(inMP) <=Max
set(handles.MPed2,'string',inMP)
set(handles.MPsldr2,'value',str2double(inMP));
else
if str2num(inMP) >=Max, set(handles.MPsldr2,'value',Max); set(handles.MPed2,'string',num2str(Max));end
if str2num(inMP) <=Min, set(handles.MPsldr2,'value',Min),set(handles.MPed2,'string',num2str(Min));end
end
end
if zoneSel==3
Max=floor(get(handles.MPsldr3,'max'));
Min=floor(get(handles.MPsldr3,'min'));
if str2num(inMP) >=Min && str2num(inMP) <=Max
set(handles.MPed3,'string',inMP)
set(handles.MPsldr3,'value',str2double(inMP));
else
if str2num(inMP) >=Max, set(handles.MPsldr3,'value',Max); set(handles.MPed3,'string',num2str(Max));end
if str2num(inMP) <=Min, set(handles.MPsldr3,'value',Min),set(handles.MPed3,'string',num2str(Min));end
end
end
if RFDMflg
if zoneSel==1
Max=floor(get(handles.DMsldr1,'max'));
Min=floor(get(handles.DMsldr1,'min'));
if str2num(inDM) >=Min && str2num(inDM) <=Max
set(handles.DMed1,'string',inDM)
set(handles.DMsldr1,'value',str2double(inDM));
else
if str2num(inDM) >=Max, set(handles.DMsldr1,'value',Max); set(handles.DMed1,'string',num2str(Max));end
if str2num(inDM) <=Min, set(handles.DMsldr1,'value',Min),set(handles.DMed1,'string',num2str(Min));end
end
end
if zoneSel==2
Max=floor(get(handles.DMsldr2,'max'));
Min=floor(get(handles.DMsldr2,'min'));
if str2num(inDM) >=Min && str2num(inDM) <=Max
set(handles.DMed2,'string',inDM)
set(handles.DMsldr2,'value',str2double(inDM));
else
if str2num(inDM) >=Max, set(handles.DMsldr2,'value',Max); set(handles.DMed2,'string',num2str(Max));end
if str2num(inDM) <=Min, set(handles.DMsldr2,'value',Min),set(handles.DMed2,'string',num2str(Min));end
end
end
if zoneSel==3
Max=floor(get(handles.DMsldr3,'max'));
Min=floor(get(handles.DMsldr3,'min'));
if str2num(inDM) >=Min && str2num(inDM) <=Max
set(handles.DMed3,'string',inDM)
set(handles.DMsldr3,'value',str2double(inDM));
else
if str2num(inDM) >=Max, set(handles.DMsldr3,'value',Max); set(handles.DMed3,'string',num2str(Max));end
if str2num(inDM) <=Min, set(handles.DMsldr3,'value',Min),set(handles.DMed3,'string',num2str(Min));end
end
end
end
EZVimDisplay
% 17_111 If CompositeTog_ set, Routine called to find all gene replicates and produce composite values
if CompositeTrendFlg==1
if strcmp(Exp(expN).DexpType, 'chrono')
EZmDayPlotUcmp
else
EZplotUcmp
end
% Plot Selected Gene/Orf Spot
% if non-Composite ("normal") then - ...
elseif CompositeTrendFlg~=1
destPerMP=Exp(zoneSel).Dexp(DexpN).destPerMP; %length(gS.DM1.drug);
pertSel=Exp(zoneSel).Dexp(DexpN).pertSel; %floor(get(handles.DMsldr1,'value'));
plateNum=(LBmp-1)*destPerMP + pertSel;
indx=((LBr-1)*24) +LBc
MP=Exp(zoneSel).Dexp(DexpN).MP;
try
K=scan(1,plateNum).plate(1).CFout(indx,3); Ks=num2str(K);
r=scan(1,plateNum).plate(1).CFout(indx,4); rs=num2str(r);
l=scan(1,plateNum).plate(1).CFout(indx,5); Ls=num2str(l);
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
Kl=scan(1,plateNum).plate(1).CFout(indx,7);
Ku=scan(1,plateNum).plate(1).CFout(indx,8);
rl=scan(1,plateNum).plate(1).CFout(indx,9);
ru=scan(1,plateNum).plate(1).CFout(indx,10);
lfast=scan(1,plateNum).plate(1).CFout(indx,11);
lslow=scan(1,plateNum).plate(1).CFout(indx,12);
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
tser=(scan(1,plateNum).plate(1).t0Series(:));
rawData=scan(1,plateNum).plate(1).intens(indx,:)/scan(1,plateNum).plate(1).Ag(indx);
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,tser,rawData,'g*');
plot(plotAxes,t,gSlow,'y');plot(plotAxes,t,gFast,'r');hold (plotAxes,'off');
% Store L R and K valves for 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])
Exp(zoneSel).hOLb(traceN)=plot(OLaxes,tser,rawData,'g*');
catch
catchissue='Ln100 EZlstBoxExt'
end
% 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
if isequal(selGnOrf{1}(1:3),'RF1')
gene={selGnOrf{1}(1:p2)};
geneOrfstr=strcat(gene,'_','m',num2str(LBmp),'r',num2str(LBr),'c',num2str(LBc),'_',tPtStr);
grfgenestr=strcat(gene,'_','m',num2str(LBmp),'r',num2str(LBr),'c',num2str(LBc));
else
gene=MP(1,LBmp).genename{1,1}(indx); orf=MP(1,LBmp).orf{1,1}(indx);
geneOrfstr=strcat(gene,'_',orf,'_','m',num2str(LBmp),'r',num2str(LBr),'c',num2str(LBc),'_',tPtStr);
grfgenestr=strcat(gene,'_',orf,'_','m',num2str(LBmp),'r',num2str(LBr),'c',num2str(LBc));
end
spec=MP(1,LBmp).specifics{1,1}(indx); %orfrep=MP(1,plateNum).orfRep{1,1}(indx);
tPtStr=strcat('T=', num2str(scan(1,plateNum).plate(1).t0Series(tPtSel)));
graphStr=strcat(grfgenestr,'_','L=',Lstr,'_','r=',rstr,'_','K=',Kstr);
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; % graphStr; %ghandles.Exp(zoneSel).hOLname(traceN)=graphStr;
Exp(zoneSel).hOLexpNm(traceN)=expStr; % ghandles.Exp(expN).hOLexpNm(traceN)=expStr;
Exp(zoneSel).hOLresDir(traceN)={Exp(zoneSel).Dexp(DexpN).resDir};
Exp(zoneSel).hOLplateNum(traceN)=plateNum;
% traceData=vertcat(get(Exp(OLay).hOL(traceN),'XData'),get(ghandles.Exp(OLay).hOL(traceN),'YData'));
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
end
% Write Spot and Exp Info to OLay title areas
if zoneSel==1 %&& get(ghandles.rotPB1,'value')~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay1,'FontSize',8);end
set(ghandles.OLay1,'string', Exp(zoneSel).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp1,'FontSize',8);end
set(ghandles.OLexp1,'string',Exp(zoneSel).hOLexpNm(traceN));
end
if zoneSel==2 %&& get(ghandles.rotPB2,'value') ~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay2,'FontSize',8);end
set(ghandles.OLay2,'string', Exp(zoneSel).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp2,'FontSize',8);end
set(ghandles.OLexp2,'string',Exp(zoneSel).hOLexpNm(traceN));
end
if zoneSel==3 %&& get(ghandles.rotPB3,'value') ~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay3,'FontSize',8);end
set(ghandles.OLay3,'string', Exp(OLay).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp3,'FontSize',8);end
set(ghandles.OLexp3,'string',Exp(OLay).hOLexpNm(traceN));
end
% Highlight gene/orf select Spot on Image
tPtSel=Exp(zoneSel).Dexp(DexpN).tPtSel;
Rim=16-(LBr-1); Cim =LBc;
spotCoor=Exp(zoneSel).Dexp(DexpN).FexpScanSpots{1,plateNum}{Cim,Rim,tPtSel};
if zoneSel==1, expAxes=ghandles.Iaxes1;end
if zoneSel==2, expAxes=ghandles.Iaxes2;end
if zoneSel==3, expAxes=ghandles.Iaxes3;end
%axes(ghandles.Iaxes1)
plot(expAxes,(spotCoor(2)+24),(spotCoor(1)+24),'.y')
% GraphicDestinationPerturbationComparison**15_0821
EZdatatip=0; %**
if strcmp((Exp(expN).DexpType),'single') ...
|| strcmp((Exp(expN).DexpType),'multi')
EZdestComp
elseif strcmp((Exp(expN).DexpType),'chrono')
EZmDayTrend
end
% HeatMap Text Field
try
ll=num2str(l);
if length(ll)>5,htl=ll(1:5);else htl=ll;end
catch
htl=' ';
end
try
n1=num2str(Exp(expN).Dexp(DexpN).HtMpIntN1(indx));
if length(n1)>5,N1=n1(1:5);else N1=n1; end
htN1=strcat('_N1=',N1);
catch,
htN1=' ';
end
try
htmapStr=strcat('L=',htl, htN1)
if expN==1,set(ghandles.HtMapVals1,'string',htmapStr);end
if expN==2,set(ghandles.HtMapVals2,'string',htmapStr);end
if expN==3,set(ghandles.HtMapVals3,'string',htmapStr);end
catch
end
end

View File

@@ -0,0 +1,251 @@
% 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
catch
msgBadGeneName=strcat('check genename at mp=',num2str(mp),' indx=',num2str(ind384))
end
end % end associated with for ind384=1:384
mp
end
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
% 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
end
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
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
% 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
%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
msg='Error'
end

View File

@@ -0,0 +1,590 @@
% 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
tracN=Exp(expN).traceN;
n=Exp(expN).DexpN; % Temp input for development
% UmDayaa=cell(3,n); UmDaybb=cell(3,n);
patrnN=strfind(selGnOrf{1},':'); % Extract Gene-Orf Name
selStrNm=char(selGnOrf)
usrGene=selStrNm(1:(patrnN(1)-1))
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);
% usrGene=cell2mat(answer(1));
usrSpec=answer(1);
usrGnSp=strcat(usrGene,usrSpec);
if strcmpi(usrSpec,'None'), usrGnSp={strcat(usrGene,'-')}; end
% if strfind(Exp(expN).UgeneSpLst,usrGnSp), break; end
Exp(expN).Dexp(n).UsrmdPLB={[]};
Exp(expN).Dexp(n).UsrMedianG=[];
Exp(expN).Dexp(n).UsrminG=[];
Exp(expN).Dexp(n).UsrmaxG=[];
Exp(expN).Dexp(n).UsrstdG=[];
Exp(expN).Dexp(n).UsrmeanG=[];
Exp(expN).Dexp(n).UsrCmpGL=[]; % For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGK=[]; % For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGr=[]; % For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrGLB={};
for n=1:Exp(expN).DexpLength % Loop Thru Dayexps
MPnum=length(Exp(expN).Dexp(n).MP);
DMnum=length(Exp(expN).Dexp(n).DM.drug);
tPtsSize=size(Exp(expN).Dexp(n).FexpScanBMtp{1,1},(3));
% lstindx=size(aa,1);
% lstindxOrf=size(bb,1);
spN=0;
rfcnt=0;
dRF1indx=0;
% usrGene=cell2mat(usrGene); %user entry of Specifics for Ref selection
usrSp=cell2mat(usrSpec); %user entry of Specifics for Ref selection
for mp=1:length(Exp(expN).Dexp(n).MP)
% RF1fullPlate=0;
for ind384=1:384
spN=spN+1;
try
r=ceil(ind384/24);
if rem(ind384,24)==0, c=24; else c=rem(ind384,24); end
% 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)={strcat(':',num2str(mp),':',num2str(r),':',num2str(c))};
drf(dRF1indx,3)={mp}; drfMP(dRF1indx,mp)=mp;
drf(dRF1indx,4)={r}; drfr(dRF1indx,mp)=r;
drf(dRF1indx,5)={c}; drfc(dRF1indx,mp)=c;
drf(dRF1indx,6)={ind384}; drfPindx(dRF1indx,mp)=ind384;
%drf(dRF1indx,7)=(Exp(expN).Dexp(n).MP(mp).specifics{1}(ind384));
end
catch
error='EZexpSel lineAfter 24 EZmultiGeneLst.m'
mp %Disable in future to prevent a bomb out OR put into a nested TryCatch
ind384 %Disable in future to prevent a bomb out OR put into a nested TryCatch
msgBadGeneName=strcat('check genename at mp=',num2str(mp),' indx=',num2str(ind384))
end
end
mp
end
% Exp(expN).Dexp(n).UsrmdPindx=[];
% Exp(expN).Dexp(n).UsrmdPpltN=[];
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,3))~=cell2mat(drf((j-1),3)), chgIndx(i)=j; i=i+1; end
end
end
chgIndx(length(chgIndx)+1)=length(drf)+1;
uu=zeros(size(drf,1),4);
uu(:,1:4)=cell2mat(drf(:,3:6));
vv=zeros(length(drf),1 ); % DMnum);
dMPs=unique(cell2mat(drf(:,3)));
for mm=1:length(dMPs) % length(chgIndx)
usrScNdisp=((dMPs(mm)-1)*DMnum)+(dmSel);
NZrefIndxP=drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm)); medianIndxDisp=NZrefIndxP;
vv(chgIndx(mm):(chgIndx(mm+1)-1),dmSel)=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,5);
% For Global Ref Composite 17_1009
vvK(chgIndx(mm):(chgIndx(mm+1)-1),dmSel)=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3);
vvr(chgIndx(mm):(chgIndx(mm+1)-1),dmSel)=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4);
end % for mm=1:length(dMPs)
% Calc. Global Mean, Std, And Median For Distributed References
uu=horzcat(uu,vv);
for d=dmSel:dmSel
medianIndxG=[];
NZusrIndxG=[];
minG=min(nonzeros(vv(:,d)));
maxG=max(nonzeros(vv(:,d)));
usrmeanG=mean(nonzeros(vv(:,d)));
usrStdG=std(nonzeros(vv(:,d)));
NZusrIndxG=find(vv(:,d));
if isempty(usrmeanG)
nonZeroCntD=0 % medianIndxDisp=RFmeanG(d);
else
nonZeroCntD=length(nonzeros(vv(:,d)));
end
% Calc. of median value for composite doesn't require and odd number of Indx items
medianIndxG=NZusrIndxG(:);
if ~isempty(NZusrIndxG) && length(medianIndxG) > 0 %(.15*size(drf,1)) %To calc. a median, more than 15% of spots must be nonZero
Exp(expN).Dexp(n).UsrGLB(d)=usrGnSp; % strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(n).UsrLvals=vv(medianIndxG);
Exp(expN).Dexp(n).UsrKvals=vvK(medianIndxG);
Exp(expN).Dexp(n).Usrrvals=vvr(medianIndxG);
end
end
end
end
Exp(expN).UgeneCnt=Exp(expN).UgeneCnt +1;
Exp(expN).UgeneSpLst(Exp(expN).UgeneCnt)=usrGnSp;
% PLOT Values Selected Gene-Specifics Composite
smpSz=size(medianIndxG,1);
K=median(vvK(medianIndxG,dmSel)); Ks=num2str(K); Kstd=std(vvK(medianIndxG,dmSel)); KstdStr=num2str(Kstd);
r=median(vvr(medianIndxG,dmSel)); rs=num2str(r); rstd=std(vvr(medianIndxG,dmSel)); rstdStr=num2str(rstd);
l=median(vv(medianIndxG,dmSel)); Ls=num2str(l); Lstd=std(vv(medianIndxG,dmSel)); LstdStr=num2str(Lstd);
Kl=K - std(vvK(medianIndxG,dmSel)); %K - Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
Ku=K + std(vvK(medianIndxG,dmSel)); %K + Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
rl=r - std(vvr(medianIndxG,dmSel)); %r - Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
ru=r + std(vvr(medianIndxG,dmSel)); %r + Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
lfast=l - std(vv(medianIndxG,dmSel)); %l - Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
lslow=l + std(vv(medianIndxG,dmSel)); %l + Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
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;
indx=((LBr-1)*24) +LBc
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');
% Store L R and K valves for 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
% 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,'_');
% spec=MP(1,LBmp).specifics{1,1}(indx); %orfrep=MP(1,plateNum).orfRep{1,1}(indx);
% tPtStr=strcat('T=', num2str(scan(1,plateNum).plate(1).t0Series(tPtSel)));
% graphStr=strcat(grfgenestr,'_','L=',Lstr,'_','r=',rstr,'_','K=',Kstr);
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; %graphStr; %ghandles.Exp(zoneSel).hOLname(traceN)=graphStr;
Exp(zoneSel).hOLexpNm(traceN)=expStr; %ghandles.Exp(expN).hOLexpNm(traceN)=expStr;
Exp(zoneSel).hOLresDir(traceN)={Exp(zoneSel).Dexp(DexpN).resDir};
Exp(zoneSel).hOLplateNum(traceN)=plateNum;
% traceData=vertcat(get(Exp(OLay).hOL(traceN),'XData'),get(ghandles.Exp(OLay).hOL(traceN),'YData'));
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 ME
msg='ME.message';
end % trycatch zoneSel<4 datatip selection from Image (not from an OverLay Plot)
% Deprecated functions
%{
% If a specific spot median is ever needed
%Calc. of EXACT median specific culture requires an odd number of indx items
if ~isempty(NZusrIndxG) && mod(nonZeroCntD,2)==0, medianIndxOdd= NZusrIndxG(1:(size(NZusrIndxG,1)-1)); end
if ~isempty(NZusrIndxG) && mod(nonZeroCntD,2)~=0, medianIndxOdd=NZusrIndxG(:); end
mvalsDG=median(vv(medianIndxOdd,d)); %(nonzeros(vv(:,d)));
nzPosIndxDG=find(mvalsDG==vv(:,d));
Exp(expN).Dexp(n).UsrMedianG(d)=mvalsDG;
Exp(expN).Dexp(n).UsrminG(d)=minG;
Exp(expN).Dexp(n).UsrmaxG(d)=maxG;
Exp(expN).Dexp(n).UsrstdG(d)=usrStdG;
Exp(expN).Dexp(n).UsrmeanG(d)=usrmeanG;
%}
%{
Exp(expN).Dexp(n).UsrCmpGL.dm(d).med=median(vv(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGL.dm(d).mean=mean(vv(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGL.dm(d).std=std(vv(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGL.dm(d).min=min(vv(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGL.dm(d).max=max(vv(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGK.dm(d).med=median(vvK(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGK.dm(d).mean=mean(vvK(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGK.dm(d).std=std(vvK(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGK.dm(d).min=min(vvK(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGK.dm(d).max=max(vvK(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGr.dm(d).med=median(vvr(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGr.dm(d).mean=mean(vvr(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGr.dm(d).std=std(vvr(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGr.dm(d).min=min(vvr(medianIndxP,d)); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpGr.dm(d).max=max(vvr(medianIndxP,d)); %For Ref Composite 17_1026
%}
%{
for mm=1:length(dMPs) % length(chgIndx)
for d=selDM:selDM %1:(DMnum)
medianIndxDisp=[];
NZrefIndxP=[];
nonZeroValsP=[];
medValLstDisp=[];
usrScNdisp=((dMPs(mm)-1)*DMnum)+(d);
try % Determine the dispersed User Gene median mean and std if such exist
NZrefIndxP=drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm)); medianIndxDisp=NZrefIndxP
vv(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,5);
%For Global Ref Composite 17_1009 %**************************************************************************
vvK(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3);
vvr(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4);
%*****************************************************************************************************
%{
nonZeroValsP=nonzeros(Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,5));
std1Disp=std(nonZeroValsP);
mean1Disp=mean(nonZeroValsP);
minDisp=min(nonZeroValsP);
maxDisp=max(nonZeroValsP);
drfVals=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,5);
%nzValsAcc(mm).DM(d,:)=nonZeroValsP;
%MEDIAN Determination for PLATES with Dispersed RFs
%NZrefIndxP=NZrefIndxP %find(Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,5));
if isempty(NZrefIndxP), nonZeroCntDisp=0, medianIndxDisp=NZrefIndxP;
else nonZeroCntDisp=length(NZrefIndxP);
end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)==0, medianIndxDisp= NZrefIndxP(1:nonZeroCntDisp-1); end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)~=0, medianIndxDisp=NZrefIndxP; end
%}
if ~isempty(NZrefIndxP) && length(medianIndxDisp) > 0 %(.15*384) %To calc. a median, more than 15% of spots must be nonZero
medValLstDisp=Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(medianIndxDisp,5);
mval1Disp=median(medValLstDisp);
nzMedPosIndx=find(mval1Disp==nonZeroValsP);
medianIndxP=NZrefIndxP(nzMedPosIndx);
%UsrmdlocP(1)=ceil(medianIndxP/24); %calc r value
%UsrmdlocP(2)=medianIndxP - ((UsrmdlocP(1)-1)*24); %calc c value
meanKval=mean(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3))));
meanrval=mean(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4))));
else
% Need to set L r K values to zeros or pick the first spot with zeros
%Spot 1 could be other than zero as the median isn't calculated if fewer than some percent are nonzero
medianCalcFailedD='To Few nonZero spots for valid median RF1 selection'
firstZeroDindx=find(((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,5))==0),1,'first');
firstZeroD=drfPindx((firstZeroDindx),dMPs(mm));
%Exp(expN).Dexp(n).UsrmdPindx(d,dMPs(mm))=firstZeroD;
%Exp(expN).Dexp(n).UsrmdPpltN(d,dMPs(mm))=dMPs(mm); %RF1mp; %Is this supposed to be the MP number or the ScanPlate number???
end %~isempty(NZrefIndxP) && length(medianIndxPisp) > 3 ln584
catch %try ln565
medianCalcTryFailed1D='Failed! Failed! {Dispersed RF1s}'
try
firstZeroindxD=find(vv((chgIndx(d):chgIndx(d+1)-1),5)==0,1,'first');
firstZeroPindx=uu(firstZeroindxD,4);
catch
end
end %try ~ln565
end %for d=0:DMnum
end %for mm=1:length(dMPs)
%}
%{
%Code Template taken from EZlstBoxCmpExt.m
try
%if RFcmpGFlg==0
smpSz=size(medianIndxP,1);
K=median(vvK(medianIndxP,dmSel)); Ks=num2str(K); Kstd=std(vvK(medianIndxP,dmSel)); KstdStr=num2str(Kstd);
r=median(vvr(medianIndxP,dmSel)); rs=num2str(r); rstd=std(vvr(medianIndxP,dmSel)); rstdStr=num2str(rstd);
l=median(vv(medianIndxP,dmSel)); Ls=num2str(l); Lstd=std(vv(medianIndxP,dmSel)); LstdStr=num2str(Lstd);
Kl=K - std(vvK(medianIndxP,dmSel)); %K - Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
Ku=K + std(vvK(medianIndxP,dmSel)); %K + Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
rl=r - std(vvr(medianIndxP,dmSel)); %r - Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
ru=r + std(vvr(medianIndxP,dmSel)); %r + Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
lfast=l - std(vv(medianIndxP,dmSel)); %l - Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
lslow=l + std(vv(medianIndxP,dmSel)); %l + Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
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
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
%tser=(scan(1,plateNum).plate(1).t0Series(:));
%rawData=scan(1,plateNum).plate(1).intens(indx,:)/scan(1,plateNum).plate(1).Ag(indx);
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,tser,rawData,'g*');
plot(plotAxes,t,gSlow,'y'); plot(plotAxes,t,gFast,'r');hold (plotAxes,'off');
%************CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC**************************************
%Store L R and K valves for Composite [C] plots
Exp(expN).ll(traceN)=l; Exp(expN).rr(traceN)=r; Exp(expN).kk(traceN)=K;
Exp(expN).lstd(traceN)=std(vv(medianIndxP,dmSel)); %Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(inDM).std;
Exp(expN).kstd(traceN)=std(vvK(medianIndxP,dmSel)); %Exp(expN).Dexp(DexpN).RFcmpK(RFnum).dm(inDM).std;
Exp(expN).rstd(traceN)=std(vvr(medianIndxP,dmSel)); %Exp(expN).Dexp(DexpN).RFcmpr(RFnum).dm(inDM).std;
Exp(expN).lslow(traceN)=lslow; Exp(expN).lfast(traceN)=lfast;
Exp(expN).lKl(traceN)=Kl; Exp(expN).Ku(traceN)=Ku;
Exp(expN).lrl(traceN)=rl; Exp(expN).Ku(traceN)=ru;
%************************************************************************
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])
%Exp(zoneSel).hOLb(traceN)=plot(OLaxes,tser,rawData,'g*'); %No Raw Data, Ref Composite 17_1009
catch
catchissue='Ln68 EZlstBoxCmpExt'
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
DMstr=num2str(dmSel);
%spec=MP(1,LBmp).specifics{1,1}(indx); %orfrep=MP(1,plateNum).orfRep{1,1}(indx);
%tPtStr=strcat('T=', num2str(scan(1,plateNum).plate(1).t0Series(tPtSel)));
%graphStr=strcat(usrGnSp,'_','L=',Lstr,'_','Lstd=',LstdStr,'_','r=',rstr,'_','rstd=',rstdStr,'_','K=',Kstr,'Kstd=',KstdStr);
graphStr=strcat(usrGnSp,'_','L=',Lstr,'_','Lstd=',LstdStr,'_','r=',rstr,'_','rstd=',rstdStr,'_','K=',Kstr,'Kstd=',KstdStr);
spotDescrip=strcat(graphStr,'DMS->',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)=usrGnSp; %spotDescrip; %graphStr; %ghandles.Exp(zoneSel).hOLname(traceN)=graphStr;
Exp(zoneSel).hOLexpNm(traceN)=expStr; %ghandles.Exp(expN).hOLexpNm(traceN)=expStr;
Exp(zoneSel).hOLresDir(traceN)={Exp(zoneSel).Dexp(DexpN).resDir};
%Exp(zoneSel).hOLplateNum(traceN)=plateNum;
%traceData=vertcat(get(Exp(OLay).hOL(traceN),'XData'),get(ghandles.Exp(OLay).hOL(traceN),'YData'));
%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='Ln33 EZlstBoxCmpExt'
msg='Error'
end % trycatch zoneSel<4 datatip selection from Image (not from an OverLay Plot)
%**************Write Spot and Exp Info to OLay title areas****************************************************************************
if zoneSel==1, %&& get(ghandles.rotPB1,'value')~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay1,'FontSize',8);end
set(ghandles.OLay1,'string', Exp(zoneSel).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp1,'FontSize',8);end
set(ghandles.OLexp1,'string',Exp(zoneSel).hOLexpNm(traceN));
end
if zoneSel==2 %&& get(ghandles.rotPB2,'value') ~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay2,'FontSize',8);end
set(ghandles.OLay2,'string', Exp(zoneSel).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp2,'FontSize',8);end
set(ghandles.OLexp2,'string',Exp(zoneSel).hOLexpNm(traceN));
end
if zoneSel==3 %&& get(ghandles.rotPB3,'value') ~=1
if length(char(Exp(zoneSel).hOLname(traceN)))>40,set(ghandles.OLay3,'FontSize',8);end
set(ghandles.OLay3,'string', Exp(OLay).hOLname(traceN));
if length(char(Exp(zoneSel).hOLexpNm(traceN)))>40,set(ghandles.OLexp3,'FontSize',8);end
set(ghandles.OLexp3,'string',Exp(OLay).hOLexpNm(traceN));
end
%}
%**********************************************************************
%{
%elseif RFcmpGFlg==1
K=Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).med; Ks=num2str(K);
r=Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).med; rs=num2str(r);
l=Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).med; Ls=num2str(l);
Kl=K - Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).std;
Ku=K + Exp(expN).Dexp(DexpN).RFcmpGK.dm(inDM).std;
rl=r - Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).std;
ru=r + Exp(expN).Dexp(DexpN).RFcmpGr.dm(inDM).std;
lfast=l - Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).std;
lslow=l + Exp(expN).Dexp(DexpN).RFcmpGL.dm(inDM).std;
end
%}
%Exp(expN).Dexp(n).UsrmdPindx=[];
%Exp(expN).Dexp(n).UsrmdPpltN=[];
%Exp(expN).Dexp(n).UsrmdPscanN=[];
%Exp(expN).Dexp(n).UsrMedianP=[];
%Exp(expN).Dexp(n).stdP=[];
%Exp(expN).Dexp(n).meanP=[];
%Exp(expN).Dexp(n).minP=[];
%Exp(expN).Dexp(n).maxP=[];
%Exp(expN).Dexp(n).RFmdGLB={[]};
%Exp(expN).Dexp(n).RFmdGindx=[];
%Exp(expN).Dexp(n).RFmdGpltN=[];
%Exp(expN).Dexp(n).RFmdGscanN=[];
%UsrmdDGloc(d,1)=uu(nzPosIndxDG,1); %MP of distributedGlobal Median value
%UsrmdDGloc(d,2)=uu(nzPosIndxDG,2); %calc r value
%UsrmdDGloc(d,3)=uu(nzPosIndxDG,3); %calc c value
%lstindx=lstindx+1;
%lstindxOrf=lstindxOrf+1;
%{
usrGLbl=strcat(usrGnSp,'UmdG('); %accomodate User Ref Selection
aa(lstindx,1)=strcat(usrGLbl,num2str(d),')'); %remove string2cell brackets {...}
aa(lstindx,2)={strcat(':',num2str(UsrmdDGloc(d,1)),':',num2str(UsrmdDGloc(d,2)),':',num2str(UsrmdDGloc(d,3)))}; %,'std_',num2str(std2))};
bb(lstindxOrf,1)=strcat(usrGLbl,num2str(d),')'); %remove string2cell brackets {...}
bb(lstindxOrf,2)={strcat(':',num2str(UsrmdDGloc(d,1)),':',num2str(UsrmdDGloc(d,2)),':',num2str(UsrmdDGloc(d,3)))}; %,'std_',num2str(std2))};
%Composite Reference Amalgum Plot ******************
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)=strcat(usrGnSp,'UcmpG(',num2str(d),')');
aa(lstindx,2)={''};
bb(lstindxOrf,1)=strcat(usrGnSp,'UcmpG(',num2str(d),')');
bb(lstindxOrf,2)={''};
%*****************************************************
%}
%{
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
usrPLbl=strcat(usrGnSp,'UmdP('); %accomodate User Ref Selection
aa(lstindx,1)=strcat(usrPLbl,num2str(d),')');
aa(lstindx,2)={strcat(':',num2str(dMPs(mm)),':',num2str(UsrmdlocP(1)),':',num2str(UsrmdlocP(2)))};
bb(lstindxOrf,1)=strcat(usrPLbl,num2str(d),')'); %remove string2cell brackets {...}
bb(lstindxOrf,2)={strcat(':',num2str(dMPs(mm)),':',num2str(UsrmdlocP(1)),':',num2str(UsrmdlocP(2)))};
Exp(expN).Dexp(n).UsrmdPLB(d,dMPs(mm))=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(n).UsrmdPindx(d,dMPs(mm))=medianIndxP;
Exp(expN).Dexp(n).UsrmdPpltN(d,dMPs(mm))=dMPs(mm); %This is a storage of the MasterPlate used NOT the ScanPlate? WeMight wish to store the ScanPlateNumber also???
Exp(expN).Dexp(n).UsrmdPscanN(d,dMPs(mm))=usrScNdisp;
Exp(expN).Dexp(n).UsrMedianP(d,dMPs(mm))=mval1Disp;
Exp(expN).Dexp(n).stdP(d,dMPs(mm))=std1Disp;
Exp(expN).Dexp(n).meanP(d,dMPs(mm))=mean1Disp;
Exp(expN).Dexp(n).minP(d,dMPs(mm))=minDisp;
Exp(expN).Dexp(n).maxP(d,dMPs(mm))=maxDisp;
Exp(expN).Dexp(n).UsrCmpPL.dm(d).med=mval1Disp; %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPL.dm(d).mean=mean1Disp; %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPL.dm(d).std=std1Disp; %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPL.dm(d).min=minDisp; %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPL.dm(d).max=maxDisp; %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPK.dm(d).med=median(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPK.dm(d).mean=mean(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPK.dm(d).std=std(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPK.dm(d).min=min(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPK.dm(d).max=max(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,3)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPr.dm(d).med=median(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPr.dm(d).mean=mean(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPr.dm(d).std=std(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPr.dm(d).min=min(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4)))); %For Ref Composite 17_1026
Exp(expN).Dexp(n).UsrCmpPr.dm(d).max=max(nonzeros((Exp(expN).Dexp(n).scan(usrScNdisp).plate(1).CFout(NZrefIndxP,4)))); %For Ref Composite 17_1026
%}
%Exp(expN).Dexp(n).UsrmdGindx(d)=nzPosIndxDG;
%Exp(expN).Dexp(n).UsrmdGpltN(d)=UsrmdDGloc(d,1);
%Exp(expN).Dexp(n).UsrmdGscanN(d)=uu(nzPosIndxDG,4);
%{
try
firstZeroindxD=find(vv((chgIndx(d):chgIndx(d+1)-1),5)==0,1,'first');
firstZeroPindx=uu(firstZeroindxD,4);
%Exp(expN).Dexp(n).UsrmdPpltN(d,dMPs(mm))=dMPs(mm);
%Exp(expN).Dexp(n).UsrmdPindx(d,dMPs(mm))=firstZeroPindx;
catch
catchissue='try at Ln565'
%Exp(expN).Dexp(n).UsrmdPpltN(d,dMPs(mm))=dMPs(mm);
%Exp(expN).Dexp(n).UsrmdPindx(d,dMPs(mm))=384; %if crapout,Then use spot384 as default to keep going
end
try
% Exp(expN).Dexp(n).UsrmdPpltN=dMPs(mm);
catch
catchissue='Ln619'
%Exp(expN).Dexp(n).UsrmdPpltN=1; %This might keep from breaking BUT ???
end
error='EZexpSel lineAfter 565'
end %try ~ln565
%}

View File

@@ -0,0 +1,492 @@
% GraphicDestinationPertibationComparison**15_821
% Called by EZlstBoxExt or EZvDatatip.m, Then calls EZRFs4DayComp
CompositeTrendFlg=0;
if expN==1 && get(ghandles.CompositeTog1,'value')==1 ...
|| expN==2 && get(ghandles.CompositeTog2,'value')==1 ...
|| expN==3 && get(ghandles.CompositeTog3,'value')==1
CompositeTrendFlg=1;
end
% if (isequal(destcompMsg,'GoodDataTip')&&~isequal(destcompMsg, 'BadDataTip'))|| isequal(destcompMsg,'Olay')
% hold off
if expN==1,DexpN=(get(ghandles.DN1,'value')); end
if expN==2,DexpN=(get(ghandles.DN2,'value')); end
if expN==3,DexpN=(get(ghandles.DN3,'value')); end
if expN==1,MPsel=floor(get(ghandles.MPsldr1,'value')); end
if expN==2,MPsel=floor(get(ghandles.MPsldr2,'value')); end
if expN==3,MPsel=floor(get(ghandles.MPsldr3,'value')); end
if expN==1,pertSel=floor(get(ghandles.DMsldr1,'value')); end
if expN==2,pertSel=floor(get(ghandles.DMsldr2,'value')); end
if expN==3,pertSel=floor(get(ghandles.DMsldr3,'value')); end
dmSel=pertSel;
if EZdatatip==1 %adaptation for image spot selection
%plNums=plateNum;
destPerMP=Exp(expN).Dexp(DexpN).destPerMP;
plNums=(MPsel-1)*destPerMP + (1:destPerMP);
zoneSel=expN;
tracN=Exp(zoneSel).traceN;
if zoneSel==1,Dlaxes=ghandles.Dlaxes1;Dkaxes=ghandles.Dkaxes1;Draxes=ghandles.Draxes1; end
if zoneSel==2,Dlaxes=ghandles.Dlaxes2;Dkaxes=ghandles.Dkaxes2;Draxes=ghandles.Draxes2; end
if zoneSel==3,Dlaxes=ghandles.Dlaxes3;Dkaxes=ghandles.Dkaxes3;Draxes=ghandles.Draxes3; end
if zoneSel==1,DNLaxes=ghandles.DNLaxes1;end
if zoneSel==2,DNLaxes=ghandles.DNLaxes2;end
if zoneSel==3,DNLaxes=ghandles.DNLaxes3;end
elseif EZdatatip==2 % adaption for Overlay plot selection
destPerMP=Exp(expN).Dexp(DexpN).destPerMP;
MPlateN=ceil(OLplateNum/destPerMP);
plNums=(MPlateN-1)*destPerMP + (1:destPerMP);
zoneSel=expN;
tracN=Exp(zoneSel).traceN;
if zoneSel==1,Dlaxes=ghandles.Dlaxes1;Dkaxes=ghandles.Dkaxes1;Draxes=ghandles.Draxes1; end
if zoneSel==2,Dlaxes=ghandles.Dlaxes2;Dkaxes=ghandles.Dkaxes2;Draxes=ghandles.Draxes2; end
if zoneSel==3,Dlaxes=ghandles.Dlaxes3;Dkaxes=ghandles.Dkaxes3;Draxes=ghandles.Draxes3; end
if zoneSel==1,DNLaxes=ghandles.DNLaxes1;end %2016_0222
if zoneSel==2,DNLaxes=ghandles.DNLaxes2;end %2016_0222
if zoneSel==3,DNLaxes=ghandles.DNLaxes3;end %2016_0222
elseif EZdatatip==0
if lstBoxCmpFlg~=1
% destPerMP=Exp(expN).Dexp(DexpN).destPerMP;
plNums=(LBmp-1)*destPerMP + (1:destPerMP);
tracN=Exp(zoneSel).traceN;
if zoneSel==1,DNLaxes=ghandles.DNLaxes1;end %2016_0222
if zoneSel==2,DNLaxes=ghandles.DNLaxes2;end %2016_0222
if zoneSel==3,DNLaxes=ghandles.DNLaxes3;end %2016_0222
elseif lstBoxCmpFlg==1
% DexpN=Exp(expN).DexpN;
dmSel=pertSel;
tracN=Exp(zoneSel).traceN;
if zoneSel==1,DNLaxes=ghandles.DNLaxes1;end %2016_0222
if zoneSel==2,DNLaxes=ghandles.DNLaxes2;end %2016_0222
if zoneSel==3,DNLaxes=ghandles.DNLaxes3;end %2016_0222
end
end
if EZdatatip==2 % Response to Overlay click
% seltraceN comes from EZvDatatip;
% Exp(OLay).seltraceN iscaptured from EZvDatatip
% if an OLay trace is selected
% else it is captured below if EZdatatip is not equal to 2
try
set(Exp(zoneSel).hLRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hLRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hL(seltraceN),'visible','on'); set(Exp(zoneSel).hLb(seltraceN),'visible','on');
catch, end
% Plot new intL
try
set(Exp(zoneSel).hintL(seltraceN),'visible','on'); set(Exp(zoneSel).hintLb(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hintLadj(seltraceN),'visible','on'); set(Exp(zoneSel).hintLadjb(seltraceN),'visible','on');
catch, end
if zoneSel==1,set(ghandles.DNLaxes1,'xlim',[-75,75]); end
% K values
for J=1:(tracN),
try
set(Exp(zoneSel).hKRF1(J),'visible','off'); set(Exp(zoneSel).hKRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hK(J),'visible','off'); set(Exp(zoneSel).hKb(J),'visible','off');
catch, end
end
try
set(Exp(zoneSel).hKRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hKRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hK(seltraceN),'visible','on'); set(Exp(zoneSel).hKb(seltraceN),'visible','on');
catch, end
for J=1:(tracN)
try
set(Exp(zoneSel).hrRF1(J),'visible','off'); set(Exp(zoneSel).hrRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hr(J),'visible','off'); set(Exp(zoneSel).hrb(J),'visible','off');
catch, end
end
try
set(Exp(zoneSel).hrRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hrRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hr(seltraceN),'visible','on'); set(Exp(zoneSel).hrb(seltraceN),'visible','on');
catch, end
else % if EZdatatip==1 or if EZdatatip==0
% Attempt fix for overlaying L and intL from image datatip==1 18_0103
try
set(Exp(zoneSel).hLRF1(seltraceN),'visible','off'); set(Exp(zoneSel).hLRF2(seltraceN),'visible','off');
catch, end
try
set(Exp(zoneSel).hL(seltraceN),'visible','off'); set(Exp(zoneSel).hLb(seltraceN),'visible','off');
catch, end
% Plot new intL
try
set(Exp(zoneSel).hintL(seltraceN),'visible','off'); set(Exp(zoneSel).hintLb(seltraceN),'visible','off');
catch, end
try
set(Exp(zoneSel).hintLadj(seltraceN),'visible','off'); set(Exp(zoneSel).hintLadjb(seltraceN),'visible','off');
catch, end
% Plot RFmd1 and RFmd2 indexes
if lstBoxCmpFlg~=1 % If selection is a "normal" item with a location in the label
days=Exp(expN).DexpLength;
for nn=1:Exp(expN).DexpLength % length(Exp(zoneSel).Dexp)
RFconfig=Exp(zoneSel).Dexp(DexpN).RFconfig;
EZRFs4DayComp
if lstBoxCmpFlg~=1
Exp(zoneSel).seltraceN=tracN;
seltraceN=tracN;
end
% Plot L K r for all Day pertibation(XdestinationX) Plates
try RF1mdNums=(RF1mdPltN-1)*destPerMP + (pertSel); catch, end % RF1mdPltN
try RF2mdNums=(RF2mdPltN-1)*destPerMP + (pertSel); catch, end % RF2mdPltN
if CompositeTrendFlg==0 || EZdatatip==1
lvals(nn)=Exp(zoneSel).Dexp(nn).scan(1,plNums(pertSel)).plate(1).CFout(indx,5);
if lvals(nn)==0, lvals(nn)=140; end
kvals(nn)=Exp(zoneSel).Dexp(nn).scan(1,plNums(pertSel)).plate(1).CFout(indx,3);
rvals(nn)=Exp(zoneSel).Dexp(nn).scan(1,plNums(pertSel)).plate(1).CFout(indx,4);
Exp(expN).Trace(traceN).dmSel=pertSel;
Exp(expN).Trace(traceN).UsrGLB=selGnOrf; %usrGnSp;
Exp(expN).Trace(tracN).Dexp(nn).DM(pertSel).UsrLvals=lvals(nn);
Exp(expN).Trace(tracN).Dexp(nn).DM(pertSel).UsrKvals=kvals(nn);
Exp(expN).Trace(tracN).Dexp(nn).DM(pertSel).Usrrvals=rvals(nn);
elseif CompositeTrendFlg==1 && EZdatatip==0 % Gene-Specifics Composite from listBox
days=Exp(expN).DexpLength;
if iscell(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrLvals)
lvals(nn)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrLvals));
if lvals(nn)==0, lvals(nn)=140; end
kvals(nn)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrKvals));
rvals(nn)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).Usrrvals));
else
lvals(nn)=median(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrLvals);
if lvals(nn)==0, lvals(nn)=140; end
kvals(nn)=median(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrKvals);
rvals(nn)=median(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).Usrrvals);
end
end
try
% lvalsRF1md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF1mdNums).plate(1).CFout(RF1mdIndx(nn),5);
lvalsRF1md(nn)=RFmdVal(nn); %RFmdVal(nn) gets the above if 'F', or the global median if 'G' or the local median if 'L' selected
if lvalsRF1md(nn)==0, lvalsRF1md(nn)=140; end
kvalsRF1md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF1mdNums).plate(1).CFout(RF1mdIndx,3);
rvalsRF1md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF1mdNums).plate(1).CFout(RF1mdIndx,4);
catch
end
try
lvalsRF2md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF2mdNums).plate(1).CFout(RF2mdIndx,5);
if lvalsRF2md(nn)==0, lvalsRF2md(nn)=140; end
kvalsRF2md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF2mdNums).plate(1).CFout(RF2mdIndx,3);
rvalsRF2md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF2mdNums).plate(1).CFout(RF2mdIndx,4);
catch
end
try
if (~exist('lvalsRF1md','var')||~exist('lvalsRF2md','var'))&& exist('RFcmpGFlg','var') && RFcmpGFlg==1
lvalsRF1md(nn)=Exp(expN).DexpN(nn).RFcmpGL.DM(dmSel);
if lvalsRF2md(nn)==0, lvalsRF2md(nn)=140; end
end
lvalsRF1md(nn)=RFmdVal(nn); %RFmdVal(nn) gets the above if 'F', or the global median if 'G' or the local median if 'L' selected
if lvalsRF1md(nn)==0, lvalsRF1md(nn)=140; end
kvalsRF1md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF1mdNums).plate(1).CFout(RF1mdIndx,3);
rvalsRF1md(nn)=Exp(zoneSel).Dexp(nn).scan(1,RF1mdNums).plate(1).CFout(RF1mdIndx,4);
catch
end
% Added for INTERACTION Calculating Utility 2016_0219
try
if CompositeTrendFlg==0 || EZdatatip==1 % 18_0103 Add || EZdatatip==1
Xn(nn)=Exp(expN).Dexp(nn).scan(plNums(pertSel)).plate(1).CFout(indx,5);
Xln(nn)=Exp(expN).Dexp(nn).scan(plNums(pertSel)).plate(1).CFout(indx,11);
Xhn(nn)=Exp(expN).Dexp(nn).scan(plNums(pertSel)).plate(1).CFout(indx,12);
elseif CompositeTrendFlg==1 && EZdatatip==0 % 18_0103 add && EZdatatip==0 Gene-Specifics Composite from listBox
Xn(nn)=median(cell2mat(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrLvals));
Xln(nn)=Xn(nn) - std(cell2mat(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrLvals));
Xhn(nn)=Xn(nn) + std(cell2mat(Exp(expN).Trace(tracN).Dexp(nn).DM(dmSel).UsrLvals));
end
if Xn(nn)==0, deltaXR(nn)=140; end
if isnan(Xhn(nn))||isnan(Xln(nn))|| Xhn(nn)==0||Xln(nn)==0||isnan(Rs(nn))
deltaXR(nn)=140;
elseif Xn(nn) >=Rn(nn)
deltaXR(nn)=Xln(nn)-(Rn(nn)+Rs(nn));
else
deltaXR(nn)=Xhn(nn)-(Rn(nn)-Rs(nn));
end
catch
msg='No Refs! ->No Interaction Calculations!'
end
end
elseif lstBoxCmpFlg==1 % determine values of RF1cmp or RFcmpG
days=Exp(expN).DexpLength;
if strcmp(Exp(expN).DexpType,'chrono'), DM=inDM; else DM=pertSel; end % else DM=dmSel;
Exp(zoneSel).seltraceN=tracN; % added fix 2020_1103
seltraceN=tracN; % added fix 2020_1103
for nn=1:Exp(expN).DexpLength % length(Exp(zoneSel).Dexp)
RFconfig=Exp(zoneSel).Dexp(DexpN).RFconfig;
EZRFs4DayComp
if RFcmpGFlg==0 % RF1cmp or RF2cmp clicked
lvals(nn)=Exp(expN).Dexp(nn).RFcmpL(RFnum).dm(DM).med;
if lvals(nn)==0, lvals(dm)=140; end
kvals(nn)=Exp(expN).Dexp(nn).RFcmpK(RFnum).dm(DM).med;
rvals(nn)=Exp(expN).Dexp(nn).RFcmpr(RFnum).dm(DM).med;
elseif RFcmpGFlg==1
lvals(nn)=Exp(expN).Dexp(nn).RFcmpGL.dm(DM).med; % Ls=num2str(l);
if lvals(nn)==0, lvals(nn)=140; end
kvals(nn)=Exp(expN).Dexp(nn).RFcmpGK.dm(DM).med; % Ks=num2str(K);
rvals(nn)=Exp(expN).Dexp(nn).RFcmpGr.dm(DM).med; % rs=num2str(r);
end
% Added for INTERACTION Calculating Utility 2016_0219
try
Xn(nn)=lvals(nn);
try
Xln(nn)=lvals(nn)- Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(DM).std ;
Xhn(nn)=lvals(nn)+ Exp(expN).Dexp(DexpN).RFcmpL(RFnum).dm(DM).std;
catch
Xln(nn)=lvals(nn)- Exp(expN).Dexp(DexpN).RFcmpGL.dm(DM).std ;
Xhn(nn)=lvals(nn)+ Exp(expN).Dexp(DexpN).RFcmpGL.dm(DM).std;
end
if Xn(nn)==0, deltaXR(nn)=140; end
if isnan(Xhn(nn))||isnan(Xln(nn))|| Xhn(nn)==0||Xln(nn)==0||isnan(Rs(nn))
deltaXR(nn)=140;
elseif Xn(nn) >=Rn(nn)
deltaXR(nn)=Xln(nn)-(Rn(nn)+Rs(nn));
else
deltaXR(nn)=Xhn(nn)-(Rn(nn)-Rs(nn));
end
catch
msg='No Refs! ->No Interaction Calculations!'
end
end
end
%end
% Interaction Plotting Utility 2016_0219
try
if Rn(1)==0 % If Ref mean is zero
intL=0; proGrIntL=0; intLadj=0; proGrIntLadj=0;
intNormL=6.66;intNormLadj=6.66; proGrIntNormL=6.66;proGrIntNormLadj=6.66;
else
% if Xn(pertSel)==0 || Xn(pertSel)==140,intL=140; else intL=(Xn-Rn); end
intL=(Xn-Rn);
intL(Xn==0)=140;
intLadj=(deltaXR);
Exp(expN).Trace(tracN).Dexp(DexpN).UsrIntL=intL;
end
catch
FailMessage='Problem with Reference Rn value; Unable to produce Interaction values! Ln119 EZdestComp'
end
hidem(ghandles.Daxes1)
if zoneSel==1,showm(ghandles.Dlaxes1);showm(ghandles.Dkaxes1);showm(ghandles.Draxes1);end
if zoneSel==2,showm(ghandles.Dlaxes2);showm(ghandles.Dkaxes2);showm(ghandles.Draxes2);end
if zoneSel==3,showm(ghandles.Dlaxes3);showm(ghandles.Dkaxes3);showm(ghandles.Draxes3);end
set(Dlaxes,'NextPlot','add'); set(Dkaxes,'NextPlot','add'); set(Draxes,'NextPlot','add')
if zoneSel==1,showm(ghandles.DNLaxes1); end
if zoneSel==2,showm(ghandles.DNLaxes2); end
if zoneSel==3,showm(ghandles.DNLaxes3); end
set(DNLaxes,'NextPlot','add');
% Make visible the current L plot and store it for retrieval by OLay code
% Plot RF1 and/or RF2 OR if No RF1-RF2 Plot RFcmpGL
try %Some experiments do not have ref. plates
Exp(zoneSel).hLRF1(tracN)=plot(Dlaxes,lvalsRF1md,1:days,'y'); hold on
catch1=0;
catch
catch1=1;
end
try
Exp(zoneSel).hLRF2(tracN)=plot(Dlaxes,lvalsRF2md,1:days,'y'); hold on
catch2=0;
catch
catch2=1;
end
try
if catch1 && catch2&& RFcmpGFlg==1
for nn=1:Exp(expN).DexpLength
lvalsRF1md(nn)=Exp(1,expN).Dexp(1,nn).RFcmpGL.dm(1,dmSel).med;
if lvalsRF1md(nn)==0, lvalsRF1md(nn)=140; end
end
end
Exp(zoneSel).hLRF1(tracN)=plot(Dlaxes,lvalsRF1md,1:days,'y');
catch
end
% Plot User Selection Data
try
Exp(zoneSel).hL(tracN)=plot(Dlaxes,lvals,1:days); Exp(zoneSel).hLb(tracN)=plot(Dlaxes,lvals,1:days,'rs');
catch
end
if zoneSel==1,set(ghandles.Dlaxes1,'xlim',[0,140]); end
if zoneSel==2,set(ghandles.Dlaxes2,'xlim',[0,140]); end
if zoneSel==3,set(ghandles.Dlaxes3,'xlim',[0,140]); end
% Make visible Plot for Interaction Data, Store and Hide unless a N (InteractionPBsel) set that plot on Top of the RawData Plots.
% Plot new intL
try
% zeroCLn=zeros(1,days)
% Exp(zoneSel).hzeroCLn=plot(DNLaxes,zeroCLn,1:days,'y');
Exp(zoneSel).hintL(tracN)= plot(DNLaxes,intL,1:days); Exp(zoneSel).hintLb(tracN)=plot(DNLaxes,intL,1:days,'rs');
Exp(zoneSel).hintLadj(tracN)= plot(DNLaxes,intLadj,1:days,'g'); Exp(zoneSel).hintLadjb(tracN)=plot(DNLaxes,intLadj,1:days,'gs');
catch
end
if zoneSel==1,set(ghandles.DNLaxes1,'xlim',[-75,75]); end
if zoneSel==2,set(ghandles.DNLaxes2,'xlim',[-75,75]); end
if zoneSel==3,set(ghandles.DNLaxes3,'xlim',[-75,75]); end
% Hide all K plots
for J=1:(tracN-1)
try
set(Exp(zoneSel).hKRF1(J),'visible','off'); set(Exp(zoneSel).hKRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hK(J),'visible','off'); set(Exp(zoneSel).hKb(J),'visible','off');
catch, end
end
% Make visible the current L plot and store it for retrieval by OLay code
try % Some experiments do not have ref. plates
Exp(zoneSel).hKRF1(tracN)=plot(Dkaxes,kvalsRF1md,1:days,'y');
Exp(zoneSel).hKRF2(tracN)=plot(Dkaxes,kvalsRF2md,1:days,'y');
catch, end
try
Exp(zoneSel).hK(tracN)= plot(Dkaxes,kvals,1:days); Exp(zoneSel).hKb(tracN)=plot(Dkaxes,kvals,1:days,'rs');
catch, end
set(Dkaxes,'xlim',[0,200]) % max(kvals+20)
set(Dkaxes,'ycolor',[.9,.9,1])
% Hide all r plots
for J=1:(tracN-1)
try
set(Exp(zoneSel).hrRF1(J),'visible','off'); set(Exp(zoneSel).hrRF2(J),'visible','off');
catch, end
try
set(Exp(zoneSel).hr(J),'visible','off'); set(Exp(zoneSel).hrb(J),'visible','off');
catch, end
end
% Make visible the current r plot and store it for retrieval by OLay code
try % Some experiments do not have ref. plates
Exp(zoneSel).hrRF1(tracN)=plot(Draxes,rvalsRF1md,1:days,'y');
Exp(zoneSel).hrRF2(tracN)=plot(Draxes,rvalsRF2md,1:days,'y');
catch, end
try
Exp(zoneSel).hr(tracN)= plot(Draxes,rvals,1:days); Exp(zoneSel).hrb(tracN)=plot(Draxes,rvals,1:days,'rs');
catch, end
set(Draxes,'xlim',[0,1])
set(Draxes,'ycolor',[.9,.9,1])
end
if CompositeTrendFlg==1 && EZdatatip~=0
% lbLKr=strcat(gene,'_',spec,'_');
drug=Exp(expN).Dexp(DexpN).DM.drug{dmSel};
conc=Exp(expN).Dexp(DexpN).DM.conc{dmSel};
media=Exp(expN).Dexp(DexpN).DM.media{dmSel};
mod1=Exp(expN).Dexp(DexpN).DM.mod1{dmSel};
conc1=Exp(expN).Dexp(DexpN).DM.conc1{dmSel};
mod2=Exp(expN).Dexp(DexpN).DM.mod2{dmSel};
conc2=Exp(expN).Dexp(DexpN).DM.conc2{dmSel};
dmStr=strcat(drug,conc,'_',media,'_',mod1,conc1,mod2,conc2);
grfgenestr=strcat(grfgenestr,dmStr);
end
if zoneSel==1, set(ghandles.geneOrfLKr1,'string', grfgenestr);end
if zoneSel==2, set(ghandles.geneOrfLKr2,'string', grfgenestr);end
if zoneSel==3, set(ghandles.geneOrfLKr3,'string', grfgenestr);end
% Display Selection PlotFilter
if lstBoxCmpFlg~=1,
seltraceN=Exp(zoneSel).seltraceN
end
if EZdatatip==0, seltraceN=tracN; end
if Exp(4).interacPBsel==0
% replace ghandles.DNLaxes1 (Dlaxes2)etc. with a single
% Exp(zoneSel).DNLaxes,....
set(ghandles.Dlaxes1,'Visible','on')
set(ghandles.Dlaxes2,'Visible','on')
set(ghandles.Dlaxes3,'Visible','on')
set(ghandles.DNLaxes1,'Visible','off')
set(ghandles.DNLaxes2,'Visible','off')
set(ghandles.DNLaxes3,'Visible','off')
for n=1:Exp(zoneSel).traceN
try
set(Exp(zoneSel).hLRF1(n),'visible','off'); set(Exp(zoneSel).hLRF2(n),'visible','off');
catch, end
try
set(Exp(zoneSel).hL(n),'visible','off'); set(Exp(zoneSel).hLb(n),'visible','off');
catch, end
try
set(Exp(zoneSel).hintL(n),'visible','off'); set(Exp(zoneSel).hintLb(n),'visible','off');
catch, end
try
set(Exp(zoneSel).hintLadj(n),'visible','off'); set(Exp(zoneSel).hintLadjb(n),'visible','off');
catch, end
end
try
set(Exp(zoneSel).hLRF1(seltraceN),'visible','on'); set(Exp(zoneSel).hLRF2(seltraceN),'visible','on');
catch, end
try
set(Exp(zoneSel).hL(seltraceN),'visible','on'); set(Exp(zoneSel).hLb(seltraceN),'visible','on');
catch, end
for i=1:Exp(zoneSel).expLoadCnt,
try set(Exp(zoneSel).hzeroCLn(i),'visible','off'); catch ME, end
end
elseif Exp(4).interacPBsel==1
set(ghandles.DNLaxes1,'Visible','on')
set(ghandles.DNLaxes2,'Visible','on')
set(ghandles.DNLaxes3,'Visible','on')
set(ghandles.Dlaxes1,'Visible','off')
set(ghandles.Dlaxes2,'Visible','off')
set(ghandles.Dlaxes3,'Visible','off')
for n=1:Exp(zoneSel).traceN
try set(Exp(zoneSel).hLRF1(n),'visible','off'); catch, end
try set(Exp(zoneSel).hLRF2(n),'visible','off'); catch, end
try set(Exp(zoneSel).hL(n),'visible','off'); set(Exp(zoneSel).hLb(n),'visible','off'); catch, end
try set(Exp(zoneSel).hintL(n),'visible','off'); set(Exp(zoneSel).hintLb(n),'visible','off'); catch, end
try set(Exp(zoneSel).hintLadj(n),'visible','off'); set(Exp(zoneSel).hintLadjb(n),'visible','off'); catch, end
end
try set(Exp(zoneSel).hintL(seltraceN),'visible','on'); set(Exp(zoneSel).hintLb(seltraceN),'visible','on'); catch, end
try set(Exp(zoneSel).hintLadj(seltraceN),'visible','on'); set(Exp(zoneSel).hintLadjb(seltraceN),'visible','on'); catch, end
for i=1:Exp(zoneSel).expLoadCnt
try set(Exp(zoneSel).hzeroCLn(i),'visible','on'); catch ME, end
end
elseif Exp(4).interacPBsel==2
end
%{
% Attempt fix for overlaying L and intL from image datatip==1 18_0103
if Exp(4).interacPBsel==0 %0000
try
set(Exp(zoneSel).hLRF1(seltraceN),'visible','off'); set(Exp(zoneSel).hLRF2(seltraceN),'visible','off');
catch, end
try
set(Exp(zoneSel).hL(seltraceN),'visible','off'); set(Exp(zoneSel).hLb(seltraceN),'visible','off');
catch, end
end
% Hide intL
if Exp(4).interacPBsel==1 %1111
try
set(Exp(zoneSel).hintL(seltraceN),'visible','off'); set(Exp(zoneSel).hintLb(seltraceN),'visible','off');
catch, end
try
set(Exp(zoneSel).hintLadj(seltraceN),'visible','off'); set(Exp(zoneSel).hintLadjb(seltraceN),'visible','off');
catch, end
end
%}

View File

@@ -0,0 +1,45 @@
%EZmultiday callled by EZmultidayGui
global exp
global exDlst
global exFolder
c=strfind(exDlst,' ');
d=strfind(exDlst,'_');
clear expDlstS
ii=0;
for n=1:(size(c,1))
if ((sum(ismember(cell2mat(c(n)),[3,4]))==1 && ~isempty(ismember(cell2mat(c(n)),[3,4]))) ...
|| (sum(ismember(cell2mat(d(n)),[3,4]))==1 && ~isempty(ismember(cell2mat(d(n)),[3,4]))))
ii=ii+1;
expDlst(ii)=exDlst(n);
end
end
clear matFile
ii=0;
for m=1:size(expDlst,2)
exD=fullfile(exFolder,cell2mat(expDlst(m)))
dirLst=dir(exD);
clear matFlst
clear resF
clear resMatF
for n=1:size(dirLst,1)
if sum(ismember('Results2', dirLst(n).name))==8
resF=dirLst(n).name
resMatF=fullfile(exFolder,cell2mat(expDlst(m)),resF,'matResults')
matFlst=dir(resMatF)
for o=1:size(matFlst,1)
if sum(ismember('.mat', matFlst(o).name))==4
ii=ii+1;
resDir{ii}=fullfile(exFolder,cell2mat(expDlst(m)),resF)
matFile(m)=cellstr(fullfile(resMatF,matFlst(o).name))
end
end
end
end
end
Exp(expN).DexpLength=size(matFile,2);
Exp(expN).DexpN=size(matFile,2);

View File

@@ -0,0 +1,61 @@
% Is the callback supposed to be nested?
function EZmultiDayGui
%global Exp
global exDlst
xPos=0.05;
btnWid=0.10;
btnHt=0.05;
spacing=0.02;% Spacing between the button and the next command's label
% The ADD Groups button
btnNumber=1;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
%fhImParm=gcf;
exFolder=uigetdir
exDirs=dir(exFolder)
exFs={exDirs.name}
f=figure('Menubar','none','Position',[1000 100 640 750],'Name','Select Exp Folders' );
hListbox=uicontrol(...
'Style', 'listbox',...
'String',sort(exFs),...
'value',[],...
'max',1000,...
'min',1,...
'Units','normalized',...
'Position', [.70 .40 .6 .60],...
'callback',{@load_listbox}); % 'uiresume(gcbf)'); 'Position', [5 100 60 20])
function load_listbox(source,eventdata)
% global CSrchRng
% global CSrearchRange
userIndx=(get(source,'value'))
userStr=(get(source,'string'))
% scLstIndx=str2num(char(strrep(userStr(userIndx), 'Scan', '')))
user_entry=userStr(userIndx)
exDlst=user_entry
end
exFs
btnNumber=10;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
hedit8=uicontrol(...
'Style', 'pushbutton',...
'String',{'Continue'},...
'Units','normalized',...
'Position', btnPos,...
'callback','uiresume(gcbf)');
uiwait(gcf);
close(f)
end
% EZmultiDay

View File

@@ -0,0 +1,86 @@
% EZmultiDayGui.m called by EZexpSel.m
% EZmultiday is called after this EZmultiDayGui.m also by EZexpSel.m
function EZmultiDayGui
global exDlst
global exFolder
global expType
global scansDir
xPos=0.05;
btnWid=0.10;
btnHt=0.05;
spacing=0.02; % Spacing between the button and the next command's label
btnNumber=1;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
datacursormode off;
exDirs=dir(exFolder);
exFs={exDirs.name};
exFs=exFs(3:end);
% Re-Sort Experiments by 'D__' Day
if expType==2
exFs
ii=1;
for i=1:size(exFs,2)
position=strfind(exFs(i),'_D');
if ~isempty(cell2mat(position)) && isnumeric(cell2mat(position))
da=char(exFs(i));
ff(ii)=sscanf(da((cell2mat(position)+2):end),'%d');
expDayFs(ii)=exFs(i);
indxx(ii)=ii;
selFindx=nonzeros(indxx);
ii=ii+1;
end
end
BB=[ff;selFindx'];
BB=BB';
CC=sortrows(BB,1);
j=1;
for i=1:size(CC,1)
j=CC(i,2);
ExpOrderByExp(i)=expDayFs(j); %exFs(j)
end
else
ExpOrderByExp=sort(exFs);
end
f=figure('Menubar','none','Position',[1000 100 640 750],'Name','Select Exp Folders' );
hListbox=uicontrol(...
'Style', 'listbox',...
'String',ExpOrderByExp,...
'value',[],...
'max',1000,...
'min',1,...
'Units','normalized',...
'Position', [.70 .40 .6 .60],...
'callback',{@load_listbox}); %'uiresume(gcbf)'); 'Position', [5 100 60 20])
function load_listbox(source,eventdata)
userIndx=(get(source,'value'));
userStr=(get(source,'string'));
user_entry=userStr(userIndx);
exDlst=user_entry;
end
exFs
btnNumber=10;
yPos=0.85-(btnNumber-1)*(btnHt+spacing);
btnPos=[xPos yPos-spacing btnWid btnHt];
hedit8=uicontrol(...
'Style', 'pushbutton',...
'String',{'Continue'},...
'Units','normalized',...
'Position', btnPos,...
'callback','uiresume(gcbf)');
uiwait(gcf);
close(f)
end

View File

@@ -0,0 +1,317 @@
% EZmultiExLoad
% Calls to EZVimDisplay (ln 185) EZmultiGeneRFsLst (ln213) EZdiagRFsSheet(ln218)
% TODO this file could use some elseif's
global Exp
global zonePB
global Expaa
global Expbb
global exDlst
global exFolder
% Load .mat file
expN=zonePB; % added to accomodate AppDesigner limitations 230821
Exp(expN).UgeneCnt=0;
Exp(expN).DexpLength=size(matFile,2); DexpLength=size(matFile,2);
for n=1:Exp(expN).DexpLength % size(matFile,2)
if expN==1
orfLstSel=get(handles.GeneOrfTog,'value');
end
if expN==2
orfLstSel=get(handles.GeneOrfTog,'value');
end
if expN==3
orfLstSel=get(handles.GeneOrfTog,'value');
end
Exp(expN).Dexp(n).srtGnLst={('CheckMP/MPDMfile')};
Exp(expN).Dexp(n).srtOrfLst={('CheckMP/MPDMfile')};
set(handles.listboxGnOrf,'value',1) %Fix accomodation for bug in App Designer .. .wlapp converter 230918
set(handles.listboxGnOrf,'string',cellstr([{'Failed To Load'}; {' '}]));
% try
ExpOutmat=matFile(n)
load(char(ExpOutmat));
%cd(scansDir)
%cd ..;
%resDir=pwd;
Exp(expN).Dexp(n).resDir=cell2mat(resDir(n));
cd(Exp(expN).Dexp(n).resDir)
cd ..;
ExpPath=pwd;
Exp(expN).Dexp(n).ExpFoldr=ExpPath;
cd(w)
% Experiment LOADs
load(fullfile(Exp(expN).Dexp(n).ExpFoldr,'MasterPlateFiles','MPDMmat.mat'))
load(fullfile(Exp(expN).Dexp(n).resDir,'Fotos','Coordinates'))
load(fullfile(Exp(expN).Dexp(n).resDir,'Fotos','anlZones'))
load(fullfile(Exp(expN).Dexp(n).resDir,'Fotos','BGatTpts'))
load(fullfile(Exp(expN).Dexp(n).resDir,'PTmats','NImParameters'))
% Backup for cond. sothat failure to load is recovered back prev. ExpJob data
% test in temp
Exp(expN).Dexp(n).temp.DM=DM;
Exp(expN).Dexp(n).temp.MP=MP;
Exp(expN).Dexp(n).temp.scan=scan;
Exp(expN).Dexp(n).temp.FexpScanSpots=FexpScanSpots;
Exp(expN).Dexp(n).temp.FexpScanBMtp=FexpScanBMtp;
Exp(expN).Dexp(n).temp.anlZoneRefs=anlZoneRefs;
Exp(expN).Dexp(n).temp.ImParMat=ImParMat;
Exp(expN).Dexp(n).DM=Exp(expN).Dexp(n).temp.DM;
Exp(expN).Dexp(n).MP=Exp(expN).Dexp(n).temp.MP;
Exp(expN).Dexp(n).scan=Exp(expN).Dexp(n).temp.scan;
Exp(expN).Dexp(n).FexpScanSpots=Exp(expN).Dexp(n).temp.FexpScanSpots;
Exp(expN).Dexp(n).FexpScanBMtp=Exp(expN).Dexp(n).temp.FexpScanBMtp;
Exp(expN).Dexp(n).anlZoneRefs=Exp(expN).Dexp(n).temp.anlZoneRefs;
Exp(expN).Dexp(n).ImParMat=Exp(expN).Dexp(n).temp.ImParMat;
Exp(expN).Dexp((Exp(expN).DexpLength+1):end)=[];
Exp(expN).Dexp(n).temp=[];
end
% Load First new ExpJOb
if expN==1
tPtsSize=size(Exp(expN).Dexp(1).FexpScanBMtp{1,1},(3)); %size(FexpScanBMtp{1,1},3);
set(handles.MPsldr1,'max',MPnum); %length(MP)
set(handles.DMsldr1,'max',length(DM.drug));
set(handles.Tptsldr1,'max',tPtsSize);
% MPnum=length(Exp(expN).Dexp(1).MP);
set(handles.MPsldr1,'min',1,'max',MPnum)
DMnum=length(Exp(expN).Dexp(1).DM.drug);
set(handles.DMsldr1,'min',1,'max',DMnum)
tPtsSize=size(Exp(expN).Dexp(1).FexpScanBMtp{1,1},(3));
set(handles.Tptsldr1,'min',1,'max',tPtsSize)
set(handles.MPsldr1,'value',1)
set(handles.DMsldr1,'value',1)
set(handles.Tptsldr1,'value',1)
set(handles.MPed1,'string','1')
set(handles.DMed1,'string','1')
set(handles.Tpted1,'string','1')
set(handles.MPsldr1,'SliderStep',[1/MPnum 1/MPnum]); % [1/length(MP) 1/length(MP)])
set(handles.DMsldr1,'SliderStep',[1/length(DM.drug) 1/length(DM.drug)]);
set(handles.Tptsldr1,'SliderStep',[1/tPtsSize 1/tPtsSize]);
set(handles.DN1,'value',1)
set(handles.DN1,'string',1)
end
if expN==2,
tPtsSize=size(Exp(expN).Dexp(1).FexpScanBMtp{1,1},(3)); % size(FexpScanBMtp{1,1},3);
set(handles.MPsldr2,'max',MPnum);
set(handles.DMsldr2,'max',length(DM.drug));
set(handles.Tptsldr2,'max',tPtsSize);
% MPnum=length(Exp(expN).Dexp(1).MP);
set(handles.MPsldr2,'min',1,'max',MPnum) % length(MP))
DMnum=length(Exp(expN).Dexp(n).DM.drug);
set(handles.DMsldr2,'min',1,'max',DMnum)
tPtsSize=size(Exp(expN).Dexp(1).FexpScanBMtp{1,1},(3));
set(handles.Tptsldr2,'min',1,'max',tPtsSize)
set(handles.MPsldr2,'value',1)
set(handles.DMsldr2,'value',1)
set(handles.Tptsldr2,'value',1)
set(handles.MPed2,'string','1')
set(handles.DMed2,'string','1')
set(handles.Tpted2,'string','1')
set(handles.MPsldr2,'SliderStep',[1/MPnum 1/MPnum]); %1/length(MP) 1/length(MP)])
set(handles.DMsldr2,'SliderStep',[1/length(DM.drug) 1/length(DM.drug)]);
set(handles.Tptsldr2,'SliderStep',[1/tPtsSize 1/tPtsSize]);
set(handles.DN2,'value',1)
set(handles.DN2,'string',1)
end
if expN==3
% Exp(3).traceN=0;
tPtsSize=size(Exp(expN).Dexp(1).FexpScanBMtp{1,1},(3)); % size(FexpScanBMtp{1,1},3);
set(handles.MPsldr3,'max',MPnum);
set(handles.DMsldr3,'max',length(DM.drug));
set(handles.Tptsldr3,'max',tPtsSize);
% MPnum=length(Exp(expN).Dexp(1).MP);
set(handles.MPsldr3,'min',1,'max',MPnum)
DMnum=length(Exp(expN).Dexp(1).DM.drug);
set(handles.DMsldr3,'min',1,'max',DMnum)
tPtsSize=size(Exp(expN).Dexp(1).FexpScanBMtp{1,1},(3));
set(handles.Tptsldr3,'min',1,'max',tPtsSize)
set(handles.MPsldr3,'value',1)
set(handles.DMsldr3,'value',1)
set(handles.Tptsldr3,'value',1)
set(handles.MPed3,'string','1')
set(handles.DMed3,'string','1')
set(handles.Tpted3,'string','1')
set(handles.MPsldr3,'SliderStep',[1/MPnum 1/MPnum]); % 1/length(MP) 1/length(MP)])
set(handles.DMsldr3,'SliderStep',[1/length(DM.drug) 1/length(DM.drug)]);
set(handles.Tptsldr3,'SliderStep',[1/tPtsSize 1/tPtsSize]);
set(handles.DN3,'value',1)
set(handles.DN3,'string',1)
end
if expN==1
set(handles.GeneOrfLoc1,'string',{''});
set(handles.graphStrLoc1,'string',{''});
cla(handles.Paxes1)
end
if expN==2
set(handles.GeneOrfLoc2,'string',{''});
set(handles.graphStrLoc2,'string',{''});
cla(handles.Paxes2)
end
if expN==3
set(handles.GeneOrfLoc3,'string',{''});
set(handles.graphStrLoc3,'string',{''})
cla(handles.Paxes3)
end
Exp(expN).Dexp(1).srtGnLst={('CheckMP/MPDMfile')};
Exp(expN).Dexp(1).srtOrfLst={('CheckMP/MPDMfile')};
set(handles.listboxGnOrf,'value',1) %Fix accomodation for bug in App Designer .. .wlapp converter 230918
set(handles.listboxGnOrf,'string',Exp(expN).Dexp(1).srtGnLst)
set(handles.listboxGnOrf,'string',Exp(expN).Dexp(1).srtOrfLst)
EZVimDisplay
usrRefFg=0;
prompt={'Enter GeneName to use as Reference:',...
'Enter Specifics Term if used to futher specify Reference '}
dlg_title='User Reference Input';
num_lines=1;
def={'RF1','None'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
if iscell(answer(1))
rfGene=cell2mat(answer(1));
else
rfGene=answer(1);
end
if ~strcmpi(rfGene,'RF1')|| ~strcmpi(rfGene,'RF2'), usrRefFg=1; end
rfSpec=answer(2); % if strcmpi(answer(2),'None'), rfSpec=''; end
rfGnSp=strcat(rfGene,rfSpec);
if strcmpi(rfSpec,'None'), rfGnSp={strcat(rfGene,'-')}; end
% Added 17-1023 For User Addition of Gene Composites to ListBox
Expaa{expN,1}=[]
Expbb{expN,1}=[];
for n=1:size(matFile,2)
try
EZmultiGeneRFsLst
catch
msg='EZmultiGeneRFLst failed possibly Too Few non-zero Median spots'
end
EZdiagRFsSheet
Exp(expN).Dexp(n).RFrnames=rnames;
Exp(expN).Dexp(n).RFdata=data;
RFconfig=0;
if sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmean')) ...
&& ~isempty(Exp(expN).Dexp(n).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmeanG')) ...
&& isempty(Exp(expN).Dexp(n).RFmeanG)
RFconfig=1;
end
if sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmean'))==0 ...
|| isempty(Exp(expN).Dexp(n).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmeanG')) ...
&& ~isempty(Exp(expN).Dexp(n).RFmeanG)
RFconfig=2;
end
if sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmean')) ...
&& ~isempty(Exp(expN).Dexp(n).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmeanG')) ...
&& ~isempty(Exp(expN).Dexp(n).RFmeanG)
RFconfig=3;
end
Exp(expN).RFconfig=RFconfig;
Exp(expN).Dexp(n).RFconfig=RFconfig;
try msgBadGeneName
catch, end
try
Exp(expN).Dexp(n).resetHtmpTg =5; %Exp(expN).resetHtmpTg =5;
if RFconfig==0
RFconfigMsg='No RF1 references in this Experiment Job'
Exp(expN).Dexp(n).resetHtmpTg =3; %Exp(expN).resetHtmpTg =3;
end
catch
end
end
% Auto Select Zone And Load Listboxgnorf Data
DexpN=1;
zeroCLn=zeros(1,DMnum);
Exp(expN).expLoadCnt=Exp(expN).expLoadCnt+1; expLdCnt=Exp(expN).expLoadCnt;
if expN==1 % Adapted to accomodate AppDesigner 230821
set(handles.zonePB1,'value',1)
set(handles.zonePB2,'value',0)
set(handles.zonePB3,'value',0)
set(handles.zonePB1,'BackgroundColor',[1.0 0.6 0.6])
set(handles.zonePB2,'BackgroundColor',[1.0 1.0 1.0])
set(handles.zonePB3,'BackgroundColor',[1.0 1.0 1.0])
orfLstSel=get(handles.GeneOrfTog,'value')
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(1).Dexp(1).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(1).Dexp(1).srtGnLst)
end
DNLaxes1=handles.DNLaxes1;
Exp(1).hzeroCLn(expLdCnt)=plot(DNLaxes1,zeroCLn,1:DMnum,'y');
end
if expN==2 % Adapted to accomodate AppDesigner 230821
set(handles.zonePB1,'value',0)
set(handles.zonePB3,'value',0)
set(handles.zonePB2,'value',1)
set(handles.zonePB2,'BackgroundColor',[1.0 0.6 0.6])
set(handles.zonePB1,'BackgroundColor',[1.0 1.0 1.0])
set(handles.zonePB3,'BackgroundColor',[1.0 1.0 1.0])
orfLstSel=get(handles.GeneOrfTog,'value');
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(2).Dexp(1).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(2).Dexp(1).srtGnLst)
end
DNLaxes2=handles.DNLaxes2;
Exp(2).hzeroCLn(expLdCnt)=plot(DNLaxes2,zeroCLn,1:DMnum,'y');
end
if expN==3 % Adapted to accomodate AppDesigner 230821
set(handles.zonePB1,'value',0)
set(handles.zonePB2,'value',0)
set(handles.zonePB3,'value',1)
set(handles.zonePB3,'BackgroundColor',[1.0 0.6 0.6]);
set(handles.zonePB1,'BackgroundColor',[1.0 1.0 1.0]);
set(handles.zonePB2,'BackgroundColor',[1.0 1.0 1.0]);
orfLstSel=get(handles.GeneOrfTog,'value');
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(3).Dexp(1).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(3).Dexp(1).srtGnLst)
end
DNLaxes3=handles.DNLaxes3;
Exp(3).hzeroCLn(expLdCnt)=plot(DNLaxes3,zeroCLn,1:DMnum,'y');
end
if Exp(4).interacPBsel==0 %if interaction "raw" don't show a center line
for i=1:Exp(expN).expLoadCnt,
try set(Exp(expN).hzeroCLn(i),'visible','off');
catch
catchissue='Ln521'
i
end
end
end
% HtMapTog 'string', 'Current user L/N' selection'
Exp(expN).Dexp(DexpN).spotIndx=[];
if expN==1,
Exp(1).htmapPBsel=0;
set(handles.HtMapTog1,'string','L')
EZhtMap
end
if expN==2,
Exp(2).htmapPBsel=0;
set(handles.HtMapTog2,'string','L')
EZhtMap
end
if expN==3,
Exp(3).htmapPBsel=0;
set(handles.HtMapTog3,'string','L')
EZhtMap
end
htMapTogPBfg=0;

View File

@@ -0,0 +1,646 @@
% EZmultiGeneRFsLst Called by EZmultiExLoad
% Called by EZmultiExLoad about line173 Which is called by EZexpSel
% User Select Reference Gene and Specifics Added
% Compile GeneList and OrfList
% Sort and add the medians of Ref Plates if RF1,RF2 exist
clear aa bb c uu vv drf drfPindx drfr drfc
clear RF1scanN RF2scanN
for mx=1:length(Exp(expN).Dexp(n).MP)
try
char((Exp(expN).Dexp(n).MP(mx).genename{1}(384)))
MPnum=mx;
catch
break
end
end
DMnum=length(Exp(expN).Dexp(n).DM.drug);
tPtsSize=size(Exp(expN).Dexp(n).FexpScanBMtp{1,1},(3)); %size(FexpScanBMtp{1,1},3);
lstindx=0;
lstindxOrf=0;
spN=0;
Exp(expN).Dexp(n).RFrnames %<--???
rfcnt=0;
dRF1indx=0;
RF1mp=[]; RF2mp=[];
rfSp=cell2mat(rfSpec); % user entry of Specifics for Ref selection
for mp=1:MPnum
% RF1fullPlate=0;
for ind384=1:384
spN=spN+1;
try
r=ceil(ind384/24);
if rem(ind384,24)==0, c=24; else c=rem(ind384,24); end
% 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
%****Check for full(384spot) Reference Plates (RF1 or/and RF2)**************
RF1fullPlate=0;
try RF1fullPlate=sum(ismember((Exp(expN).Dexp(n).MP(mp).genename{1}),rfGene))==384; catch, mp, msg=strcat(num2str(mp),' genename ERROR'), end
RF2fullPlate=0;
try RF2fullPlate=sum(ismember((Exp(expN).Dexp(n).MP(mp).genename{1}),'RF2'))==384; catch, mp, msg=strcat(num2str(mp),' genename ERROR'), end
% Capture non-reference spot location and ORF data
if isempty(regexpi(char((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384))),'blank'))... %'\<blank\>'
&& ~isnumeric(Exp(expN).Dexp(n).MP(mp).orf{1}(ind384))...
&& ~strcmpi((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)),'')...
&& ~isempty((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)))...
&& ((~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),rfGene)|| ~strcmpi((Exp(expN).Dexp(n).MP(mp).specifics{1}(ind384)),rfSp))...
&& (~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),rfGene)|| ~strcmpi(rfSp,'None')))...
&& ((~strcmpi((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)),rfGene)|| ~strcmpi((Exp(expN).Dexp(n).MP(mp).specifics{1}(ind384)),rfSp))...
&& (~strcmpi((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)),rfGene)|| ~strcmpi(rfSp,'None')))...
&& (~strcmpi((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)),'RF2')||~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),'RF2'))...
&& iscellstr((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)))
lstindxOrf=lstindxOrf+1;
Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)=strrep((Exp(expN).Dexp(n).MP(mp).orf{1}(ind384)),':',' ');
bb(lstindxOrf,1)=(Exp(expN).Dexp(n).MP(mp).orf{1}(ind384));
bb(lstindxOrf,2)={strcat(':',num2str(mp),':',num2str(r),':',num2str(c))};
bb(lstindxOrf,3)={mp};
bb(lstindxOrf,4)={r};
bb(lstindxOrf,5)={c};
mutorfs(lstindxOrf)=spN; %16_0318 added for Interaction EZinteract
% Exp(expN).Dexp(n).mutSpotIndx(lstindxOrf)=spN; %16_0318 added for Interaction EZinteract
end
% Capture non-reference spot location and GENENAME data
if isempty(regexpi(char((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384))),'blank'))... %'\<blank\>'
&& ~isnumeric(Exp(expN).Dexp(n).MP(mp).genename{1}(ind384))...
&& ~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),'')...
&& ~isempty((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)))...
&& (~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),rfGene)...
|| ~strcmpi((Exp(expN).Dexp(n).MP(mp).specifics{1}(ind384)),rfSp))... % AddSpecifics rfSp && ~RF1fullPlate)...
&& (~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),rfGene) || ~strcmpi(rfSp,'None'))...
&& (~strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),'RF2'))... % && ~RF2fullPlate)...
&& iscellstr((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)))
lstindx=lstindx+1;
Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)=strrep((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),':',' ');
aa(lstindx,1)=(Exp(expN).Dexp(n).MP(mp).genename{1}(ind384));
aa(lstindx,2)={strcat(':',num2str(mp),':',num2str(r),':',num2str(c))};
aa(lstindx,3)={mp};
aa(lstindx,4)={r};
aa(lstindx,5)={c};
mutgenes(lstindx)=spN;
elseif (RF1fullPlate==1 ... % sum(ismember((Exp(expN).Dexp(n).MP(mp).genename{1}),rfGene))==384 || ...
|| (((length(unique(Exp(expN).Dexp(n).MP(mp).genename{1}(1:384))))==1 && mp==1 ) ... % (isequal((Exp(expN).Dexp(n).MP(mp).genename{1}(1:384)), (Exp(expN).Dexp(n).MP(mp).genename{1}(384:-1:1)))&& mp==1 )) && ...
&& ~exist('RF1scanN','var')))
RF1mp=mp
RF1scanN=(mp*DMnum)-(DMnum-1)
rfcnt=rfcnt+1;
RFs(spN:spN+383)=spN:spN+383;
elseif (RF2fullPlate==1|| ... % sum(ismember((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),'RF2'))==384 ||...
(((length(unique(Exp(expN).Dexp(n).MP(mp).genename{1}(1:384))))==1 && mp==MPnum ) && ...
~exist('RF2scanN','var')))
RF2mp=mp
rfcnt=rfcnt+1;
RFs(spN:spN+383)=spN:spN+383;
RF2scanN=(mp*DMnum)-(DMnum-1)
% DISPersed REFerence capture and find Medians
elseif ( ((strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),rfGene) ...
&& strcmpi((Exp(expN).Dexp(n).MP(mp).specifics{1}(ind384)),rfSp))) ...
|| ((strcmpi((Exp(expN).Dexp(n).MP(mp).genename{1}(ind384)),rfGene) ...
&& strcmpi(rfSp,'None'))) ) &&(RF1fullPlate~=1)
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)={strcat(':',num2str(mp),':',num2str(r),':',num2str(c))};
drf(dRF1indx,3)={mp}; drfMP(dRF1indx,mp)=mp;
drf(dRF1indx,4)={r}; drfr(dRF1indx,mp)=r;
drf(dRF1indx,5)={c}; drfc(dRF1indx,mp)=c;
drf(dRF1indx,6)={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
mp % Disable in future to prevent a bomb out OR put into a nested TryCatch
ind384 % Disable in future to prevent a bomb out OR put into a nested TryCatch
msgBadGeneName=strcat('check genename at mp=',num2str(mp),' indx=',num2str(ind384))
end
end
mp
end
% Cover case if mutorfs RFs are labeled RF1 or RF2
try
Exp(expN).Dexp(n).mutSpotIndx.wRFs=union(RFs, mutorfs);
catch
msg='No RFs Found in Exp! wRFs'
Exp(expN).Dexp(n).mutSpotIndx.wRFs=mutorfs;
end
try
Exp(expN).Dexp(n).mutSpotIndx.woRFs=setdiff(mutorfs,RFs);
catch
msg='No RFs Found in Exp! woRFs'
Exp(expN).Dexp(n).mutSpotIndx.woRFs=mutorfs;
end
Exp(expN).Dexp(n).RFmd1indx=[];
Exp(expN).Dexp(n).RFmd1pltN=[];
Exp(expN).Dexp(n).RFmd1LB={[]};
Exp(expN).Dexp(n).RFmd1indx=[];
Exp(expN).Dexp(n).RFmd1pltN={};
Exp(expN).Dexp(n).RFmd1val=[];
Exp(expN).Dexp(n).mean1=[];
Exp(expN).Dexp(n).std1=[];
Exp(expN).Dexp(n).min1=[];
Exp(expN).Dexp(n).max1=[];
Exp(expN).Dexp(n).RFcmpK=[]; %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr=[]; %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL=[]; %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFmd2LB={[]};
Exp(expN).Dexp(n).RFmd2indx=[];
Exp(expN).Dexp(n).RFmd2pltN=[];
Exp(expN).Dexp(n).RFmd2val=[];
Exp(expN).Dexp(n).mean2=[];
Exp(expN).Dexp(n).std2=[];
Exp(expN).Dexp(n).min2=[];
Exp(expN).Dexp(n).max2=[];
Exp(expN).Dexp(n).RFmean=[];
Exp(expN).Dexp(n).RFstd=[];
Exp(expN).Dexp(n).RFmin=[];
Exp(expN).Dexp(n).RFmax=[];
Exp(expN).Dexp(n).RFmdPLB={[]};
Exp(expN).Dexp(n).RFmdPindx=[];
Exp(expN).Dexp(n).RFmdPpltN=[];
Exp(expN).Dexp(n).RFmdPscanN=[];
Exp(expN).Dexp(n).RFmedianP=[];
Exp(expN).Dexp(n).stdP=[];
Exp(expN).Dexp(n).meanP=[];
Exp(expN).Dexp(n).minP=[];
Exp(expN).Dexp(n).maxP=[];
Exp(expN).Dexp(n).RFmdGLB={[]};
Exp(expN).Dexp(n).RFmdGindx=[];
Exp(expN).Dexp(n).RFmdGpltN=[];
Exp(expN).Dexp(n).RFmdGscanN=[];
Exp(expN).Dexp(n).RFmedianG=[];
Exp(expN).Dexp(n).RFminG=[];
Exp(expN).Dexp(n).RFmaxG=[];
Exp(expN).Dexp(n).RFstdG=[];
Exp(expN).Dexp(n).RFmeanG=[];
Exp(expN).Dexp(n).RFcmpGK=[]; %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGr=[]; %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGL=[]; %For Ref Composite 17_1009
if exist('RF1scanN','var')
for d=0:(DMnum-1)
medianIndx=[];
nonZeroIndx=[];
medValList=[];
rf1scN=RF1scanN+d;
try %if RF1scanN doesn't exist this addition to list will be skipped
nonZeroIndx=find(Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(1:384,5));
if isempty(nonZeroIndx)
nonZeroCnt=0
medianIndx=nonZeroIndx;
else
nonZeroCnt=length(nonZeroIndx);
end
if ~isempty(nonZeroIndx) && mod(nonZeroCnt,2)==0, medianIndx=nonZeroIndx(1:nonZeroCnt-1); end
if ~isempty(nonZeroIndx) && mod(nonZeroCnt,2)~=0, medianIndx=nonZeroIndx; end
clear medValLst
clear kValLst
clear rValLst
if ~isempty(nonZeroIndx) && length(medianIndx) > (.15*384) % To calc. a median, more than 15% of spots must be nonZero
medValLst=Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(medianIndx,5);
medValList1{d+1}=medValLst;
min1=min(medValLst);
max1=max(medValLst);
std1=std(medValLst);
mean1=mean(medValLst);
kValLst=Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(medianIndx,3); % For Ref Composite 17_1009
rValLst=Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(medianIndx,4); % For Ref Composite 17_1009
mval1=median(medValLst); %mval1=median(Exp(expN).Dexp(n).scan(RF1mps).plate(1).CFout(1:384,5)); %CFout(1:383,5));
RFmd1pos=find(mval1==(Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(1:384,5)));
RFmd1loc(1)=ceil(RFmd1pos/24); %calc r value
RFmd1loc(2)=RFmd1pos - ((RFmd1loc(1)-1)*24); %calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1md(',num2str(d+1),')')}; %{'RF1md'};
aa(lstindx,2)={strcat(':',num2str(RF1mp),':',num2str(RFmd1loc(1)),':',num2str(RFmd1loc(2)))}; %,'std_',num2str(std1))};
bb(lstindxOrf,1)={strcat('RF1md(',num2str(d+1),')')}; %remove string2cell brackets {...} %{'RF1md'};
bb(lstindxOrf,2)={strcat(':',num2str(RF1mp),':',num2str(RFmd1loc(1)),':',num2str(RFmd1loc(2)))}; %,'std_',num2str(std1))};
% Composite Reference Amalgum Plot
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1cmp(',num2str(d+1),')')};
aa(lstindx,2)={''};
bb(lstindxOrf,1)={strcat('RF1cmp(',num2str(d+1),')')};
bb(lstindxOrf,2)={''};
Exp(expN).Dexp(n).RFmd1LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(n).RFmd1indx(d+1)=RFmd1pos;
Exp(expN).Dexp(n).RFmd1pltN=RF1mp;
Exp(expN).Dexp(n).RFmd1val(d+1)=mval1;
Exp(expN).Dexp(n).mean1(d+1)=mean1;
Exp(expN).Dexp(n).std1(d+1)=std1;
Exp(expN).Dexp(n).min1(d+1)=min1;
Exp(expN).Dexp(n).max1(d+1)=max1;
Exp(expN).Dexp(n).RFcmpL(1).dm(d+1).Lvals=medValLst; %17_1201 TrendOL
Exp(expN).Dexp(n).RFcmpL(1).dm(d+1).med=median(medValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(1).dm(d+1).mean=mean(medValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(1).dm(d+1).std=std(medValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(1).dm(d+1).min=min(medValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(1).dm(d+1).max=max(medValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(1).dm(d+1).Kvals=kValLst;
Exp(expN).Dexp(n).RFcmpK(1).dm(d+1).med=median(kValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(1).dm(d+1).mean=mean(kValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(1).dm(d+1).std=std(kValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(1).dm(d+1).min=min(kValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(1).dm(d+1).max=max(kValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(1).dm(d+1).rvals=rValLst;
Exp(expN).Dexp(n).RFcmpr(1).dm(d+1).med=median(rValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(1).dm(d+1).mean=mean(rValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(1).dm(d+1).std=std(rValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(1).dm(d+1).min=min(rValLst); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(1).dm(d+1).max=max(rValLst); %For Ref Composite 17_1009
else
% Need to set L r K values to zeros or pick the first spot with zeros
% Spot 1 could be other than zero as the median isn't calculated if
% fewer than some percent are nonzero
medianCalcFailed='To Few nonZero spots for valid median RF1 selection'
firstZero=find(((Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(1:384,5))==0),1,'first')
Exp(expN).Dexp(n).RFmd1indx(d+1)=firstZero;
Exp(expN).Dexp(n).RFmd1pltN=RF1mp;
try medValList1{d+1}=Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(medianIndx,5); nonZeroCnt; catch, catcherror='Ln356', end
end
catch
medianCalcTryFailed1='Failed! Failed! Ln362 But process continued with placeholder P1ind384 spot value!'
try
firstZero=find(((Exp(expN).Dexp(n).scan(rf1scN).plate(1).CFout(1:384,5))==0),1,'first')
Exp(expN).Dexp(n).RFmd1indx(d+1)=firstZero;
catch
Exp(expN).Dexp(n).RFmd1indx(d+1)=384; %if crapout,Then use spot384 as default to keep going
end
try
Exp(expN).Dexp(n).RFmd1pltN=RF1mp;
catch
Exp(expN).Dexp(n).RFmd1pltN=1;
end
end
end
end
% Calc RF2 median if a full plate of RF2s exist
Exp(expN).Dexp(n).RFmd2indx=[];
Exp(expN).Dexp(n).RFmd2pltN=[];
if exist('RF2scanN','var')
for d=0:(DMnum-1)
medianIndx2=[];
nonZeroIndx2=[];
medValList2=[];
rf2scN=RF2scanN+d;
try %if RF2scanN doesn't exist this addition to list will be skipped
nonZeroIndx2=find(Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(1:384,5));
if isempty(nonZeroIndx2)
nonZeroCnt2=0;
medianIndx2=nonZeroIndx2;
else
nonZeroCnt2=length(nonZeroIndx2);
end
if ~isempty(nonZeroIndx2) && mod(nonZeroCnt2,2)==0, medianIndx2=nonZeroIndx2(1:nonZeroCnt2-1); end
if ~isempty(nonZeroIndx2) && mod(nonZeroCnt2,2)~=0, medianIndx2=nonZeroIndx2; end
clear medValLst2
clear kValLst2
clear rValLst2
if ~isempty(nonZeroIndx2) && length(medianIndx2) > (.15*384) % to calc. a median, more than 15% of spots must be nonZero
medValLst2=Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(medianIndx2,5);
medValList2{d+1}=medValLst2;
min2=min(medValLst2);
max2=max(medValLst2);
std2=std(medValLst2);
mean2=mean(medValLst2);
kValLst2=Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(medianIndx2,3); %For Ref Composite 17_1009
rValLst2=Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(medianIndx2,4); %For Ref Composite 17_1009
mval2=median(medValLst2); %mval2=median(Exp(expN).Dexp(n).scan(RF2mps).plate(1).CFout(1:383,5));
RFmd2pos=find(mval2==(Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(1:384,5)));
RFmd2loc(1)=ceil(RFmd2pos/24); %calc r value
RFmd2loc(2)=RFmd2pos - ((RFmd2loc(1)-1)*24); %calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF2md(',num2str(d+1),')')}; %{'RF2md'};
aa(lstindx,2)={strcat(':',num2str(RF2mp),':',num2str(RFmd2loc(1)),':',num2str(RFmd2loc(2)))}; %,'std_',num2str(std2))};
bb(lstindxOrf,1)={strcat('RF2md(',num2str(d+1),')')}; %remove string2cell brackets {...} %{'RF2md'};
bb(lstindxOrf,2)={strcat(':',num2str(RF2mp),':',num2str(RFmd2loc(1)),':',num2str(RFmd2loc(2)))}; %,'std_',num2str(std2))};
% Composite Reference Amalgum Plot (CRAP)
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF2cmp(',num2str(d+1),')')};
aa(lstindx,2)={''};
bb(lstindxOrf,1)={strcat('RF2cmp(',num2str(d+1),')')};
bb(lstindxOrf,2)={''};
Exp(expN).Dexp(n).RFmd2LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(n).RFmd2indx(d+1)=RFmd2pos;
Exp(expN).Dexp(n).RFmd2pltN=RF2mp;
Exp(expN).Dexp(n).RFmd2val(d+1)=mval2;
Exp(expN).Dexp(n).mean2(d+1)=mean2;
Exp(expN).Dexp(n).std2(d+1)=std2;
Exp(expN).Dexp(n).min2(d+1)=min2;
Exp(expN).Dexp(n).max2(d+1)=max2;
Exp(expN).Dexp(n).RFcmpL(2).dm(d+1).Lvals=medValLst2; %17_1201 TrendOL
Exp(expN).Dexp(n).RFcmpL(2).dm(d+1).med=median(medValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(2).dm(d+1).mean=mean(medValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(2).dm(d+1).std=std(medValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(2).dm(d+1).min=min(medValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpL(2).dm(d+1).max=max(medValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(2).dm(d+1).Kvals=kValLst2;
Exp(expN).Dexp(n).RFcmpK(2).dm(d+1).med=median(kValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(2).dm(d+1).mean=mean(kValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(2).dm(d+1).std=std(kValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(2).dm(d+1).min=min(kValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpK(2).dm(d+1).max=max(kValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(2).dm(d+1).rvals=rValLst2;
Exp(expN).Dexp(n).RFcmpr(2).dm(d+1).med=median(rValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(2).dm(d+1).mean=mean(rValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(2).dm(d+1).std=std(rValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(2).dm(d+1).min=min(rValLst2); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpr(2).dm(d+1).max=max(rValLst); %For Ref Composite 17_1009
else
% Pick the first spot with zeros
% Use that position to satisfy and keep process OK
medianCalcFailed2='To Few nonZero spots for valid median RF2 selection'
firstZero2=find(((Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(1:384,5))==0),1,'first')
Exp(expN).Dexp(n).RFmd2indx(d+1)=firstZero2;
Exp(expN).Dexp(n).RFmd2pltN=RF2mp;
try medValList2{d+1}=Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(medianIndx2,5); nonZeroCnt2; catch, catchissue='Ln431', end
end
catch
medianCalcTryFailed2='Failed! Failed! Ln436 No RF1median But process continued with placeholder P1ind384 spot value!'
try
firstZero2=find(((Exp(expN).Dexp(n).scan(rf2scN).plate(1).CFout(1:384,5))==0),1,'first');
Exp(expN).Dexp(n).RFmd2indx(d+1)=firstZero2;
catch
catchissue='Ln442'
Exp(expN).Dexp(n).RFmd2indx(d+1)=384; %if crapout,Then use spot384 as default to keep going
end
try
Exp(expN).Dexp(n).RFmd2pltN=RF2mp;
catch
catchissue='Ln448'
Exp(expN).Dexp(n).RFmd2pltN=1;
end
end
clear RFcombValList
RFcombValList=cat(1,medValList1{d+1},medValList2{d+1});
Exp(expN).Dexp(n).RFmean(d+1)=mean(RFcombValList);
Exp(expN).Dexp(n).RFstd(d+1)=std(RFcombValList);
try, Exp(expN).Dexp(n).RFmin(d+1)=min(RFcombValList);
catch, Exp(expN).Dexp(n).RFmin(d+1)=0; end
try, Exp(expN).Dexp(n).RFmax(d+1)=max(RFcombValList);
catch, Exp(expN).Dexp(n).RFmax(d+1)=0; end
end
elseif exist('RF1scanN','var')
Exp(expN).Dexp(n).RFmean=Exp(expN).Dexp(n).mean1;
Exp(expN).Dexp(n).RFstd=Exp(expN).Dexp(n).std1;
Exp(expN).Dexp(n).RFmin=Exp(expN).Dexp(n).min1;
Exp(expN).Dexp(n).RFmax=Exp(expN).Dexp(n).max1;
end
% Disperse reference plates
Exp(expN).Dexp(n).RFmdPindx=[];
Exp(expN).Dexp(n).RFmdPpltN=[];
if exist('drf','var') % ('RF1scanN','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,3))~=cell2mat(drf((j-1),3)), chgIndx(i)=j; i=i+1; end
end
end
chgIndx(length(chgIndx)+1)=length(drf)+1;
uu=zeros(size(drf,1),4);
uu(:,1:4)=cell2mat(drf(:,3:6));
vv=zeros(size(drf,1),DMnum); %(length(drf),DMnum);
dMPs=unique(cell2mat(drf(:,3)));
%{
for mm=1:MPnum
nonZrfIndx.mp{mm,:}=drfPindx((find(drfPindx(:,mm))),mm);
end
%}
% nzValsG=zeros(DMnum,size(drf,1));
% nzValsAcc=zeros(DMnum,384);
for mm=1:length(dMPs) % length(chgIndx)
for d=1:(DMnum)
medianIndxDisp=[];
NZrefIndxP=[];
nonZeroValsP=[];
medValLstDisp=[];
rf1scNdisp=((dMPs(mm)-1)*DMnum)+(d);
% Determine the dispersed RFs median mean and std if such exist
try
NZrefIndxP=drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm)); % find(Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(drf(chgIndx(cI):chgIndx(cI+1)),5));
% vv=Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
vv(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
% For Global Ref Composite 17_1009
vvK(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,3);
vvr(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,4);
nonZeroValsP=nonzeros(Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5));
std1Disp=std(nonZeroValsP);
mean1Disp=mean(nonZeroValsP);
minDisp=min(nonZeroValsP);
maxDisp=max(nonZeroValsP);
drfVals=Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
% nzValsAcc(mm).DM(d,:)=nonZeroValsP;
% MEDIAN Determination for PLATES with Dispersed RFs
% NZrefIndxP=NZrefIndxP %find(Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5));
if isempty(NZrefIndxP)
nonZeroCntDisp=0;
medianIndxDisp=NZrefIndxP;
else
nonZeroCntDisp=length(NZrefIndxP);
end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)==0, medianIndxDisp=NZrefIndxP(1:nonZeroCntDisp-1); end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)~=0, medianIndxDisp=NZrefIndxP; end
if ~isempty(NZrefIndxP) && length(medianIndxDisp) > 0 %(.15*384) %To calc. a median, more than 15% of spots must be nonZero
medValLstDisp=Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(medianIndxDisp,5);
%medValList1Disp{d}=medValLstDisp;
mval1Disp=median(medValLstDisp); % mval1=median(Exp(expN).Dexp(n).scan(RF1mps).plate(1).CFout(1:384,5)); %CFout(1:383,5));
nonZeroMedPosIndx=find(mval1Disp==nonZeroValsP); % (Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5))); %(nonZeroIndxDisp,5))); %((nonZrfIndx.mp{dMPs(mm),:}),5)));
RFmd1posD=NZrefIndxP(nonZeroMedPosIndx); % drfPindx((RFmd1posIndx),dMPs(mm));
RFmd1locD(1)=ceil(RFmd1posD/24); % calc r value
RFmd1locD(2)=RFmd1posD - ((RFmd1locD(1)-1)*24); % calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
if usrRefFg==0, rfPLbl='RF1mdP('; else rfPLbl=strcat('RF-',rfGnSp,'mdP('); end % accomodate User Ref Selection
if iscell(strcat(rfPLbl,num2str(d),')')),
aa(lstindx,1)=strcat(rfPLbl,num2str(d),')');
bb(lstindxOrf,1)=strcat(rfPLbl,num2str(d),')'); % remove string2cell brackets {...}
else
aa(lstindx,1)={strcat(rfPLbl,num2str(d),')')};
bb(lstindxOrf,1)={strcat(rfPLbl,num2str(d),')')}; %remove string2cell brackets {...}
end
aa(lstindx,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))};
bb(lstindxOrf,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))};
Exp(expN).Dexp(n).RFmdPLB(d,dMPs(mm))=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(n).RFmdPindx(d,dMPs(mm))=RFmd1posD;
Exp(expN).Dexp(n).RFmdPpltN(d,dMPs(mm))=dMPs(mm); %This is a storage of the MasterPlate used NOT the ScanPlate? WeMight wish to store the ScanPlateNumber also???
Exp(expN).Dexp(n).RFmdPscanN(d,dMPs(mm))=rf1scNdisp;
Exp(expN).Dexp(n).RFmedianP(d,dMPs(mm))=mval1Disp;
Exp(expN).Dexp(n).stdP(d,dMPs(mm))=std1Disp;
Exp(expN).Dexp(n).meanP(d,dMPs(mm))=mean1Disp;
Exp(expN).Dexp(n).minP(d,dMPs(mm))=minDisp;
Exp(expN).Dexp(n).maxP(d,dMPs(mm))=maxDisp;
else
% Need to set L r K values to zeros or pick the first spot with zeros
% Spot 1 could be other than zero as the median isn't calculated if fewer than some percent are nonzero
medianCalcFailedD='To Few nonZero spots for valid median RF1 selection'
firstZeroDindx=find(((Exp(expN).Dexp(n).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5))==0),1,'first');
firstZeroD=drfPindx((firstZeroDindx),dMPs(mm));
Exp(expN).Dexp(n).RFmdPindx(d,dMPs(mm))=firstZeroD;
Exp(expN).Dexp(n).RFmdPpltN(d,dMPs(mm))=dMPs(mm); % RF1mp; % Is this supposed to be the MP number or the ScanPlate number???
end
catch
medianCalcTryFailed1D='Failed! Failed! Ln565 {Dispersed RF1s} "try" But process continued with placeholder Plate spot value!'
try
firstZeroindxD=find(vv((chgIndx(d):chgIndx(d+1)-1),5)==0,1,'first');
firstZeroPindx=uu(firstZeroindxD,4);
Exp(expN).Dexp(n).RFmdPpltN(d,dMPs(mm))=dMPs(mm);
Exp(expN).Dexp(n).RFmdPindx(d,dMPs(mm))=firstZeroPindx;
catch
catchissue='try at Ln565'
Exp(expN).Dexp(n).RFmdPpltN(d,dMPs(mm))=dMPs(mm);
Exp(expN).Dexp(n).RFmdPindx(d,dMPs(mm))=384; % if crapout,Then use spot384 as default to keep going
end
try
Exp(expN).Dexp(n).RFmdPpltN=dMPs(mm);
catch
catchissue='Ln619'
Exp(expN).Dexp(n).RFmdPpltN=1; % this might keep from breaking BUT ???
end
end
end
end
% Calc. Global Mean, Std, And Median For Distributed References
uu=horzcat(uu,vv);
for d=1:DMnum
medianIndxG=[];
NZrfIndxG=[];
minG=min(nonzeros(vv(:,d)));
maxG=max(nonzeros(vv(:,d)));
RFmeanG=mean(nonzeros(vv(:,d)));
RFstdG=std(nonzeros(vv(:,d)));
NZrfIndxG=find(vv(:,d)); % find(nonzeros(vv(:,d)));
if isempty(RFmeanG)
nonZeroCntD=0 % medianIndxDisp=RFmeanG(d);
else
nonZeroCntD=length(nonzeros(vv(:,d)));
end
% Calc. of median requires an odd number of indx items
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)==0, medianIndxD=NZrfIndxG(1:(size(NZrfIndxG,1)-1)); end
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)~=0, medianIndxD=NZrfIndxG(:); end
if ~isempty(NZrfIndxG) && length(medianIndxD) > 0 %(.15*size(drf,1)) % to calc. a median, more than 15% of spots must be nonZero
mvalsDG=median(vv(medianIndxD,d)); % (nonzeros(vv(:,d)));
nzPosIndxDG=find(mvalsDG==vv(:,d));
RFmdDGloc(d,1)=uu(nzPosIndxDG,1); % MP of distributedGlobal Median value
RFmdDGloc(d,2)=uu(nzPosIndxDG,2); % calc r value
RFmdDGloc(d,3)=uu(nzPosIndxDG,3); % calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
if usrRefFg==0, rfGLbl='RF1mdG('; else rfGLbl=strcat('RF-',rfGnSp,'mdG('); end %accomodate User Ref Selection
if iscell(strcat(rfPLbl,num2str(d),')')),
aa(lstindx,1)=strcat(rfGLbl,num2str(d),')'); % remove string2cell brackets {...}
bb(lstindxOrf,1)=strcat(rfGLbl,num2str(d),')'); % remove string2cell brackets {...}
else
aa(lstindx,1)={strcat(rfGLbl,num2str(d),')')};
bb(lstindxOrf,1)={strcat(rfGLbl,num2str(d),')')};
end
aa(lstindx,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
bb(lstindxOrf,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
% Composite Reference Amalgum Plot
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
if usrRefFg==0, rfcmpGLbl='RFcmpG('; else rfcmpGLbl=strcat('RFcmpG-',rfGnSp,'('); end %accomodate User Ref Selection
if iscell(strcat(rfcmpGLbl,num2str(d),')')),
aa(lstindx,1)=strcat(rfcmpGLbl,num2str(d),')'); % strcat('RFcmpG(',num2str(d),')');
bb(lstindxOrf,1)=strcat(rfcmpGLbl,num2str(d),')'); % strcat('RFcmpG(',num2str(d),')');
else
aa(lstindx,1)={strcat(rfcmpGLbl,num2str(d),')')};
bb(lstindxOrf,1)={strcat(rfcmpGLbl,num2str(d),')')};
end
aa(lstindx,2)={''};
bb(lstindxOrf,2)={''};
Exp(expN).Dexp(n).RFmdGLB(d)=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(n).RFmdGindx(d)=nzPosIndxDG;
Exp(expN).Dexp(n).RFmdGpltN(d)=RFmdDGloc(d,1);
Exp(expN).Dexp(n).RFmdGscanN(d)=uu(nzPosIndxDG,4);
Exp(expN).Dexp(n).RFmedianG(d)=mvalsDG;
Exp(expN).Dexp(n).RFminG(d)=minG;
Exp(expN).Dexp(n).RFmaxG(d)=maxG;
Exp(expN).Dexp(n).RFstdG(d)=RFstdG;
Exp(expN).Dexp(n).RFmeanG(d)=RFmeanG;
Exp(expN).Dexp(n).RFcmpGL.dm(d).Lvals=vv(medianIndxD,d); %17_1201 TrendOL
Exp(expN).Dexp(n).RFcmpGL.dm(d).med=median(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGL.dm(d).mean=mean(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGL.dm(d).std=std(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGL.dm(d).min=min(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGL.dm(d).max=max(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGK.dm(d).Kvals=vvK(medianIndxD,d); %17_1201 TrendOL
Exp(expN).Dexp(n).RFcmpGK.dm(d).med=median(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGK.dm(d).mean=mean(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGK.dm(d).std=std(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGK.dm(d).min=min(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGK.dm(d).max=max(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGr.dm(d).rvals=vvr(medianIndxD,d); %17_1201 TrendOL
Exp(expN).Dexp(n).RFcmpGr.dm(d).med=median(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGr.dm(d).mean=mean(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGr.dm(d).std=std(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGr.dm(d).min=min(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(expN).Dexp(n).RFcmpGr.dm(d).max=max(vvr(medianIndxD,d)); %For Ref Composite 17_1009
end
end
end
% EZusrSelRef
gnLstRaw=strcat(aa(:,1),aa(:,2));
Exp(expN).Dexp(n).srtGnLst=sort(gnLstRaw);
orfLstRaw=strcat(bb(:,1),bb(:,2));
Exp(expN).Dexp(n).srtOrfLst=sort(orfLstRaw);
%{
%set(handles.MPsldr2,'max',length(MP));
%set(handles.DMsldr2,'max',length(DM.drug));
%set(handles.Tptsldr2,'max',tPtsSize);
%set(handles.MPsldr2,'min',1,'max',MPnum)
%set(handles.DMsldr2,'min',1,'max',DMnum)
%tPtsSize=size(Exp(expN).Dexp(n).FexpScanBMtp{1,1},(3));
%set(handles.Tptsldr2,'min',1,'max',tPtsSize)
%set(handles.MPsldr2,'value',1)
%set(handles.DMsldr2,'value',1)
%set(handles.Tptsldr2,'value',1)
%set(handles.MPed2,'string','1')
%set(handles.DMed2,'string','1')
%set(handles.Tpted2,'string','1')
%set(handles.MPsldr2,'SliderStep',[1/length(MP) 1/length(MP)]);
%set(handles.DMsldr2,'SliderStep',[1/length(DM.drug) 1/length(DM.drug)]);
%set(handles.Tptsldr2,'SliderStep',[1/tPtsSize 1/tPtsSize]);
%}

View File

@@ -0,0 +1,256 @@
% EZplotUcmp.m
% User find and build composite of Selected Gene Composite and
% Plot it on OLay Plot and Trend plot DNLaxles
% For Single and Multi experiment 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
traceN=Exp(expN).traceN;
DexpN=Exp(expN).DexpN;
dmSel=Exp(zoneSel).Dexp(DexpN).pertSel;
% dmSel=str2num(get(ghandles.DMed3,'string'))
patrnN=strfind(selGnOrf{1},':'); % extract Gene-Orf Name
patrndash=strfind(selGnOrf{1},'-');
selStrNm=char(selGnOrf);
usrGene=selStrNm(1:(patrnN(1)-1));
if strcmpi(selStrNm(1:3),'RF-')
usrGeneSearch=selStrNm(4:(patrndash(2)-1));
elseif strcmp(selStrNm(1:3),'RF1')
usrGeneSearch=selStrNm(1:3);
else
usrGeneSearch=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=DexpN:DexpN %n=1:Exp(expN).DexpLength %LOOP Thru DayExps
n=DexpN;
MPnum=length(Exp(expN).Dexp(DexpN).MP);
DMnum=length(Exp(expN).Dexp(DexpN).DM.drug);
% Extract expDay from ExpName string
dayNpos=max(strfind(Exp(expN).Dexp(DexpN).ExpFoldr, '_D'));
dayLbl=Exp(expN).Dexp(DexpN).ExpFoldr(dayNpos+1:end);
dRF1indx=0;
usrSp=usrSpec; % user entry of Specifics for Ref selection
for mp=1:length(Exp(expN).Dexp(DexpN).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(DexpN).MP(mp).genename{1}(ind384))==38991,
Exp(expN).Dexp(DexpN).MP(mp).genename{1}(ind384)={'OCT1_'};
elseif isnumeric(cell2mat(Exp(expN).Dexp(DexpN).MP(mp).genename{1}(ind384)))
Exp(expN).Dexp(DexpN).MP(mp).genename{1}(ind384)={' '};
end
% DISPersed REFerence capture and find Medians
if ( ((strcmpi((Exp(expN).Dexp(DexpN).MP(mp).genename{1}(ind384)),usrGeneSearch) && ...
strcmpi((Exp(expN).Dexp(DexpN).MP(mp).specifics{1}(ind384)),usrSp))) || ...
((strcmpi((Exp(expN).Dexp(DexpN).MP(mp).genename{1}(ind384)),usrGeneSearch) && ...
strcmpi(usrSp,'None'))) ),
dRF1indx=dRF1indx+1;
Exp(expN).Dexp(DexpN).MP(mp).genename{1}(ind384) =strrep((Exp(expN).Dexp(DexpN).MP(mp).genename{1}(ind384)),':',' ');
drf(dRF1indx,1)=(Exp(expN).Dexp(DexpN).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(DexpN).MP(mp).specifics{1}(ind384));
end
catch
msgBadGeneName=strcat('check genename at mp=',num2str(mp),' indx=',num2str(ind384))
end
end
mp
end
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 d=1:length(Exp(expN).Dexp(DexpN).DM.drug)
for mm=1:length(dMPs) % length(chgIndx)
usrScNdisp=((dMPs(mm)-1)*DMnum)+(d);
NZusrIndx=drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm));
medianIndxDisp=NZusrIndx;
vvL(chgIndx(mm):(chgIndx(mm+1)-1))=Exp(expN).Dexp(DexpN).scan(usrScNdisp).plate(1).CFout(NZusrIndx,5);
vvK(chgIndx(mm):(chgIndx(mm+1)-1))=Exp(expN).Dexp(DexpN).scan(usrScNdisp).plate(1).CFout(NZusrIndx,3);
vvr(chgIndx(mm):(chgIndx(mm+1)-1))=Exp(expN).Dexp(DexpN).scan(usrScNdisp).plate(1).CFout(NZusrIndx,4);
end
% CALC. GLOBAL MEAN, STD, AND MEDIAN FOR DISTRIBUTED REFERENCES
% for d=1:length(Exp(expN).Dexp(DexpN).DM.drug)
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{d}=vvL(NZusrIndxG);
UsrKvals{d}=vvK(NZusrIndxG);
Usrrvals{d}=vvr(NZusrIndxG);
end
end
end
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
% Plot Values Selected Gene-Specifics Composite
if NoGrowthflg==0
smpSz=size(NZusrIndxG,1);
K=median(cell2mat((UsrKvals(dmSel)))); Ks=num2str(K); Kstd=std(cell2mat((UsrKvals(dmSel)))); KstdStr=num2str(Kstd);
r=median(cell2mat((Usrrvals(dmSel)))); rs=num2str(r); rstd=std(cell2mat((Usrrvals(dmSel)))); rstdStr=num2str(rstd);
l=median(cell2mat((UsrLvals(dmSel)))); Ls=num2str(l); Lstd=std(cell2mat((UsrLvals(dmSel)))); LstdStr=num2str(Lstd);
Kl=K - Kstd; %std(UsrKvals(dmSel));
Ku=K + Kstd; %std(UsrKvals(dmSel));
rl=r - rstd; %std(Usrrvals(dmSel));
ru=r + rstd; %std(UsrKvals(dmSel));
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
plateNum=(LBmp-1)*destPerMP + dmSel;
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;
Exp(expN).Trace(traceN).DexpN=DexpN;
for d=1:length(Exp(expN).Dexp(DexpN).DM.drug) %LOOP Thru DrugMedias
Exp(expN).Trace(traceN).Dexp(DexpN).DM(d).UsrLvals=UsrLvals(d);
Exp(expN).Trace(traceN).Dexp(DexpN).DM(d).UsrKvals=UsrKvals(d);
Exp(expN).Trace(traceN).Dexp(DexpN).DM(d).Usrrvals=Usrrvals(d);
end
% 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
% 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

Binary file not shown.

View File

@@ -0,0 +1,127 @@
% EZsingleExUserRF
global exp
usrRefFg=0;
prompt={'Enter GeneName to use as Reference:',...
'Enter Specifics Term if used to futher specify Reference '}
dlg_title='User Reference Input';
num_lines=1;
def={'RF1','None'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
rfGene=cell2mat(answer(1));
if ~strcmpi(rfGene,'RF1')|| ~strcmpi(rfGene,'RF2'), usrRefFg=1; end
rfSpec=answer(2); %if strcmpi(answer(2),'None'), rfSpec=''; end
rfGnSp=strcat(rfGene,rfSpec);
if strcmpi(rfSpec,'None'), rfGnSp=strcat(rfGene,'-'); end
% for n=1:size(matFile,2)
n=1;
EZmultiGeneRFsLst
EZdiagRFsSheet
Exp(expN).Dexp(n).RFrnames=rnames;
Exp(expN).Dexp(n).RFdata=data;
RFconfig=0;
if sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmean')) ...
&& ~isempty(Exp(expN).Dexp(n).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmeanG')) ...
&& isempty(Exp(expN).Dexp(n).RFmeanG)
RFconfig=1;
end
if sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmean'))==0 ...
|| isempty(Exp(expN).Dexp(n).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmeanG')) ...
&& ~isempty(Exp(expN).Dexp(n).RFmeanG)
RFconfig=2;
end
if sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmean'))&&...
~isempty(Exp(expN).Dexp(n).RFmean)&&...
sum(ismember(fieldnames(Exp(expN).Dexp(n)),'RFmeanG'))&&...
~isempty(Exp(expN).Dexp(n).RFmeanG)
RFconfig=3;
end
Exp(expN).RFconfig=RFconfig;
Exp(expN).Dexp(n).RFconfig=RFconfig;
try msgBadGeneName, catch, end
try
Exp(expN).Dexp(n).resetHtmpTg =5; %Exp(expN).resetHtmpTg =5;
if RFconfig==0,
RFconfigMsg='No RF1 references in this Experiment Job'
Exp(expN).Dexp(n).resetHtmpTg =3; %Exp(expN).resetHtmpTg =3;
end
catch
end
% Auto select Zone and load listboxGnOrf data
DexpN=1;
zeroCLn=zeros(1,DMnum);
Exp(expN).expLoadCnt=Exp(expN).expLoadCnt+1; expLdCnt=Exp(expN).expLoadCnt;
if expN==1
set(handles.zoneRad1,'value',1)
set(handles.zoneRad2,'value',0)
set(handles.zoneRad3,'value',0)
orfLstSel=get(handles.GeneOrfTog,'value')
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(1).Dexp(1).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(1).Dexp(1).srtGnLst)
end
DNLaxes1=handles.DNLaxes1;
Exp(1).hzeroCLn(expLdCnt)=plot(DNLaxes1,zeroCLn,1:DMnum,'y');
end
if expN==2
set(handles.zoneRad1,'value',0)
set(handles.zoneRad3,'value',0)
set(handles.zoneRad2,'value',1)
orfLstSel=get(handles.GeneOrfTog,'value');
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(2).Dexp(1).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(2).Dexp(1).srtGnLst)
end
DNLaxes2=handles.DNLaxes2;
Exp(2).hzeroCLn(expLdCnt)=plot(DNLaxes2,zeroCLn,1:DMnum,'y');
end
if expN==3
set(handles.zoneRad1,'value',0)
set(handles.zoneRad2,'value',0)
set(handles.zoneRad3,'value',1)
orfLstSel=get(handles.GeneOrfTog,'value');
if orfLstSel==1
set(handles.listboxGnOrf,'string',Exp(3).Dexp(1).srtOrfLst)
else
set(handles.listboxGnOrf,'string',Exp(3).Dexp(1).srtGnLst)
end
DNLaxes3=handles.DNLaxes3;
Exp(3).hzeroCLn(expLdCnt)=plot(DNLaxes3,zeroCLn,1:DMnum,'y');
end
if Exp(4).interacPBsel==0 % if interaction "raw" don't show a center line
for i=1:Exp(expN).expLoadCnt,
try
set(Exp(expN).hzeroCLn(i),'visible','off');
catch
i
end
end
end
% HtMapTog 'string', 'Current user L/N' selection'
Exp(expN).Dexp(DexpN).spotIndx=[];
if expN==1,
Exp(1).htmapPBsel=0;
set(handles.HtMapTog1,'string','L')
EZhtMap
end
if expN==2,
Exp(2).htmapPBsel=0;
set(handles.HtMapTog2,'string','L')
EZhtMap
end
if expN==3,
Exp(3).htmapPBsel=0;
set(handles.HtMapTog3,'string','L')
EZhtMap
end
htMapTogPBfg=0;

View File

@@ -0,0 +1,220 @@
function EZspotview(expN,DexpN, imLoc,OLresDir,OLplateNum,NoOLay)
global Exp
global ghandles
datacursormode(gcf)
w=pwd;
aCnt=0;
prevExp=0;
if NoOLay==0
cd(fullfile(char(OLresDir)))
cd ..
expDir=pwd;
cd(w)
%expDir=fullfile(char(OLresDir),'..');
if ~isequal(expDir, char(fullfile(Exp(expN).Dexp(DexpN).ExpFoldr)))
prevExp=1;
end
if prevExp==0
expDir=Exp(expN).Dexp(DexpN).ExpFoldr;
else
cd(fullfile(char(OLresDir)))
cd ..
expDir=pwd;
cd(w)
%expDir=fullfile(char(OLresDir),'..');
end
else
expDir=Exp(expN).Dexp(DexpN).ExpFoldr
end
%ExpHmDir=char(Exp(expN).Dexp(DexpN).resDir);
try close(ghandles.hfstrip), catch, end % hfIm
% CIRCLE related
doCircle=1;
radius=14;
diaExt=2*(radius+1);
EZvNIcircle
rIm=imLoc(1); % use the "picture/Image' r and c not the plate annotation r c)
cIm=imLoc(2);
plateNum=Exp(expN).Dexp(DexpN).plateNum;
if prevExp==0
FexpScanSpots=Exp(expN).Dexp(DexpN).FexpScanSpots;
FexpScanBMtp=Exp(expN).Dexp(DexpN).FexpScanBMtp;
anlZoneRefs=Exp(expN).Dexp(DexpN).anlZoneRefs;
ImParMat=Exp(expN).Dexp(DexpN).ImParMat;
else
% check if the request expJob is already loaded in one of the other zones
matchfound=0;
for j=1:3
if isequal(expDir, char(fullfile(Exp(j).ExpFoldr)))
FexpScanSpots=Exp(j).FexpScanSpots;
FexpScanBMtp=Exp(j).FexpScanBMtp;
anlZoneRefs=Exp(j).anlZoneRefs;
ImParMat=Exp(j).ImParMat;
matchfound=1;
break
end
end
if matchfound==0
% if not, load data for previous experiment again.
load(fullfile(char(OLresDir),'Fotos','Coordinates'))
load(fullfile(char(OLresDir),'Fotos','anlZones'))
load(fullfile(char(OLresDir),'Fotos','BGatTpts'))
load(fullfile(char(OLresDir),'PTmats','NImParameters'))
end
end
% Parameter Entry
width=ImParMat(5);
widthEx=width-1; %width extention from reference point
% Start Spot selection and Manipulation section
Fcutsc=[];
Fstrip=[];
%{
cd(fullfile(char(OLresDir)))
cd ..
expDir=pwd;
cd(w)
%}
% tPtsSize=size(Exp(expN).Dexp(DexpN).FexpScanBMtp{1,1},(3));
tPtsSize=size(FexpScanBMtp{1,plateNum},(3)); % tPtsSize=size(FexpScanBMtp{1,1},(3)); 20160110
%bmpFileLst=dirfullfile(char(OLresDir),num2str(plateNum),'*.bmp')); %(fullfile(expDir, char(ScLst(ScLstCnt)), '*.bmp'));
hsafety=figure;
dc=get(datacursormode)
imInterval=1;
try,imInterval=str2double(Exp(4).SpotVintervPar),catch,end
try
for tPt=1:imInterval:tPtsSize %tPtLength
coord=[];
try
% FtifFile=fullfile(Exp(expN).Dexp(DexpN).ExpFoldr,num2str(plateNum),strcat(num2str(tPt),'.bmp')); %char(tifFileLst(tPt));
FtifFile=fullfile(char(expDir),num2str(plateNum),strcat(num2str(tPt),'.bmp'));
Fimg=imread(FtifFile);
% For Visualization Purposes
Fram=ones(2075,1400); %(size(Empsc,1),size(Empsc,2));
% FRAME ANALYSIS AREA
if size(FexpScanSpots,2)>1
coord=FexpScanSpots{plateNum}{rIm,cIm,tPt};
else
coord=FexpScanSpots{plateNum,1,1}{rIm,cIm,tPt};
end
if size(anlZoneRefs,2)>1
xyLoc=anlZoneRefs{plateNum}{rIm,cIm,tPt}; %F_Snum
else
xyLoc=anlZoneRefs{F_Snum,1,1}{rIm,cIm,tPt};
end
xLoc=xyLoc(2);
yLoc=xyLoc(1);
% CIRCLE related
doCircle=1; % temp test value insertion to get square images
if doCircle==1
Fram=FoptCirMask;
else
% 1->2 across rt 1, 2-4
Fram(yLoc,xLoc:(xLoc+widthEx))=0.8;
% 1->4 down lf 1-3, 2
Fram((yLoc+1):(yLoc+1+widthEx),xLoc)=0.8;
% 2->3 down rt 1-3, 4
Fram(yLoc:(yLoc+widthEx),(xLoc+1+widthEx))=0.8;
% 4->3 Bot Across rt 1, 2-4
Fram((yLoc+1+widthEx),(xLoc+1):(xLoc+1+widthEx))=0.8;
Fram=Fram(coord(1):coord(3),coord(2):coord(4));
end
% Cut Spot Out Of Image
% Fbg=FexpScanBMtp{selScan,1}(rIm,cIm,tPt);
Fbg=FexpScanBMtp{plateNum}(rIm,cIm,tPt); %{selScan,1}
% Fimg=imread(FtifFile); %,'PixelRegion', {[coord(1),coord(3)],[coord(2),coord(4)]});
Fcutsc=Fimg(coord(1):coord(3),coord(2):coord(4));
if doCircle==1
%varExt=size(Fcutsc)-size(Fram);
varExtPre=[((yLoc-0)-coord(1)) ((xLoc-0)-coord(2))];
varExtPost=[(coord(3)-(yLoc+diaExt+1)) (coord(4)-(xLoc+diaExt+1))];
% Fram=padarray(Fram,[expansion expansion],1,'pre');
Fram=padarray(Fram,[varExtPre],1,'pre');
Fram=padarray(Fram,[varExtPost],1,'post');
% Fram=padarray(Fram,rem(varExt,2),1,'post');
%Fram=padarray(Fram,floor((varExt-2)./2),1);
end
% Invert Image
Fcutsc=double(Fcutsc) .* Fram;
%Fcutsc=Fcutsc .* uint8(Fram);
Fcutsc=uint8(Fcutsc);
%Fcutsc=255 - (Fcutsc-Fbg);
Fcutsc=(Fcutsc-Fbg);
%Time series annotation**************************
tmPtTx=[];
tenths=(round(10*(Exp(expN).Dexp(DexpN).scan(plateNum).plate(1).tSeries(tPt)))) ./10;
tmPtTx=strcat(num2str(tenths),'h');
% imwrite(Fcutsc,(fullfile(resDir,'Fotos',strcat('FScan',num2str(selScan),'_timePt-',num2str(tPt),'.jpg'))),'jpg');
aCnt=aCnt+1;
if aCnt==1 %||tPt==1
EZvapendLabel
Fstrip=vertcat(Fcutsc,Bspace);
Hspace=zeros(size(Fstrip,1),4)+1200; %+255
Fstrip=horzcat(Fstrip,Hspace);
end
makeVis=1;
if aCnt>1
EZvapendLabel
vcat=vertcat(Fcutsc,Bspace);
%Hspace=zeros(size(Fstrip,1),4)+255;
Fstrip=horzcat(Fstrip,vcat,Hspace);
end
% For Visualization Purposes only
if makeVis==1
% if aCnt==1,figure;end
% resIm=uint8((double(BGsc) + OptmapOnesDbl) .* double(fullsc));
% clear('OptmapOnesDbl')
hfstrip=imagesc(Fcutsc); colormap(gray); %hfstrip=imshow(Fcutsc); colormap(gray); %hfscanIm=imagesc(Fcutsc); colormap(gray);
ghandles.hfstrip=gcf;
haxis=gca;
title(strcat('Scan',num2str(plateNum),'->timePt-',num2str(tPt)));
clf(hfstrip,'reset'); colormap(gray); %clf(hfscanIm,'reset'); colormap(gray);
set(ghandles.hfstrip,'NumberTitle','off')
end
expLabel=strcat('->',char(fullfile(char(OLresDir),num2str(OLplateNum))))
% catch
% expLabel=strcat('->',char(fullfile(Exp(expN).Dexp(DexpN).ExpFoldr,num2str(plateNum))))
if expN==1
set(ghandles.hfstrip,'Name', strcat(char(get(ghandles.OLay1,'string')),expLabel)) %ghandles.hfIm %{'ExpOutmat'} %strcat('EASYconsole- ',char(resDir)))
elseif expN==2
set(ghandles.hfstrip,'Name', strcat(char(get(ghandles.OLay2,'string')),expLabel))
elseif expN==3
set(ghandles.hfstrip,'Name', strcat(char(get(ghandles.OLay3,'string')),expLabel))
end
%hgsave(fullfile(resDir,'Fotos',strcat('FScan',num2str(selScan),'_timePt-',num2str(tPt))));
catch
end
end
catch
end
%figure(ghandles.hFstrip)
imshow(Fstrip);
%{
%if tPt==tPtLength %length(tifFileLst)
%imwrite(Fstrip,(fullfile(resDir,'Fotos',strcat('Fstrip','S',num2str(selScan),'P',num2str(F_Pnum),'r',num2str(F_Rusrnum),'c',num2str(F_Cusrnum),'.jpg'))),'jpg');
F_name=strcat(fnamemod,'_Fstrip','.jpg');
%dfname=(fullfile(resDir,'Fotos',char(F_name)));
%delete(dfname); % imwrite nolonger overwrites ??why 14_0729
imwrite(Fstrip,(fullfile(resDir,'Fotos',char(F_name))),'jpg','Quality',100);
F_name=strcat(fnamemod,'_Fstrip','.tif');
%dfname=(fullfile(resDir,'Fotos',char(F_name)));
%delete(dfname); % imwrite nolonger overwrites ??why
imwrite(Fstrip,(fullfile(resDir,'Fotos',char(F_name))),'tif');
%end
%}
%[output_txt]=datatipp(obj,event_obj);
%datacursormode off;
%datacursormode on;
%close(figure(hsafety))
end

View File

@@ -0,0 +1,11 @@
% Create and display Reference data in a table
global Exp
DexpN=Exp(expN).DexpN;
rnames=Exp(expN).Dexp(DexpN).RFrnames;
data=Exp(expN).Dexp(DexpN).RFdata;
cnames=[{'Median'},{'Mean'},{'STD'},{'Minimum'},{'Maximum'}];
f=figure('Menubar','none','Position',[1000 100 640 750],...
'Name',Exp(expN).Dexp(DexpN).ExpFoldr );
t=uitable('Parent',f,'Data',data,'ColumnName',cnames,...
'RowName',rnames,'Position',[20 20 620 730]);

View File

@@ -0,0 +1,199 @@
%EZusrSelRef
% User Select Reference Diaglog Box
try
if n==1 && ~exist('RF1scanN','var') && ~exist('RF2scanN','var') %change || &&
%{
prompt={'Enter Masterplate Number(s) of Your Reference GeneName spots:',...
'Enter GeneName of Your Reference:'};
rfMPstr=cell2mat(answer(1));
rfMPcomas=strfind((cell2mat(answer(1))),',');
n=0;
if isempty(rfMPcomas)|| max(rfMPcomas)==length(rfMPstr)
usrMPs=rfMPstr
else
for i=rfMPcomas,
n=n+1
usrMPs(n)=str2double(rfMPstr(i-1:i))
if i==max(rfMPcomas)
usrMPs(n+1)=str2double(rfMPstr(i:end))
end
end
end
usrMPs=answer(1);
refGene=answer(2);
%}
prompt={'Enter GeneName to use as Reference:',...
'Enter Specifics Term if used to futher specify Reference '}
dlg_title='User Reference Input';
num_lines=1;
def={'None','Specifics Term'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
rfGenestr=cell2mat(answer(1));
rfSpec=cell2mat(answer(2));
end
%try
for mp=1:length(Exp(expN).Dexp(DexpN).MP)
for ind384=1:384
spN=spN+1;
end
%catch
%end %try for user selected Reference routine
end
% Disperse Reference Plates
Exp(expN).Dexp(DexpN).RFmdPindx=[];
Exp(expN).Dexp(DexpN).RFmdPpltN=[];
if exist('drf','var') % ('RF1scanN','var')
%Det. index of change from one MP to the next
i=2;
chgIndx(1)=1;
for j=1:length(drf(:,3))
if j>1
if cell2mat(drf(j,3))~=cell2mat(drf((j-1),3)), chgIndx(i)=j; i=i+1; end
end
end
chgIndx(length(chgIndx)+1)=length(drf)+1;
uu=zeros(size(drf,1),4);
uu(:,1:4)=cell2mat(drf(:,3:6))
vv=zeros(length(drf),DMnum);
dMPs=unique(cell2mat(drf(:,3)));
%{
for mm=1:MPnum
nonZrfIndx.mp{mm,:}=drfPindx((find(drfPindx(:,mm))),mm);
end
%}
% nzValsG=zeros(DMnum,size(drf,1));
% nzValsAcc=zeros(DMnum,384);
for mm=1:length(dMPs) % length(chgIndx)
for d=1:(DMnum)
medianIndxDisp=[];
NZrefIndxP=[];
nonZeroValsP=[];
medValLstDisp=[];
rf1scNdisp=((dMPs(mm)-1)*DMnum)+(d);
try % Determine the dispersed RFs median mean and std if such exist
NZrefIndxP=drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm)); %find(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(drf(chgIndx(cI):chgIndx(cI+1)),5));
% vv=Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
vv(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
nonZeroValsP=nonzeros(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5));
std1Disp=std(nonZeroValsP);
mean1Disp=mean(nonZeroValsP);
minDisp=min(nonZeroValsP);
maxDisp=max(nonZeroValsP);
drfVals=Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
%nzValsAcc(mm).DM(d,:)=nonZeroValsP;
%MEDIAN Determination for PLATES with Dispersed RFs
%NZrefIndxP=NZrefIndxP %find(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5));
if isempty(NZrefIndxP)
nonZeroCntDisp=0
medianIndxDisp=NZrefIndxP;
else
nonZeroCntDisp=length(NZrefIndxP);
end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)==0, medianIndxDisp=NZrefIndxP(1:nonZeroCntDisp-1); end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)~=0, medianIndxDisp=NZrefIndxP; end
if ~isempty(NZrefIndxP) && length(medianIndxDisp) > 3 %(.15*384) %To calc. a median, more than 15% of spots must be nonZero
medValLstDisp=Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(medianIndxDisp,5);
%medValList1Disp{d}=medValLstDisp;
mval1Disp=median(medValLstDisp); %mval1=median(Exp(expN).Dexp(DexpN).scan(RF1mps).plate(1).CFout(1:384,5)); %CFout(1:383,5));
nonZeroMedPosIndx=find(mval1Disp==nonZeroValsP); %(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5))); %(nonZeroIndxDisp,5))); %((nonZrfIndx.mp{dMPs(mm),:}),5)));
RFmd1posD=NZrefIndxP(nonZeroMedPosIndx); %drfPindx((RFmd1posIndx),dMPs(mm));
RFmd1locD(1)=ceil(RFmd1posD/24); %calc r value
RFmd1locD(2)=RFmd1posD - ((RFmd1locD(1)-1)*24); %calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1mdP(',num2str(d),')')};
aa(lstindx,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))};
bb(lstindxOrf,1)={strcat('RF1mdP(',num2str(d),')')};
bb(lstindxOrf,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))};
Exp(expN).Dexp(DexpN).RFmdPLB(d,dMPs(mm))=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))=RFmd1posD;
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))=dMPs(mm); %This is a storage of the MasterPlate used NOT the ScanPlate? WeMight wish to store the ScanPlateNumber also???
Exp(expN).Dexp(DexpN).RFmdPscanN(d,dMPs(mm))=rf1scNdisp;
Exp(expN).Dexp(DexpN).RFmedianP(d,dMPs(mm))=mval1Disp;
Exp(expN).Dexp(DexpN).stdP(d,dMPs(mm))=std1Disp;
Exp(expN).Dexp(DexpN).meanP(d,dMPs(mm))=mean1Disp;
Exp(expN).Dexp(DexpN).minP(d,dMPs(mm))=minDisp;
Exp(expN).Dexp(DexpN).maxP(d,dMPs(mm))=maxDisp;
else
% Need to set L r K values to zeros or pick the first spot with zeros
% Spot 1 could be other than zero as the median isn't calculated if fewer than some percent are nonzero
medianCalcFailedD='To Few nonZero spots for valid median RF1 selection'
firstZeroDindx=find(((Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5))==0),1,'first');
firstZeroD=drfPindx((firstZeroDindx),dMPs(mm));
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))=firstZeroD;
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))=dMPs(mm); %RF1mp; %Is this supposed to be the MP number or the ScanPlate number???
end
catch
medianCalcTryFailed1D='Failed! Failed! Ln565 {Dispersed RF1s} "try" But process continued with bogus Plate spot value!'
try
firstZeroindxD=find(vv((chgIndx(d):chgIndx(d+1)-1),5)==0,1,'first');
firstZeroPindx=uu(firstZeroindxD,4);
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))=dMPs(mm);
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))=firstZeroPindx;
catch
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))=dMPs(mm);
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))=384; %if crapout,Then use spot384 as default to keep going
end
try
Exp(expN).Dexp(DexpN).RFmdPpltN=dMPs(mm);
catch
Exp(expN).Dexp(DexpN).RFmdPpltN=1; %This might keep from breaking BUT ???
end
end
end % for d=0:DMnum
end % for mm=1:length(dMPs)
% Calc. Global Mean, Std, And Median For Distributed References
uu=horzcat(uu,vv);
for d=1:DMnum
medianIndxG=[];
NZrfIndxG=[];
minG=min(nonzeros(vv(:,d)));
maxG=max(nonzeros(vv(:,d)));
RFmeanG=mean(nonzeros(vv(:,d)));
RFstdG=std(nonzeros(vv(:,d)));
NZrfIndxG=find(nonzeros(vv(:,d)));
if isempty(RFmeanG)
nonZeroCntD=0
% medianIndxDisp=RFmeanG(d);
else
nonZeroCntD=length(nonzeros(vv(:,d)));
end
% Calc. of median requires an odd number of indx items
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)==0, medianIndxD=NZrfIndxG(1:(size(NZrfIndxG,1)-1)); end
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)~=0, medianIndxD=NZrfIndxG(:); end
if ~isempty(NZrfIndxG) && length(medianIndxD) > (.15*size(drf,1)) % To calc. a median, more than 15% of spots must be nonZero
mvalsDG=median(vv(medianIndxD,d)); % (nonzeros(vv(:,d)));
nzPosIndxDG=find(mvalsDG==vv(:,d));
RFmdDGloc(d,1)=uu(nzPosIndxDG,1); % MP of distributedGlobal Median value
RFmdDGloc(d,2)=uu(nzPosIndxDG,2); % calc r value
RFmdDGloc(d,3)=uu(nzPosIndxDG,3); % calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1mdG(',num2str(d),')')};
aa(lstindx,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
bb(lstindxOrf,1)={strcat('RF1mdG(',num2str(d),')')};
bb(lstindxOrf,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
Exp(expN).Dexp(DexpN).RFmdGLB(d)=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(DexpN).RFmdGindx(d)=nzPosIndxDG;
Exp(expN).Dexp(DexpN).RFmdGpltN(d)=RFmdDGloc(d,1);
Exp(expN).Dexp(DexpN).RFmdGscanN(d)=uu(nzPosIndxDG,4);
Exp(expN).Dexp(DexpN).RFmedianG(d)=mvalsDG;
Exp(expN).Dexp(DexpN).RFminG(d)=minG;
Exp(expN).Dexp(DexpN).RFmaxG(d)=maxG;
Exp(expN).Dexp(DexpN).RFstdG(d)=RFstdG;
Exp(expN).Dexp(DexpN).RFmeanG(d)=RFmeanG;
end
end
end
catch
msg='Failed attempt to apply User Selected Reference'
end

View File

@@ -0,0 +1,612 @@
% EZvDatatip 230802 attempting to fix for R2023a
% Calls to EZdestComp.m EZmDayTrend.m
global ghandles
global Exp
global zonePB
RFcmpGFlg=0; %Test 180105 as it goes to EZmDayTrend.m
lstBoxCmpFlg=0;
curKey=get(gcf,'currentkey')
htMapFg=0;
if ghandles.Iaxes1==get(htargetAxes,'Parent'),expN=1;
elseif ghandles.Iaxes2==get(htargetAxes,'Parent'),expN=2;
elseif ghandles.Iaxes3==get(htargetAxes,'Parent'),expN=3;
elseif ghandles.OLaxes1==get(htargetAxes,'Parent'),OLay=1; expN=1; %zone=1; datacursormode off;
elseif ghandles.OLaxes2==get(htargetAxes,'Parent'),OLay=2; expN=2; %zone=2; datacursormode off;
elseif ghandles.OLaxes3==get(htargetAxes,'Parent'),OLay=3; expN=3; %zone=3; datacursormode off;
elseif ghandles.HtMap1==get(htargetAxes,'Parent'),expN=1; htMapFg=1;
elseif ghandles.HtMap2==get(htargetAxes,'Parent'),expN=2; htMapFg=1;
elseif ghandles.HtMap3==get(htargetAxes,'Parent'),expN=3; htMapFg=1;
else
return
end
if expN==1,DexpN=(get(ghandles.DN1,'value')); end
if expN==2,DexpN=(get(ghandles.DN2,'value')); end
if expN==3,DexpN=(get(ghandles.DN3,'value')); end
% Exp(expN).DexpN=DexpN;
if strcmp(Exp(expN).DexpType,'single'), DexpN=1; end
if exist('OLay','var'), clear ExpN; end
if ~exist('OLay','var')
try
ImageSel=expN<4
destPerMP=Exp(expN).Dexp(DexpN).destPerMP; %length(gS.DM1.drug);
MPsel=Exp(expN).Dexp(DexpN).MPsel; %floor(get(handles.MPsldr1,'value'));
pertSel=Exp(expN).Dexp(DexpN).pertSel; %floor(get(handles.DMsldr1,'value'));
tPtSel=Exp(expN).Dexp(DexpN).tPtSel; %floor(get(handles.Tptsldr1,'value'));
plateNum=Exp(expN).Dexp(DexpN).plateNum; %(MPsel1-1)*destPerMP1 + pertSel1;
scan=Exp(expN).Dexp(DexpN).scan;
MP=Exp(expN).Dexp(DexpN).MP;
ptrPos=[cpos(1),cpos(2)]; %for VerticleImage
if htMapFg==0 %Comes from spot image Iaxes
try
for m=1:24
for n=1:16
coord=Exp(expN).Dexp(DexpN).FexpScanSpots{plateNum}{m,n,tPtSel}; %replace {1} with {plateNum}
if ptrPos(2)> coord(1) && ptrPos(2)< coord(3)
if ptrPos(1)> coord(2) && ptrPos(1)<coord(4)
picLoc1=[n,m];
spotFrm=Exp(expN).Dexp(DexpN).FexpScanSpots{plateNum}{m,n,tPtSel}; %20160108
end
end
end
end
destcompMsg='GoodDataTip';
catch
destcompMsg='BadDataTip';
m
n
end
plateLoc=[(17-picLoc1(1)) picLoc1(2)];
indx=(plateLoc(1)-1)*24+plateLoc(2);
elseif htMapFg==1 %Comes from HeatMap image Haxes
plateLoc=ptrPos;
indx=(plateLoc(1)-1)*24+plateLoc(2);
end
Exp(expN).Dexp(DexpN).spotIndx=indx;
K=scan(1,plateNum).plate(1).CFout(indx,3); Ks=num2str(K);
r=scan(1,plateNum).plate(1).CFout(indx,4); rs=num2str(r);
l=scan(1,plateNum).plate(1).CFout(indx,5); Ls=num2str(l);
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
Kl=scan(1,plateNum).plate(1).CFout(indx,7);
Ku=scan(1,plateNum).plate(1).CFout(indx,8);
rl=scan(1,plateNum).plate(1).CFout(indx,9);
ru=scan(1,plateNum).plate(1).CFout(indx,10);
lfast=scan(1,plateNum).plate(1).CFout(indx,11);
lslow=scan(1,plateNum).plate(1).CFout(indx,12);
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
tser=(scan(1,plateNum).plate(1).t0Series(:));
rawData=scan(1,plateNum).plate(1).intens(indx,:)/scan(1,plateNum).plate(1).Ag(indx);
if expN==1, plotAxes=ghandles.Paxes1; OLaxes=ghandles.OLaxes1;
Exp(1).traceN=Exp(1).traceN+1;
traceN=Exp(1).traceN;
end
if expN==2, plotAxes=ghandles.Paxes2; OLaxes=ghandles.OLaxes2;
Exp(2).traceN=Exp(2).traceN+1;
traceN=Exp(2).traceN;
end
if expN==3, plotAxes=ghandles.Paxes3; OLaxes=ghandles.OLaxes3;
Exp(3).traceN=Exp(3).traceN+1;
traceN=Exp(3).traceN;
end
plot(plotAxes,t,g);hold(plotAxes,'on');
plot(plotAxes,tser,rawData,'g*');
plot(plotAxes,t,gSlow,'y');plot(plotAxes,t,gFast,'r');
hold(plotAxes,'off');
try
for i=1:length(Exp(expN).hOL(:)),set(Exp(expN).hOL(i),'color',[0 0 1]); end, catch, end %ZoneRelated
if verLessThan('matlab','8.4')
else % accomodate new matlab changes after 2014a fix 23_0807
tempFig=figure;
end
Exp(expN).hOL(traceN)=plot(OLaxes,t,g);hold on;
set(Exp(expN).hOL(traceN),'color',[1 0 0])
Exp(expN).hOLb(traceN)=plot(OLaxes,tser,rawData,'g*');
% Added for Composite Plot utility [C] 170419
Exp(expN).ll(traceN)=l; Exp(expN).rr(traceN)=r; Exp(expN).kk(traceN)=K;
if verLessThan('matlab','8.4')
else % accomodate new matlab changes after 2014a fix update 23_0807
close(tempFig)
end
catch
%{
g=K ./ (1 + exp(-r.* (t - l )));
if K==0||r==0||l==0, g(1:200)=1;end
tser=(scan(1,plateNum).plate(1).t0Series(:));
rawData=scan(1,plateNum).plate(1).intens(indx,:)/scan(1,plateNum).plate(1).Ag(indx);
plot(plotAxes, plot(t,g),hold on,plot(tser,rawData,'g*'),hold off);
plot(OLaxes, plot(t,g),hold on,plot(tser,rawData,'g*');
%}
end
% Get the DM agar description
if expN==1,DMstr=char(get(ghandles.DM1,'string'));end
if expN==2,DMstr=char(get(ghandles.DM2,'string'));end
if expN==3,DMstr=char(get(ghandles.DM3,'string'));end
gene=MP(1,MPsel).genename{1,1}(indx); orf=MP(1,MPsel).orf{1,1}(indx);
spec=MP(1,MPsel).specifics{1,1}(indx); % orfrep=MP(1,plateNum).orfRep{1,1}(indx);
tPtStr=strcat('T=', num2str(scan(1,plateNum).plate(1).t0Series(tPtSel)));
geneOrfstr=strcat(gene,'_',orf,'_','r',num2str(plateLoc(1)),'c',num2str(plateLoc(2)),'_',tPtStr);
grfgenestr=strcat(gene,'_',orf,'_','r',num2str(plateLoc(1)),'c',num2str(plateLoc(2)));
selGnOrf=grfgenestr; % added for EZdestComp.m and EZmDayTrend.m
graphStr=strcat(grfgenestr,'_','L=',Lstr,'_','r=',rstr,'_','K=',Kstr);
spotDescrip=strcat(graphStr,'->',DMstr);
xp=char(Exp(expN).Dexp(DexpN).resDir);
if ispc,
slashPos=strfind(char(Exp(expN).Dexp(DexpN).resDir),'\');
else
slashPos=strfind(char(Exp(expN).Dexp(DexpN).resDir),'/');
end
startPos=slashPos(length(slashPos)-2) +1;
endPos=(slashPos(length(slashPos)) -1);
expStr={xp(startPos:endPos)};
Exp(expN).hOLname(traceN)=spotDescrip; % ZoneRelated %graphStr; %ghandles.Exp(expN).hOLname(traceN)=graphStr;
Exp(expN).hOLexpNm(traceN)=expStr; % ghandles.Exp(expN).hOLexpNm(traceN)=expStr;
Exp(expN).hOLresDir(traceN)={Exp(expN).Dexp(DexpN).resDir};
Exp(expN).hOLplateNum(traceN)=plateNum;
% traceData=vertcat(get(Exp(OLay).hOL(traceN),'XData'),get(ghandles.Exp(OLay).hOL(traceN),'YData'));
if expN==1,set(ghandles.GeneOrfLoc1,'string',geneOrfstr);end % Displays the value.
if expN==2,set(ghandles.GeneOrfLoc2,'string',geneOrfstr);end
if expN==3,set(ghandles.GeneOrfLoc3,'string',geneOrfstr);end
if expN==1,set(ghandles.graphStrLoc1,'string',spotDescrip);end % graphStr);end % Displays the value.
if expN==2,set(ghandles.graphStrLoc2,'string',spotDescrip);end % graphStr);end
if expN==3,set(ghandles.graphStrLoc3,'string',spotDescrip);end % graphStr);end
try
if expN==1, %&& get(ghandles.rotPB1,'value')~=1
try if length(char(Exp(expN).hOLname(traceN)))>40,set(ghandles.OLay1,'FontSize',8);end, catch end
set(ghandles.OLay1,'string', Exp(expN).hOLname(traceN));
try if length(char(Exp(expN).hOLexpNm(traceN)))>40,set(ghandles.OLexp1,'FontSize',8);end, catch end
set(ghandles.OLexp1,'string',Exp(expN).hOLexpNm(traceN));
end
if expN==2 %&& get(ghandles.rotPB2,'value') ~=1
try if length(char(Exp(expN).hOLname(traceN)))>40,set(ghandles.OLay2,'FontSize',8);end, catch end
set(ghandles.OLay2,'string', Exp(expN).hOLname(traceN));
try if length(char(Exp(expN).hOLexpNm(traceN)))>40,set(ghandles.OLexp2,'FontSize',8);end, catch end
set(ghandles.OLexp2,'string',Exp(expN).hOLexpNm(traceN));
end
if expN==3 %&& get(ghandles.rotPB3,'value') ~=1
try if length(char(Exp(expN).hOLname(traceN)))>40,set(ghandles.OLay3,'FontSize',8);end, catch end
set(ghandles.OLay3,'string', Exp(expN).hOLname(traceN));
try if length(char(Exp(expN).hOLexpNm(traceN)))>40,set(ghandles.OLexp3,'FontSize',8);end, catch end
set(ghandles.OLexp3,'string',Exp(expN).hOLexpNm(traceN));
end
catch
end
%{
if expN==1
zonesel=1;
set(ghandles.zoneRad1,'value',1)
set(ghandles.zoneRad2,'value',0)
set(ghandles.zoneRad3,'value',0)
orfLstSel=get(ghandles.GeneOrfTog,'value');
if orfLstSel==1
set(ghandles.listboxGnOrf,'string',Exp(1).Dexp(DexpN).srtOrfLst)
else
set(ghandles.listboxGnOrf,'string',Exp(1).Dexp(DexpN).srtGnLst)
end
end
if expN==2
zonesel=2;
set(ghandles.zoneRad2,'value',1)
set(ghandles.zoneRad1,'value',0)
set(ghandles.zoneRad3,'value',0)
orfLstSel=get(ghandles.GeneOrfTog,'value');
if orfLstSel==1
set(ghandles.listboxGnOrf,'string',Exp(2).Dexp(DexpN).srtOrfLst)
else
set(ghandles.listboxGnOrf,'string',Exp(2).Dexp(DexpN).srtGnLst)
end
end
if expN==3
zonesel=3;
set(ghandles.zoneRad3,'value',1)
set(ghandles.zoneRad2,'value',0)
set(ghandles.zoneRad1,'value',0)
orfLstSel=get(ghandles.GeneOrfTog,'value');
if orfLstSel==1
set(ghandles.listboxGnOrf,'string',Exp(3).Dexp(DexpN).srtOrfLst)
else
set(ghandles.listboxGnOrf,'string',Exp(3).Dexp(DexpN).srtGnLst)
end
end
%}
% Zone PB set here as replacement for zonePB radio buttons 230815
if expN==1
zonesel=1;
zonePB=expN;
set(ghandles. zonePB1,'value',1)
set(ghandles. zonePB2,'value',0)
set(ghandles. zonePB3,'value',0)
set(ghandles.zonePB1,'BackgroundColor',[1.0 0.6 0.6])
set(ghandles.zonePB2,'BackgroundColor',[1.0 1.0 1.0])
set(ghandles.zonePB3,'BackgroundColor',[1.0 1.0 1.0])
orfLstSel=get(ghandles.GeneOrfTog,'value');
if orfLstSel==1
set(ghandles.listboxGnOrf,'string',Exp(1).Dexp(DexpN).srtOrfLst)
else
set(ghandles.listboxGnOrf,'string',Exp(1).Dexp(DexpN).srtGnLst)
end
end
if expN==2
zonesel=2;
zonePB=expN;
set(ghandles. zonePB2,'value',1)
set(ghandles. zonePB1,'value',0)
set(ghandles. zonePB3,'value',0)
set(ghandles.zonePB2,'BackgroundColor',[1.0 0.6 0.6])
set(ghandles.zonePB1,'BackgroundColor',[1.0 1.0 1.0])
set(ghandles.zonePB3,'BackgroundColor',[1.0 1.0 1.0])
orfLstSel=get(ghandles.GeneOrfTog,'value');
if orfLstSel==1
set(ghandles.listboxGnOrf,'string',Exp(2).Dexp(DexpN).srtOrfLst)
else
set(ghandles.listboxGnOrf,'string',Exp(2).Dexp(DexpN).srtGnLst)
end
end
if expN==3
zonesel=3;
zonePB=expN;
set(ghandles. zonePB3,'value',1)
set(ghandles. zonePB2,'value',0)
set(ghandles. zonePB1,'value',0)
set(ghandles.zonePB3,'BackgroundColor',[1.0 0.6 0.6])
set(ghandles.zonePB1,'BackgroundColor',[1.0 1.0 1.0])
set(ghandles.zonePB2,'BackgroundColor',[1.0 1.0 1.0])
orfLstSel=get(ghandles.GeneOrfTog,'value');
if orfLstSel==1
set(ghandles.listboxGnOrf,'string',Exp(3).Dexp(DexpN).srtOrfLst)
else
set(ghandles.listboxGnOrf,'string',Exp(3).Dexp(DexpN).srtGnLst)
end
end
Exp(expN).Trace(traceN).UsrGLB=geneOrfstr;
Exp(expN).Trace(traceN).dmSel=pertSel;
Exp(expN).Trace(traceN).DexpN=DexpN;
Exp(expN).Trace(traceN).Dexp(DexpN).DM(pertSel).UsrLvals=l;
Exp(expN).Trace(traceN).Dexp(DexpN).DM(pertSel).UsrKvals=K;
Exp(expN).Trace(traceN).Dexp(DexpN).DM(pertSel).Usrrvals=r;
catch
msg='NotImage'
end
end
% Write Selected Trace Info to OLAY header
try
OLayTest=OLay<4
msg='OLay'
% make all traces blue
for i=1:length(Exp(OLay).hOL(:))
try set(Exp(OLay).hOL(i),'color',[0 0 1]), catch end
end
% if get(ghandles.rotPB1,'value')~=1,
for i=1:length(Exp(OLay).hOL(:))
htargetAxes
Exp(OLay).hOL(i)
if htargetAxes==Exp(OLay).hOL(i)
if OLay==1 && get(ghandles.rotPB1,'value')~=1,
set(htargetAxes,'color',[1 0 0])
try if length(char(Exp(OLay).hOLname(i)))>40,set(ghandles.OLay1,'FontSize',8);end, catch, end
set(ghandles.OLay1,'string', Exp(OLay).hOLname(i));
traceLab=char(Exp(OLay).hOLname(i));
try if length(char(Exp(OLay).hOLexpNm(i)))>40,set(ghandles.OLexp1,'FontSize',8);end, catch, end
set(ghandles.OLexp1,'string',Exp(OLay).hOLexpNm(i));
OLresDir=Exp(OLay).hOLresDir(i);
Exp(OLay).hOLplateNum(i)=Exp(expN).Dexp(DexpN).plateNum %bug fix for OLay "chrono' RF_cmp( ) trend
plateNum=Exp(expN).Dexp(DexpN).plateNum
OLplateNum=Exp(OLay).hOLplateNum(i);
seltraceN=i;
end
if OLay==2 && get(ghandles.rotPB2,'value') ~=1
set(htargetAxes,'color',[1 0 0])
try if length(char(Exp(OLay).hOLname(i)))>40,set(ghandles.OLay2,'FontSize',8);end, catch, end
set(ghandles.OLay2,'string', Exp(OLay).hOLname(i));
traceLab=char(Exp(OLay).hOLname(i));
try if length(char(Exp(OLay).hOLexpNm(i)))>40,set(ghandles.OLexp2,'FontSize',8);end, catch, end
set(ghandles.OLexp2,'string',Exp(OLay).hOLexpNm(i));
OLresDir=Exp(OLay).hOLresDir(i);
Exp(OLay).hOLplateNum(i)=Exp(expN).Dexp(DexpN).plateNum %bug fix for OLay "chrono' RF_cmp( ) trend
plateNum=Exp(expN).Dexp(DexpN).plateNum
OLplateNum=Exp(OLay).hOLplateNum(i);
seltraceN=i;
end
if OLay==3 && get(ghandles.rotPB3,'value') ~=1
set(htargetAxes,'color',[1 0 0])
try if length(char(Exp(OLay).hOLname(i)))>40,set(ghandles.OLay3,'FontSize',8);end, catch, end
set(ghandles.OLay3,'string', Exp(OLay).hOLname(i));
traceLab=char(Exp(OLay).hOLname(i));
try if length(char(Exp(OLay).hOLexpNm(i)))>40,set(ghandles.OLexp3,'FontSize',8);end, catch, end
set(ghandles.OLexp3,'string',Exp(OLay).hOLexpNm(i));
OLresDir=Exp(OLay).hOLresDir(i);
Exp(OLay).hOLplateNum(i)=Exp(expN).Dexp(DexpN).plateNum %bug fix for OLay "chrono' RF_cmp( ) trend
plateNum=Exp(expN).Dexp(DexpN).plateNum
OLplateNum=Exp(OLay).hOLplateNum(i);
seltraceN=i;
end
Exp(OLay).seltraceN=seltraceN;
else
msg='Cant Find trace'
end
end
% Extract row and col values from stored trace label for dest compare plots(EZdestComp)
% if a RFcmp_ is selected Need alternate method.
% if the Composite button is active, Need yet another method.
try
tracename=char(Exp(OLay).hOLname(seltraceN))
pos_=strfind(tracename,'_')
rxcy=tracename(pos_(2):pos_(3))
cindx=strfind(rxcy,'c')
rindx=strfind(rxcy,'r')
LBr=str2num(rxcy((rindx+1):cindx-1))
LBc=str2num(tracename((pos_(2)+cindx): pos_(3)-1))
indx=((LBr-1)*24) +LBc
grfgenestr=tracename(1:pos_(3)-1)
scan=Exp(OLay).Dexp(DexpN).scan;
EZdatatip=2;
try
tracename=char(Exp(OLay).hOLname(seltraceN))
EZdatatip=2;
catch
end
catch
msg='Not from an OLay selected trace'
end
catch
msg='Not in OLay frame-axis 0'
end
% Hide selected plot trace: rotPBx used for 'Hide'
try
OLayTest=OLay<4
msg='OLay'
OLay
if get(ghandles.rotPB1,'value') ==1 && OLay==1,
% make all traces blue
for i=1:length(Exp(OLay).hOL(:))
set(Exp(OLay).hOL(i),'color',[0 0 1])
end
for i=1:length(Exp(OLay).hOL(:))
if htargetAxes==Exp(OLay).hOL(i)
hidAx1traceN=i
set(Exp(OLay).hOL(i),'Visible','off')
set(Exp(OLay).hOLb(i),'Visible','off')
for j=1:length(Exp(OLay).hOL(:))
if isequal(get(Exp(OLay).hOL(j),'Visible'),'on'), maxhN=j; end
end
end
if htargetAxes==Exp(OLay).hOL(i), break;end
end
set(Exp(OLay).hOL(maxhN),'color',[1 0 0]) %Set latest trace red
set(Exp(OLay).hOLb(maxhN),'color',[0 1 0])
if OLay==1
try if length(char(Exp(OLay).hOLname(maxhN)))>40,set(ghandles.OLay1,'FontSize',8);end, catch, end
set(ghandles.OLay1,'string', Exp(OLay).hOLname(maxhN));
traceLab=char(Exp(OLay).hOLname(maxhN));
try if length(char(Exp(OLay).hOLexpNm(maxhN)))>40,set(ghandles.OLexp1,'FontSize',8);end, catch, end
set(ghandles.OLexp1,'string',Exp(OLay).hOLexpNm(maxhN));
OLresDir=Exp(OLay).hOLresDir(maxhN);
OLplateNum=Exp(OLay).hOLplateNum(maxhN);
end
end
% Hide
if get(ghandles.rotPB2,'value')==1 && OLay==2, %
for j=1:length(Exp(OLay).hOL(:)) %Set all traces blue
try set(Exp(OLay).hOL(i),'color',[0 0 1]), catch, end
end
for i=1:length(Exp(OLay).hOL(:))
if htargetAxes==Exp(OLay).hOL(i)
hidAx2traceN=i
set(Exp(OLay).hOL(i),'Visible','off')
set(Exp(OLay).hOLb(i),'Visible','off')
for j=1:length(Exp(OLay).hOL(:))
try if isequal(get(Exp(OLay).hOL(j),'Visible'),'on'), maxhN=j; end, catch end
end
end
if htargetAxes==Exp(OLay).hOL(i), break;end
end
set(Exp(OLay).hOL(maxhN),'color',[1 0 0]) %Set latest trace red
set(Exp(OLay).hOLb(maxhN),'color',[0 1 0])
if OLay==2
try if length(char(Exp(OLay).hOLname(maxhN)))>40,set(ghandles.OLay2,'FontSize',8);end, catch, end
set(ghandles.OLay2,'string', Exp(OLay).hOLname(maxhN));
traceLab=char(Exp(OLay).hOLname(maxhN));
try if length(char(Exp(OLay).hOLexpNm(maxhN)))>40,set(ghandles.OLexp2,'FontSize',8);end, catch, end
set(ghandles.OLexp2,'string',Exp(OLay).hOLexpNm(maxhN));
OLresDir=Exp(OLay).hOLresDir(maxhN);
OLplateNum=Exp(OLay).hOLplateNum(maxhN);
end
end
% Hide 3
if get(ghandles.rotPB3,'value') ==1 && OLay==3,
% make all traces blue
for i=1:length(Exp(OLay).hOL(:))
try set(Exp(OLay).hOL(i),'color',[0 0 1]), catch, end
end
for i=1:length(Exp(OLay).hOL(:))
if htargetAxes==Exp(OLay).hOL(i)
hidAx3traceN=i
set(Exp(OLay).hOL(i),'Visible','off')
set(Exp(OLay).hOLb(i),'Visible','off')
for j=1:length(Exp(OLay).hOL(:))
try if isequal(get(Exp(OLay).hOL(j),'Visible'),'on'), maxhN=j; end, catch, end
end
end
if htargetAxes==Exp(OLay).hOL(i), break;end
end
set(Exp(OLay).hOL(maxhN),'color',[1 0 0]) %Set latest trace red
set(Exp(OLay).hOLb(maxhN),'color',[0 1 0])
if OLay==3
try if length(char(Exp(OLay).hOLname(maxhN)))>40,set(ghandles.OLay3,'FontSize',8);end, catch, end
set(ghandles.OLay3,'string', Exp(OLay).hOLname(maxhN));
traceLab=char(Exp(OLay).hOLname(maxhN));
try if length(char(Exp(OLay).hOLexpNm(maxhN)))>40,set(ghandles.OLexp3,'FontSize',8);end, catch, end
set(ghandles.OLexp3,'string',Exp(OLay).hOLexpNm(maxhN));
OLresDir=Exp(OLay).hOLresDir(maxhN);
OLplateNum=Exp(OLay).hOLplateNum(maxhN);
end
end
destcompMsg='Olay';
catch
msg='Not in OLay frame-axis 1'
end
NoOLay=0;
try
OLay
expN=OLay
EZdatatip=2
catch
NoOLay=1;
EZdatatip=1;
end
if get(ghandles.spotTog,'value')==1 && NoOLay
OLresDir=Exp(expN).Dexp(DexpN).resDir;
OLplateNum=plateNum;
imLoc=[picLoc1(2), picLoc1(1)];
EZspotview(expN,DexpN, imLoc,OLresDir,OLplateNum,NoOLay)
end
% GraphicPertibationComparison**15_821*OR Chrono Day Comparison
if strcmpi(Exp(expN).DexpType,'single') ...
|| strcmpi(Exp(expN).DexpType,'multi')
EZdestComp
elseif strcmpi(Exp(expN).DexpType,'chrono') ...
&& length(Exp(expN).Dexp)>1
EZmDayTrend
end
% spotTog && ~Hide && Olay Capture spot location for spotview May need to
% add DexpN BUT the OLresDir likely get spotview to where it needs to go.
try
if exist('OLay') %User clicked on an Overlay
if get(ghandles.spotTog,'value')==1 && get(ghandles.rotPB1,'value') ~=1 && OLay<4
msg='OLay with SpotTog On and Hide off'
pos_=strfind(traceLab,'_')
rcStr=traceLab(pos_(2)+1:pos_(3)-1)
cPos=findstr(rcStr,'c');
rUsr=str2num(rcStr(2:cPos-1));
cUsr=str2num(rcStr(cPos+1:end));
imLoc=[cUsr, (17-rUsr)]; %picLoc1 %transform horz user data to vert image for picLocation data
OLresDir %=Exp(expN).hOLresDir(traceN);
OLplateNum %=Exp(expN).hOLplateNum(traceN);
EZspotview(expN, imLoc,OLresDir,OLplateNum,NoOLay)
end
end
catch
end
[output_txt]=datatipp(obj,event_obj);
% HeatMap Text Field
try
ll=num2str(l);
if length(ll)>5,htl=ll(1:5);else htl=ll;end
catch
htl=' ';
end
try
kk=num2str(K);
if length(kk)>5,htk=kk(1:5);else htk=kk;end
catch
htk=' ';
end
try
rr=num2str(r);
if length(rr)>5,htr=rr(1:5);else htr=rr;end
catch
htr=' ';
end
try
n1=num2str(Exp(expN).HtMpIntN1(indx)); %num2str(Exp(expN).Dexp(DexpN).HtMpIntN1(indx));
if length(n1)>5,N1=n1(1:5);else N1=n1; end
htN1=strcat('_N1=',N1);
catch
htN1=' ';
end
try
n2=num2str(Exp(expN).HtMpIntN2(indx)); %num2str(Exp(expN).Dexp(DexpN).HtMpIntN2(indx));
if length(n2)>5,N2=n2(1:5);else N2=n2; end
htN2=strcat('_N2=',N2);
catch
htN2=' ';
end
if Exp(expN).htmapPBsel==1, htmapStr=strcat('K=',htk); end
if Exp(expN).htmapPBsel==2, htmapStr=strcat('r=',htr); end
try
if Exp(expN).htmapPBsel==0 || Exp(expN).htmapPBsel>2
htmapStr=strcat('L=',htl, htN1,htN2)
if expN==1,set(ghandles.HtMapVals1,'string',htmapStr);end
if expN==2,set(ghandles.HtMapVals2,'string',htmapStr);end
if expN==3,set(ghandles.HtMapVals3,'string',htmapStr);end
end
catch
end
try
if Exp(expN).htmapPBsel==1 || Exp(expN).htmapPBsel==2
if expN==1,set(ghandles.HtMapVals1,'string',htmapStr);end
if expN==2,set(ghandles.HtMapVals2,'string',htmapStr);end
if expN==3,set(ghandles.HtMapVals3,'string',htmapStr);end
end
catch
end
% datacursormode(gcf)
% Test Area
% Added 18_0105 to define RFcmpGFlg for EZmDayTrend.m when an Image spot
% is clicked
tempLB=str2mat(selGnOrf)
RFcmpGFlg=0;
if isequal(tempLB(4:6),'cmp'), RFnum=str2double(tempLB(3));
elseif isequal(tempLB(3:6),'cmpG'), RFcmpGFlg=1;
elseif isequal(tempLB(3:6),'cmpP'), RFcmpGFlg=1; %I beleive handling will be the same as RFcmpG
end
%attemp to accomodate problems in newer Matlab which pops an unneccessay
%{
if verLessThan('matlab','8.4') %)
else %accomodate new matlab changes after 2014a fix 2nd update 23_0227
close(1)
end
%blank figure that the user has to minimize
if verLessThan('matlab','8.4') %original work 23_0227 updated 23_0525 (8.4 changed to 8.3)
else %accomodate new matlab changes after 2014a fix 2nd update 23_0227
clf
end
%}

View File

@@ -0,0 +1,147 @@
% EZvFigPrint.m Called by [P} button to produce S curves for publication
global ghandles
global Exp
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 get(ghandles.printOL1,'Value')==1,zone=1; end
if get(ghandles.printOL2,'Value')==1,zone=2; end
if get(ghandles.printOL3,'Value')==1,zone=3; end
semiLog=0;
if isequal(get(ghandles.OLaxes1,'YScale'),'log'), semiLog=1;end
if isequal(get(ghandles.OLaxes2,'YScale'),'log'), semiLog=1;end
if isequal(get(ghandles.OLaxes3,'YScale'),'log'), semiLog=1;end
clear legName tmp
figure
set(gcf,'OuterPosition',(get(0,'screensize')))
hn=0;
if isequal(get(Exp(zone).hOL(1),'Visible'),'on')
disphOLX(1)={get(Exp(zone).hOL(1),'XData')}
disphOLY(1)={get(Exp(zone).hOL(1),'YData')}
tmp(1)=strrep(Exp(zone).hOLname(1),'_','-')
try
disphOLbX(1)={get(Exp(zone).hOLb(1),'XData')}
disphOLbY(1)={get(Exp(zone).hOLb(1),'YData')}
catch end
hn=hn+1
notDup=1;
end
notDup=0;
for hN=2:length(Exp(zone).hOL)
% Bounce-dupicate data removal
for j=1:(hN-1)
if isequal(Exp(zone).hOLname(hN), Exp(zone).hOLname(j))%&& ...
% isequal(get(Exp(zone).hOL(hN),'Visible'),'on')
notDup=0;
break
else
notDup=1;
end
end
if notDup==1
if isequal(get(Exp(zone).hOL(hN),'Visible'),'on')
hn=hn+1
try
disphOLX(hn)={get(Exp(zone).hOL(hN),'XData')};
disphOLY(hn)={get(Exp(zone).hOL(hN),'YData')};
tmp(hn)=strrep(Exp(zone).hOLname(hN),'_','-')
try
disphOLbX(hn)={get(Exp(zone).hOLb(hN),'XData')};
disphOLbY(hn)={get(Exp(zone).hOLb(hN),'YData')};
catch
end
tmp(hn)=strrep(Exp(zone).hOLname(hN),'_','-')
catch ME
disp(ME)
display('error leading to line 59 catch')
end
end
end
end
for i=1:hn
if semiLog==0
hprint=plot(cell2mat(disphOLX(i)),cell2mat(disphOLY(i)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 6
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(i)={get(hprint,'color')};
else
hprint=semilogy(cell2mat(disphOLX(i)),cell2mat(disphOLY(i)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 4.0
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(i)={get(hprint,'color')};
end
hold all
end
if Exp(zone).CompositPlot~=1 % Standard plot, Not a Composite Plot
legName=tmp
hleg=legend((legName),'location','NEO')
set(hleg,'fontsize',legFontSz)
try
for i=1:hn
if semiLog==0
hprint=plot(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)),'marker','+','markerEdgeColor',cell2mat(linecolor(i)),'markerSize',markerSz, 'linestyle','none')
else
hprint=semilogy(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)),'marker','+','markerEdgeColor',cell2mat(linecolor(i)),'markerSize',markerSz, 'linestyle','none')
end
end
catch
end
hold off
% End of Standard Overlay Plot
else % if Composite Plot
for hcN=1:(Exp(zone).cTraceN -1)
disphOLX(hcN)={get(Exp(zone).hCmean(hcN),'XData')};
disphOLY(hcN)={get(Exp(zone).hCmean(hcN),'YData')};
disphOLbX(hcN)={get(Exp(zone).hBound1(hcN),'XData')};
disphOLbY(hcN)={get(Exp(zone).hBound1(hcN),'YData')};
disphOLcX(hcN)={get(Exp(zone).hBound2(hcN),'XData')};
disphOLcY(hcN)={get(Exp(zone).hBound2(hcN),'YData')};
tmp(hcN)=(Exp(zone).cName(hcN))
if semiLog==0
hprint=plot(cell2mat(disphOLX(hcN)),cell2mat(disphOLY(hcN)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 6
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(hcN)={get(hprint,'color')};
else
hprint=semilogy(cell2mat(disphOLX(hcN)),cell2mat(disphOLY(hcN)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 4.0
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(hcN)={get(hprint,'color')};
end
hold all
legName=tmp
hleg=legend((legName),'location','NEO')
set(hleg,'fontsize',legFontSz)
%{
for i=1:hn
hprint=plot(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)),'marker','+','markerEdgeColor',cell2mat(linecolor(i)),'markerSize',markerSz, 'linestyle','none')
end
%}
end
for i=1:(Exp(zone).cTraceN -1)
hBprint=plot(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)))
set(hBprint,'linewidth',.5) %lnwidth) %0.5 then 1.5 now 6
set(hBprint,'color',linecolor{i})
hCprint=plot(cell2mat(disphOLcX(i)),cell2mat(disphOLcY(i)))
set(hCprint,'linewidth',0.5) %lnwidth) %0.5 then 1.5 now 6
set(hBprint,'color',linecolor{i})
end
hold off
end

View File

@@ -0,0 +1,30 @@
% EZvImagesOnly
asd=12
dirLst=dir(ExpPath)
for i=1:size(dirLst,1)
if ~isempty(str2num(dirLst(i).name)) || ~isempty(strfind(dirLst(i).name,'Scan')) % && jpgOut==1
scLst=fullfile(ExpPath,dirLst(i).name);
for n=1:size(filelst,1)
try
if ~isempty(strfind(filelst(n).name,'bmp'))||~isempty(strfind(filelst(n).name,'tif'))
tptImLst(n)=filelst(n).name;
end
catch
end
end
tptLength=length(tptImLst);
end
scLength=length(scLst);
end
I=imread(ExpOutImFile);
expAxes=handles.Iaxes1;
imshow(I)
set(expAxes,'xtick',[],'ytick',[])
expAxes=handles.Iaxes2;
imshow(I)
set(expAxes,'xtick',[],'ytick',[])
expAxes=handles.Iaxes3;
imshow(I)
set(expAxes,'xtick',[],'ytick',[])

View File

@@ -0,0 +1,876 @@
% EZvInitLoad
global Exp
global Expaa
global Expbb
global userPars
global scansDir
global matFile
global zonePB
global mpdmFile
global ghandles
% Initialize some variables from matlab
ezPath=which(mfilename);
[ezDir,ezFileName]=fileparts(ezPath);
ezDir=fullfile(easyDir);
[parentDir, ~]=fileparts(ezDir);
parentDir=fullfile(parentDir);
debug=1;
if debug
disp('Running in debug mode');
disp('Initialized variables:');
whos;
end
fprintf('This script name: %s\n', ezFileName);
% Set scansDir (project scans directory) intelligently
if exist('PROJECT_SCANS_DIR', 'var') && ~isempty(getenv('PROJECT_SCANS_DIR'))
scansDir=fullfile(getenv('PROJECT_SCANS_DIR'));
if exist(scansDir, 'dir')
fprintf('Using scans directory: %s from environment variable PROJECT_SCANS_DIR\n', scansDir);
disp('This usually indicates that we are in module mode');
if ~exist('PROJECT', 'var') || isempty(getenv('PROJECT'))
dirInfo=fileparts(scansDir);
project=dirInfo.name;
end
else
disp('WARNING: PROJECT_SCANS_DIR does not exist');
end
elseif exist('PROJECT', 'var') && ~isempty(getenv('PROJECT')) % for standalone mode
% scansDir=fullfile(parentDir, '..', '..', 'scans', getenv('PROJECT') 'out', 'easy', getenv('PROJECT'));
scansDir=fullfile(parentDir, '..', '..', 'scans', getenv('PROJECT'));
project=getenv('PROJECT');
fprintf('Using project path: %s from environment variable PROJECT\n', scansDir);
disp('This usually indicates that we are in standalone mode');
else
% TODO Lots of this is hardcoded logic, this TODO is just a reminder to change this block
% when changing EASY/EZdir and other variables in the parent script
fprintf('WARNING: Running in standalone mode without PROJECT or PROJECT_SCANS_DIR environment variables (not recommended)\n');
fprintf('Beginning parent scans directory search\n');
dirsToScan={
fullfile(parentDir, '..', '..', 'scans')
fullfile(parentDir, '..', '..', 'ExpJobs')
fullfile('mnt','data','scans')
fullfile('mnt','data', 'ExpJobs')
fullfile(parentDir, '..', '..', 'templates', 'scans-demo')
};
for i=1:length(dirsToScan)
d=dirsToScan(i);
d=char(d);
if exist(d, 'dir')
subDirs=dir(d);
pattern='^\d{6}_.*_.*';
matchedDirs={dirs(regexp(subDirs.name, pattern)).name};
if ~isempty(matchedDirs)
fprintf('Found a non-empty scans directory in our list: %s\n', char(d));
fprintf('Setting scansDir to %s\n', char(d));
scansDir=fullfile(d);
end
fprintf('Scanning inside %s for a project directory\n', char(d));
sortedMatchedDirs=sortrows(matchedDirs);
project=sortedMatchedDirs{1}; % select the latest dir (by date prefix)
fprintf('Selected latest project directory %s\n', char(project));
end
end
end
% User sanity check and warning
if exist('PROJECT_USER', 'var') && ~isempty(getenv('PROJECT_USER'))
if ~equal(getenv('PROJECT_USER'), userName)
disp("WARNING: PROJECT_USER does not match the current namespace");
end
end
% Allow module to override hardcoded default EZview directory
if exist('EZVIEW_DIR','var') && ~isempty(getenv('EZVIEW_DIR'))
EZVIEW_DIR=fullfile(getenv('EZVIEW_DIR'));
if ~strcmp(ezDir, EZVIEW_DIR) % sanity check
disp("WARNING: EZVIEW_DIR does not match this script's hardcoded EZview location");
disp("This is probably OK but if strange beahvior arises, we'll need to fix it in code");
ezDir=EZVIEW_DIR;
end
fprintf('Using EZview script directory: %s from environment variable EZVIEW_DIR\n', ezDir);
else
fprintf('Using EZview script directory: %s from hardcoded default\n', ezDir);
end
% Allow module to override hardcoded default EASY directory
if exist('EASY_DIR','var') && ~isempty(getenv('EASY_DIR'))
EASY_DIR=fullfile(getenv('EASY_DIR'));
if ~strcmp(easyDir, EASY_DIR) % sanity check
disp("WARNING: EASY_DIR does not match this script's hardcoded EASY location");
disp("This is probably OK but if strange beahvior arises, we'll need to fix it in code");
easyDir=EASY_DIR;
end
fprintf('Using EASY script directory: %s from environment variable EASY_DIR\n', easyDir);
else
fprintf('Using EASY script directory: %s from hardcoded default\n', easyDir);
end
userPars.BPdefault={'on','on','0.3','8','45','1000'};
userPars.boxplotFlg=1;
userPars.BPoutliers='On';
userPars.BPnotch='On';
userPars.BPlblShft=0.3;
userPars.BPfontSz=8;
userPars.BProt=45;
userPars.Trenddefault={'1000'};
userPars.kfiltLim=str2double(userPars.BPdefault(6));
try
% Generate the Exp arrays
numExps=3;
for i=1:numExps
Exp(i).cTraceN=0;
Exp(i).cTraceIndx(1)=1;
end
Exp(1).CompositPlot=0;Exp(2).CompositPlot=0;Exp(3).CompositPlot=0;
for i=1:numExps
Exp(i).DexpType='single';
Exp(i).DexpN=1;
Exp(i).DexpLength=1;
eval(['set(handles.DN' num2str(i) ', ''value'', 1);']); % MATLAB level unlocked
end
set(handles.GeneOrfTog,'value',0)
try
load('EZsgdInfo');
catch
disp('Fail to load EZsgdInfo file from code directory');
end
Exp(numExps+1).SGDnum=SGDnum;
Exp(numExps+1).SGDtext=SGDtext;
Exp(numExps+1).SGDraw=SGDraw;
Exp(numExps+1).interacPBsel=0;
% Big outer loop try catch to ln844 end ln868
% try to use user selected 'ExpJobs' folder otherwise use a default
% directory in the uigetfile to load the experiment .mat file.
try
[matFile,scansDir]=uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','off')
load (fullfile(Exp(1).Dexp(1).ExpFoldr,'MasterPlateFiles','MPDMmat.mat'))
for i=1:numExps
Exp(i).Dexp(1).DM=DM;
Exp(i).Dexp(1).MP=MP;
Exp(i).Dexp(1).scan=scan;
Exp(i).cTraceIndx(1)=1;
end
load(fullfile(resDir,'PTmats','NImParameters'))
Exp(1).Dexp(1).ImParMat=ImParMat;
Exp(2).Dexp(1).ImParMat=ImParMat;
Exp(3).Dexp(1).ImParMat=ImParMat;
try
load(fullfile(resDir,'Fotos','Coordinates'))
load(fullfile(resDir,'Fotos','anlZones'))
load(fullfile(resDir,'Fotos','BGatTpts'))
for i=1:numExps
Exp(i).Dexp(1).FexpScanSpots=FexpScanSpots;
Exp(i).Dexp(1).FexpScanBMtp=FexpScanBMtp;
Exp(i).Dexp(1).anlZoneRefs=anlZoneRefs;
Exp(i).cTraceIndx(1)=1;
end
catch
end
for i=1:numExps
Exp(i).traceN=0; % ZoneRelated
Exp(i).traceN=0;
Exp(i).hOL=[];
Exp(i).hOLb=[];
Exp(i).hOLname={};
Exp(i).hOLexpNm={};
Exp(i).hOLresDir={}
Exp(i).hOLplateNum=[];
Exp(i).hOLresDir={};
Exp(i).RFmd1indx=[];
Exp(i).RFmd1pltN=[];
Exp(i).RFmd2indx=[];
Exp(i).RFmd2pltN=[];
end
% default values for EZvFigPrint that meet JLH preferences
Exp(4).plotPars={'4','36','10','5'};
expN=1;
% Test for Bad MP cell array (usually 384 [NaN}'s)
% replaced length(Exp(expN).Dexp(1).MP) with MPnum
for mx=1:length(Exp(expN).Dexp(1).MP)
try
char((Exp(1).Dexp(1).MP(mx).genename{1}(384)))
MPnum=mx;
catch
break
end
end
% MPnum=length(Exp(expN).Dexp(1).MP);
set(handles.MPsldr1,'min',1,'max',MPnum)
set(handles.MPsldr2,'min',1,'max',MPnum)
set(handles.MPsldr3,'min',1,'max',MPnum)
DMnum=length(Exp(expN).Dexp(1).DM.drug);
set(handles.DMsldr1,'min',1,'max',DMnum) %DMnum,'value',1.01) %100,'value',1.01)
set(handles.DMsldr2,'min',1,'max',DMnum)
set(handles.DMsldr3,'min',1,'max',DMnum)
tPtsSize=size(Exp(expN).Dexp(1).FexpScanBMtp{1,1},(3));
set(handles.Tptsldr1,'min',1,'max',tPtsSize)
set(handles.Tptsldr2,'min',1,'max',tPtsSize)
set(handles.Tptsldr3,'min',1,'max',tPtsSize)
set(handles.MPsldr1,'SliderStep',[1/MPnum 1/MPnum]); %[1/length(MP) 1/length(MP)])
set(handles.DMsldr1,'SliderStep',[1/length(DM.drug) 1/length(DM.drug)]);
set(handles.Tptsldr1,'SliderStep',[1/tPtsSize 1/tPtsSize]);
set(handles.MPsldr2,'SliderStep',[1/MPnum 1/MPnum]);
set(handles.DMsldr2,'SliderStep',[1/length(DM.drug) 1/length(DM.drug)]);
set(handles.Tptsldr2,'SliderStep',[1/tPtsSize 1/tPtsSize]);
set(handles.MPsldr3,'SliderStep',[1/MPnum 1/MPnum]);
set(handles.DMsldr3,'SliderStep',[1/length(DM.drug) 1/length(DM.drug)]);
set(handles.Tptsldr3,'SliderStep',[1/tPtsSize 1/tPtsSize]);
try
xp=char(Exp(expN).Dexp(1).resDir);
if ispc
slashPos=strfind(char(Exp(expN).Dexp(1).resDir),'\');
else
slashPos=strfind(char(Exp(expN).Dexp(1).resDir),'/');
end
startPos=slashPos(length(slashPos)-1) +1;
endPos=slashPos(length(slashPos)) -1;
expStr=xp(startPos:endPos);
set(handles.expName1,'string',expStr);
set(handles.expName2,'string',expStr);
set(handles.expName3,'string',expStr);
catch
cd(w)
end %internal try xp=char(Exp(expN).Dexp(1).resDir); if ispc,...
catch
cd(w)
msg='LOADing or Setup issue'
% if no load, then Message try SelExp PB to reload or try and different experiment
end
try
DNLaxes1=handles.DNLaxes1; DNLaxes2=handles.DNLaxes2; DNLaxes3=handles.DNLaxes3;
zeroCLn=zeros(1,DMnum);
%Exp(expN).expLoadCnt(1)=1; %ZoneRelated
Exp(1).hzeroCLn(1)=plot(DNLaxes1,zeroCLn,1:DMnum,'y'); try set(Exp(1).hzeroCLn,'visible','off'); catch ME, end
Exp(2).hzeroCLn(1)=plot(DNLaxes2,zeroCLn,1:DMnum,'y'); try set(Exp(2).hzeroCLn,'visible','off'); catch ME, end
Exp(3).hzeroCLn(1)=plot(DNLaxes3,zeroCLn,1:DMnum,'y'); try set(Exp(3).hzeroCLn,'visible','off'); catch ME, end
Exp(1).expLoadCnt=1;
Exp(2).expLoadCnt=1;
Exp(3).expLoadCnt=1;
catch ME
ME.message,
end
% Compile GeneList and OrfList
% Sort and add the medians of Ref Plates if RF1,RF2 exist
set(handles.listboxGnOrf,'string',{('Loading')})
lstindx=0;
lstindxOrf=0;
spN=0;
rfcnt=0;
dRF1indx=0;
RF1mp=[];
RF2mp=[];
for mp=1:MPnum %length(Exp(expN).Dexp(1).MP)
RF1fullPlate=0;
try RF1fullPlate=sum(ismember((Exp(expN).Dexp(1).MP(mp).genename{1}),'RF1'))==384; catch, mp, msg=strcat(num2str(mp),' genename ERROR'), end
RF2fullPlate=0;
try RF2fullPlate=sum(ismember((Exp(expN).Dexp(1).MP(mp).genename{1}),'RF2'))==384; catch, mp, msg=strcat(num2str(mp),' genename ERROR'), end
for ind384=1:384
spN=spN+1;
try % temp find data error
r=ceil(ind384/24);
if rem(ind384,24)==0, c=24; else c=rem(ind384,24); end
% 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(1).MP(mp).genename{1}(ind384))==38991,
Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)={'OCT1_'};
% genename{1}(ind384) replace numeric with a space ' ' or something
elseif isnumeric(cell2mat(Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)))
Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)={' '};
end
% Check for full(384spot) Reference Plates (RF1 or/and RF2)
RF1fullPlate=0;
try RF1fullPlate=sum(ismember((Exp(expN).Dexp(1).MP(mp).genename{1}),'RF1'))==384; catch, mp, msg=strcat(num2str(mp),' genename ERROR'), end
RF2fullPlate=0;
try RF2fullPlate=sum(ismember((Exp(expN).Dexp(1).MP(mp).genename{1}),'RF2'))==384; catch, mp, msg=strcat(num2str(mp),' genename ERROR'), end
if isempty(regexpi(char((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384))),'blank'))... %,'\<blank\>'
&& ~isnumeric(Exp(expN).Dexp(1).MP(mp).orf{1}(ind384))...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384)),'')...
&& ~isempty((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384)))...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384)),'RF1')...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384)),'RF2')...
&& iscellstr((Exp(expN).Dexp(1).MP(mp).orf{1}(ind384))) % .genename{1}(ind384)))
lstindxOrf=lstindxOrf+1;
bb(lstindxOrf,1)=(Exp(expN).Dexp(1).MP(mp).orf{1}(ind384));
bb(lstindxOrf,2)={strcat(':',num2str(mp),':',num2str(r),':',num2str(c))};
bb(lstindxOrf,3)={mp};
bb(lstindxOrf,4)={r};
bb(lstindxOrf,5)={c};
mutorfs(lstindxOrf)=spN; %16_0318 added for Interaction EZinteract
end
if isempty(regexpi(char((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384))),'blank'))... %,'\<blank\>'
&& ~isnumeric(Exp(expN).Dexp(1).MP(mp).genename{1}(ind384))...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),' ')...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),'')...
&& ~isempty((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)))...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),'RF1')...
&& ~strcmpi((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),'RF2')...
&& iscellstr((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)))
lstindx=lstindx+1;
aa(lstindx,1)=(Exp(expN).Dexp(1).MP(mp).genename{1}(ind384));
aa(lstindx,2)={strcat(':',num2str(mp),':',num2str(r),':',num2str(c))};
aa(lstindx,3)={mp};
aa(lstindx,4)={r};
aa(lstindx,5)={c};
mutgenes(lstindx)=spN;
% Exp(expN).Dexp(1).mutSpotIndx.woRFs(lstindx)=spN;
elseif (RF1fullPlate==1 ... % sum(ismember((Exp(expN).Dexp(1).MP(mp).genename{1}),'RF1'))==384 || ...
|| (length(unique(Exp(expN).Dexp(1).MP(mp).genename{1}(1:384))))==1 && mp==1 ) ... %(isequal((Exp(expN).Dexp(1).MP(mp).genename{1}(1:384)), (Exp(expN).Dexp(1).MP(mp).genename{1}(384:-1:1)))&& mp==1 )) && ...
&& ~exist('RF1scanN','var')
RF1mp=mp
RF1scanN=(mp*DMnum)-(DMnum-1); %mp;
rfcnt=rfcnt+1;
RFs(spN:spN+383)=spN:spN+383;
elseif (RF2fullPlate==1 ... %sum(ismember((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),'RF2'))==384 ||...
|| (length(unique(Exp(expN).Dexp(1).MP(mp).genename{1}(1:384))))==1 && mp==MPnum ) && ~exist('RF2scanN','var')
rfcnt=rfcnt+1;
RFs(spN:spN+383)=spN:spN+383;
asdf=sparse(RFs);
asd=find(asdf);
RFs=asd;
RF2mp=mp
RF2scanN=(mp*DMnum)-(DMnum-1); %mp;
elseif strcmpi((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),'RF1') && (RF1fullPlate~=1)
dRF1indx=dRF1indx+1;
Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)=strrep((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384)),':',' ');
drf(dRF1indx,1)=(Exp(expN).Dexp(1).MP(mp).genename{1}(ind384));
drf(dRF1indx,2)={strcat(':',num2str(mp),':',num2str(r),':',num2str(c))};
drf(dRF1indx,3)={mp}; drfMP(dRF1indx,mp)=mp;
drf(dRF1indx,4)={r}; drfr(dRF1indx,mp)=r;
drf(dRF1indx,5)={c}; drfc(dRF1indx,mp)=c;
drf(dRF1indx,6)={ind384}; drfPindx(dRF1indx,mp)=ind384;
end % if isempty(regexpi(char((Exp(expN).Dexp(1).MP(mp).genename{1}(ind384))),'blank'))...
catch
mp
ind384
msgBadGeneName=strcat('check genename at mp=',num2str(mp),' indx=',num2str(ind384))
end
end
mp
end
% Cover case if mutorfs RFs are labeled RF1 or RF2
try
Exp(1).Dexp(1).mutSpotIndx.wRFs=union(RFs, mutorfs);
catch
msg='No RFs Found in Exp! wRFs'
Exp(1).Dexp(1).mutSpotIndx.wRFs=mutorfs;
end
try
Exp(1).Dexp(1).mutSpotIndx.woRFs=setdiff(mutorfs,RFs);
catch
Exp(expN).Dexp(1).mutSpotIndx.woRFs=mutorfs;
msg='No RFs Found in Exp! woRFs'
end
Exp(2).Dexp(1).mutSpotIndx.wRFs=Exp(1).Dexp(1).mutSpotIndx.wRFs;
Exp(2).Dexp(1).mutSpotIndx.woRFs=Exp(1).Dexp(1).mutSpotIndx.woRFs;
Exp(3).Dexp(1).mutSpotIndx.wRFs=Exp(1).Dexp(1).mutSpotIndx.wRFs;
Exp(3).Dexp(1).mutSpotIndx.woRFs=Exp(1).Dexp(1).mutSpotIndx.woRFs;
Exp(1).Dexp(1).RFmd1indx=[]; Exp(2).Dexp(1).RFmd1indx=[]; Exp(3).Dexp(1).RFmd1indx=[];
Exp(1).Dexp(1).RFmd1pltN=[]; Exp(2).Dexp(1).RFmd1pltN=[]; Exp(3).Dexp(1).RFmd1pltN=[];
Exp(1).Dexp(1).RFmean=[]; Exp(2).Dexp(1).RFmean=[]; Exp(3).Dexp(1).RFmean=[];
Exp(1).Dexp(1).RFmeanG=[]; Exp(2).Dexp(1).RFmeanG=[]; Exp(3).Dexp(1).RFmeanG=[];
if exist('RF1scanN','var')
for d=0:(DMnum-1)
medianIndx=[];
nonZeroIndx=[];
medValList=[];
rf1scN=RF1scanN+d;
try %if RF1scanN doesn't exist this addition to list will be skipped
nonZeroIndx=find(Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(1:384,5));
if isempty(nonZeroIndx)
nonZeroCnt=0
medianIndx=nonZeroIndx;
else
nonZeroCnt=length(nonZeroIndx);
end
if ~isempty(nonZeroIndx) && mod(nonZeroCnt,2)==0, medianIndx=nonZeroIndx(1:nonZeroCnt-1); end
if ~isempty(nonZeroIndx) && mod(nonZeroCnt,2)~=0, medianIndx=nonZeroIndx; end
clear medValLst
clear kValLst
clear rValLst
if ~isempty(nonZeroIndx) && length(medianIndx) > (.15*384) % To calc. a median, more than 15% of spots must be nonZero
medValLst=Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(medianIndx,5);
medValList1{d+1}=medValLst;
min1=min(medValLst);
max1=max(medValLst);
std1=std(medValLst);
mean1=mean(medValLst)
kValLst=Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(medianIndx,3); % For Ref Composite 17_1009
rValLst=Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(medianIndx,4); % For Ref Composite 17_1009
mval1=median(medValLst); % (Exp(expN).Dexp(1).scan(RF1scanN).plate(1).CFout(383,5));
RFmd1pos=find(mval1==(Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(1:384,5)))
RFmd1loc(1)=ceil(RFmd1pos/24); %calc r value
RFmd1loc(2)=RFmd1pos - ((RFmd1loc(1)-1)*24); %calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1md(',num2str(d+1),')')};
aa(lstindx,2)={strcat(':',num2str(RF1mp),':',num2str(RFmd1loc(1)),':',num2str(RFmd1loc(2)))}; %,' std',num2str(std1))};
bb(lstindxOrf,1)={strcat('RF1md(',num2str(d+1),')')};
bb(lstindxOrf,2)={strcat(':',num2str(RF1mp),':',num2str(RFmd1loc(1)),':',num2str(RFmd1loc(2)))}; %,' std',num2str(std1))};
% Composite Reference Amalgum Plot
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1cmp(',num2str(d+1),')')};
aa(lstindx,2)={''};
bb(lstindxOrf,1)={strcat('RF1cmp(',num2str(d+1),')')};
bb(lstindxOrf,2)={''};
Exp(1).Dexp(1).RFmd1LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(2).Dexp(1).RFmd1LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(3).Dexp(1).RFmd1LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(1).Dexp(1).RFmd1indx(d+1)=RFmd1pos; Exp(2).Dexp(1).RFmd1indx(d+1)=RFmd1pos; Exp(3).Dexp(1).RFmd1indx(d+1)=RFmd1pos;
Exp(1).Dexp(1).RFmd1pltN=RF1mp; Exp(2).Dexp(1).RFmd1pltN=RF1mp; Exp(3).Dexp(1).RFmd1pltN=RF1mp;
Exp(1).Dexp(1).RFmd1val(d+1)=mval1; Exp(2).Dexp(1).RFmd1val(d+1)=mval1; Exp(3).Dexp(1).RFmd1val(d+1)=mval1;
Exp(1).Dexp(1).mean1(d+1)=mean1; Exp(2).Dexp(1).mean1(d+1)=mean1; Exp(3).Dexp(1).mean1(d+1)=mean1;
Exp(1).Dexp(1).std1(d+1)=std1; Exp(2).Dexp(1).std1(d+1)=std1; Exp(3).Dexp(1).std1(d+1)=std1;
Exp(1).Dexp(1).min1(d+1)=min1; Exp(2).Dexp(1).min1(d+1)=min1; Exp(3).Dexp(1).min1(d+1)=min1;
Exp(1).Dexp(1).max1(d+1)=max1; Exp(2).Dexp(1).max1(d+1)=max1; Exp(3).Dexp(1).max1(d+1)=max1;
for ic=1:3
Exp(ic).Dexp(1).RFcmpL(1).dm(d+1).Lvals=medValLst; %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpL(1).dm(d+1).med=median(medValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(1).dm(d+1).mean=mean(medValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(1).dm(d+1).std=std(medValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(1).dm(d+1).min=min(medValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(1).dm(d+1).max=max(medValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(1).dm(d+1).Kvals=kValLst; %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpK(1).dm(d+1).mean=mean(kValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(1).dm(d+1).med=median(kValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(1).dm(d+1).std=std(kValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(1).dm(d+1).min=min(kValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(1).dm(d+1).max=max(kValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(1).dm(d+1).rvals=rValLst; %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpr(1).dm(d+1).med=median(rValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(1).dm(d+1).mean=mean(rValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(1).dm(d+1).std=std(rValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(1).dm(d+1).min=min(rValLst); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(1).dm(d+1).mean=max(rValLst); %For Ref Composite 17_1009
end
else
% Pick the first spot with zeros
medianCalcFailed='To Few nonZero spots for valid median RF1 selection'
firstZero=find(((Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(1:384,5))==0),1,'first')
Exp(1).Dexp(1).RFmd1indx(d+1)=firstZero; Exp(2).Dexp(1).RFmd1indx(d+1)=firstZero; Exp(3).Dexp(1).RFmd1indx(d+1)=firstZero;
Exp(1).Dexp(1).RFmd1pltN=RF1mp; Exp(2).Dexp(1).RFmd1pltN=RF1mp; Exp(3).Dexp(1).RFmd1pltN=RF1mp; %EZdestComp uses the masterplate number to get all the destPlates scanNumbers
try, medValList1{d+1}=Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(medianIndx,5); nonZeroCnt; catch end
end
catch
medianCalcTryFailed1='Failed! Failed! But process continued with bogus P1ind384 spot value!'
try
firstZero=find(((Exp(expN).Dexp(1).scan(rf1scN).plate(1).CFout(1:384,5))==0),1,'first')
Exp(1).Dexp(1).RFmd1indx(d+1)=firstZero; Exp(2).Dexp(1).RFmd1indx(d+1)=firstZero; Exp(3).Dexp(1).RFmd1indx(d+1)=firstZero;
catch
Exp(1).Dexp(1).RFmd1indx(d+1)=384; Exp(2).Dexp(1).RFmd1indx(d+1)=384; Exp(3).Dexp(1).RFmd1indx(d+1)=384; %if crapout,Then use spot384 as default to keep going
end
try
Exp(1).Dexp(1).RFmd1pltN=RF1mp; Exp(2).Dexp(1).RFmd1pltN=RF1mp; Exp(3).Dexp(1).RFmd1pltN=RF1mp;
catch
catchissue='Ln334'
Exp(1).Dexp(1).RFmd1pltN=1; Exp(2).Dexp(1).RFmd1pltN=1; Exp(3).Dexp(1).RFmd1pltN=1;
end
end
end
end
Exp(1).Dexp(1).RFmd2indx=[]; Exp(2).Dexp(1).RFmd2indx=[]; Exp(3).Dexp(1).RFmd2indx=[];
Exp(1).Dexp(1).RFmd2pltN=[]; Exp(2).Dexp(1).RFmd2pltN=[]; Exp(3).Dexp(1).RFmd2pltN=[];
if exist('RF2scanN','var')
for d=0:(DMnum-1);
medianIndx2=[];
nonZeroIndx2=[];
medValList2=[];
rf2scN=RF2scanN+d;
try % if RF2scanN doesn't exist this addition to list will be skipped
nonZeroIndx2=find(Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(1:384,5));
if isempty(nonZeroIndx2)
nonZeroCnt2=0
medianIndx2=nonZeroIndx2;
else
nonZeroCnt2=length(nonZeroIndx2);
end
if ~isempty(nonZeroIndx2) && mod(nonZeroCnt2,2)==0, medianIndx2=nonZeroIndx2(1:nonZeroCnt2-1); end
if ~isempty(nonZeroIndx2) && mod(nonZeroCnt2,2)~=0, medianIndx2=nonZeroIndx2; end
clear medValLst2
clear kValLst2
clear rValLst2
if ~isempty(nonZeroIndx2) && length(medianIndx2) > (.15*384) % to calc. a median, more than 15% of spots must be nonZero
medValLst2=Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(medianIndx2,5);
medValList2{d+1}=medValLst2;
min2=min(medValLst2);
max2=max(medValLst2);
std2=std(medValLst2)
mean2=mean(medValLst2);
kValLst2=Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(medianIndx2,3); %For Ref Composite 17_1009
rValLst2=Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(medianIndx2,4); %For Ref Composite 17_1009
mval2=median(medValLst2); %(Exp(expN).Dexp(1).scan(RF2scanN).plate(1).CFout(1:383,5));
RFmd2pos=find(mval2==(Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(1:384,5)));
RFmd2loc(1)=ceil(RFmd2pos/24); %calc r value
RFmd2loc(2)=RFmd2pos - ((RFmd2loc(1)-1)*24); %calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF2md(',num2str(d+1),')')}; %{'RF2md'};
aa(lstindx,2)={strcat(':',num2str(RF2mp),':',num2str(RFmd2loc(1)),':',num2str(RFmd2loc(2)))}; %,' std~',num2str(std2))};
bb(lstindxOrf,1)={strcat('RF2md(',num2str(d+1),')')}; %{'RF2md'};
bb(lstindxOrf,2)={strcat(':',num2str(RF2mp),':',num2str(RFmd2loc(1)),':',num2str(RFmd2loc(2)))}; %,' std~',num2str(std2))};
%Composite Reference Amalgum Plot (CRAP)
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF2cmp(',num2str(d+1),')')};
aa(lstindx,2)={''};
bb(lstindxOrf,1)={strcat('RF2cmp(',num2str(d+1),')')};
bb(lstindxOrf,2)={''};
Exp(1).Dexp(1).RFmd2LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(2).Dexp(1).RFmd2LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(3).Dexp(1).RFmd2LB(d+1)=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(1).Dexp(1).RFmd2indx(d+1)=RFmd2pos; Exp(2).Dexp(1).RFmd2indx(d+1)=RFmd2pos; Exp(3).Dexp(1).RFmd2indx(d+1)=RFmd2pos;
Exp(1).Dexp(1).RFmd2pltN=RF2mp; Exp(2).Dexp(1).RFmd2pltN=RF2mp; Exp(3).Dexp(1).RFmd2pltN=RF2mp;
Exp(1).Dexp(1).RFmd2val(d+1)=mval2; Exp(2).Dexp(1).RFmd2val(d+1)=mval2; Exp(3).Dexp(1).RFmd2val(d+1)=mval2;
Exp(1).Dexp(1).mean2(d+1)=mean2; Exp(2).Dexp(1).mean2(d+1)=mean2; Exp(3).Dexp(1).mean2(d+1)=mean2;
Exp(1).Dexp(1).std2(d+1)=std2; Exp(2).Dexp(1).std2(d+1)=std2; Exp(3).Dexp(1).std2(d+1)=std2;
Exp(1).Dexp(1).min2(d+1)=min2; Exp(2).Dexp(1).min2(d+1)=min2; Exp(3).Dexp(1).min2(d+1)=min2;
Exp(1).Dexp(1).max2(d+1)=max2; Exp(2).Dexp(1).max2(d+1)=max2; Exp(3).Dexp(1).max2(d+1)=max2;
for ic=1:3
Exp(ic).Dexp(1).RFcmpL(2).dm(d+1).Lvals=medValLst2; %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpL(2).dm(d+1).med=median(medValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(2).dm(d+1).mean=mean(medValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(2).dm(d+1).std=std(medValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(2).dm(d+1).min=min(medValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpL(2).dm(d+1).max=max(medValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(2).dm(d+1).Kvals=kValLst2; %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpK(2).dm(d+1).med=median(kValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(2).dm(d+1).mean=mean(kValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(2).dm(d+1).std=std(kValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(2).dm(d+1).min=min(kValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpK(2).dm(d+1).max=max(kValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(2).dm(d+1).rvals=rValLst2; %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpr(2).dm(d+1).med=median(rValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(2).dm(d+1).mean=mean(rValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(2).dm(d+1).std=std(rValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(2).dm(d+1).min=min(rValLst2); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpr(2).dm(d+1).max=max(rValLst); %For Ref Composite 17_1009
end
else
% Pick the first spot with zeros
% Use that position to satisfy and keep process OK
medianCalcFailed2='To Few nonZero spots for valid median RF2 selection'
firstZero2=find(((Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(1:384,5))==0),1,'first')
Exp(1).Dexp(1).RFmd2indx(d+1)=firstZero2; Exp(2).Dexp(1).RFmd2indx(d+1)=firstZero2; Exp(3).Dexp(1).RFmd2indx(d+1)=firstZero2;
Exp(1).Dexp(1).RFmd2pltN=RF2mp; Exp(2).Dexp(1).RFmd2pltN=RF2mp; Exp(3).Dexp(1).RFmd2pltN=RF2mp;
try
medValList2{d+1}=Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(medianIndx2,5);
nonZeroCnt2;
catch
end
end
catch
medianCalcTryFailed2='Failed! Failed! No RF1median But process continued with bogus P1ind384 spot value!'
try
firstZero2=find(((Exp(expN).Dexp(1).scan(rf2scN).plate(1).CFout(1:384,5))==0),1,'first')
Exp(1).Dexp(1).RFmd2indx(d+1)=firstZero2; Exp(2).Dexp(1).RFmd2indx(d+1)=firstZero2; Exp(3).Dexp(1).RFmd2indx(d+1)=firstZero2;
catch
Exp(1).Dexp(1).RFmd2indx(d+1)=384; Exp(2).Dexp(1).RFmd2indx(d+1)=384; Exp(3).Dexp(1).RFmd2indx(d+1)=384; %if crapout,Then use spot384 as default to keep going
end
try
Exp(1).Dexp(1).RFmd2pltN=RF2mp; Exp(2).Dexp(1).RFmd2pltN=RF2mp; Exp(3).Dexp(1).RFmd2pltN=RF2mp;
catch
Exp(1).Dexp(1).RFmd2pltN=1; Exp(2).Dexp(1).RFmd2pltN=1; Exp(3).Dexp(1).RFmd2pltN=1;
end
end % if RF2scanN doesn't exist this addition to list will be skipped
RFcombValList=cat(1,medValList1{d+1},medValList2{d+1});
Exp(1).Dexp(1).RFmean(d+1)=mean(RFcombValList);Exp(2).Dexp(1).RFmean(d+1)=mean(RFcombValList);Exp(3).Dexp(1).RFmean(d+1)=mean(RFcombValList);
Exp(1).Dexp(1).RFstd(d+1)=std(RFcombValList);Exp(2).Dexp(1).RFstd(d+1)=std(RFcombValList);Exp(3).Dexp(1).RFstd(d+1)=std(RFcombValList);
Exp(1).Dexp(1).RFmin(d+1)=min(RFcombValList);Exp(2).Dexp(1).RFmin(d+1)=min(RFcombValList);Exp(3).Dexp(1).RFmin(d+1)=min(RFcombValList);
Exp(1).Dexp(1).RFmax(d+1)=max(RFcombValList);Exp(2).Dexp(1).RFmax(d+1)=max(RFcombValList);Exp(3).Dexp(1).RFmax(d+1)=max(RFcombValList);
% TODO can delete the following redundant line of code
Exp(2).Dexp(1).RFmean(d+1)=Exp(1).Dexp(1).RFmean(d+1); Exp(3).Dexp(1).RFmean(d+1)=Exp(1).Dexp(1).RFmean(d+1);
end
elseif exist('RF1scanN','var')
Exp(1).Dexp(1).RFmean=Exp(1).Dexp(1).mean1; Exp(2).Dexp(1).RFmean=Exp(2).Dexp(1).mean1; Exp(3).Dexp(1).RFmean=Exp(3).Dexp(1).mean1;
Exp(1).Dexp(1).RFstd=Exp(1).Dexp(1).std1; Exp(2).Dexp(1).RFstd=Exp(2).Dexp(1).std1; Exp(3).Dexp(1).RFstd=Exp(3).Dexp(1).std1;
Exp(1).Dexp(1).RFmin=Exp(1).Dexp(1).min1; Exp(2).Dexp(1).RFmin=Exp(2).Dexp(1).min1; Exp(3).Dexp(1).RFmin=Exp(3).Dexp(1).min1;
Exp(1).Dexp(1).RFmax=Exp(1).Dexp(1).max1; Exp(2).Dexp(1).RFmax=Exp(2).Dexp(1).max1; Exp(3).Dexp(1).RFmax=Exp(3).Dexp(1).max1;
end
% DISPERSE REFERENCE PLATES
Exp(expN).Dexp(1).RFmdPindx=[];
Exp(expN).Dexp(1).RFmdPpltN=[];
if exist('drf','var') % ('RF1scanN','var')
% Det. index of change from one MP to the next
i=2;
chgIndx(1)=1;
for j=1:length(drf(:,3))
if j>1
if cell2mat(drf(j,3))~=cell2mat(drf((j-1),3)), chgIndx(i)=j; i=i+1; end
end
end
chgIndx(length(chgIndx)+1)=length(drf)+1;
uu=zeros(size(drf,1),4);
uu(:,1:4)=cell2mat(drf(:,3:6));
vv=zeros(length(drf),DMnum);
dMPs=unique(cell2mat(drf(:,3)));
for mm=1:length(dMPs)
for d=1:(DMnum)
medianIndxDisp=[];
NZrefIndxP=[];
nonZeroValsP=[];
medValLstDisp=[];
rf1scNdisp=((dMPs(mm)-1)*DMnum)+(d);
try % Determine the dispersed RFs median mean and std if such exist
NZrefIndxP=drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm));
vv(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(1).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
% For Global Ref Composite 17_1009
vvK(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(1).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,3);
vvr(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(1).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,4);
nonZeroValsP=nonzeros(Exp(expN).Dexp(1).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5));
minDisp=min(nonZeroValsP);
maxDisp=max(nonZeroValsP);
std1Disp=std(nonZeroValsP);
mean1Disp=mean(nonZeroValsP);
drfVals=Exp(expN).Dexp(1).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
%MEDIAN Determination for PLATES with Dispersed RFs
if isempty(NZrefIndxP)
nonZeroCntDisp=0
medianIndxDisp=NZrefIndxP;
else
nonZeroCntDisp=length(NZrefIndxP);
end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)==0, medianIndxDisp=NZrefIndxP(1:nonZeroCntDisp-1); end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)~=0, medianIndxDisp=NZrefIndxP; end
if ~isempty(NZrefIndxP) && length(medianIndxDisp) > 3 %(.15*384) %To calc. a median, more than 15% of spots must be nonZero
medValLstDisp=Exp(expN).Dexp(1).scan(rf1scNdisp).plate(1).CFout(medianIndxDisp,5);
mval1Disp=median(medValLstDisp);
nonZeroMedPosIndx=find(mval1Disp==nonZeroValsP);
RFmd1posD=NZrefIndxP(nonZeroMedPosIndx);
RFmd1locD(1)=ceil(RFmd1posD/24); %calc r value
RFmd1locD(2)=RFmd1posD - ((RFmd1locD(1)-1)*24); %calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1mdP(',num2str(d),')')}; %{'RF1md'};
aa(lstindx,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))}; %,'std_',num2str(std1))};
bb(lstindxOrf,1)={strcat('RF1mdP(',num2str(d),')')}; %{'RF1md'};
bb(lstindxOrf,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))}; %,'std_',num2str(std1))};
Exp(1).Dexp(1).RFmdPLB(d,dMPs(mm))=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(2).Dexp(1).RFmdPLB(d,dMPs(mm))=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(3).Dexp(1).RFmdPLB(d,dMPs(mm))=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(1).Dexp(1).RFmdPindx(d,dMPs(mm))=RFmd1posD; Exp(2).Dexp(1).RFmdPindx(d,dMPs(mm))=RFmd1posD; Exp(3).Dexp(1).RFmdPindx(d,dMPs(mm))=RFmd1posD;
Exp(1).Dexp(1).RFmdPpltN(d,dMPs(mm))=dMPs(mm); Exp(2).Dexp(1).RFmdPpltN(d,dMPs(mm))=dMPs(mm); Exp(3).Dexp(1).RFmdPpltN(d,dMPs(mm))=dMPs(mm);
Exp(1).Dexp(1).RFmedianP(d,dMPs(mm))=mval1Disp; Exp(2).Dexp(1).RFmedianP(d,dMPs(mm))=mval1Disp; Exp(3).Dexp(1).RFmedianP(d,dMPs(mm))=mval1Disp;
Exp(1).Dexp(1).meanP(d,dMPs(mm))=mean1Disp; Exp(2).Dexp(1).meanP(d,dMPs(mm))=mean1Disp; Exp(3).Dexp(1).meanP(d,dMPs(mm))=mean1Disp;
Exp(1).Dexp(1).stdP(d,dMPs(mm))=std1Disp; Exp(2).Dexp(1).stdP(d,dMPs(mm))=std1Disp; Exp(3).Dexp(1).stdP(d,dMPs(mm))=std1Disp;
Exp(1).Dexp(1).minP(d,dMPs(mm))=minDisp; Exp(2).Dexp(1).minP(d,dMPs(mm))=minDisp; Exp(3).Dexp(1).minP(d,dMPs(mm))=minDisp;
Exp(1).Dexp(1).maxP(d,dMPs(mm))=maxDisp; Exp(2).Dexp(1).maxP(d,dMPs(mm))=maxDisp; Exp(3).Dexp(1).maxP(d,dMPs(mm))=maxDisp;
else
% Need to set L r K values to zeros or pick the first spot with zeros
% Spot 1 could be other than zero as the median isn't calculated if fewer than some percent are nonzero
medianCalcFailedD='To Few nonZero spots for valid median RF1 selection'
firstZeroDindx=find(((Exp(expN).Dexp(1).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5))==0),1,'first');
firstZeroD=drfPindx((firstZeroDindx),dMPs(mm));
Exp(expN).Dexp(1).RFmdPindx(d,dMPs(mm))=firstZeroD;
Exp(expN).Dexp(1).RFmdPpltN(d,dMPs(mm))=dMPs(mm); %RF1mp; %Is this supposed to be the MP number or the ScanPlate number???
end
catch
medianCalcTryFailed1D='Failed! Failed! Ln565 {Dispersed RF1s} "try" But process continued with bogus Plate spot value!'
try
firstZeroindxD=find(vv((chgIndx(d):chgIndx(d+1)-1),5)==0,1,'first')
firstZeroPindx=uu(firstZeroindxD,4);
Exp(expN).Dexp(1).RFmdPpltN(d,dMPs(mm))=dMPs(mm);
Exp(expN).Dexp(1).RFmdPindx(d,dMPs(mm))=firstZeroPindx;
catch
catchissue='try at Ln565'
Exp(expN).Dexp(1).RFmdPpltN(d,dMPs(mm))=dMPs(mm);
Exp(expN).Dexp(1).RFmdPindx(d,dMPs(mm))=384; % if crapout,Then use spot384 as default to keep going
end
try
Exp(expN).Dexp(1).RFmdPpltN=dMPs(mm);
catch
catchissue='Ln'
Exp(expN).Dexp(1).RFmdPpltN=1; %This might keep from breaking BUT ???
end
end
end
end
% Calc. Global Mean, Std, And Median For Distributed References
uu=horzcat(uu,vv);
for d=1:DMnum
medianIndxD=[];
NZrfIndxG=[];
minG=min(nonzeros(vv(:,d)));
maxG=max(nonzeros(vv(:,d)));
RFmeanG=mean(nonzeros(vv(:,d)));
RFstdG=std(nonzeros(vv(:,d)));
NZrfIndxG=find(vv(:,d)); % find(nonzeros(vv(:,d))); WWRONG FOR A WHILE! find(nonzeros(vv(:,d)));
if isempty(RFmeanG)
nonZeroCntD=0;
else
nonZeroCntD=length(nonzeros(vv(:,d)));
end
% Calc. of median requires an odd number of indx items
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)==0, medianIndxD=NZrfIndxG(1:(size(NZrfIndxG,1)-1)); end
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)~=0, medianIndxD=NZrfIndxG(:); end
if ~isempty(NZrfIndxG) && length(medianIndxD) > (.15*size(drf,1)) % To calc. a median, more than 15% of spots must be nonZero
mvalsDG=median(vv(medianIndxD,d)); % (nonzeros(vv(:,d)));
nzPosIndxDG=find(mvalsDG==vv(:,d));
RFmdDGloc(d,1)=uu(nzPosIndxDG,1); % MP of distributedGlobal Median value
RFmdDGloc(d,2)=uu(nzPosIndxDG,2); % calc r value
RFmdDGloc(d,3)=uu(nzPosIndxDG,3); % calc c value
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RF1mdG(',num2str(d),')')};
aa(lstindx,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
bb(lstindxOrf,1)={strcat('RF1mdG(',num2str(d),')')};
bb(lstindxOrf,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
% Composite Reference Amalgum Plot
lstindx=lstindx+1;
lstindxOrf=lstindxOrf+1;
aa(lstindx,1)={strcat('RFcmpG(',num2str(d),')')};
aa(lstindx,2)={''};
bb(lstindxOrf,1)={strcat('RFcmpG(',num2str(d),')')};
bb(lstindxOrf,2)={''};
Exp(1).Dexp(1).RFmdGLB(d)=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(2).Dexp(1).RFmdGLB(d)=strcat(aa(lstindx,1),aa(lstindx,2)); Exp(3).Dexp(1).RFmdGLB(d)=strcat(aa(lstindx,1),aa(lstindx,2));
Exp(1).Dexp(1).RFmdGindx(d)=nzPosIndxDG; Exp(2).Dexp(1).RFmdGindx(d)=nzPosIndxDG; Exp(3).Dexp(1).RFmdGindx(d)=nzPosIndxDG;
Exp(1).Dexp(1).RFmdGpltN(d)=RFmdDGloc(d,1); Exp(2).Dexp(1).RFmdGpltN(d)=RFmdDGloc(d,1); Exp(3).Dexp(1).RFmdGpltN(d)=RFmdDGloc(d,1);
Exp(1).Dexp(1).RFmdGscanN(d)=uu(nzPosIndxDG,4); Exp(2).Dexp(1).RFmdGscanN(d)=uu(nzPosIndxDG,4); Exp(3).Dexp(1).RFmdGscanN(d)=uu(nzPosIndxDG,4);
Exp(1).Dexp(1).RFmedianG(d)=mvalsDG; Exp(2).Dexp(1).RFmedianG(d)=mvalsDG; Exp(3).Dexp(1).RFmedianG(d)=mvalsDG;
Exp(1).Dexp(1).RFmeanG(d)=RFmeanG; Exp(2).Dexp(1).RFmeanG(d)=RFmeanG; Exp(3).Dexp(1).RFmeanG(d)=RFmeanG;
Exp(1).Dexp(1).RFstdG(d)=RFstdG; Exp(2).Dexp(1).RFstdG(d)=RFstdG; Exp(3).Dexp(1).RFstdG(d)=RFstdG;
Exp(1).Dexp(1).RFminG(d)=minG; Exp(2).Dexp(1).RFminG(d)=minG; Exp(3).Dexp(1).RFminG(d)=minG;
Exp(1).Dexp(1).RFmaxG(d)=maxG; Exp(2).Dexp(1).RFmaxG(d)=maxG; Exp(3).Dexp(1).RFmaxG(d)=maxG;
for ic=1:3
Exp(ic).Dexp(1).RFcmpGL.dm(d).Lvals=vv(medianIndxD,d); %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpGL.dm(d).med=median(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGL.dm(d).mean=mean(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGL.dm(d).std=std(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGL.dm(d).min=min(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGL.dm(d).max=max(vv(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGK.dm(d).Kvals=vvK(medianIndxD,d); %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpGK.dm(d).med=median(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGK.dm(d).mean=mean(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGK.dm(d).std=std(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGK.dm(d).min=min(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGK.dm(d).max=max(vvK(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGr.dm(d).rvals=vvr(medianIndxD,d); %17_1201 TrendOL
Exp(ic).Dexp(1).RFcmpGr.dm(d).med=median(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGr.dm(d).mean=mean(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGr.dm(d).std=std(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGr.dm(d).min=min(vvr(medianIndxD,d)); %For Ref Composite 17_1009
Exp(ic).Dexp(1).RFcmpGr.dm(d).max=max(vvr(medianIndxD,d)); %For Ref Composite 17_1009
end
end
end
end
% End Of Disperse Reference Plataes Calculations And List Additions
% Sort And Build Genelist
Exp(1).Dexp(1).srtGnLst={('CheckMP/MPDMfile')};
gnLstRaw=strcat(aa(:,1),aa(:,2));
Exp(1).Dexp(1).srtGnLst=sort(gnLstRaw);
Exp(2).Dexp(1).srtGnLst=Exp(1).Dexp(1).srtGnLst;
Exp(3).Dexp(1).srtGnLst=Exp(1).Dexp(1).srtGnLst;
orfLstRaw=strcat(bb(:,1),bb(:,2));
Exp(1).Dexp(1).srtOrfLst=sort(orfLstRaw);
Exp(2).Dexp(1).srtOrfLst=Exp(1).Dexp(1).srtOrfLst;
Exp(3).Dexp(1).srtOrfLst=Exp(1).Dexp(1).srtOrfLst;
set(handles.listboxGnOrf,'string',Exp(1).Dexp(1).srtGnLst)
catch ME %Outer loop try around entire code subroutine
cd(w)
set(handles.listboxGnOrf,'string',cellstr([{'Failed To Load'}; {'Check MPDMmat file'};{'Check .xls files'};{'Check \Fotos .mat files'};{'Check \matResults file'}]))
%Exp(expN).Dexp(1).srtGnLst={('Failed To Load')};
Exp(1).Dexp(1).srtGnLst=cellstr([{'Failed To Load'}; {' '}]);
Exp(2).Dexp(1).srtGnLst=cellstr([{'Failed To Load'}; {' '}]);
Exp(3).Dexp(1).srtGnLst=cellstr([{'Failed To Load'}; {' '}]);
%Exp(expN).srtOrfLst={('Failed To Load')};
Exp(1).Dexp(1).srtOrfLst=cellstr([{'Failed To Load'}; {' '}]);
Exp(2).Dexp(1).srtOrfLst=cellstr([{'Failed To Load'}; {' '}]);
Exp(3).Dexp(1).srtOrfLst=cellstr([{'Failed To Load'}; {' '}]);
if ~contains(matFile,'.mat')
ExpOutImFile=fullfile(matFile);
EZvImagesOnly
end
end
expN=1; % Fix 170424
DexpN=1;
EZdiagRFsSheet
Exp(1).Dexp(1).RFrnames=rnames; Exp(2).Dexp(1).RFrnames=rnames; Exp(3).Dexp(1).RFrnames=rnames;
Exp(1).Dexp(1).RFdata=data; Exp(2).Dexp(1).RFdata=data; Exp(3).Dexp(1).RFdata=data;
RFconfig=0;
if sum(ismember(fieldnames(Exp(expN).Dexp(1)),'RFmean')) ...
&& ~isempty(Exp(expN).Dexp(1).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(1)),'RFmeanG')) ...
&& isempty(Exp(expN).Dexp(1).RFmeanG)
RFconfig=1;
end
if sum(ismember(fieldnames(Exp(expN).Dexp(1)),'RFmean'))==0 ...
|| isempty(Exp(expN).Dexp(1).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(1)),'RFmeanG')) ...
&& ~isempty(Exp(expN).Dexp(1).RFmeanG)
RFconfig=2;
end
if sum(ismember(fieldnames(Exp(expN).Dexp(1)),'RFmean')) ...
&& ~isempty(Exp(expN).Dexp(1).RFmean) ...
&& sum(ismember(fieldnames(Exp(expN).Dexp(1)),'RFmeanG')) ...
&& ~isempty(Exp(expN).Dexp(1).RFmeanG)
RFconfig=3;
end
Exp(1).RFconfig=RFconfig; Exp(2).RFconfig=RFconfig; Exp(3).RFconfig=RFconfig; % ZoneRelated
try
msgBadGeneName
catch
end
try
Exp(1).Dexp(1).resetHtmpTg=3; Exp(2).Dexp(1).resetHtmpTg=3; Exp(3).Dexp(1).resetHtmpTg=3; % ZoneRelated
if RFconfig==0
RFconfigMsg='No RF1 references in this Experiment Job'
Exp(1).resetHtmpTg=3; Exp(2).resetHtmpTg=3; Exp(3).resetHtmpTg=3; % ZoneRelated
end
catch
end
prntHt=0;
% HtMapTog 'string', 'Current user HL/HN' selection'
try
Exp(1).htmapPBsel=0;
set(handles.HtMapTog1,'string','L')
Exp(2).htmapPBsel=0; %ZoneRelated
set(handles.HtMapTog2,'string','L')
Exp(3).htmapPBsel=0;
set(handles.HtMapTog3,'string','L')
catch
% expN=1;
end
for ic=1:3
Expaa{ic,1}=aa;
Expbb{ic,1}=bb;
end
htMapTogPBfg=0;
Exp(1).htmapRFanswer={'G','L'}; % ZoneRelated
Exp(2).htmapRFanswer={'G','L'};
Exp(3).htmapRFanswer={'G','L'};
zonePB=expN; % added 230828 to fix migration
ghandles=handles;
ghandles.guiFig=gcf;
Exp(4).guiFig=gcf;

View File

@@ -0,0 +1,56 @@
% Disk Image
%{
%Imaging ToolBox method
r=14;
A=zeros(70,70); %(fIntsc(refPtR:(refPtRExt),refPtC:(refPtCExt)))
m={40,40};
A(m{:})=1;
B=imdilate(A,strel('disk',r,0) );
imshow(B)
area=pi*r^2
clear all
%}
%without Image Proc. Toolbox
%r=14;
%A=zeros(70,70);
%A=zeros(r,r);
%P=[40,40];
%center=[refPtR+ round(.5*width), refPtC+ round(.5*width)];
%A=zeros(70,70);
%radius=14;
diaExt=2*(radius+1);
circBoxA=zeros(diaExt,diaExt);
center=[radius+2, radius+2];
[m n ]=size(circBoxA);
X=bsxfun(@plus,(1:m)', zeros(1,n));
Y=bsxfun(@plus,(1:n), zeros(m,1));
cirMask=sqrt(sum(bsxfun(@minus,cat(3,X,Y),reshape(center,1,1,[])) .^2,3))<=radius;
area=pi*radius^2;
cirPixA=nnz(cirMask);
optCirMask=double(cirMask);
optCirMask(optCirMask==0)=0.8;
% Foto Circle Fram(e)
expansion=2;
radExpan=radius+expansion;
FdiaExt=2*(radExpan);
circBoxA=zeros(FdiaExt,FdiaExt);
center=[radExpan+1, radExpan+1];
[m n ]=size(circBoxA);
X=bsxfun(@plus,(1:m)', zeros(1,n));
Y=bsxfun(@plus,(1:n), zeros(m,1));
FcirMask=sqrt(sum(bsxfun(@minus,cat(3,X,Y),reshape(center,1,1,[])) .^2,3))<=radExpan;
% FcirPixA=nnz(cirMask);
FoptCirMask=double(FcirMask);
FoptCirMask(FoptCirMask==1)=2;
% FoptCirMask(FoptCirMask==0)=1;
% Combine Masks to create circular boundry
padOptCirMask=padarray(optCirMask,[expansion-1 expansion-1],0.8);
FoptCirMask=FoptCirMask .* padOptCirMask;
FoptCirMask(FoptCirMask==1.6)=0.8;
FoptCirMask(FoptCirMask==0)=1;
FoptCirMask(FoptCirMask==2)=1;
% imagesc(cirMask)

View File

@@ -0,0 +1,146 @@
%EZvFigPrint
global ghandles
global Exp
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 get(ghandles.printOL1,'Value')==1,zone=1; end
if get(ghandles.printOL2,'Value')==1,zone=2; end
if get(ghandles.printOL3,'Value')==1,zone=3; end
clear legName tmp
figure
set(gcf,'OuterPosition',(get(0,'screensize')))
hn=0;
if isequal(get(Exp(zone).hOL(1),'Visible'),'on')
disphOLX(1)={get(Exp(zone).hOL(1),'XData')}
disphOLY(1)={get(Exp(zone).hOL(1),'YData')}
tmp(1)=strrep(Exp(zone).hOLname(1),'_','-')
try
disphOLbX(1)={get(Exp(zone).hOLb(1),'XData')}
disphOLbY(1)={get(Exp(zone).hOLb(1),'YData')}
catch end
hn=hn+1
notDup=1;
end
notDup=0;
for hN=2:length(Exp(zone).hOL)
% Bounce-dupicate data removal
for j=1:(hN-1)
if isequal(Exp(zone).hOLname(hN), Exp(zone).hOLname(j)) %&& ...
% isequal(get(Exp(zone).hOL(hN),'Visible'),'on')
notDup=0;
break
else
notDup=1;
end
end
if notDup==1
if isequal(get(Exp(zone).hOL(hN),'Visible'),'on')
hn=hn+1
try
disphOLX(hn)={get(Exp(zone).hOL(hN),'XData')};
disphOLY(hn)={get(Exp(zone).hOL(hN),'YData')};
tmp(hn)=strrep(Exp(zone).hOLname(hN),'_','-')
try
disphOLbX(hn)={get(Exp(zone).hOLb(hN),'XData')};
disphOLbY(hn)={get(Exp(zone).hOLb(hN),'YData')};
catch
end
tmp(hn)=strrep(Exp(zone).hOLname(hN),'_','-')
catch ME
disp(ME)
display('error leading to line 59 catch')
end
end
end
end
for i=1:hn
if semiLog==0
hprint=plot(cell2mat(disphOLX(i)),cell2mat(disphOLY(i)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 6
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(i)={get(hprint,'color')};
else
hprint=semilogy(cell2mat(disphOLX(i)),cell2mat(disphOLY(i)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 4.0
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(i)={get(hprint,'color')};
end
hold all
end
if Exp(zone).CompositPlot~=1 % Standard plot, Not a Composite Plot
legName=tmp
hleg=legend((legName),'location','NEO')
set(hleg,'fontsize',legFontSz)
try
for i=1:hn
if semiLog==0
hprint=plot(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)),'marker','+','markerEdgeColor',cell2mat(linecolor(i)),'markerSize',markerSz, 'linestyle','none')
else
hprint=semilogy(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)),'marker','+','markerEdgeColor',cell2mat(linecolor(i)),'markerSize',markerSz, 'linestyle','none')
end
end
catch
end
hold off
% End of Standard Overlay Plot
else %if Composite Plot
for hcN=1:(Exp(zone).cTraceN -1)
disphOLX(hcN)={get(Exp(zone).hCmean(hcN),'XData')};
disphOLY(hcN)={get(Exp(zone).hCmean(hcN),'YData')};
disphOLbX(hcN)={get(Exp(zone).hBound1(hcN),'XData')};
disphOLbY(hcN)={get(Exp(zone).hBound1(hcN),'YData')};
disphOLcX(hcN)={get(Exp(zone).hBound2(hcN),'XData')};
disphOLcY(hcN)={get(Exp(zone).hBound2(hcN),'YData')};
tmp(hcN)=(Exp(zone).cName(hcN))
if semiLog==0
hprint=plot(cell2mat(disphOLX(hcN)),cell2mat(disphOLY(hcN)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 6
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(hcN)={get(hprint,'color')};
else
hprint=semilogy(cell2mat(disphOLX(hcN)),cell2mat(disphOLY(hcN)))
set(hprint,'linewidth',lnwidth) %0.5 then 1.5 now 4.0
set(gca,'fontsize',axisFontSz) % 8 to 15 to 21
linecolor(hcN)={get(hprint,'color')};
end
hold all
legName=tmp
hleg=legend((legName),'location','NEO')
set(hleg,'fontsize',legFontSz)
%{
for i=1:hn
hprint=plot(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)),'marker','+','markerEdgeColor',cell2mat(linecolor(i)),'markerSize',markerSz, 'linestyle','none')
end
%}
end
for i=1:(Exp(zone).cTraceN -1)
hBprint=plot(cell2mat(disphOLbX(i)),cell2mat(disphOLbY(i)))
set(hBprint,'linewidth',.5) %lnwidth) %0.5 then 1.5 now 6
set(hBprint,'color',linecolor{i})
hCprint=plot(cell2mat(disphOLcX(i)),cell2mat(disphOLcY(i)))
set(hCprint,'linewidth',0.5) %lnwidth) %0.5 then 1.5 now 6
set(hBprint,'color',linecolor{i})
end
hold off
end

View File

@@ -0,0 +1,41 @@
% Create the text in an axis
hFstrip=figure;
%figure(hFstrip,'Visible','off')
t=text(.05,.05,tmPtTx,'FontSize',8, 'FontWeight','bold'); %, 'FontWeight','demi')
%Bspace= zeros(20,size(Fcutsc,2))+255;
F=[];
% Capture the text from the screen:
F=getframe(gca,[10 10 200 200]);
% Close the figure:
close
cc=[];
c=[];
% Select any plane of the resulting image:
cc=F.cdata(:,:,1);
c= cc(182:195,18:60);
%
i=[];
j=[];
% Determine where the text was (black is 0):
%[i,j]=find(cc == 0);
[i,j]=find(c < 255);
% Read in or load the image that is to contain the text:
% Use the size of that image, plus the row/column locations
% of the text, to determine locations in the new image:
%Bspace= zeros(20,size(Fcutsc,2))+255;
Bspace= zeros((210-size(Fcutsc,1)),size(Fcutsc,2))+255;
ind=[];
ind=sub2ind(size(Bspace),i,j);
% Index into new image, replacing pixels with white:
Bspace(ind)=uint8(0);
%figure
% Display and color the new image:
%imagesc(Bspace)
%axis image
%colormap(bone)
%htest=imagesc(Fstrip)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,65 @@
%{
%One time create EZsgdInfo .mat file
[SGDnum SGDtext SGDraw]=xlsread('GnOrfDesc.xls');
save('EZsgdInfo','SGDnum','SGDtext','SGDraw')
%load 'EZsgdInfo'
%}
text=Exp(4).SGDtext;
destPerMP= Exp(zoneSel).Dexp(DexpN).destPerMP; %length(gS.DM1.drug);
pertSel=Exp(zoneSel).Dexp(DexpN).pertSel; %floor(get(handles.DMsldr1,'value'));
plateNum=(LBmp-1)*destPerMP + pertSel;
indx=((LBr-1)*24) +LBc
MP=Exp(zoneSel).Dexp(DexpN).MP;
a=[];
if get(handles.GeneOrfTog,'value')==0
gene=MP(1,LBmp).genename{1,1}(indx);
gnLength=length(char(gene));
a=find(strncmpi(text(:,6,:),gene,gnLength));
if ~isempty(a)
desc=char(text(a,32,:));
proc=char(text(a,18,:));
func=char(text(a,19,:));
loc=char(text(a,20,:));
orfXref=char(text(a,2,:));
gnXref=char(text(a,6,:));
if strcmpi(gnXref,'HO'), gene=strcat(gene,',',gnXref);end
name=strcat(char(gene),'->',char(orfXref));
end
elseif get(handles.GeneOrfTog,'value')==1
orf=MP(1,LBmp).orf{1,1}(indx);
orfLength=length(char(orf));
a=find(strncmpi(text(:,2,:),orf,orfLength));
if ~isempty(a)
desc=char(text(a,32,:));
proc=char(text(a,18,:));
func=char(text(a,19,:));
loc=char(text(a,20,:));
gnXref=char(text(a,6,:));
if strcmpi(gnXref,'HO'), gnXref=strcat('RF_,',gnXref);end
name=strcat(char(gnXref),'->',char(orf));
end
end
if isempty(a)
name='Not Found';
desc=[]; proc=[]; func=[]; loc=[];
end
%{
if get(handles.listboxGnOrf,'value')&& ~isempty(a)
desc=char(text(a,32,:));
proc=char(text(a,18,:));
func=char(text(a,19,:));
loc=char(text(a,20,:));
name=strcat(char(gene),'->',char(orf));
elseif get(handles.listboxGnOrf,'value') && ~isempty(a)
desc=char(text(b,32,:));
proc=char(text(b,18,:));
func=char(text(b,19,:));
loc=char(text(b,20,:));
name=strcat(char(gene),'->',char(orf));
elseif isempty(b)
name='Not Found';
desc=[]; proc=[]; func=[]; loc=[];
end
%}
hh=msgbox(sprintf('%s\n%s\n%s%s\n%s%s\n%s%s\n',name,desc,'P->',proc,'F->',func,'C->',loc),'SGD Ontology Info','replace')

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,13 @@
function output_txt = myfunction(obj,event_obj)
% Display the position of the data cursor
% obj Currently not used (empty)
% event_obj Handle to event object
% output_txt Data cursor text string (string or cell array of strings).
pos=get(event_obj,'Position');
output_txt={['X: ',num2str(pos(1),4)], ['Y: ',num2str(pos(2),4)]};
% If there is a Z-coordinate in the position, display it as well
if length(pos) > 2
output_txt{end+1}=['Z: ',num2str(pos(3),4)];
end
%waitforbuttonpress
end

View File

@@ -0,0 +1,372 @@
function ButtonName=questdlg(Question,Title,Btn1,Btn2,Btn3,Default)
% QUESTDLG Question dialog box.
% ButtonName=QUESTDLG(Question) creates a modal dialog box that
% automatically wraps the cell array or string (vector or matrix)
% Question to fit an appropriately sized window. The name of the
% button that is pressed is returned in ButtonName. The Title of
% the figure may be specified by adding a second string argument:
%
% ButtonName=questdlg(Question, Title)
%
% Question will be interpreted as a normal string.
%
% QUESTDLG uses UIWAIT to suspend execution until the user responds.
%
% The default set of buttons names for QUESTDLG are 'Yes','No' and
% 'Cancel'. The default answer for the above calling syntax is 'Yes'.
% This can be changed by adding a third argument which specifies the
% default Button:
%
% ButtonName=questdlg(Question, Title, 'No')
%
% Up to 3 custom button names may be specified by entering
% the button string name(s) as additional arguments to the function
% call. If custom button names are entered, the default button
% must be specified by adding an extra argument, DEFAULT, and
% setting DEFAULT to the same string name as the button you want
% to use as the default button:
%
% ButtonName=questdlg(Question, Title, Btn1, Btn2, DEFAULT);
%
% where DEFAULT is set to Btn1. This makes Btn1 the default answer.
% If the DEFAULT string does not match any of the button string names,
% a warning message is displayed.
%
% To use TeX interpretation for the Question string, a data
% structure must be used for the last argument, i.e.
%
% ButtonName=questdlg(Question, Title, Btn1, Btn2, OPTIONS);
%
% The OPTIONS structure must include the fields Default and Interpreter.
% Interpreter may be 'none' or 'tex' and Default is the default button
% name to be used.
%
% If the dialog is closed without a valid selection, the return value
% is empty.
%
% Example:
%
% ButtonName=questdlg('What is your favorite color?', ...
% 'Color Question', ...
% 'Red', 'Green', 'Blue', 'Green');
% switch ButtonName,
% case 'Red',
% disp('Your favorite color is Red');
% case 'Blue',
% disp('Your favorite color is Blue.')
% case 'Green',
% disp('Your favorite color is Green.');
% end % switch
%
% See also DIALOG, ERRORDLG, HELPDLG, INPUTDLG, LISTDLG,
% MSGBOX, WARNDLG, FIGURE, TEXTWRAP, UIWAIT, UIRESUME.
% Copyright 1984-2010 The MathWorks, Inc.
% $Revision: 5.55.4.17 $
if nargin<1
error('MATLAB:questdlg:TooFewArguments', 'Too few arguments for QUESTDLG');
end
Interpreter='none';
Question=dialogCellstrHelper(Question);
% General Information
Black =[0 0 0 ]/255;
% LightGray =[192 192 192 ]/255;
% LightGray2 =[160 160 164 ]/255;
% MediumGray =[128 128 128 ]/255;
% White =[255 255 255 ]/255;
% Nargin Check
if nargout>1
error('MATLAB:questdlg:WrongNumberOutputs', 'Wrong number of output arguments for QUESTDLG');
end
if nargin==1,Title=' ';end
if nargin<=2, Default='Yes';end
if nargin==3, Default=Btn1 ;end
if nargin<=3, Btn1='Yes'; Btn2='No'; Btn3='Cancel';NumButtons=3;end
if nargin==4, Default=Btn2;Btn2=[];Btn3=[];NumButtons=1;end
if nargin==5, Default=Btn3;Btn3=[];NumButtons=2;end
if nargin==6, NumButtons=3;end
if nargin>6
error('MATLAB:questdlg:TooManyInputs', 'Too many input arguments');NumButtons=3; %#ok
end
if isstruct(Default),
Interpreter=Default.Interpreter;
Default=Default.Default;
end
% Create QuestFig
FigPos=get(0,'DefaultFigurePosition');
FigPos(3)=267;
FigPos(4)=70;
FigPos=getnicedialoglocation(FigPos, get(0,'DefaultFigureUnits'));
QuestFig=dialog(...
'Visible' ,'off', ...
'Name' ,Title, ...
'Pointer' ,'arrow', ...
'Position' ,FigPos, ...
'KeyPressFcn' ,@doFigureKeyPress, ...
'IntegerHandle' ,'off', ...
'WindowStyle' ,'normal', ...
'HandleVisibility','callback', ...
'CloseRequestFcn' ,@doDelete, ...
'Tag' ,Title ...
);
% Set Positions
DefOffset =10;
IconWidth =54;
IconHeight =54;
IconXOffset=DefOffset;
IconYOffset=FigPos(4)-DefOffset-IconHeight; %#ok
IconCMap=[Black;get(QuestFig,'Color')]; %#ok
DefBtnWidth =56;
BtnHeight =22;
BtnYOffset=DefOffset;
BtnWidth=DefBtnWidth;
ExtControl=uicontrol(...
QuestFig , ...
'Style' ,'pushbutton', ...
'String' ,' ' ...
);
btnMargin=1.4;
set(ExtControl,'String',Btn1);
BtnExtent=get(ExtControl,'Extent');
BtnWidth=max(BtnWidth,BtnExtent(3)+8);
if NumButtons > 1
set(ExtControl,'String',Btn2);
BtnExtent=get(ExtControl,'Extent');
BtnWidth=max(BtnWidth,BtnExtent(3)+8);
if NumButtons > 2
set(ExtControl,'String',Btn3);
BtnExtent=get(ExtControl,'Extent');
BtnWidth=max(BtnWidth,BtnExtent(3)*btnMargin);
end
end
BtnHeight=max(BtnHeight,BtnExtent(4)*btnMargin);
delete(ExtControl);
MsgTxtXOffset=IconXOffset+IconWidth;
FigPos(3)=max(FigPos(3),MsgTxtXOffset+NumButtons*(BtnWidth+2*DefOffset));
set(QuestFig,'Position',FigPos);
BtnXOffset=zeros(NumButtons,1);
if NumButtons==1,
BtnXOffset=(FigPos(3)-BtnWidth)/2;
elseif NumButtons==2,
BtnXOffset=[MsgTxtXOffset FigPos(3)-DefOffset-BtnWidth];
elseif NumButtons==3,
BtnXOffset=[MsgTxtXOffset 0 FigPos(3)-DefOffset-BtnWidth];
BtnXOffset(2)=(BtnXOffset(1)+BtnXOffset(3))/2;
end
MsgTxtYOffset=DefOffset+BtnYOffset+BtnHeight;
% Calculate current msg text width and height. If negative,
% clamp it to 1 since its going to be recalculated/corrected later
% based on the actual msg string
MsgTxtWidth=max(1, FigPos(3)-DefOffset-MsgTxtXOffset-IconWidth);
MsgTxtHeight=max(1, FigPos(4)-DefOffset-MsgTxtYOffset);
MsgTxtForeClr=Black;
MsgTxtBackClr=get(QuestFig,'Color');
CBString='uiresume(gcbf)';
DefaultValid=false;
DefaultWasPressed=false;
BtnHandle=cell(NumButtons, 1);
DefaultButton=0;
% Check to see if the Default string passed does match one of the
% strings on the buttons in the dialog. If not, throw a warning.
for i=1:NumButtons
switch i
case 1
ButtonString=Btn1;
ButtonTag='Btn1';
if strcmp(ButtonString, Default)
DefaultValid=true;
DefaultButton=1;
end
case 2
ButtonString=Btn2;
ButtonTag='Btn2';
if strcmp(ButtonString, Default)
DefaultValid=true;
DefaultButton=2;
end
case 3
ButtonString=Btn3;
ButtonTag='Btn3';
if strcmp(ButtonString, Default)
DefaultValid=true;
DefaultButton=3;
end
end
BtnHandle{i}=uicontrol(QuestFig, ...
'Style' ,'pushbutton', ...
'Position' ,[ BtnXOffset(1) BtnYOffset BtnWidth BtnHeight ], ...
'KeyPressFcn' ,@doControlKeyPress, ...
'Callback' ,CBString, ...
'String' ,ButtonString, ...
'HorizontalAlignment','center', ...
'Tag' ,ButtonTag...
);
end
if ~DefaultValid
warnstate=warning('backtrace','off');
warning('MATLAB:QUESTDLG:stringMismatch','Default string does not match any button string name.');
warning(warnstate);
end
MsgHandle=uicontrol(QuestFig, ...
'Style' ,'text', ...
'Position' ,[MsgTxtXOffset MsgTxtYOffset 0.95*MsgTxtWidth MsgTxtHeight ], ...
'String' ,{' '}, ...
'Tag' ,'Question', ...
'HorizontalAlignment','left', ...
'FontWeight' ,'bold', ...
'BackgroundColor' ,MsgTxtBackClr, ...
'ForegroundColor' ,MsgTxtForeClr ...
);
[WrapString,NewMsgTxtPos]=textwrap(MsgHandle,Question,75);
% NumLines=size(WrapString,1);
AxesHandle=axes('Parent',QuestFig,'Position',[0 0 1 1],'Visible','off');
texthandle=text( ...
'Parent' ,AxesHandle , ...
'Units' ,'pixels' , ...
'Color' ,get(BtnHandle{1},'ForegroundColor') , ...
'HorizontalAlignment' ,'left' , ...
'FontName' ,get(BtnHandle{1},'FontName') , ...
'FontSize' ,get(BtnHandle{1},'FontSize') , ...
'VerticalAlignment' ,'bottom' , ...
'String' ,WrapString , ...
'Interpreter' ,Interpreter , ...
'Tag' ,'Question' ...
);
textExtent=get(texthandle, 'Extent');
% (g357851)textExtent and extent from uicontrol are not the same. For window, extent from uicontrol is larger
% than textExtent. But on Mac, it is reverse. Pick the max value.
MsgTxtWidth=max([MsgTxtWidth NewMsgTxtPos(3)+2 textExtent(3)]);
MsgTxtHeight=max([MsgTxtHeight NewMsgTxtPos(4)+2 textExtent(4)]);
MsgTxtXOffset=IconXOffset+IconWidth+DefOffset;
FigPos(3)=max(NumButtons*(BtnWidth+DefOffset)+DefOffset, ...
MsgTxtXOffset+MsgTxtWidth+DefOffset);
% Center Vertically around icon
if IconHeight>MsgTxtHeight,
IconYOffset=BtnYOffset+BtnHeight+DefOffset;
MsgTxtYOffset=IconYOffset+(IconHeight-MsgTxtHeight)/2;
FigPos(4)=IconYOffset+IconHeight+DefOffset;
% Center around text
else
MsgTxtYOffset=BtnYOffset+BtnHeight+DefOffset;
IconYOffset=MsgTxtYOffset+(MsgTxtHeight-IconHeight)/2;
FigPos(4)=MsgTxtYOffset+MsgTxtHeight+DefOffset;
end
if NumButtons==1
BtnXOffset=(FigPos(3)-BtnWidth)/2;
elseif NumButtons==2
BtnXOffset=[(FigPos(3)-DefOffset)/2-BtnWidth (FigPos(3)+DefOffset)/2];
elseif NumButtons==3
BtnXOffset(2)=(FigPos(3)-BtnWidth)/2;
BtnXOffset=[BtnXOffset(2)-DefOffset-BtnWidth BtnXOffset(2) BtnXOffset(2)+BtnWidth+DefOffset];
end
set(QuestFig ,'Position',getnicedialoglocation(FigPos, get(QuestFig,'Units')));
assert(iscell(BtnHandle));
BtnPos=cellfun(@(bh)get(bh,'Position'), BtnHandle, 'UniformOutput', false);
BtnPos=cat(1,BtnPos{:});
BtnPos(:,1)=BtnXOffset;
BtnPos=num2cell(BtnPos,2);
assert(iscell(BtnPos));
cellfun(@(bh,pos)set(bh, 'Position', pos), BtnHandle, BtnPos, 'UniformOutput', false);
if DefaultValid
setdefaultbutton(QuestFig, BtnHandle{DefaultButton});
end
delete(MsgHandle);
set(texthandle, 'Position',[MsgTxtXOffset MsgTxtYOffset 0]);
IconAxes=axes(...
'Parent' ,QuestFig , ...
'Units' ,'Pixels' , ...
'Position' ,[IconXOffset IconYOffset IconWidth IconHeight], ...
'NextPlot' ,'replace' , ...
'Tag' ,'IconAxes' ...
);
set(QuestFig ,'NextPlot','add');
load dialogicons.mat questIconData questIconMap;
IconData=questIconData;
questIconMap(256,:)=get(QuestFig,'Color');
IconCMap=questIconMap;
Img=image('CData',IconData,'Parent',IconAxes);
set(QuestFig, 'Colormap', IconCMap);
set(IconAxes, ...
'Visible','off' , ...
'YDir' ,'reverse' , ...
'XLim' ,get(Img,'XData'), ...
'YLim' ,get(Img,'YData') ...
);
% Make sure we are on screen
movegui(QuestFig)
set(QuestFig ,'WindowStyle','modal','Visible','on');
drawnow;
if DefaultButton ~=0
uicontrol(BtnHandle{DefaultButton});
end
if ishghandle(QuestFig)
% Go into uiwait if the figure handle is still valid.
% This is mostly the case during regular use.
uiwait(QuestFig);
end
% Check handle validity again since we may be out of uiwait because the
% figure was deleted.
if ishghandle(QuestFig)
if DefaultWasPressed
ButtonName=Default;
else
ButtonName=get(get(QuestFig,'CurrentObject'),'String');
end
doDelete;
else
ButtonName='';
end
function doFigureKeyPress(obj, evd) %#ok
switch(evd.Key)
case {'return','space'}
if DefaultValid
DefaultWasPressed=true;
uiresume(gcbf);
end
case 'escape'
doDelete
end
end
function doControlKeyPress(obj, evd) %#ok
switch(evd.Key)
case {'return'}
if DefaultValid
DefaultWasPressed=true;
uiresume(gcbf);
end
case 'escape'
doDelete
end
end
function doDelete(varargin)
delete(QuestFig);
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B