diff --git a/leversc/src/MATLAB/@leversc/show.m b/leversc/src/MATLAB/@leversc/show.m
index 2ad1d3bec242fb393e668cc2f3708f2d0a6cd036..5745c1839fe03bcf72e67d1e787262c9c929e7fc 100644
--- a/leversc/src/MATLAB/@leversc/show.m
+++ b/leversc/src/MATLAB/@leversc/show.m
@@ -128,8 +128,8 @@ end
 if exist('strDB','var') && ~isempty(strDB)
     elec_cmd = [elec_cmd ' --leverFile=' strDB ' '];
 end
-cmd = [elec_cmd ' --port=' num2str(port) ' --title="figure ' num2str(fignum) '"' ' &']
-system(cmd,'PATH',px);
+cmd = ['export PATH=' px ' ; ' elec_cmd ' --port=' num2str(port) ' --title="figure ' num2str(fignum) '"' ' &']
+system(cmd);
 end
 
 function launch_electron_windows(port,fignum,workdir, leverpath, strDB)
diff --git a/matlab/+SSF/draw_ssf_kymo.m b/matlab/+SSF/draw_ssf_kymo.m
index 865b8dcf8704fb05b5564a6b414d1e459a7aaf8f..55e5f5633498207d30177978757f84e541b4323c 100644
--- a/matlab/+SSF/draw_ssf_kymo.m
+++ b/matlab/+SSF/draw_ssf_kymo.m
@@ -1,22 +1,21 @@
 
-function imq = draw_ssf_kymo(strKymoFile)
+function imq = draw_ssf_kymo(strKymoFile, targetChannels, clipLimits,nKeep)
 
-targetChannels = 1;
 imKymo = SSF.loadImage(strKymoFile,targetChannels);
+if nKeep>0
+    imKymo(imKymo<0) = 0;
+end
+if nKeep<0
+    imKymo(imKymo>0) = 0;
+    imKymo = abs(imKymo);
+end
 
-imp = imKymo;
-imp(imp<0)=0;
-imp = max(imp,[],1);
-imp = SSF.quantize8(imp);
-
-imn = imKymo;
-imn(imn>0)=0;
-imn=abs(imn);
-imn = max(imn,[],1);
-imn = SSF.quantize8(imn);
-
-imq(:,:,1) = squeeze(imp);
-imq(:,:,2) = squeeze(imn);
-imq(:,:,3) = 0*imp;
+[~,imp,imn] = LoG.separateLoG(imKymo);
 
+imp = squeeze(max(imp,[],1));
+imn = squeeze(max(imn,[],1));
+imProject = max(imp,imn);
+imProject(imn>imp) = imProject(imn>imp) .* -1;
 
+imq = SSF.quantize8(imProject,clipLimits);
+return
diff --git a/matlab/+SSF/draw_ssf_ncd.m b/matlab/+SSF/draw_ssf_ncd.m
index 4c4acb5b8ef8caf077c51efbc45355a800b9dbcc..b4d49c1834c0cb95b1e9468064fa690e719ea440 100644
--- a/matlab/+SSF/draw_ssf_ncd.m
+++ b/matlab/+SSF/draw_ssf_ncd.m
@@ -1,12 +1,13 @@
 % load('agne_72_8bpp.mat')
+ROOT = '/g/leverjs/Olivier/Agne/march_2023_20x';
 flist = dir(fullfile(ROOT,'*.LEVER'));
 
-% className = {};
-% for ff=1:length(flist)
-%     cn = regexp(flist(ff).name,'(\d+-\d+-\d+)_.*(\d\d)_ori*','tokens');
-%     cn = [cn{1}{1} '_' cn{1}{2}];
-%     className{ff} = classMap(cn);
-% end
+className = {};
+for ff=1:length(flist)
+    cn = regexp(flist(ff).name,'(\d+-\d+-\d+)_.*(\d\d)_ori*','tokens');
+    cn = [cn{1}{1} '_' cn{1}{2}];
+    className{ff} = classMap(cn);
+end
 % targetClass = {'AKT1_E17K','WT','PIK3CA_E545K'}
 % idx = find(cellfun(@(x) ~isempty(find(strcmp(targetClass,x))),className));
 % A=d(idx,idx);
