diff --git a/src/MATLAB/+RSF/quantizeImX.m b/src/MATLAB/+RSF/quantizeImX.m
index dc294d146e0041e2fc69913f1ed3785fc4f67b1a..e2e8f96c19e9387013ff8fd20a31eec473548a78 100644
--- a/src/MATLAB/+RSF/quantizeImX.m
+++ b/src/MATLAB/+RSF/quantizeImX.m
@@ -9,9 +9,9 @@ for i = 1 : length(imf)
     end
 end
 if ~exist("clipRange",'var')
-%     clipRange = [2.5,97.5];
+    clipRange = [2.5,97.5];
 %     % clipRange = [0.5,99.5];
-    clipRange = [0,100];
+%     clipRange = [0,100];
 end
 
 for c = 1:size(imf{1},4)
@@ -37,6 +37,8 @@ for i = 1:length(imf)
         imq_neg = SSF.quantize8(imn,clip_neg(c,:));
         if all(0==imq_pos)
             imf{i}(:,:,:,c) = imq_neg;
+        elseif all(0==imq_neg)
+            imf{i}(:,:,:,c) = imq_pos;
         else
             % [0,127] for imq_neg, [128,255] imq_pos
             imq_pos = (0.5 .* imq_pos) + uint8(128 .* (imq_pos>0));
diff --git a/src/MATLAB/clusterExamples/goLR.m b/src/MATLAB/clusterExamples/goLR.m
index b47806ebcb71c0a38137dd8f0d3919bb35e3ec51..f7db2339192f2554871d65f7913315a929664414 100644
--- a/src/MATLAB/clusterExamples/goLR.m
+++ b/src/MATLAB/clusterExamples/goLR.m
@@ -1,5 +1,5 @@
 tic
-ROOT = '/g/leverjs/Schuman_OCT/OCT/qualified';
+ROOT = '/g/leverjs/Schuman_OCT/OCT/qualifiedYes';
 % ROOT = '/g/leverjs/Schuman_OCT/OCT/qualified';
 
 % PID = 'P10010';
@@ -10,7 +10,7 @@ tblMeta = struct2table(vertcat(mx{:}));
 tblMeta.PID = str2double(tblMeta.PID);
 tblMeta.folder = {flist.folder}';
 tblMeta.filename = {flist.name}';
-
+% database query
 tblMeta = tblMeta(contains(tblMeta.scanType,'Optic'),:);
 % tblMeta = tblMeta(contains(tblMeta.scanType,'Macula'),:);
 % tblMeta = tblMeta(contains(tblMeta.eye,'OD'),:);
@@ -23,11 +23,12 @@ p = ljsStartParallel(96);
 
 radii = {[8]} % dark tubes
 % radii = {[0.5,8,8],[5,5,5],[8]}; % plate,blob, dark tube
-
+% radii = {[5,5,5],[8]}; % plate,blob, dark tube
 radii
 
 imf = RSF.getImf(tblMeta,radii);
-imf = RSF.quantizeImX(imf,[0,100]);
+% imf = RSF.quantizeImX(imf,[0,100]);
+imf = RSF.quantizeImX(imf,[2.5,97.5]);
 d = [];
 parfor i = 1:length(imf)
     dj = [];
@@ -38,63 +39,37 @@ parfor i = 1:length(imf)
 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;
-%     idxOD = find(strcmp(tblMeta.eye,'OD'));
-%     idxOS = find(strcmp(tblMeta.eye,'OS'));
-%     clf;hold on
-%     if size(Y,2) > 2
-%         plot3(Y(idxOD,1),Y(idxOD,2),Y(idxOD,3),'r*')
-%         plot3(Y(idxOS,1),Y(idxOS,2),Y(idxOS,3),'og')
-%         zlabel('NCD3')
-%     else
-%         plot(Y(idxOD,1),Y(idxOD,2),'r*')
-%         plot(Y(idxOS,1),Y(idxOS,2),'og')
-%         
-%     end
-%     legend({'OD','OS'})
-%     xlabel('NCD1')
-%     ylabel('NCD2')
-
-idxOD = find(strcmp(tblMeta.eye,'OD'));
-idxOS = find(strcmp(tblMeta.eye,'OS'));
+[~,Y] = Cluster.SpectralCluster(A,2);
+toc
 
-figure(1)
+% compute time for scatter plot 3rd axis
 tblMeta.dx =    datetime(tblMeta.date,'InputFormat','MM-dd-yyyy');
 tblMeta.dx = calmonths(between(min(tblMeta.dx),tblMeta.dx));
+
+% draw scatter plot
+figure(1)
 clf;hold on
 plot3(Y(idxOD,1),Y(idxOD,2),tblMeta.dx(idxOD),'r*')
 plot3(Y(idxOS,1),Y(idxOS,2),tblMeta.dx(idxOS),'og')
-zlabel('NCD3')
+zlabel('time')
 legend({'OD','OS'})
-xlabel('NCD1')
-ylabel('NCD2')  
+xlabel('NCV1')
+ylabel('NCV2')  
 zlabel('time (months)')
-% 
-% plot3(t3.Y(:,1),t3.Y(:,2),t3.Y(:,3),'mx')
-% plot3(t4.Y(:,1),t4.Y(:,2),t4.Y(:,3),'cs')
-% legend({'ONH','macula'})
-toc
-
-% 
-figure(2)
+title(['PID = ' PID ' :: normalized compression vectors (radii = '  jsonencode(radii) ')'])
+% compute CSF
 csf_mean = []; csf_std = [];
 for k = 1:10
-[idx,Y] = Cluster.SpectralCluster(A,k);
-csf = CSF.csf_spatial(Y,idx);
-csf_mean(k) = mean(csf);
-csf_std(k) = std(csf);
+    [idx,Y] = Cluster.SpectralCluster(A,k);
+    csf = CSF.csf_spatial(Y,idx);
+    csf_mean(k) = mean(csf);
+    csf_std(k) = std(csf);
 end
+% plot CSF
+figure(2)
 clf;errorbar(csf_mean,csf_std);xlim([0,10])
+xlabel('number of clusters (K)')
+ylabel('optimality deficiency')
+title(['PID = ' PID ' :: CSF(radii = '  jsonencode(radii) ')'])
+
+4;