From 3126d5fc495d819d0095672e4bc104058f57a0c3 Mon Sep 17 00:00:00 2001
From: ac <andrew.r.cohen@drexel.edu>
Date: Wed, 21 May 2025 10:09:03 -0400
Subject: [PATCH] quantizeImX moved from getImf

---
 .gitignore                        |  4 +++
 src/MATLAB/+RSF/getImf.m          | 51 -------------------------------
 src/MATLAB/+RSF/quantizeImX.m     | 50 ++++++++++++++++++++++++++++++
 src/MATLAB/clusterExamples/goLR.m |  8 +++--
 4 files changed, 59 insertions(+), 54 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 src/MATLAB/+RSF/quantizeImX.m

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0846812
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+*.png
+src/MATLAB/clusterExamples/*.mat
+*.xlsx
+*.rtf
diff --git a/src/MATLAB/+RSF/getImf.m b/src/MATLAB/+RSF/getImf.m
index fbe762a..81b4d60 100644
--- a/src/MATLAB/+RSF/getImf.m
+++ b/src/MATLAB/+RSF/getImf.m
@@ -35,9 +35,6 @@ while startTarget <= size(pData,1)
                 end  
             end
         end
-% NGPU = HIP.Cuda.DeviceCount;
-% p = ljsStartParallel(8*NGPU);
-
     end
     startTarget = startTarget + N_CUDA_PROCS;
     for i = 1:N_CUDA_PROCS
@@ -47,52 +44,4 @@ while startTarget <= size(pData,1)
     end
 end
 
-px = {}; % critical voxels
-mx = []; % mean by stack
-sx = []; % sigma by stack
-for i = 1 : length(imf)    
-    for c = 1:size(imf{i},4)
-        i1 = imf{i}(:,:,:,c);
-        px{i,c} = i1(find(i1));
-        mx(i,c) = mean(px{i,c});
-        sx(i,c) = std(px{i,c});
-    end
-end
-
-clipRange = [2.5,97.5];
-% clipRange = [0.5,99.5];
-for c = 1:size(imf{1},4)
-    p1 = vertcat(px{:,c});
-    px_pos = p1(p1>0);
-    px_neg = abs(p1(p1<0));
-
-    clip_pos(c,:) = prctile(px_pos,clipRange);
-    clip_neg(c,:) = prctile(px_neg,clipRange);
-end
-4;
-for i = 1:length(imf)    
-    for c = 1 : size(imf{i},4)
-        if all(0==imf{i}(:,:,c))
-            continue
-        end
-        imp = imf{i}(:,:,:,c);
-        imp(imp<0)=0;
-        imn = imf{i}(:,:,:,c);
-        imn(imn>0)=0;
-        imn=abs(imn);
-        imq_pos = SSF.quantize8(imp,clip_pos(c,:));
-        imq_neg = SSF.quantize8(imn,clip_neg(c,:));
-        if all(0==imq_pos)
-            imf{i}(:,:,:,c) = imq_neg;
-        else
-            % [0,127] for imq_neg, [128,255] imq_pos
-            imq_pos = (0.5 .* imq_pos) + uint8(128 .* (imq_pos>0));
-            imq_neg = 0.5 .* imq_neg ;
-            imf{i}(:,:,:,c) = (imq_neg + imq_pos);            
-        end
-
-    end    
-
-    imf{i} = uint8(imf{i});
-end
 4;
diff --git a/src/MATLAB/+RSF/quantizeImX.m b/src/MATLAB/+RSF/quantizeImX.m
new file mode 100644
index 0000000..6aead30
--- /dev/null
+++ b/src/MATLAB/+RSF/quantizeImX.m
@@ -0,0 +1,50 @@
+% imf is a cell array of images, e.g. per patient
+function imf = quantizeImX(imf,clipRange)
+% 
+px = {}; % critical voxels
+for i = 1 : length(imf)    
+    for c = 1:size(imf{i},4)
+        i1 = imf{i}(:,:,:,c);
+        px{i,c} = i1(find(i1));
+    end
+end
+if ~exist("clipRange",'var')
+    clipRange = [2.5,97.5];
+    % clipRange = [0.5,99.5];
+    % clipRange = [0,100]
+end
+
+for c = 1:size(imf{1},4)
+    p1 = vertcat(px{:,c});
+    px_pos = p1(p1>0);
+    px_neg = abs(p1(p1<0));
+
+    clip_pos(c,:) = prctile(px_pos,clipRange);
+    clip_neg(c,:) = prctile(px_neg,clipRange);
+end
+4;
+for i = 1:length(imf)    
+    for c = 1 : size(imf{i},4)
+        if all(0==imf{i}(:,:,c))
+            continue
+        end
+        imp = imf{i}(:,:,:,c);
+        imp(imp<0)=0;
+        imn = imf{i}(:,:,:,c);
+        imn(imn>0)=0;
+        imn=abs(imn);
+        imq_pos = SSF.quantize8(imp,clip_pos(c,:));
+        imq_neg = SSF.quantize8(imn,clip_neg(c,:));
+        if all(0==imq_pos)
+            imf{i}(:,:,:,c) = imq_neg;
+        else
+            % [0,127] for imq_neg, [128,255] imq_pos
+            imq_pos = (0.5 .* imq_pos) + uint8(128 .* (imq_pos>0));
+            imq_neg = 0.5 .* imq_neg ;
+            imf{i}(:,:,:,c) = (imq_neg + imq_pos);            
+        end
+
+    end    
+
+    imf{i} = uint8(imf{i});
+end
diff --git a/src/MATLAB/clusterExamples/goLR.m b/src/MATLAB/clusterExamples/goLR.m
index 80bfc5d..2901e21 100644
--- a/src/MATLAB/clusterExamples/goLR.m
+++ b/src/MATLAB/clusterExamples/goLR.m
@@ -1,5 +1,5 @@
 tic
-ROOT = '/g/leverjs/Schuman_OCT/OCT/qualifiedYes';
+ROOT = '/g/leverjs/Schuman_OCT/OCT/qualified';
 
 PID = 'P10010';
 % PID = 'P10125'
@@ -16,11 +16,13 @@ tblMeta = tblMeta(contains(tblMeta.scanType,'Optic'),:);
 
 p = ljsStartParallel(96);
 
-% radii = {[0.5,8,8],[5,5,5],[0,0,0]}; % plate,blob
-radii = {[0.5,8,8]}; % plate
+radii = {[0.5,8,8],[5,5,5],[0,0,0]}; % plate,blob
+% radii = {[0.5,8,8]}; % plate
+% radii = {[5,5,5]};
 
 % radii = {[3]} % dark tubes
 imf = RSF.getImf(tblMeta,radii);
+imf = RSF.quantizeImX(imf,[2.5,97.5]);
 d = [];
 parfor i = 1:length(imf)
     dj = [];
-- 
GitLab