diff --git a/matlab/+SSF/getClipLimits.m b/matlab/+SSF/getClipLimits.m
new file mode 100644
index 0000000000000000000000000000000000000000..dbdc3bde544c0ccacf4d7743ceab35981e2070fa
--- /dev/null
+++ b/matlab/+SSF/getClipLimits.m
@@ -0,0 +1,39 @@
+% map [-1,1] kymographs to color space [0,255]
+% 
+function clipLimits = getClipLimits(flist,targetChannelNumbers,clipRange,nKeep)
+
+if ~exist('clipRange','var')
+    clipRange= [2.5,97.5];
+end
+
+p = ljsStartParallel(); 
+kymoPixels = {};
+parfor ff=1:length(flist)
+    kp = {};
+    for c = 1:length(targetChannelNumbers)
+        strDB_ff = fullfile(flist(ff).folder,flist(ff).name);
+        im_ff = SSF.loadImage(strDB_ff,targetChannelNumbers(c));
+        if nKeep>0
+            im_ff(im_ff<0)=0;
+        end
+        if nKeep<0
+            im_ff(im_ff>0)=0;
+            im_ff = abs(im_ff);
+        end
+        kp{c} = im_ff(find(im_ff));
+        kymoPixels{ff} = kp;
+    end
+end 
+kymoPixels = vertcat(kymoPixels{:});
+
+clipLimits = [];
+for c = 1:size(kymoPixels,2)
+    % anything other than [0,1] gets set to the corresponding percentile
+    idx = find(clipRange);
+    if ~isempty(idx)
+        px = kymoPixels{:,c};
+        clipLimits(c,idx) = [prctile(px,clipRange(idx))];
+    end
+    clipLimits(c,find(clipRange==0)) = 0;
+end
+4;
\ No newline at end of file
diff --git a/matlab/+SSF/go_ssf_ncd.m b/matlab/+SSF/go_ssf_ncd.m
index f6dd59cc9741d5c09589aa4788ff92b16d8d9784..b81b80177574a705eb463867d42667361402312b 100644
--- a/matlab/+SSF/go_ssf_ncd.m
+++ b/matlab/+SSF/go_ssf_ncd.m
@@ -4,7 +4,7 @@
 % AKT_CHANNEL = 2;
 % H2B_CHANNEL = 3;
 % targetChannels = [ERK_CHANNEL,AKT_CHANNEL];
-function d=go_ssf_ncd(kROOT,targetChannels)
+function d=go_ssf_ncd(kROOT,targetChannels,clipRange, nKeep)
 
 tStart = tic();
 
@@ -14,16 +14,7 @@ kymoPixels = {};
  
 p = ljsStartParallel();
 % 
-parfor ff=1:length(flist)
-    strDB_ff = fullfile(flist(ff).folder,flist(ff).name);
-    im_ff = SSF.loadImage(strDB_ff,targetChannels);
-    kp = im_ff(find(im_ff));
-    kymoPixels{ff} = kp;
-end 
-kymoPixels = vertcat(kymoPixels{:});
-% erkClipLimits = [prctile(kymoPixels,2.5),prctile(kymoPixels,97.5)]
-erkClipLimits = [0,prctile(kymoPixels,99)];
-% erkClipLimits = [-1,1];
+clipLimits = SSF.getClipLimits(flist,targetChannels,clipRange,nKeep);
 
 %
 cmdList = NCD.dParallelCommandList(ones(length(flist)),p.NumWorkers);
@@ -41,10 +32,10 @@ parfor i=1:H
         if 0 == ff || 0 == gg
             continue
         end
-        strDB_ff = fullfile(flist(ff).folder,flist(ff).name);
+        strDB_ff = fullfile(flist(ff).folder, flist(ff).name);
         if ~strcmp(strDB_ff,str_ff_prev)
-            im_ff = SSF.loadImage(strDB_ff,targetChannels);
-            im_ff = SSF.quantize8(im_ff,erkClipLimits);
+            im_ff = SSF.loadImage(strDB_ff, targetChannels, clipRange, nKeep);
+            im_ff = SSF.quantize8(im_ff,clipLimits);
             str_ff_prev = strDB_ff;
         end
 
