diff --git a/src/MATLAB/+RSF/darkTubes.m b/src/MATLAB/+RSF/darkTubes.m index cf3a4c90e02e530e4aa0178b88c6ed3b3d19ce3a..2387e829a9070ed5677ab0e13d0428576a9d407f 100644 --- a/src/MATLAB/+RSF/darkTubes.m +++ b/src/MATLAB/+RSF/darkTubes.m @@ -21,7 +21,7 @@ bw = imdilate(bw,ones(4*thickness)); imp(~bw) = 0; imfm = fibermetric(imp); -% imfm = imfm .* imregionalmax(imfm); +imfm = imfm .* imregionalmax(imfm); 4; diff --git a/src/MATLAB/clusterExamples/goLR.m b/src/MATLAB/clusterExamples/goLR.m index 15419da806681426fd769a8295ba49545e807516..b47806ebcb71c0a38137dd8f0d3919bb35e3ec51 100644 --- a/src/MATLAB/clusterExamples/goLR.m +++ b/src/MATLAB/clusterExamples/goLR.m @@ -1,8 +1,9 @@ tic -ROOT = '/g/leverjs/Schuman_OCT/OCT/qualifiedYes'; +ROOT = '/g/leverjs/Schuman_OCT/OCT/qualified'; +% ROOT = '/g/leverjs/Schuman_OCT/OCT/qualified'; -PID = 'P10010'; -% PID = 'P10125' +% PID = 'P10010'; +PID = 'P10125' flist = dir(fullfile(ROOT,['/' PID '*.LEVER'])); mx = regexp({flist.name},'P(?<PID>\d+)_(?<scanType>.+)_(?<date>\d+-\d+-\d+)_(?<time>\d+-\d+-\d+)_(?<eye>\w\w)_(?<scanID>.+?)_.*.LEVER','names'); tblMeta = struct2table(vertcat(mx{:})); @@ -21,6 +22,10 @@ p = ljsStartParallel(96); % radii = {[5,5,5]}; radii = {[8]} % dark tubes +% radii = {[0.5,8,8],[5,5,5],[8]}; % plate,blob, dark tube + +radii + imf = RSF.getImf(tblMeta,radii); imf = RSF.quantizeImX(imf,[0,100]); d = []; diff --git a/src/MATLAB/importMetadata/03-22-2024_VFMD.mat b/src/MATLAB/importMetadata/03-22-2024_VFMD.mat new file mode 100644 index 0000000000000000000000000000000000000000..2505a1d17b0123d9d9c95ea619bb2fb7cb5d5347 Binary files /dev/null and b/src/MATLAB/importMetadata/03-22-2024_VFMD.mat differ diff --git a/src/MATLAB/importMetadata/dataExcel/desktop.ini b/src/MATLAB/importMetadata/dataExcel/desktop.ini new file mode 100644 index 0000000000000000000000000000000000000000..746e3f2de9ca0115d4601e245eeb736523334bfc Binary files /dev/null and b/src/MATLAB/importMetadata/dataExcel/desktop.ini differ diff --git a/src/MATLAB/ncdVSvfmd/getStats.m b/src/MATLAB/ncdVSvfmd/getStats.m index 9a1588277b04a211dc290ea9fc9078f722bc5347..a3a6fffa50fc48b295e07ce02c1179891caf8f6d 100644 --- a/src/MATLAB/ncdVSvfmd/getStats.m +++ b/src/MATLAB/ncdVSvfmd/getStats.m @@ -43,7 +43,7 @@ for i = 1:length(dxx) idxn = find(dxx{i}(:,2)==n & dxx{i}(:,3) == n); nt.X = [dxx{i}(idxm,1),dxx{i}(idxn,1),dxx{i}(j,1)]; nt.ncd = (dxx{i}(j,1)); - nt.md = min(pData.md(n),pData.md(m)); + nt.md = pData.md(m); nt.dmd = dmd; nt.mn = [m,n]; nt.ddx = pData.dx(n) - pData.dx(m); @@ -54,8 +54,9 @@ for i = 1:length(dxx) % find sex idx = find(tblMD.subjectID == pData.subjectID(m),1,'first'); nt.sex = tblMD.gender_full(idx); + nt.velocity = nt.dmd ./ years(nt.ddx); if abs(nt.dmd)>4 - continue + continue end % on the unqualified data vs. qualified data diff --git a/src/MATLAB/ncdVSvfmd/goEmbedCorr.m b/src/MATLAB/ncdVSvfmd/goEmbedCorr.m index 3a655a3d3745c57ed5f47cca5b3419b7b3e6ff79..83e79fad5324f22d4eff84cc928c949ef791e441 100644 --- a/src/MATLAB/ncdVSvfmd/goEmbedCorr.m +++ b/src/MATLAB/ncdVSvfmd/goEmbedCorr.m @@ -1,10 +1,10 @@ -load('/home/ac/git/rsf/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8]].mat') +% load('/home/ac/git/rsf/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8]].mat') r2 = []; for i = 1:length(dxx) -dNCD = []; -dEmbed = []; -dMD = []; + dNCD = []; + dEmbed = []; + dMD = []; eyeBucket = dxx{i}; for e = 1:size(eyeBucket,1) m = dxx{i}(e,2); @@ -17,7 +17,7 @@ dMD = []; end eyeBucket(e,4) = pData.md(n) - pData.md(m); end -% eyeBucket(eyeBucket(:,4)>0,:) = []; + % eyeBucket(eyeBucket(:,4)>0,:) = []; if size(eyeBucket,2) < 3 continue end @@ -39,7 +39,7 @@ dMD = []; mi = m - base + 1; ni = n - base + 1; - + d(mi,ni) = eyeBucket(j,1); d(ni,mi) = d(mi,ni); % m and n indices into pData @@ -50,18 +50,18 @@ dMD = []; end if m ~= n && pData.dx(m) == pData.dx(n) % same date pair - dmd1(mi,ni) = NaN; + dmd1(mi,ni) = NaN; end end - NDIMS = 3; + NDIMS = 4; if all(0==triu(d,1),'all') || size(d,1)<NDIMS continue end [~,Y] = Cluster.SpectralCluster(d,NDIMS); dY = pdist(Y); dY = dY(:); - + for r = 1:size(d,1) for c = r+1:size(d,2) dNCD = [dNCD;d(r,c)]; @@ -72,11 +72,16 @@ dMD = []; dEmbed = [dEmbed ; dY]; dNCD = [dNCD ; diag(d)]; dMD = [dMD;0*diag(d)]; - if length(find(abs(dMD)>0)) <1 + + if length(find(abs(dMD)>0)) <4 + continue + end + % [r,p] = corr(dMD,dEmbed); + [r,p] = corr(dMD,dEmbed,'rows','complete'); + if length(find(dMD<0))<3 continue end -% [r,p] = corr(dMD,dEmbed); - [r,p] = corr(dMD,dEmbed,'rows','pairwise'); - r2 = [r2,r^2]; + [r,p,length(find(dMD<0))] + r2 = [r2,r^2]; end \ No newline at end of file diff --git a/src/MATLAB/ncdVSvfmd/goKernelCorr.m b/src/MATLAB/ncdVSvfmd/goKernelCorr.m index caa95c1956ceb1bc4c630efc3c0e032398d3c3fd..b9d94db96329b49b0605ea7bb9e0e2368e2c15dd 100644 --- a/src/MATLAB/ncdVSvfmd/goKernelCorr.m +++ b/src/MATLAB/ncdVSvfmd/goKernelCorr.m @@ -18,13 +18,15 @@ load('../qualify/onh_rnfl_thickness.mat'); % radii = {[0.5,8,8],[5,5,5],[8]}; % plate,blob % radii = {[0.5,8,8],[5,5,5],[0]}; % plate,blob -radii = {[0.5,8,8]}; % plate - +% radii = {[0.5,8,8]}; % plate +% radii = {[5,5,5]}; % plate +% radii = {[7,4,4]}; % plate +radii = {[8]}; +radii [rho2,tblVelo, pData, dxx] = kernelCorr(radii,tblVFMD,tblMeta,tblRNFL); - [rmse1,~] = regnetCorr(tblVelo);median(rmse1) -saveFile = fullfile(SAVE_FOLDER,['qualYes_ncdVSvfmd_' jsonencode(radii) '.mat']); -save(saveFile) +% saveFile = fullfile(SAVE_FOLDER,['qualEns_ncdVSvfmd_' jsonencode(radii) '.mat']); +% save(saveFile) diff --git a/src/MATLAB/ncdVSvfmd/kcorr_VFMD_plate_blob.mat b/src/MATLAB/ncdVSvfmd/kcorr_VFMD_plate_blob.mat new file mode 100644 index 0000000000000000000000000000000000000000..497e9df5ad97aa0dba6e765f6fe275e81e8cf9ff Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/kcorr_VFMD_plate_blob.mat differ diff --git a/src/MATLAB/ncdVSvfmd/kernelCorr.m b/src/MATLAB/ncdVSvfmd/kernelCorr.m index 1d313ce3d3055900f8d329722ce7e6ee9e1a6db3..11eda084adb3a3e0ae495b1c0fa91672f937f984 100644 --- a/src/MATLAB/ncdVSvfmd/kernelCorr.m +++ b/src/MATLAB/ncdVSvfmd/kernelCorr.m @@ -41,17 +41,18 @@ end p=ljsStartParallel(96); imf = RSF.getImf(pData,radii); - +% note images are quantized below during building worklist for parpool [C,ia,ic] = unique(pData.subjectID); - +% worklist is buckets by patient. each bucket gets pairwise distances +% computed (below). workList = []; for px = 1:length(C) work1 = []; idx = find(ic==px); work1.imf = imf(idx); - + work1.imf = RSF.quantizeImX(work1.imf); wl = [idx,idx]; wl = [wl;nchoosek(idx,2)]; work1.wl = wl; diff --git a/src/MATLAB/ncdVSvfmd/kernelCorr_crash.mat b/src/MATLAB/ncdVSvfmd/kernelCorr_crash.mat new file mode 100644 index 0000000000000000000000000000000000000000..08a73120eec11c861b0245671652e3e5ccd585ce Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/kernelCorr_crash.mat differ diff --git a/src/MATLAB/ncdVSvfmd/kernelCorr_raw.mat b/src/MATLAB/ncdVSvfmd/kernelCorr_raw.mat new file mode 100644 index 0000000000000000000000000000000000000000..2f0cd291143bd1521547b5f1e5970b4ef9ac7bf5 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/kernelCorr_raw.mat differ diff --git a/src/MATLAB/ncdVSvfmd/kernel_corr_raw.mat b/src/MATLAB/ncdVSvfmd/kernel_corr_raw.mat new file mode 100644 index 0000000000000000000000000000000000000000..5faa3d7c39920fd2ab56b8d1e4ef2273a97b1f11 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/kernel_corr_raw.mat differ diff --git a/src/MATLAB/ncdVSvfmd/regnetCorr.m b/src/MATLAB/ncdVSvfmd/regnetCorr.m index 553e7a06ebcc830b29c00df25dc28bbcdc728b61..cb69c2c7d7a1c98002166c22aa1a070a194df652 100644 --- a/src/MATLAB/ncdVSvfmd/regnetCorr.m +++ b/src/MATLAB/ncdVSvfmd/regnetCorr.m @@ -22,8 +22,10 @@ for i = 1:length(xTarget) trainY = T; trainY(i) = []; % mdl = fitrnet(trainX2,trainY2,'Activations','sigmoid','standardize',false,'LayerSizes',[10]); - mdl = fitrnet(trainX,trainY,"OptimizeHyperparameters","auto", "HyperparameterOptimizationOptions",... - struct("AcquisitionFunctionName","expected-improvement-plus",'verbose',0,'showplots',false)); +% mdl = fitrnet(trainX,trainY,"OptimizeHyperparameters","auto", "HyperparameterOptimizationOptions",... +% struct("AcquisitionFunctionName","expected-improvement-plus",'verbose',0,'showplots',false)); + mdl = fitrensemble(trainX,trainY,'OptimizeHyperparameters','all',... + 'HyperparameterOptimizationOptions',struct('Verbose',0,'ShowPlots',false)); mdlX{i} = mdl; pred = mdl.predict(xTarget(i,:)); err(i) = abs(T(i) - pred); diff --git a/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8],[5,5,5],0].mat b/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8],[5,5,5],0].mat new file mode 100644 index 0000000000000000000000000000000000000000..ffdadf5c6108bf09989eee870a5a16aa5b156c55 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8],[5,5,5],0].mat differ diff --git a/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8],[5,5,5],4].mat b/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8],[5,5,5],4].mat new file mode 100644 index 0000000000000000000000000000000000000000..4451c74a68fd384dd0e6e3a3d771cc076cce1ae0 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8],[5,5,5],4].mat differ diff --git a/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8]].mat b/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8]].mat new file mode 100644 index 0000000000000000000000000000000000000000..0edcde13a5730ccf4865057b6a1bc9b2bbe873e7 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/ncdVSvfmd_[[0.5,8,8]].mat differ diff --git a/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[0.5,8,8]].mat b/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[0.5,8,8]].mat new file mode 100644 index 0000000000000000000000000000000000000000..b0e55e39544674e7b16540344162fbfbba406780 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[0.5,8,8]].mat differ diff --git a/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[5,5,5],[0.5,8,8],[7,4,4]].mat b/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[5,5,5],[0.5,8,8],[7,4,4]].mat new file mode 100644 index 0000000000000000000000000000000000000000..c66d38ab61b6ad4a669a29a6d558ad7baa74ef3a Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[5,5,5],[0.5,8,8],[7,4,4]].mat differ diff --git a/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[7,4,4]].mat b/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[7,4,4]].mat new file mode 100644 index 0000000000000000000000000000000000000000..f7c44a45d68aea0ed19b44e594062cbec1a9519f Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/qualEns_ncdVSvfmd_[[7,4,4]].mat differ diff --git a/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8],[5,5,5],8].mat b/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8],[5,5,5],8].mat new file mode 100644 index 0000000000000000000000000000000000000000..3f4192ec0a21ed060b0a24a7cf5e05ec196b23ed Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8],[5,5,5],8].mat differ diff --git a/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8]].mat b/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8]].mat new file mode 100644 index 0000000000000000000000000000000000000000..b24edc49567f0d974c6a216ed7a77a2d9c6f48dc Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/results/qualYes_ncdVSvfmd_[[0.5,8,8]].mat differ diff --git a/src/MATLAB/ncdVSvfmd/xval_onh_kernel_corr_5_15_.mat b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_corr_5_15_.mat new file mode 100644 index 0000000000000000000000000000000000000000..587ce6faacab955f206c106eec3699371f9aabdb Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_corr_5_15_.mat differ diff --git a/src/MATLAB/ncdVSvfmd/xval_onh_kernel_corr_5_15_X1.mat b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_corr_5_15_X1.mat new file mode 100644 index 0000000000000000000000000000000000000000..2b2bb2003f6d7287739fd38bc306a26df6656263 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_corr_5_15_X1.mat differ diff --git a/src/MATLAB/ncdVSvfmd/xval_onh_kernel_plate_blob.mat b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_plate_blob.mat new file mode 100644 index 0000000000000000000000000000000000000000..0e94d2eabd4e799c499055552c20854023c3c2d7 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_plate_blob.mat differ diff --git a/src/MATLAB/ncdVSvfmd/xval_onh_kernel_plate_blob_X1.mat b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_plate_blob_X1.mat new file mode 100644 index 0000000000000000000000000000000000000000..f1e98ea44caef7344d2971ac6e46cd392bf4be51 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_plate_blob_X1.mat differ diff --git a/src/MATLAB/ncdVSvfmd/xval_onh_kernel_raw_.mat b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_raw_.mat new file mode 100644 index 0000000000000000000000000000000000000000..fa9c6c203bc406e31b1e07084baeab4cf2eb657d Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_raw_.mat differ diff --git a/src/MATLAB/ncdVSvfmd/xval_onh_kernel_raw_X1.mat b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_raw_X1.mat new file mode 100644 index 0000000000000000000000000000000000000000..8ea66f4cd437bf8256092372994d6961d0de55c7 Binary files /dev/null and b/src/MATLAB/ncdVSvfmd/xval_onh_kernel_raw_X1.mat differ diff --git a/src/MATLAB/qualify/goQualify.m b/src/MATLAB/qualify/goQualify.m index 594785942f51beafc456ecb6c721ef4c66c559ba..a42b34bb3d5a0ad4a54bfb51da816b5361ed2f1c 100644 --- a/src/MATLAB/qualify/goQualify.m +++ b/src/MATLAB/qualify/goQualify.m @@ -1,5 +1,5 @@ ROOT = '/g/leverjs/Schuman_OCT/OCT/combined'; -target = '/g/leverjs/Schuman_OCT/OCT/qualifiedYes'; +target = '/g/leverjs/Schuman_OCT/OCT/qualified'; if ~exist(target,'dir') mkdir(target); end