diff --git a/src/matlab/GetKymoPt.m b/src/matlab/GetKymoPt.m
index 03724c601b286f171267b600fec39a1554b088cd..cf7b41a780836034ae23eb6223179560b92d2c2d 100644
--- a/src/matlab/GetKymoPt.m
+++ b/src/matlab/GetKymoPt.m
@@ -4,7 +4,7 @@ function arcPoints = GetKymoPt(imagePoints)
     arcPoints = zeros(1,size(imagePoints,1));
     
     for i=1:size(imagePoints,1)
-        arcPoints(i) = Trace.LKymo(imagePoints(i,1),imagePoints(i,2));
+        arcPoints(i) = Trace.LKymo(round(imagePoints(i,1)),round(imagePoints(i,2)));
         if ( arcPoints(i) == 0 )
             dd = (Trace.jPath - double(imagePoints(i,2))).^2 + (Trace.iPath - double(imagePoints(i,1))).^2;
             [mindist arcPoints(i)] = min(dd);
diff --git a/src/matlab/GetPath.m b/src/matlab/GetPath.m
index c9bb1e369ce9e93be92a6879782b73d33ee2a836..a286daa96b7c7ec02e957cb5f04786688e528345 100644
--- a/src/matlab/GetPath.m
+++ b/src/matlab/GetPath.m
@@ -44,10 +44,10 @@ colormap(gray);hold all
 plot(p1(2),p1(1),'ro')
 plot(p2(2),p2(1),'bx')
 drawnow
-progressbar(0);
+Progressbar(0);
 gIm=sparse([],[],[],prod(size(im)),prod(size(im)),8*sum(size(im)));
 for i=2:size(im,1)-1
-    progressbar(i/size(im,1));
+    Progressbar(i/size(im,1));
     for j=2:size(im,2)-2
         if 0==im(i,j),continue,end
         for ni=-1:1
@@ -77,8 +77,8 @@ for i=2:size(im,1)-1
         end
     end
 end
-progressbar(1);
-path(path,'..\matlab_bgl')
+Progressbar(1);
+
 ind1=sub2ind(size(im),p1(1),p1(2));
 ind2=sub2ind(size(im),p2(1),p2(2));
 options.target=ind2;
diff --git a/src/matlab/GoKymo.m b/src/matlab/GoKymo.m
index 5c5438d130c8689d2bfab5fd5a14cafe210d9c2b..914e60ac889ad4f6160d28b4337cf3b054f67cf9 100644
--- a/src/matlab/GoKymo.m
+++ b/src/matlab/GoKymo.m
@@ -99,15 +99,17 @@ for t=1: nframes
      im(im>stats(2))=stats(2);
     im=mat2gray(im);
     
-%     h = fspecial('gaussian', 7, 5);
-%     imfilt = imfilter(im, h, 'symmetric');
-%     for j=1:50
-%         imfilt = imfilter(imfilt, h, 'symmetric');
-%     end
-%     imhfreq = max((im - imfilt), zeros(size(im)));
+    h = fspecial('gaussian', 7, 5);
+    imfilt = imfilter(im, h, 'symmetric');
+    for j=1:50
+        imfilt = imfilter(imfilt, h, 'symmetric');
+    end
+    imhfreq = max((im - imfilt), zeros(size(im)));
+    im = mat2gray(imhfreq);
 %     medim = medfilt2(imhfreq,[4,4]);
 %     
 %     medim = mat2gray(medim);
+%     im = medim;
 
     ii=[];
     for i=1:length(PathNorms) % iPath=y,jPath=x
diff --git a/src/matlab/mKymoUI.m b/src/matlab/mKymoUI.m
index 35f3f070004ac19bfe4a7a31433aa2c6a82e67a0..383debfcb82463fcf8a7f8168c225ec7d77b7814 100644
--- a/src/matlab/mKymoUI.m
+++ b/src/matlab/mKymoUI.m
@@ -37,23 +37,49 @@ CONSTANTS.pixelSize = str2double(movProps{1});
 CONSTANTS.frameTime = str2double(movProps{2});
 CONSTANTS.expTime = str2double(movProps{3});
 