@@ -53,8 +44,8 @@ parfor i=1:H
             dxx(i,j) = d1;
         else
             strDB_gg = fullfile(flist(gg).folder,flist(gg).name);
-            im_gg = SSF.loadImage(strDB_gg,targetChannels);
-            im_gg = SSF.quantize8(im_gg,erkClipLimits);
+            im_gg = SSF.loadImage(strDB_gg,targetChannels, clipRange, nKeep);
+            im_gg = SSF.quantize8(im_gg,clipLimits);
 
             d1 = SSF.ncd_ssf_volume(im_ff,im_gg);
             d2 = SSF.ncd_ssf_volume(im_gg,im_ff);
diff --git a/matlab/+SSF/loadImage.m b/matlab/+SSF/loadImage.m
index 9e149c8d140985dc9473b36273bbf4483b2c4841..77ac02a6e39cee70fd1ff3e4a24d18fd16c66e14 100644
--- a/matlab/+SSF/loadImage.m
+++ b/matlab/+SSF/loadImage.m
@@ -1,5 +1,5 @@
 
-function im = loadImage(strDB,channelList)
+function im = loadImage(strDB, channelList, clipRange, nKeep)
 
 if ~exist('bDouble','var')
     bDouble = false;
@@ -9,3 +9,16 @@ time = 1; % kymo is single time point
 for c=1:length(channelList)
     im(:,:,:,c) = leversc.loadImage(strDB,time,channelList(c));  
 end
+% HACK ACK HACK 
+im = im(:,:,:,:);
+
+if ~exist('clipRange','var')
+    return;
+end
+if nKeep > 0
+    im(im<0) = 0;
+end
+if nKeep < 0
+    im(im>0) = 0;
+    im = abs(im);
+end
diff --git a/matlab/+SSF/ssf_channel.m b/matlab/+SSF/ssf_channel.m
index 70e0970e191a7a460837eb3a8e2865a4bf566767..80157795eb1745924f551e87a6a4b0a0b987bc67 100644
--- a/matlab/+SSF/ssf_channel.m
+++ b/matlab/+SSF/ssf_channel.m
@@ -24,7 +24,9 @@ end
 imSSF = zeros(szim(1),szim(2));
 for i=1:length(cellList)
     if is3D(CONSTANTS)
-        cx = centroidMap(cellList(i).cellID);        
+%         cx = centroidMap(cellList(i).cellID);  
+        cx = round(cellList(i).centroid);
+        cx = [cx(2),cx(1)]; % [y,x]
     else
         cx = round(cellList(i).centroid);
         cx = [cx(2),cx(1)]; % [y,x]
@@ -46,7 +48,9 @@ for i=1:length(cellList)
     ratio  = min(ratio,1);
     ratio  = max(ratio,-1);
     
-    imSSF(cx(1),cx(2)) = ratio;
+    if abs(imSSF(cx(1),cx(2))) < abs(ratio)
+        imSSF(cx(1),cx(2)) = ratio;
+    end
 
 end
 
diff --git a/matlab/+SSF/velocity_kymo.m b/matlab/+SSF/velocity_kymo.m
index cf5dd267069bfd9269829ea0a00a3d9045580442..2f138351f8528dd332329aadc7418e0c8937bbe2 100644
--- a/matlab/+SSF/velocity_kymo.m
+++ b/matlab/+SSF/velocity_kymo.m
@@ -6,7 +6,7 @@ szIm = Helpers.volumeSize(CONSTANTS);
 if bDownscale
     szIm(1:2) = round(szIm(1:2) ./ 2);
 end
-im_v_kymo = zeros([szIm(2),szIm(1),szIm(5)]);
+im_v_kymo = zeros([szIm(1),szIm(2),szIm(5)]);
 
 for time = 1:CONSTANTS.imageData.NumberOfFrames
     cmd = ['select srcCell.centroid as src_centroid,srcCell.time src_time, srcCell.maxRadius as src_maxRadius, '...