Format par4GblFnc8c.m

This commit is contained in:
2024-07-25 18:39:56 -04:00
parent 4382721f9e
commit 2fe4d4e1e1

View File

@@ -1,14 +1,10 @@
%% CALLED By p4loop8c.m %% %% CALLED By p4loop8c.m %%
function [p4L2, ... function [p4L2, TmpexpScanIntens3,TmpFexpScanSpots3,TmpFexpScanBMtp3,TmpanlZoneRefs3,Tmpsbdg3]= ...
TmpexpScanIntens3,TmpFexpScanSpots3,TmpFexpScanBMtp3,TmpanlZoneRefs3,Tmpsbdg3]= ...
par4GblFnc8c(parMat,tptLength,~,selScanNumLst,~,Fflg,PTmapPos,optCirMask,diaExt,doCircle,cirPixA,cirMask,~,... par4GblFnc8c(parMat,tptLength,~,selScanNumLst,~,Fflg,PTmapPos,optCirMask,diaExt,doCircle,cirPixA,cirMask,~,...
TmpexpScanIntens,TmpFexpScanSpots,TmpFexpScanBMtp,TmpanlZoneRefs,scCount,tifFileLstP4,~,ImParMat, ... TmpexpScanIntens,TmpFexpScanSpots,TmpFexpScanBMtp,TmpanlZoneRefs,scCount,tifFileLstP4,~,ImParMat, ...
numRows,numCols,scLst,resDir,expDir,~, Tmpsbdg) numRows,numCols,scLst,resDir,expDir,~, Tmpsbdg)
selScan=selScanNumLst(scCount); selScan=selScanNumLst(scCount);
tptLength0=length(tifFileLstP4{scCount}); tptLength0=length(tifFileLstP4{scCount});
%tptLength=numFiles; %tptLength=numFiles;
tifFileLst={tifFileLstP4(scCount)}; tifFileLst={tifFileLstP4(scCount)};
@@ -20,7 +16,6 @@ selScan= selScanNumLst(scCount);
e=cell(1,2); f=cell(1,2); %(tptLength,2); f=cell(tptLength,2); e=cell(1,2); f=cell(1,2); %(tptLength,2); f=cell(tptLength,2);
nndx=0; nndx=0;
for tPt=1:tptLength0 %size(tifFileLst,1) %length(tifFileLst) for tPt=1:tptLength0 %size(tifFileLst,1) %length(tifFileLst)
tifFileLstP4{scCount}(tPt) tifFileLstP4{scCount}(tPt)
scLst; scLst;
@@ -30,11 +25,9 @@ selScan= selScanNumLst(scCount);
expDir; expDir;
swCatch=0; swCatch=0;
nndx=nndx+1; nndx=nndx+1;
tifFile=char(fullfile(expDir,char(scLst(scCount)), tifFileLstP4{scCount}(tPt))); tifFile=char(fullfile(expDir,char(scLst(scCount)), tifFileLstP4{scCount}(tPt)));
try try
info=imfinfo(tifFile); %('D:\jwrDevel\DevelCurveFittingJWR\ImageScans\Scan2\020hr002.tif') info=imfinfo(tifFile); %('D:\jwrDevel\DevelCurveFittingJWR\ImageScans\Scan2\020hr002.tif')
catch ME catch ME
% Note: During parallel operation Matlab will not open file (fid) % Note: During parallel operation Matlab will not open file (fid)
% etc. Therefore error message text will not be written.The only way % etc. Therefore error message text will not be written.The only way
@@ -51,7 +44,6 @@ tifFile=char(fullfile(expDir,char(scLst(scCount)), tifFileLstP4{scCount}(tPt)));
rep=getReport(ME, 'basic'); rep=getReport(ME, 'basic');
rep=strcat('Read info failure for-',tifFile,' -', rep); rep=strcat('Read info failure for-',tifFile,' -', rep);
%fprintf(fid,'%s \n',rep) %See Note: %fprintf(fid,'%s \n',rep) %See Note:
end end
tptLength=nndx; tptLength=nndx;
scTmNumeric=1; %initialize for parfor scTmNumeric=1; %initialize for parfor
@@ -60,72 +52,53 @@ tifFile=char(fullfile(expDir,char(scLst(scCount)), tifFileLstP4{scCount}(tPt)));
e(nndx,:)={tifFile, scTmNumeric(nndx)}; e(nndx,:)={tifFile, scTmNumeric(nndx)};
%newtifFileLst(nndx)=tifFileLst(tPt); %newtifFileLst(nndx)=tifFileLst(tPt);
end end
end % end for tPt=1:length(tifFileLst) loop end
%clear tifFileLst; %Can't use clear inside a parfor loop % clear tifFileLst;
tifFileLst=cell(nndx,1); tifFileLst=cell(nndx,1);
f={sortrows(e,2)}; f={sortrows(e,2)};
tifFileLst=f{1,1}(:,1); tifFileLst=f{1,1}(:,1);
areaOfIntensAboveBG=zeros(24,16,length(tifFileLst)); areaOfIntensAboveBG=zeros(24,16,length(tifFileLst));
% *******Calculate Time series for each Plate of Selected Scan ******** % Calculate Time series for each Plate of Selected Scan
lastPlateOnScan=1; %Ncode lastPlateOnScan=1; %Ncode
tSeriesv=[]; t0Seriesv=[]; tSeriesv=[]; t0Seriesv=[];
if tptLength>0 % added to jump over and fill data for invalid Sscan(plate runs 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 scTmNumv=cell2mat(f{1,1}(:,2)); % (:,2))120613 fix for variant length data
prtTmNumv=min(scTmNumv)-.000001; prtTmNumv=min(scTmNumv)-.000001;
tSeriesv=((scTmNumv-prtTmNumv)*24); tSeriesv=((scTmNumv-prtTmNumv)*24);
t0Seriesv=((scTmNumv-scTmNumv(1))*24); t0Seriesv=((scTmNumv-scTmNumv(1))*24);
end end
%********************* % added to jump over and fill data for invalid Sscan(plate runs
if tptLength>=3
%------------------------------------------------------- % Create blank scan
if tptLength>= 3 %added to jump over and fill data for invalid Sscan(plate runs
%*******Create Blank Scan*********************
ImHeigth=2075; ImHeigth=2075;
ImWidth=1400; ImWidth=1400;
Empsc=zeros(ImHeigth,ImWidth); %Ncode Empsc=zeros(ImHeigth,ImWidth); %Ncode
% Start scan loop
%**************************************************************************
%*********Start Scan Loop**************************************************
lastPlateOnScan=1; %Ncode lastPlateOnScan=1; %Ncode
%**********************************************************************************************************************************
disp('Before call to NIscanIntens.....') disp('Before call to NIscanIntens.....')
resDir; %debugging parfor
%>>>*******Execute Image conversion into Intensity Data****** % Execute Image conversion into Intensity Data
[Tmpsbdg2, scanIntens, ~, ~, ~, TmpexpScanIntens2, TmpFexpScanSpots2, TmpFexpScanBMtp2, TmpanlZoneRefs2,areaOfIntensAboveBG]= ... [Tmpsbdg2, scanIntens, ~, ~, ~, TmpexpScanIntens2, TmpFexpScanSpots2, TmpFexpScanBMtp2, TmpanlZoneRefs2,areaOfIntensAboveBG]= ...
NIscanIntensBGpar4GblFnc(Fflg,tifFileLst, ImParMat, PTmapPos,optCirMask,diaExt,doCircle,cirPixA,numRows,numCols,ImHeigth,ImWidth,cirMask, ... NIscanIntensBGpar4GblFnc(Fflg,tifFileLst, ImParMat, PTmapPos,optCirMask,diaExt,doCircle,cirPixA,numRows,numCols,ImHeigth,ImWidth,cirMask, ...
tptLength,selScan,Empsc,TmpexpScanIntens,TmpFexpScanSpots,TmpFexpScanBMtp,TmpanlZoneRefs,resDir, Tmpsbdg); tptLength,selScan,Empsc,TmpexpScanIntens,TmpFexpScanSpots,TmpFexpScanBMtp,TmpanlZoneRefs,resDir, Tmpsbdg);
%<<<<*******************************************************************************************************************************
TmpexpScanIntens3=TmpexpScanIntens2; TmpexpScanIntens3=TmpexpScanIntens2;
TmpFexpScanSpots3=TmpFexpScanSpots2; TmpFexpScanSpots3=TmpFexpScanSpots2;
TmpFexpScanBMtp3=TmpFexpScanBMtp2; TmpFexpScanBMtp3=TmpFexpScanBMtp2;
TmpanlZoneRefs3=TmpanlZoneRefs2; TmpanlZoneRefs3=TmpanlZoneRefs2;
Tmpsbdg3=Tmpsbdg2; Tmpsbdg3=Tmpsbdg2;
% clear plate
%***********************************************************************************
%Package Image data ->for Legacy Printing
%clear plate %Can't use clear inside a parfor loop
CFscanIntens=zeros(384,1); % zeros(16,24); CFscanIntens=zeros(384,1); % zeros(16,24);
plate=[]; plate=[];
plate=zeros(24,16,tptLength); 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 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.)
%NIcheck %Check for bad scans at time points (swapped plates etc.) % Set up cell arrays for storing each plate in each Scan ..(scan,plate)
%*******************************
%set up cell arrays for storing each plate in each Scan ..(scan,plate)
SWprint=0; SWprint=0;
if SWprint==1 if SWprint==1
wkDir=pwd; wkDir=pwd;
@@ -147,7 +120,6 @@ locIndx=0; pl=1;
for n=1:numCols %Ncode changed to 16 for Vert for n=1:numCols %Ncode changed to 16 for Vert
for m=1:numRows %Ncode change to 24 for Vert for m=1:numRows %Ncode change to 24 for Vert
locIndx=locIndx+1; locIndx=locIndx+1;
for k=1:numOfImages for k=1:numOfImages
if SWprint==1 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\n',plate(m,n,k,pl));end
@@ -155,22 +127,16 @@ for n=1:numCols %Ncode changed to 16 for Vert
if k>1 && k<numOfImages, fprintf(fid,'\t%.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 if k~=1 && k==numOfImages,fprintf(fid,'\t%.2f\n',plate(m,n,k,pl));end
end end
CFscanIntens(locIndx,k)=plate(m,n,k,pl); CFscanIntens(locIndx,k)=plate(m,n,k,pl);
end end
%MatLab Cell storage
end end
end %end row loop n end
if SWprint==1 if SWprint==1
fclose(fid); fclose(fid);
end end
%++++++++++++++++++++++
% printGrwAreas % printGrwAreas
% Area as the max number of pixels with intensities greater than the Background % 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 % 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 % and then mirror imaged. Thus data must be inverted and rotated to get
@@ -201,24 +167,20 @@ grArea(:,:,:,1)= areaOfIntensAboveBG(1:1:24,16:-1:1,:); %for Ncode dev3vert
Ag(locIndx)=growthArea; Ag(locIndx)=growthArea;
end end
end end
if SWprint==1 if SWprint==1
fclose(fid); fclose(fid);
end end
%end
%++++++++++++++++++++++++
if SWprint==1 if SWprint==1
cd(wkDir); cd(wkDir);
fclose('all'); fclose('all');
end end
%********AutoImCF curveFit kickoff setup*********************************************************** % AutoImCF curveFit kickoff setup
autoImCFlag=1; autoImCFlag=1;
if autoImCFlag==1, SWgrowthArea=1;end if autoImCFlag==1, SWgrowthArea=1;end
times=tSeriesv; times=tSeriesv;
scanAreas=Ag; % growthArea; scanAreas=Ag; % growthArea;
offsets=0; offsets=0;
suffix=strcat('Scan', num2str(selScan),'_Plate', num2str(1)); % char(QspLst(n)); suffix=strcat('Scan', num2str(selScan),'_Plate', num2str(1)); % char(QspLst(n));
@@ -226,14 +188,14 @@ if autoImCFlag==1, SWgrowthArea=1;end
arrayFormat=384; arrayFormat=384;
currDirResults=fullfile(resDir,'PrintResults'); currDirResults=fullfile(resDir,'PrintResults');
%******Version compatability fixes*******assoc'd with diff and solve % Version compatability fixes
%{ %{
v11a='7.12.0.635 (R2011a)'; v11a='7.12.0.635 (R2011a)';
v14a='8.3.0.532 (R2014a)'; v14a='8.3.0.532 (R2014a)';
%v14b='8.4.0.150421 (R2014b)'; %v14b='8.4.0.150421 (R2014b)';
v18a='9.4.0.813654 (R2018a)'; v18a='9.4.0.813654 (R2018a)';
v18b='9.5.0.944444 (R2018b)'; v18b='9.5.0.944444 (R2018b)';
%Fourth order derivative of logistic equation******************************** % Fourth order derivative of logistic equation
if isequal(v18a,version)||isequal(v18b,version) if isequal(v18a,version)||isequal(v18b,version)
syms t K r l; syms t K r l;
fd4=diff(K / (1 + exp(-r* (t - l ))),t,4); fd4=diff(K / (1 + exp(-r* (t - l ))),t,4);
@@ -260,23 +222,18 @@ else %accomodate new matlab changes after 2014a fix 2nd update 23_0227
sols(1)=sols(3); sols(1)=sols(3);
sols(3)=tmpswap; sols(3)=tmpswap;
end end
%********************************************************************************
%CFscanIntens
%adsd
%********************************************************************************
%>>>>>>>>>>>Call CurveFit routine >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % CFscanIntens
% Call CurveFit routine
% NCfitImCF(times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, currDirResults, autoImCFlag, selScan,sols) %,scan)%, scPltList) outputDirectory; % NCfitImCF(times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, currDirResults, autoImCFlag, selScan,sols) %,scan)%, scPltList) outputDirectory;
% [scanTmp2]=NCfitImCFparforFailGbl(times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, currDirResults, autoImCFlag, selScan, sols, scanTmp); %,scan)%, scPltList) outputDirectory; % [scanTmp2]=NCfitImCFparforFailGbl(times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, currDirResults, autoImCFlag, selScan, sols, scanTmp); %,scan)%, scPltList) outputDirectory;
[par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC2,outCstd2]= ... [par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC2,outCstd2]= ...
NCfitImCFparforFailGbl2(parMat,times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, currDirResults, autoImCFlag, selScan, sols); %,scan)%, scPltList) outputDirectory; NCfitImCFparforFailGbl2(parMat,times, CFscanIntens, offsets, suffix, AUCfinalTime, arrayFormat, scanAreas, currDirResults, autoImCFlag, selScan, sols); %,scan)%, scPltList) outputDirectory;
%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
else %fill with default values when an invalid plate scan occurs else %fill with default values when an invalid plate scan occurs
CFscanIntens=zeros(16,24); CFscanIntens=zeros(16,24);
Ag=zeros(1,384); Ag=zeros(1,384);
%Preallocation for parfor loop**********************************
% Preallocation for parfor loop
times=tSeriesv; times=tSeriesv;
st(1,1:size(times,2))=1111; st(1,1:size(times,2))=1111;
resMat(1,1:27)=0; resMat(1,1:27)=0;
@@ -285,7 +242,6 @@ resMatStd= resMat;
outCstd2=zeros(384,27); outCstd2=zeros(384,27);
for m=1:384 for m=1:384
pa{m}=st; pa{m}=st;
par4scanCFparameters{m}=parMat; par4scanCFparameters{m}=parMat;
par4scanCFdate{m}=datestr((now),31); par4scanCFdate{m}=datestr((now),31);
end end
@@ -302,27 +258,19 @@ TmpFexpScanBMtp00= cell(1); %cell(1,scanMax);
TmpanlZoneRefs00=cell(1); %cell(1,scanMax); TmpanlZoneRefs00=cell(1); %cell(1,scanMax);
Tmpsbdg00=cell(1); Tmpsbdg00=cell(1);
%} %}
TmpexpScanIntens3=cell(1); %TmpexpScanIntens2; TmpexpScanIntens3=cell(1); %TmpexpScanIntens2;
TmpFexpScanSpots3=cell(1); %TmpFexpScanSpots2; TmpFexpScanSpots3=cell(1); %TmpFexpScanSpots2;
TmpFexpScanBMtp3=cell(1); %TmpFexpScanBMtp2; TmpFexpScanBMtp3=cell(1); %TmpFexpScanBMtp2;
TmpanlZoneRefs3=cell(1); %TmpanlZoneRefs2; TmpanlZoneRefs3=cell(1); %TmpanlZoneRefs2;
Tmpsbdg3=cell(1); %Tmpsbdg2; Tmpsbdg3=cell(1); %Tmpsbdg2;
%****************************************************************
end %if tptLenth>=3 line19 20_0928 end %if tptLenth>=3 line19 20_0928
tSeriesv; %debuggin parfor tSeriesv; %debuggin parfor
p4L1{1}=tSeriesv; p4L1{1}=tSeriesv;
p4L1{2}=t0Seriesv; p4L1{2}=t0Seriesv;
p4L1{3}=datestr(prtTmNumv,31); p4L1{3}=datestr(prtTmNumv,31);
p4L1{4}=CFscanIntens; p4L1{4}=CFscanIntens;
locIndx=0; locIndx=0;
for n=1:numCols % Ncode changed to 16 for Vert for n=1:numCols % Ncode changed to 16 for Vert
for m=1:numRows % Ncode change to 24 for Vert for m=1:numRows % Ncode change to 24 for Vert
@@ -354,4 +302,3 @@ p4L1{18}= datestr((now),31);
p4L2=p4L1; p4L2=p4L1;
end end