diff --git a/matlab/+SSF/gen_SSF_kymo.m b/matlab/+SSF/gen_SSF_kymo.m
index 130871e45a57944087497af420d4619e9c97716e..0c01c39bee3f2dfc285b3308ee41b4df9f9fc3c1 100644
--- a/matlab/+SSF/gen_SSF_kymo.m
+++ b/matlab/+SSF/gen_SSF_kymo.m
@@ -28,7 +28,8 @@ if ~exist(outfolder,'dir')
 end
 
 imd={};
-p = ljsStartParallel(16);
+nGPU = HIP.Cuda.DeviceCount();
+p = ljsStartParallel(8*nGPU);
 
 parfor ff=1:L
 % for ff=1:L    
@@ -42,7 +43,9 @@ parfor ff=1:L
     if isempty(imVolume)
         continue
     end
-%     imVolume(:,:,:,length(targetChannelNumbers)+1) = SSF.velocity_kymo(str_ff);
+    if contains(targetChannelNames{end},'velocity ssf','IgnoreCase',true)
+        imVolume(:,:,:,length(targetChannelNumbers)+1) = SSF.velocity_kymo(str_ff,bDownscale);
+    end
     imVolume = imVolume(:,:,startFrame:end,:); % trim off first 30 frames
     imd{ff}=MicroscopeData.MakeMetadataFromImage(imVolume);
     imd{ff}.DatasetName=[flist(ff).name '_ssf_cache'];
diff --git a/matlab/+SSF/go_ssf_ncd.m b/matlab/+SSF/go_ssf_ncd.m
index f79c51b3104637c29891d5a0b65e7457aaa11ab3..f6dd59cc9741d5c09589aa4788ff92b16d8d9784 100644
--- a/matlab/+SSF/go_ssf_ncd.m
+++ b/matlab/+SSF/go_ssf_ncd.m
@@ -12,8 +12,8 @@ flist = dir(fullfile(kROOT,'*.LEVER'));
 d = zeros(length(flist));
 kymoPixels = {};
  
-p = ljsStartParallel(32);
-
+p = ljsStartParallel();
+% 
 parfor ff=1:length(flist)
     strDB_ff = fullfile(flist(ff).folder,flist(ff).name);
     im_ff = SSF.loadImage(strDB_ff,targetChannels);
@@ -21,8 +21,9 @@ parfor ff=1:length(flist)
     kymoPixels{ff} = kp;
 end 
 kymoPixels = vertcat(kymoPixels{:});
-erkClipLimits = [prctile(kymoPixels,2.5),prctile(kymoPixels,97.5)]
-% erkClipLimits = [0,prctile(kymoPixels,99)];
+% erkClipLimits = [prctile(kymoPixels,2.5),prctile(kymoPixels,97.5)]
+erkClipLimits = [0,prctile(kymoPixels,99)];
+% erkClipLimits = [-1,1];
 
 %
 cmdList = NCD.dParallelCommandList(ones(length(flist)),p.NumWorkers);
diff --git a/matlab/+SSF/ssf_channel.m b/matlab/+SSF/ssf_channel.m
index ce62430a5ea41136d52ce539b19924d432999714..70e0970e191a7a460837eb3a8e2865a4bf566767 100644
--- a/matlab/+SSF/ssf_channel.m
+++ b/matlab/+SSF/ssf_channel.m
@@ -5,7 +5,7 @@ im = Segment.denoise(im,segParams,false);
 im = double(im)./2^16;
 % scale refMax by actual image statistics. median estimates background,
 % 99.99% represents max foreground intensity.
-refMax = refMax * ( prctile(im(:),99.99) -  median(im(:)));
+ %refMax * ( prctile(im(:),99.99) -  median(im(:)));
 
 [imLoG, imp, imn] = LoG.getCompositeLoG(im,CONSTANTS,segParams);
 
diff --git a/matlab/+SSF/velocity_kymo.m b/matlab/+SSF/velocity_kymo.m
index b43c57e351234d7bcefde51fd44a0060639c5a7c..cf5dd267069bfd9269829ea0a00a3d9045580442 100644
--- a/matlab/+SSF/velocity_kymo.m
+++ b/matlab/+SSF/velocity_kymo.m
@@ -1,8 +1,11 @@
-function im_v_kymo = velocity_kymo(strDB)
+function im_v_kymo = velocity_kymo(strDB,bDownscale)
 [conn,CONSTANTS,segParams]=openDB(strDB);
 
 szIm = Helpers.volumeSize(CONSTANTS);
 % kymo is (x,y,t)
+if bDownscale
+    szIm(1:2) = round(szIm(1:2) ./ 2);
+end
 im_v_kymo = zeros([szIm(2),szIm(1),szIm(5)]);
 
 for time = 1:CONSTANTS.imageData.NumberOfFrames
@@ -27,7 +30,11 @@ for time = 1:CONSTANTS.imageData.NumberOfFrames
         v = (vsrc+vdst)/2.0; % average in velocity and out velocity
         maxRadius = max([q.maxRadius(i),q.dst_maxRadius(i),q.src_maxRadius(i)]);
         v = v / (3*maxRadius); % 3*maxRadius is the velocity gate
+        if bDownscale
+            cx = cx ./2;
+        end
         cx = round(cx);
+        
         im_v_kymo(cx(2),cx(1),time) = v;
     end
 end