diff --git a/src/+RSF/checkMetaTiming.m b/src/MATLAB/+RSF/checkMetaTiming.m
similarity index 100%
rename from src/+RSF/checkMetaTiming.m
rename to src/MATLAB/+RSF/checkMetaTiming.m
diff --git a/src/+RSF/chooseImageSamples.m b/src/MATLAB/+RSF/chooseImageSamples.m
similarity index 100%
rename from src/+RSF/chooseImageSamples.m
rename to src/MATLAB/+RSF/chooseImageSamples.m
diff --git a/src/+RSF/clipRSF.m b/src/MATLAB/+RSF/clipRSF.m
similarity index 100%
rename from src/+RSF/clipRSF.m
rename to src/MATLAB/+RSF/clipRSF.m
diff --git a/src/+RSF/cohortOCT.m b/src/MATLAB/+RSF/cohortOCT.m
similarity index 100%
rename from src/+RSF/cohortOCT.m
rename to src/MATLAB/+RSF/cohortOCT.m
diff --git a/src/+RSF/corrOCT.m b/src/MATLAB/+RSF/corrOCT.m
similarity index 100%
rename from src/+RSF/corrOCT.m
rename to src/MATLAB/+RSF/corrOCT.m
diff --git a/src/+RSF/draw1RSF.m b/src/MATLAB/+RSF/draw1RSF.m
similarity index 100%
rename from src/+RSF/draw1RSF.m
rename to src/MATLAB/+RSF/draw1RSF.m
diff --git a/src/+RSF/drawOCT.m b/src/MATLAB/+RSF/drawOCT.m
similarity index 100%
rename from src/+RSF/drawOCT.m
rename to src/MATLAB/+RSF/drawOCT.m
diff --git a/src/+RSF/drawPatients.m b/src/MATLAB/+RSF/drawPatients.m
similarity index 100%
rename from src/+RSF/drawPatients.m
rename to src/MATLAB/+RSF/drawPatients.m
diff --git a/src/+RSF/drawProgressionStats.m b/src/MATLAB/+RSF/drawProgressionStats.m
similarity index 100%
rename from src/+RSF/drawProgressionStats.m
rename to src/MATLAB/+RSF/drawProgressionStats.m
diff --git a/src/+RSF/drawRSF.m b/src/MATLAB/+RSF/drawRSF.m
similarity index 100%
rename from src/+RSF/drawRSF.m
rename to src/MATLAB/+RSF/drawRSF.m
diff --git a/src/+RSF/drawRSF_lever.m b/src/MATLAB/+RSF/drawRSF_lever.m
similarity index 100%
rename from src/+RSF/drawRSF_lever.m
rename to src/MATLAB/+RSF/drawRSF_lever.m
diff --git a/src/+RSF/getDeltaTstats.m b/src/MATLAB/+RSF/getDeltaTstats.m
similarity index 100%
rename from src/+RSF/getDeltaTstats.m
rename to src/MATLAB/+RSF/getDeltaTstats.m
diff --git a/src/+RSF/getImRSF.m b/src/MATLAB/+RSF/getImRSF.m
similarity index 100%
rename from src/+RSF/getImRSF.m
rename to src/MATLAB/+RSF/getImRSF.m
diff --git a/src/+RSF/getImf.m b/src/MATLAB/+RSF/getImf.m
similarity index 74%
rename from src/+RSF/getImf.m
rename to src/MATLAB/+RSF/getImf.m
index d2d7887c4a7ae2d5a28571ba873f3b3a3e528e02..b77b44e2f5fe0f17aa0161b9c470554893d6df31 100644
--- a/src/+RSF/getImf.m
+++ b/src/MATLAB/+RSF/getImf.m
@@ -17,8 +17,13 @@ end
 px = px{:};
 px_pos = px(px>0);
 px_neg = abs(px(px<0));
-clip_pos = [mean(px_pos)-std(px_pos), mean(px_pos)+std(px_pos)];
-clip_neg = [mean(px_neg)-std(px_neg), mean(px_neg)+std(px_neg)];
+
+% clip_pos = [mean(px_pos)-std(px_pos), mean(px_pos)+std(px_pos)];
+% clip_neg = [mean(px_neg)-std(px_neg), mean(px_neg)+std(px_neg)];
+% clip_pos = [min(px_pos),max(px_pos)];
+% clip_neg = [min(px_neg),max(px_neg)];
+clip_pos = prctile(px_pos,[0.5,99.5]);
+clip_neg = prctile(px_neg,[0.5,99.5]);
 
 for i = 1:length(imf)
     imp = imf{i};
