diff --git a/src/+ImportExport/lever2ctc.m b/src/+ImportExport/lever2ctc.m index eecd479f5dbb3612bd0ee338a12148ebb2552136..e43e2e87a34170e8caac9f1cd83a372c82b10a0b 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 ed04cfc9baf628f8f7e5cedd010aef14b2b59041..db8bd6eaf74851288c8bdd3ebe20384b627501c7 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 0000000000000000000000000000000000000000..bcacb1f5a3d27843f79a7696e9666fb5ed9a479b --- /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 33ea568c2747eb6a45bb769096ecc8328c73d297..fd2bce82f2f895e5dd45dbf7fded3380c83a8ea0 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 d845a955028f4d12258f760a9a6c2cd842eb8641..490f968e8f133a1337dbbafdebe169b689c4007b 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 c9a6d443f04fb09121c0bd1f0f46278b3a3d0c9f..2a6d5bcfa0f6f6d7db83de181a52ebf5105dbf05 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()