From 40957ceede3c34c5916cd7422307b8412fd7c15c Mon Sep 17 00:00:00 2001 From: ac_fx <arc334@drexel.edu> Date: Tue, 4 Oct 2022 14:42:38 -0400 Subject: [PATCH] updated goAll --- src/+ImportExport/lever2ctc.m | 12 +----------- src/+Supervised/getTRC.m | 27 ++++++++++++++++--------- src/evalSeg.m | 18 +++++++++++++++++ src/get_ljsctc.m | 14 ++++++++++--- src/goAllCTC.m | 37 ++++++++++++++++++++++++++++------- src/goCTC.m | 6 ++++++ 6 files changed, 84 insertions(+), 30 deletions(-) create mode 100644 src/evalSeg.m diff --git a/src/+ImportExport/lever2ctc.m b/src/+ImportExport/lever2ctc.m index eecd479..e43e2e8 100644 --- a/src/+ImportExport/lever2ctc.m +++ b/src/+ImportExport/lever2ctc.m @@ -159,21 +159,11 @@ for t=1:CONSTANTS.imageData.NumberOfFrames else idx=sub2ind(szImage,iCell.pts(:,2),iCell.pts(:,1)); end - % erode the segmentation a bit... -% im1=0*im; -% im1(idx)=1; -% % d=bwdist(~im1); -% % im1(d<2)=0; -% % idx1=find(im1); -% % if ~isempty(idx1) -% % idx=idx1; -% % end idxLabel=find(tids(:,1)==iCell.trackID); im(idx)=tids(idxLabel,2); - % im(idx)=iCell.trackID; end +% im=segRefine.segRefine(im,filename,t); im=setMissingTrackLabels(conn,im,tids,t); - fname=['mask' num2str(t-1,digitFormat) '.tif']; im=uint16(im); if size(im,3)>1 diff --git a/src/+Supervised/getTRC.m b/src/+Supervised/getTRC.m index ed04cfc..db8bd6e 100644 --- a/src/+Supervised/getTRC.m +++ b/src/+Supervised/getTRC.m @@ -4,22 +4,31 @@ function trc = getTRC(strDB,baseName,CONSTANTS,r) lndRadius=fitdist(r,'lognormal'); % lndRadius.sigma=lndRadius.sigma*1.5; alpha = 1e-2; -xn=icdf(lndRadius,[alpha, 0.5]); +xn=icdf(lndRadius,[alpha, 0.5,0.95]); -rRange(1)=0.5*xn(1); -rRange(2)=0.75*xn(2); +rRange(1)=xn(1); +rRange(2)=xn(3); -if AutoParam.isPhase(strDB) - rRange=max(rRange,[2,4]); -elseif is3D(CONSTANTS) - rRange=max(rRange,[0.5,1]); +if contains(strDB,'SIM') + rRange(1) = prctile(r,1); + rRange(2) = prctile(r,99); else - rRange=max(rRange,[1.5,2]); + rRange(1) = prctile(r,0.25); + rRange(2) = prctile(r,10); end +4; + +% if AutoParam.isPhase(strDB) +% rRange=max(rRange,[2,4]); +% elseif is3D(CONSTANTS) +% rRange=max(rRange,[0.5,1]); +% else +% rRange=max(rRange,[1.5,2]); +% end trc=table(); trc.baseName={baseName}; -trc.xn=xn; +trc.xn=xn(1:2); trc.rRange=rRange; trc.radius={r}; trc.lndRadius=lndRadius; diff --git a/src/evalSeg.m b/src/evalSeg.m new file mode 100644 index 0000000..bcacb1f --- /dev/null +++ b/src/evalSeg.m @@ -0,0 +1,18 @@ + +strDB='/home/ac/git/ljsctc/src/output/3d_Fluo-N3DH-CHO_training_01.LEVER'; +[conn,CONSTANTS,segParams]=openDB(strDB); + +segParams.minimumRadius_um=[4 0.2500 5]; +rx=linspace(0.8,0.94,10); +resTable=table(); +for ix=1:length(rx) + fprintf(1,'\n sensitivity=%0.2f\n',rx(ix)) + segParams.sensitivity=rx(ix); + expName='3d_Fluo-N3DH-CHO_training_01'; + ljsctc=get_ljsctc(expName); + ljsctc.segParams=segParams; + res=goCTC(ljsctc); + resTable=[resTable;res]; +end + +close(conn); \ No newline at end of file diff --git a/src/get_ljsctc.m b/src/get_ljsctc.m index 33ea568..fd2bce8 100644 --- a/src/get_ljsctc.m +++ b/src/get_ljsctc.m @@ -45,10 +45,13 @@ % datasets (DRO, TRIF, etc.) % e.g. % expName='2d_DIC-C2DH-HeLa_training_01';ljsctc=get_ljsctc(expName) -function ljsctc=get_ljsctc(expName) +function ljsctc=get_ljsctc(expName,outPath) ljsctc = []; -ljsctc.outPath = './output'; +if ~exist('outPath','var') + outPath = './output'; +end +ljsctc.outPath = outPath; ljsctc.expName=expName; [baseName,movieID,trainOrChallenge]=LJSCTC.nameParts(expName); % to omit a field, set it to []. rawImagePath,outPath,segParams expName, are minimum @@ -64,7 +67,12 @@ ljsctc.strDB=fullfile(ljsctc.outPath,[expName '.LEVER']); datasetSpecifier=baseName(4:end); [sp,pixelSize]=getSegParams(datasetSpecifier); % from the manual tuned cache if ~isempty(sp) - ljsctc.segParams = sp; + if length(sp.minimumRadius_um)==3 + sp.minimumRadius_um = [0.5,1,0.5].*sp.minimumRadius_um; + else + sp.minimumRadius_um=0.5*sp.minimumRadius_um; + end + ljsctc.segParams = sp; ljsctc.pixelPhysicalSize=pixelSize; else % is you don't have an sp here, we'll try to learn it for you...if you diff --git a/src/goAllCTC.m b/src/goAllCTC.m index d845a95..490f968 100644 --- a/src/goAllCTC.m +++ b/src/goAllCTC.m @@ -1,12 +1,35 @@ -ROOT='/g/leverjs/ctc2021_manual/2d'; - -flist=dir(fullfile(ROOT,'*training*.LEVER')); +ROOT='/g/leverjs/ctc2021_manual/'; +flist=dir(fullfile(ROOT,'**/*training*.LEVER')); tblRes=table(); -for ff=1:length(flist) - [~,expName]=fileparts(flist(ff).name) - expName=['2d_' expName]; - ljsctc=get_ljsctc(expName); +outpath = '/g/leverjs/ctc2022'; +if ~exist(outpath,'dir') + mkdir(outpath); +end +for ff=35:length(flist) +% for ff=31:32 + [~,expName]=fileparts(flist(ff).name); + if '2'==flist(ff).folder(end-1) + % continue + expName=['2d_' expName]; + else + expName=['3d_' expName]; + end + if AutoParam.isPhase(fullfile(flist(ff).folder,flist(ff).name)) + continue + end + ljsctc=get_ljsctc(expName,outpath); + if ljsctc.segParams.bCytoplasmic + continue + end +% trc = Supervised.extractRadii(fullfile(flist(ff).folder,flist(ff).name),ljsctc.gtTrainingPath) +% ljsctc.segParams.minimumRadius_um = [trc.xn(1),0.5,trc.xn(2)]; + % ljsctc.segParams.minimumRadius_um = [trc.rRange(1),0.5,trc.rRange(2)]; + 4; + % + ljsctc.segParams.minimumRadius_um = [1.5,0.25,3]; +% ljsctc.segParams.minimumRadius_um = [7,0.5,10]; + ljsctc.segParams.sensitivity = 0; res=goCTC(ljsctc); tblRes=[tblRes;res] end diff --git a/src/goCTC.m b/src/goCTC.m index c9a6d44..2a6d5bc 100644 --- a/src/goCTC.m +++ b/src/goCTC.m @@ -42,6 +42,12 @@ if ~isempty(ljsctc.pixelPhysicalSize) CONSTANTS.imageData.PixelPhysicalSize=ljsctc.pixelPhysicalSize; Write.updateConstants(conn,CONSTANTS); end + +% clear algorithms and write default set +exec(conn,'delete from tblAlgorithms'); +load('qAlgorithms.mat'); +insert(conn,'tblAlgorithms',{'fqn','type','jsAlgorithmInfo'},qAlgorithms) + % set up segParams if isempty(ljsctc.segParams) % NOTE -- for best results check out getSegParams() -- GitLab