diff --git a/src/+RSF/getMetadata.m b/src/MATLAB/+RSF/getMetadata.m
similarity index 100%
rename from src/+RSF/getMetadata.m
rename to src/MATLAB/+RSF/getMetadata.m
diff --git a/src/+RSF/getPatientMetadata.m b/src/MATLAB/+RSF/getPatientMetadata.m
similarity index 100%
rename from src/+RSF/getPatientMetadata.m
rename to src/MATLAB/+RSF/getPatientMetadata.m
diff --git a/src/+RSF/imPreProcess.m b/src/MATLAB/+RSF/imPreProcess.m
similarity index 51%
rename from src/+RSF/imPreProcess.m
rename to src/MATLAB/+RSF/imPreProcess.m
index 0fbc9cdf46ea29f8164f7f8d1bba92f7d25a1b0d..62b3528f80a74edfb58521adead772e09fd4fcd5 100644
--- a/src/+RSF/imPreProcess.m
+++ b/src/MATLAB/+RSF/imPreProcess.m
@@ -1,28 +1,11 @@
 function [imf,bwMask] = imPreProcess(im,radii)
 
-% AX = 1/sqrt(3) .* [15.38,1,1] ;
-% AX = 1/sqrt(3) .* [5,1,1] ;
-AX = 1/sqrt(3);
-% dx = 15.38;
-dx = 20;
-AX = 1/sqrt(3);
-% fun fact :: mat2gray here causes r2 decline
 im = uint8(im); % values are already uint8, just wrapped in a double
-
-imp = double(0*im);
-imn = imp;
-for rr = 1:length(radii)
-    sx = radii(rr);
-    if 1 == length(sx)
-        sx = [0.45,sx,sx];
-    end
-    sx = AX .* sx;
-    cudaTarget = getCudaTarget;
-    imf = HIP.LoG(im,sx,cudaTarget);
-    [~,imp1,imn1] = LoG.separateLoG(imf);
-    imp = max(imp,imp1);
-    imn = max(imn,imn1);
-end
+AX = 1/sqrt(3);
+sx = AX .* radii;
+cudaTarget = getCudaTarget;
+imf = HIP.LoG(im,sx,cudaTarget);
+[~,imp,imn] = LoG.separateLoG(imf);
 
 % threshold mask
 bw = imbinarize(im);
