Files
hartman-server/workflow/templates/easy/par4Gbl_Main8c.m

285 lines
9.1 KiB
Matlab
Executable File

%% CALLED BY EASYconsole.m %%
w=pwd;
%function NImStartupImCF02par4Gbl
Fflg=1; %0;
fclose('all'); %close all open files
clear ('plate2', 'scanIntens','Scanfiles','pathname','tifFileLstP4')
%global SWsingleSc
global SWgrowthArea
global scLst
global ImParMat
%global CSearchRange
%global CSrchRng
global expDir
global SWnewExp
global openExpfile
global openExppath
global newExpfile
global newExppath
global ExpOutmat
global fhconsole
global ExpPath
global resDir
global wCodeDir
global matDir
global ImWidth
global ImHeigth
global numRows;
global numCols;
%global SWprintLeg
global scan
%global scanSize
global scanMax
global tptLength
%global scanPar4x
%global sols
%global CFmeth
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;
try
clf(fhconsole,'reset')
catch ME
end
close
%******************************************
EASYconsole
%******************************************
try
load(ExpOutmat)
copyfile(ExpOutmat,(fullfile(matDir,'BkUp',strcat((num2str(datenum(now))),'.mat'))))
catch
end
try
load(fullfile(resDir,'Fotos','Nbdg')) %Modified to load from 'Fotos' 20_0819
catch
%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.
load(fullfile(resDir,'PTmats','Nbdg')) %Left in to accomodate loads of work before 20_0819
end
%++++++++++++++Load Fotos stored data++++++++++++++++++++
try
load(fullfile(resDir,'Fotos','Coordinates'))
catch
end
try
load(fullfile(resDir,'Fotos','BGatTpts'))
catch
end
try
load(fullfile(resDir,'Fotos','anlZones'))
catch
end
%******autoImCF*******************
try
load(fullfile(resDir,'PTmats','NCFparms'))
catch ME
load parameters
end
%************Get Print Times*******************************
PrintTimes=[];
if ispc
expDir=fullfile(ExpPath,'\');
elseif (isunix || ismac)
expDir=ExpPath
end
scLst={};
%**************Parameter Entry******************
NImParamRadiusGui(expDir) %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(resDir,'PTmats','NPTmapSearch'))
PTmapPos=detPos;
selScanNumLst=[];
Scanfiles=[];
pathname=[];
if ispc
cd(char(strcat(expDir,scLst(1))))
end
if isunix
cd(fullfile(expDir,cell2mat(scLst(1))));
end
Scanfiles=[];
pathname=[];
for ii=1:length(scLst)
if (SWsingleSc == 1)
[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); %?Not used RefOnly
end
cd(w);
numFiles=size(Scanfiles,2);
% Initialize tifFilesLst for parfor loop
dir(fullfile(expDir, 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,resDir,expDir, 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(ExpOutmat,'scan');
% save((fullfile(resDir,'PTmats','Nbdg')), 'sbdg'); %legacy location can probably get rid of in time
save((fullfile(resDir,'Fotos','Nbdg')), 'sbdg');
save((fullfile(resDir,'Fotos','Coordinates')),'FexpScanSpots') %Saves frames at each tPt
save((fullfile(resDir,'Fotos','BGatTpts')),'FexpScanBMtp')
save((fullfile(resDir,'Fotos','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=strcat('Scan', num2str(selScan),'_Plate', num2str(1));
fileNamePlate=[filePrefix fileSuffix fileExt];
fileName=fullfile(resDir,'PrintResults', 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
EASYconsole;