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