From 2fe4d4e1e1e8c4a9a481c81d8850b0570f1e9591 Mon Sep 17 00:00:00 2001 From: Bryan Roessler Date: Thu, 25 Jul 2024 18:39:56 -0400 Subject: [PATCH] Format par4GblFnc8c.m --- workflow/templates/easy/par4GblFnc8c.m | 553 +++++++++++-------------- 1 file changed, 250 insertions(+), 303 deletions(-) diff --git a/workflow/templates/easy/par4GblFnc8c.m b/workflow/templates/easy/par4GblFnc8c.m index 074ab179..a0135122 100755 --- a/workflow/templates/easy/par4GblFnc8c.m +++ b/workflow/templates/easy/par4GblFnc8c.m @@ -1,357 +1,304 @@ %% 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,resDir,expDir,~, Tmpsbdg) +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,resDir,expDir,~, Tmpsbdg) + 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; - -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(expDir,char(scLst(scCount)))) - expDir; - swCatch=0; - nndx=nndx+1; - -tifFile=char(fullfile(expDir,char(scLst(scCount)), tifFileLstP4{scCount}(tPt))); + for tPt=1:tptLength0 %size(tifFileLst,1) %length(tifFileLst) + tifFileLstP4{scCount}(tPt) + scLst; + scLst(scCount) + char(scLst(scCount)) + char(fullfile(expDir,char(scLst(scCount)))) + expDir; + swCatch=0; + nndx=nndx+1; + tifFile=char(fullfile(expDir,char(scLst(scCount)), tifFileLstP4{scCount}(tPt))); try - info = imfinfo(tifFile); %('D:\jwrDevel\DevelCurveFittingJWR\ImageScans\Scan2\020hr002.tif') - + 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 + % 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(resDir,'PrintResults','ImageFileReadFailure.txt'))); - fid = fopen(fFail,'a'); %create,open and append + 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: - + 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 % end for tPt=1:length(tifFileLst) loop - - %clear tifFileLst; %Can't use clear inside a parfor loop - 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 + 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 - 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 + % 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 + end - %********************* - -%------------------------------------------------------- - -if tptLength>= 3 %added to jump over and fill data for invalid Sscan(plate runs -%*******Create Blank Scan********************* + % 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 - + Empsc=zeros(ImHeigth,ImWidth); %Ncode -%************************************************************************** -%*********Start Scan Loop************************************************** + % Start scan loop lastPlateOnScan=1; %Ncode -%********************************************************************************************************************************** -disp('Before call to NIscanIntens.....') -resDir; %debugging parfor -%>>>*******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,resDir, Tmpsbdg); + 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,resDir, Tmpsbdg); -TmpexpScanIntens3= TmpexpScanIntens2; -TmpFexpScanSpots3= TmpFexpScanSpots2; -TmpFexpScanBMtp3= TmpFexpScanBMtp2; -TmpanlZoneRefs3= TmpanlZoneRefs2; -Tmpsbdg3= Tmpsbdg2; + 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; + if SWprint==1 + wkDir=pwd; + cd (fullfile(resDir,'PrintResults')); + end -%Package Image data ->for Legacy Printing - -%clear plate %Can't use clear inside a parfor loop -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; -if SWprint==1 -wkDir=pwd; -cd (fullfile(resDir,'PrintResults')); -end - -% Construct Legacy ...Intens.txt file -if SWprint==1 -filename=(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; - + % Construct Legacy ...Intens.txt file + if SWprint==1 + filename=(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 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>>>>>>>>>>Call CurveFit routine >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - %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; - - [par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC2,outCstd2]= ... - 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 - 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 + % CFscanIntens + % Call CurveFit routine + % 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; + [par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC2,outCstd2]= ... + 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 + 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; - + 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; + 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); + p4L1{5}=p4rcTmp; + p4L1{6}=p4pIndxTmp; + p4L1{7}=Ag; -p4L2= p4L1; + 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); + + p4L2=p4L1; end -