-FileNameGFP=0;
-[FileNameGFP,PathNameGFP] = uigetfile([PathNameGFP '*.tif'],'open gfp file to generate path');
-if (0==FileNameGFP)
+% FileNameGFP=0;
+% [FileNameGFP,PathNameGFP] = uigetfile([PathNameGFP '*.tif'],'open gfp file to generate path');
+% if (0==FileNameGFP)
+%     close all;
+%     return;
+% end
+
+[FileNameGFP,PathNameGFP] = uigetfile([PathNameGFP '*.tif'],'open movie and gfp files to generate path', 'MultiSelect','on');
+if ( iscell(FileNameGFP) )
+    imGFP = loadAveragedImage(fullfile(PathNameGFP, FileNameGFP{1}));
+    for i=2:length(FileNameGFP)
+        imGFP = imGFP + loadAveragedImage(fullfile(PathNameGFP, FileNameGFP{i}));
+    end
+elseif ( FileNameGFP == 0 )
     close all;
     return;
+else
+    imGFP = loadAveragedImage(fullfile(PathNameGFP, FileNameGFP));
 end
 
 save('mKymoUI_settings.mat','PathNameGFP', 'CONSTANTS');
 
-gfpFile=fullfile(PathNameGFP, FileNameGFP);
-[imGFP]=imread(gfpFile);
+% gfpFile=fullfile(PathNameGFP, FileNameGFP);
+% [imGFP]=imread(gfpFile);
 hold off
 imagesc(imGFP);colormap gray
 hold on
 
 end
 
+function avgIm = loadAveragedImage(imagePath)
+    iminfo = imfinfo(imagePath);
+    
+    avgIm = zeros(iminfo(1).Height, iminfo(1).Width);
+    
+    for i=1:length(iminfo)
+        im = double(imread(imagePath, i));
+        avgIm = avgIm + im;
+    end
+    
+    avgIm = mat2gray(avgIm);
+end
+
 function ButtonDown(src,eventdata)
 global ptProximal ptDistal imGFP;
 
@@ -84,6 +110,15 @@ global ptProximal ptDistal imGFP gfpFile CONSTANTS Trace Hulls HashedHulls Blur
 if (strcmp(eventdata.Key,'return'))
     [iPath,jPath,bKymo] = GetPath(imGFP,round(ptProximal),round(ptDistal));
     
+    if ( isempty(jPath) )
+        [iPath,jPath,bKymo] = mkLinePath(round(ptProximal),round(ptDistal));
+%         msgHandle = msgbox('Unable to find path between specified points.');
+%         uiwait(msgHandle);
+%         return;
+    end
+    
+    plot(jPath, iPath, '-b');
+    
     ff=dir('mKymoUI_settings.mat');
     if ~isempty(ff)
         load('mKymoUI_settings.mat');
@@ -95,7 +130,6 @@ if (strcmp(eventdata.Key,'return'))
         ['open movie file to generate kymograph for gfp file ' gfpFile]);
     
     if ( FileNameMovie == 0 )
-        close all;
         return;
     end
     
@@ -164,5 +198,25 @@ elseif ( strcmpi(eventdata.Key,'space') )
 end
 end
 
+function [iPath, jPath, bKymo] = mkLinePath(ptProximal, ptDistal)
+    startX = ptProximal(2);
+    endX = ptDistal(2);
+    
+    startY = ptProximal(1);
+    endY = ptDistal(1);
+    numX = round(abs(endX - startX));
+    
+    slope = (endY - startY) / numX;
+    intercept = startY - slope*startX;
+    
+    stepX = sign(endX - startX);
+    
+    jPath = round(startX:stepX:endX);
+    iPath = round(slope*jPath + intercept);
+    
+    bKymo = nan*ones(length(iPath),4);
+    bKymo(:,3:4) = ones(length(iPath),1)*[slope intercept];
+end
+