diff --git a/src/+RSF/optimizeDeltaTstats.m b/src/MATLAB/+RSF/optimizeDeltaTstats.m
similarity index 100%
rename from src/+RSF/optimizeDeltaTstats.m
rename to src/MATLAB/+RSF/optimizeDeltaTstats.m
diff --git a/src/+RSF/pickMinVelocityStack.m b/src/MATLAB/+RSF/pickMinVelocityStack.m
similarity index 100%
rename from src/+RSF/pickMinVelocityStack.m
rename to src/MATLAB/+RSF/pickMinVelocityStack.m
diff --git a/src/+RSF/pickRSFradius.m b/src/MATLAB/+RSF/pickRSFradius.m
similarity index 100%
rename from src/+RSF/pickRSFradius.m
rename to src/MATLAB/+RSF/pickRSFradius.m
diff --git a/src/+RSF/platemetric.m b/src/MATLAB/+RSF/platemetric.m
similarity index 100%
rename from src/+RSF/platemetric.m
rename to src/MATLAB/+RSF/platemetric.m
diff --git a/src/+RSF/progressionStats.m b/src/MATLAB/+RSF/progressionStats.m
similarity index 100%
rename from src/+RSF/progressionStats.m
rename to src/MATLAB/+RSF/progressionStats.m
diff --git a/src/+RSF/thresholdRetinalOCT.m b/src/MATLAB/+RSF/thresholdRetinalOCT.m
similarity index 100%
rename from src/+RSF/thresholdRetinalOCT.m
rename to src/MATLAB/+RSF/thresholdRetinalOCT.m
diff --git a/src/MATLAB/metadata/getMetaOCT.m b/src/MATLAB/metadata/getMetaOCT.m
new file mode 100644
index 0000000000000000000000000000000000000000..acf9fc5352cd522b236a7feea224c9c1a2d8d672
--- /dev/null
+++ b/src/MATLAB/metadata/getMetaOCT.m
@@ -0,0 +1,31 @@
+function tblMeta = getMetaOCT(ROOT,eye,scanType)
+
+tblMeta = table();
+flist = dir(fullfile(ROOT,'**/*.LEVER'));
+mx = regexp({flist.name},'P(\d+)_(.+?)_(\d+-\d+-\d+)_(\d+-\d+-\d+)_(\w\w)_(.+?)_.*.LEVER','tokens');
+tblSkip = table();
+for ff = 1:length(flist)
+    nt = table();
+
+    nt.filename = {flist(ff).name};
+    nt.folder = {flist(ff).folder};
+    if isempty(mx{ff})
+        tblSkip = [tblSkip;nt];
+        continue;
+    end
+    nt.subjectID = str2double(mx{ff}{1}{1});
+    nt.scanType = mx{ff}{1}{2};
+    nt.dx = datetime(mx{ff}{1}{3},'InputFormat','MM-dd-yyyy');
+    nt.time = {mx{ff}{1}{4}};
+    nt.eye = mx{ff}{1}{5};
+    nt.scanID =  {mx{ff}{1}{6}};
+    
+    
+    if ~strcmp(nt.eye,eye) || ~contains(lower(scanType),lower(nt.scanType))
+        continue;
+    end
+    
+    tblMeta = [tblMeta;nt];
+end
+
+tblMeta = sortrows(tblMeta,{'subjectID','filename','dx'});
\ No newline at end of file
diff --git a/src/MATLAB/metadata/goLR.m b/src/MATLAB/metadata/goLR.m
new file mode 100644
index 0000000000000000000000000000000000000000..3879125c9b184def8b8eb62581f48483f6a806ff
--- /dev/null
+++ b/src/MATLAB/metadata/goLR.m
@@ -0,0 +1,61 @@
+tic
+ROOT = '/g/leverjs/Schuman_OCT/OCT/03-22-2024';
+
+% flist = dir(fullfile(ROOT,'**/*.LEVER'));
+% id = regexp({flist.name},'P(\d)+','tokens');
+% id = cellfun(@(x) str2double(x{1}),id);
+% [uid,ia,ic] = unique(id);
+% 
+% hx = [];
+% for i = 1:length(uid)
+%     hx(i) = length(find(id==uid(i)));
+% end
+
+PID = 'P10010';
+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{:}));
+tblMeta.PID = str2double(tblMeta.PID);
+tblMeta.folder = {flist.folder}';
+tblMeta.filename = {flist.name}';
+
+tblMeta = tblMeta(contains(tblMeta.scanType,'Optic'),:);
+% tblMeta = tblMeta(contains(tblMeta.eye,'OD'),:);
+imf = RSF.getImf(tblMeta,[0.5,8,8],'');
+imf2 = RSF.getImf(tblMeta,[5,5,5],'');
+for i = 1:length(imf)    
+    imf{i}(:,:,:,2) = imf2{i};
+    imf{i}(:,:,:,3) = 0 .* imf2{i};
+end
+p = ljsStartParallel(64);
+d = [];
+parfor i = 1:length(imf)
+    dj = [];
+    for j = 1:length(imf)
+        dj(j) = SSF.ncd_ssf_volume(imf{i},imf{j});
+    end
+    d(i,:) = dj;
+end
+
+A = Cluster.Regularize(d);
+[~,Y] = Cluster.SpectralCluster(A,3);
+
+tblMeta.Y = Y;
+
+tS = tblMeta(strcmp(tblMeta.eye,'OD'),:);
+tD = tblMeta(strcmp(tblMeta.eye,'OS'),:);
+t1 = tS;
+t2 = tD;
+
+tO = tblMeta(contains(tblMeta.scanType,'Optic'),:);
+tM = tblMeta(contains(tblMeta.scanType,'Macular'),:);
+t3 = tO;
+t4 = tM;
+
+clf;hold on
+plot3(t1.Y(:,1),t1.Y(:,2),t1.Y(:,3),'r*')
+plot3(t2.Y(:,1),t2.Y(:,2),t2.Y(:,3),'og')
+plot3(t3.Y(:,1),t3.Y(:,2),t3.Y(:,3),'mx')
+plot3(t4.Y(:,1),t4.Y(:,2),t4.Y(:,3),'cs')
+
+toc
\ No newline at end of file