Format NCfitImCFparforFailGbl2.m

This commit is contained in:
2024-07-25 13:45:58 -04:00
parent d569bc4be7
commit df3f9e324e

View File

@@ -2,8 +2,7 @@
function [par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC,outCstd]= ... function [par4scanselIntensStd,par4scanselTimesStd,par4scanTimesELr,par4scanIntensELr,par4scanCFparameters,par4scanCFdate,outC,outCstd]= ...
NCfitImCFparforFailGbl2(parMat,times, values, timeOffsets, fileSuffix, AUCfinalTime, ~, spotAreas, outputDirectory, ~,~, sols, ~) %,scan) NCfitImCFparforFailGbl2(parMat,times, values, timeOffsets, fileSuffix, AUCfinalTime, ~, spotAreas, outputDirectory, ~,~, sols, ~) %,scan)
% Preallocation for parfor loop
%Preallocation for parfor loop**********************************
st(1,1:size(times,2))=1111; st(1,1:size(times,2))=1111;
resMat(1,1:27)=0; resMat(1,1:27)=0;
resMatStd=resMat; resMatStd=resMat;
@@ -11,7 +10,6 @@ resMatStd= resMat;
outCstd=zeros(384,27); outCstd=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
@@ -21,18 +19,14 @@ end
par4scanIntensELr=pa; par4scanIntensELr=pa;
par4resMat=zeros(384,27); par4resMat=zeros(384,27);
par4resMatStd=zeros(384,27); par4resMatStd=zeros(384,27);
%****************************************************************
%*****************Begin the Spot(cultures) loop**************************** % Spot(cultures) loop
for ii=1:384 %startSpot:numCultures for ii=1:384 %startSpot:numCultures
%parfor ii= 1:384 %startSpot:numCultures
ii; %%%db print out the culture number ii; %%%db print out the culture number
timepts=[]; timepts=[];
currValues=[]; currValues=[];
currSpotAreas=[]; currSpotAreas=[];
currSpotArea=[]; currSpotArea=[];
dataMatrix=[]; dataMatrix=[];
selTimesStd=[]; %191024 parfor selTimesStd=[]; %191024 parfor
selIntensStd=[]; %191024 parfor selIntensStd=[]; %191024 parfor
@@ -48,9 +42,7 @@ for ii= 1:384 %startSpot:numCultures
% just use the area at the last time point % just use the area at the last time point
% currSpotArea=currSpotAreas(1); % currSpotArea=currSpotAreas(1);
%-------------------------------------------------------------- % Preallocate to accomodate parfor loop
%Preallocate to accomodate parfor loop **************************
resMatStd=zeros(1,27); resMatStd=zeros(1,27);
resMat=zeros(1,27); resMat=zeros(1,27);
currNormIntens=currValues/currSpotArea; currNormIntens=currValues/currSpotArea;
@@ -60,22 +52,16 @@ for ii= 1:384 %startSpot:numCultures
validSpot=false; validSpot=false;
normIntens=currNormIntens; normIntens=currNormIntens;
filterTimes=timepts; %filterTimes; %currTimes; filterTimes=timepts; %filterTimes; %currTimes;
selTimesStd=timepts; selTimesStd=timepts;
selIntensStd=currNormIntens; selIntensStd=currNormIntens;
FiltTimesELr=timepts; FiltTimesELr=timepts;
NormIntensELr=currNormIntens; NormIntensELr=currNormIntens;
else else
% NCfilImCF.m
%*******************************************************
%NCfilImCF
%NCfilImCF.m called from NCfitImCF.m line 119*******************
% Preallocate incase something bails in NCscurImCFparfor % Preallocate incase something bails in NCscurImCFparfor
resMatStd=zeros(1,27); resMatStd=zeros(1,27);
resMat=zeros(1,27); resMat=zeros(1,27);
hold off;
hold off %09_0704
dataMatrix=[]; 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; 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; bl=0;
@@ -84,11 +70,11 @@ dataMatrix=[];
timepts=timepts; % timepts=currTimes; parfor timepts=timepts; % timepts=currTimes; parfor
normIntens=currNormIntens; normIntens=currNormIntens;
dataMatrix= []; %parfor move clear from NCfitImCF...m dataMatrix=[]; % arfor move clear from NCfitImCF...m
loIntensThres=parMat(4); loIntensThres=parMat(4);
stdLoIntLim=parMat(5); stdLoIntLim=parMat(5);
%******Begin basic filter********** % Basic filtering
% [loInten Thres,stdbased Trim before Scurve start, and dropout detection] % [loInten Thres,stdbased Trim before Scurve start, and dropout detection]
if(max(normIntens) > 2.29) if(max(normIntens) > 2.29)
threshold=loIntensThres; %1.9; %Increase this value to reduce low data point (flag=2) threshold=loIntensThres; %1.9; %Increase this value to reduce low data point (flag=2)
@@ -97,7 +83,8 @@ normIntens= currNormIntens;
end end
dropThreshold=-0.0001* max(normIntens); dropThreshold=-0.0001* max(normIntens);
%Initialize dataMatrix**********************************
% Initialize dataMatrix
dataMatrix(1,:)=timepts; dataMatrix(1,:)=timepts;
dataMatrix(2,:)=normIntens; dataMatrix(2,:)=normIntens;
dataMatrix(3,:)=ones; dataMatrix(3,:)=ones;
@@ -108,30 +95,27 @@ a= min(normIntens(normIntens>=0)); %(find(normIntens>=0)));
b=max(normIntens(normIntens>=0)); %(find(normIntens>=0))); b=max(normIntens(normIntens>=0)); %(find(normIntens>=0)));
c=0.5*(b-a); c=0.5*(b-a);
d=b-c; d=b-c;
meanIntIndPt=find(normIntens>d,1); meanIntIndPt=find(normIntens>d,1);
meanInt=normIntens(meanIntIndPt); meanInt=normIntens(meanIntIndPt);
meanTime=times(meanIntIndPt); meanTime=times(meanIntIndPt);
%**********************************************************
%**************************************************************************
% NCLoIntstdTrim % NCLoIntstdTrim
% NCLoSstdTrim.m called by NCfilImCF and NCfil.m % NCLoSstdTrim.m called by NCfilImCF and NCfil.m
flg1=0; flg1=0;
loScurvLim=stdLoIntLim; % loScurvLim=stdLoIntLim; %
loStimeN=1; loStimeN=1;
last2n=1; last2n=1;
stdDev=[]; stdDev=[];
nrmIntens0=normIntens; nrmIntens0=normIntens;
for n=1:meanIntIndPt for n=1:meanIntIndPt
if nrmIntens0(n)<=0 if nrmIntens0(n)<=0
nrmIntens0(n)=0; nrmIntens0(n)=0;
end end
if(nrmIntens0(n)<threshold) if(nrmIntens0(n)<threshold)
if (loStimeN-2)>0,dataMatrix(3,1:(n-2))= 2; %add to lowIntensity cull flags, the pre S cull data if (loStimeN-2)>0
else dataMatrix(3,1:n)= 2;end 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; dataMatrix(3,1:(n-2))=2;
last2n=n; last2n=n;
end end
@@ -142,23 +126,31 @@ for n=1:meanIntIndPt
loStime=timepts(n); loStime=timepts(n);
loStimeN=n; loStimeN=n;
end end
if stdDev(n)>6 ,flg1=1;end %detect S curve rise->stop stdLoInt detection if stdDev(n)>6
flg1=1
end % detect S curve rise->stop stdLoInt detection
end
end end
end %end for % TODO repetitive code
if (loStimeN-2)>0
if (loStimeN-2)>0,dataMatrix(3,1:(loStimeN-2))= 2; %add to lowIntensity cull flags, the pre S cull data dataMatrix(3,1:(loStimeN-2))=2; % add to lowIntensity cull flags, the pre S cull data
else dataMatrix(3,1:(loStimeN-2))= 2;end else
dataMatrix(3,1:(loStimeN-2))=2
end
qcutoff=2; qcutoff=2;
qind=find(normIntens>2); %,:,'first'); qind=find(normIntens>2); %,:,'first');
if ~isempty(qind(3)), qcutoff=qind(3);end if ~isempty(qind(3))
qcutoff=qind(3)
end
[minInt,I]=min(normIntens(2:qcutoff)); [minInt,I]=min(normIntens(2:qcutoff));
bl=minInt; bl=minInt;
minTime=dataMatrix(1,I); %diagnostic output only minTime=dataMatrix(1,I); %diagnostic output only
if (length(qind)>5)&&I>1,dataMatrix(3,1:(I-1))=5; end if (length(qind)>5)&&I>1
dataMatrix(3,1:(I-1))=5
end
tGT2Flg=0; tGT2Flg=0;
for n=1:length(normIntens) for n=1:length(normIntens)
@@ -173,21 +165,18 @@ resMatStd(18)= bl;
resMatStd(20)=minTime; resMatStd(20)=minTime;
resMat(20)=minTime; resMat(20)=minTime;
%&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&& % DropOut cull section (single drop points)
%*********************************************************
%DropOut cull section(single drop points)*******************
DropOutStartPt=length(normIntens); DropOutStartPt=length(normIntens);
for n=1:length(normIntens) for n=1:length(normIntens)
if(n>1) if(n>1)
if(((normIntens(n)- normIntens(n-1))< dropThreshold)) && ... if(((normIntens(n)- normIntens(n-1))< dropThreshold)) && ...
(n > max(meanIntIndPt,thresGT2) ) (n > max(meanIntIndPt,thresGT2) )
dataMatrix(3,n)=6; dataMatrix(3,n)=6;
end end
end end
end end
%??????should/could this be removed as recreated in%NCscurImCF_3parfor.m???????????????????? % TODO should/could this be removed as recreated in%NCscurImCF_3parfor.m
% Post Stdtest cull for low intensities inclusion of additional low value points % Post Stdtest cull for low intensities inclusion of additional low value points
% selTimes=[--,--] %don't know size before as it is a filtered output % selTimes=[--,--] %don't know size before as it is a filtered output
tmpIndx=0; tmpIndx=0;
@@ -200,58 +189,34 @@ tmpIndx= 0;
end end
end end
selTimes=selTimes'; selTimes=selTimes';
selIntens=selIntens'; selIntens=selIntens';
%???????????????????????????????????????????????????
%**********End Basic filter******************
%******************************************************
filtNormIntens=normIntens; filtNormIntens=normIntens;
dataMatrix0=dataMatrix; dataMatrix0=dataMatrix;
filterTimes=timepts; % parfor filterTimes=timepts; % parfor
%_____________________________________________________________
%*******************************************
%NCscurImCF %NCscurImCF
%NCscurImCF_1 %NCscurImCF_1
%NCscurImCF_2 %NCscurImCF_2
%NCscurImCF_3 %NCscurImCF_3
%NCscurImCF_3parfor %NCscurImCF_3parfor
%NCscurImCF_3parfor(dataMatrix, AUCfinalTime) %NCscurImCF_3parfor(dataMatrix, AUCfinalTime)
%dataMatrix %debugging parfor gbl ok 85.7145; 126.4579,6, 124.5264 37tPt %dataMatrix %debugging parfor gbl ok 85.7145; 126.4579,6, 124.5264 37tPt
%adsfj %debugging parfor gbl %adsfj %debugging parfor gbl
[resMatStd, resMat, selTimesStd, selIntensStd, FiltTimesELr, NormIntensELr] =... [resMatStd, resMat, selTimesStd, selIntensStd, FiltTimesELr, NormIntensELr] =...
NCscurImCF_3parfor(dataMatrix0, AUCfinalTime, currSpotArea, sols, bl, minTime); NCscurImCF_3parfor(dataMatrix0, AUCfinalTime, currSpotArea, sols, bl, minTime);
end % end JUMP OVER associated with if(find(intensities>1000)<5) end
%resMatStd
%asdf par4scanselTimesStd{ii}=selTimesStd %timepts'; %filterTimes';
%To accommodate parfor can't use global 'scan' variable 191002================
% {
par4scanselTimesStd{ii}= selTimesStd; %timepts'; %filterTimes';
par4scanselIntensStd{ii}=selIntensStd; %normIntens'; par4scanselIntensStd{ii}=selIntensStd; %normIntens';
par4scanTimesELr{ii}=FiltTimesELr; % 19_1021 preserve for CurveDisplay and EZview par4scanTimesELr{ii}=FiltTimesELr; % 19_1021 preserve for CurveDisplay and EZview
par4scanIntensELr{ii}=NormIntensELr; % 19_1021 preserve for CurveDisplay and EZview par4scanIntensELr{ii}=NormIntensELr; % 19_1021 preserve for CurveDisplay and EZview
%}
%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
%************* striped down OutCell code was put back into NCfitImCF
outC(ii,:)=resMat; %{ii, par4resMat}; outC(ii,:)=resMat; %{ii, par4resMat};
outCstd(ii,:)=resMatStd; %{ii, par4resMatStd}; outCstd(ii,:)=resMatStd; %{ii, par4resMatStd};
end
end %Multispot parfor ii loop end PARFOR LOOP END##############################################################################
%###############################################################################################################################
%###############################################################################################################################
%outC
%*********************************19_1001*********************************** %*********************************19_1001***********************************
%To accomodate parfor copy par4scan thru global p4 functions inside of %To accomodate parfor copy par4scan thru global p4 functions inside of
@@ -266,10 +231,4 @@ fid = fopen(fileName,'w');
fprintf(fid, 'Fit Results Complete\n'); 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'); %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); fclose(fid);
end
end %function end
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
%##########################################################################