diff --git a/matlab/+Import/setPixelPhysicalSizeFolderRecursive.m b/matlab/+Import/setPixelPhysicalSizeFolderRecursive.m index 0d8e4890183a0d9fb85439256bd8cab31663f53f..c9ed197bead94032d824c9a8cc5d2427b0cf0e1d 100644 --- a/matlab/+Import/setPixelPhysicalSizeFolderRecursive.m +++ b/matlab/+Import/setPixelPhysicalSizeFolderRecursive.m @@ -6,7 +6,7 @@ if ~all(size(physicalSize)==[1,3]) return end -flist=dir(fullfile(folder,'**\*.LEVER')); +flist=dir(fullfile(folder,'**/*.LEVER')); for ff=1:length(flist) strDB=fullfile(flist(ff).folder,flist(ff).name); conn = database(strDB, '','', 'org.sqlite.JDBC', 'jdbc:sqlite:'); diff --git a/matlab/+SSF/channel_distances.m b/matlab/+SSF/channel_distances.m new file mode 100644 index 0000000000000000000000000000000000000000..557fc9d3b94ba8a5b3919a1f3045c8517b01099d --- /dev/null +++ b/matlab/+SSF/channel_distances.m @@ -0,0 +1,48 @@ +% kymograph channels -- check CONSTANTS numbers may vary +% ERK_CHANNEL = 1; +% AKT_CHANNEL = 2; +% VELOCITY_CHANNEL = 4; +function res = channel_distances(flist,classList,channel1,channel2,clipLimits) +res=table(); + +if ~exist('clipLimits','var') || isempty(clipLimits) + clipLimits = SSF.getClipLimits(flist,[channel1,channel2]); +end + +parfor ff = 1:length(flist) + class = classList{ff}; + + nr = table(); + + strDB = fullfile(flist(ff).folder,flist(ff).name); + im1 = leversc.loadImage(strDB,1,channel1); + im2= leversc.loadImage(strDB,1,channel2); + + im1 = SSF.quantize8(im1,clipLimits{ff,1}); + im2 = SSF.quantize8(im2,clipLimits{ff,2}); + + d1 = SSF.ncd_ssf_volume(im1,im2); + d2 = SSF.ncd_ssf_volume(im2,im1); + d = min(d1,d2); + + nr.idx = ff; + nr.class = {class}; + nr.d = d; + res(ff,:) = nr; +end +res.Properties.VariableNames = {'idx','class','d'}; +res.class=cellfun(@upper,res.class,'UniformOutput',false); +boxplot(res.d,res.class,'notch','on'); +ylabel('NCD( Akt_{SSF}, Velocity_{SSF} )','FontSize',12) +xlabel('experimental condition','FontSize',12) +set(gcf,'color','w') +4; + +% +% classes = unique(res.class); +% mu=[];stderr=[]; +% for i = 1:length(classes) +% idx = find(strcmp(res.class,classes(i))); +% mu(i) = mean(res.d(idx)); +% stderr(i) = std(res.d(idx))/sqrt(length(idx)); +% end \ No newline at end of file diff --git a/matlab/+SSF/getClipLimits.m b/matlab/+SSF/getClipLimits.m index 5eb239d722123d4d52ddce3616e4cc7fe3158b7b..65359c1fc2d115be1369b522e2bac40ccc8d417e 100644 --- a/matlab/+SSF/getClipLimits.m +++ b/matlab/+SSF/getClipLimits.m @@ -24,14 +24,22 @@ parfor ff=1:length(flist) im_ff = abs(im_ff); end px = im_ff(find(im_ff)); - kymoPixels{ff} = px; + kymoPixels{ff}{c} = px; end end kymoPixels = vertcat(kymoPixels{:}); - -clip_neg = SSF.getClipQuantiles(kymoPixels(kymoPixels<0),127); -clip_pos = SSF.getClipQuantiles(kymoPixels(kymoPixels>0),127); -clipLimits = [clip_neg,clip_pos]; -clipLimits = repmat({clipLimits},length(flist),1); +for c = 1:size(kymoPixels,2) + kp = kymoPixels(:,c); + kp = kp{:}; + if all(kp>0) || all(kp<0) + cx = SSF.getClipQuantiles(kp,254); + else + clip_neg = SSF.getClipQuantiles(kp(kp<0),127); + clip_pos = SSF.getClipQuantiles(kp(kp>0),127); + cx = [clip_neg,clip_pos]; + end + clipLimits{c} = cx; +end +clipLimits = repmat(clipLimits,length(flist),1); 4; diff --git a/matlab/+SSF/getClipQuantiles.m b/matlab/+SSF/getClipQuantiles.m index b6cf656da7db13c1329c2e9925aea4501b021cff..377956572e9e169ba8cfce7d2ebbf9409c76caa6 100644 --- a/matlab/+SSF/getClipQuantiles.m +++ b/matlab/+SSF/getClipQuantiles.m @@ -1,12 +1,12 @@ function clipLimits = getClipQuantiles(voxels,nQuant) -% -% mx = mean(voxels); -% sx = std(voxels); -% cl = [mx-sx, mx+sx]; -% q1 = length(find(voxels<cl(1)))./length(voxels); -% q2 = 1 - length(find(voxels>cl(2)))./length(voxels); -% pxTarget = linspace(q1,q2,nQuant); -% clipLimits = quantile(voxels,pxTarget); -pxTarget = linspace(2.5,97.5,nQuant); -clipLimits = prctile(voxels,pxTarget); +mx = mean(voxels); +sx = std(voxels); +cl = [mx-sx, mx+sx]; +q1 = length(find(voxels<cl(1)))./length(voxels); +q2 = 1 - length(find(voxels>cl(2)))./length(voxels); +pxTarget = linspace(q1,q2,nQuant); +clipLimits = quantile(voxels,pxTarget); + +% pxTarget = linspace(2.5,97.5,nQuant); +% clipLimits = prctile(voxels,pxTarget); diff --git a/matlab/+SSF/quantize8.m b/matlab/+SSF/quantize8.m index 1dbd08aae04dce4c1cd80852fee2cc602c4bd804..b74a16a41960bf5bcbb82d695bfce2dfd2dae24a 100644 --- a/matlab/+SSF/quantize8.m +++ b/matlab/+SSF/quantize8.m @@ -7,13 +7,5 @@ if isa(im,'uint8') end im = uint8(imquantize(im,clipLimits)); -% -% for c = 1:size(im,4) -% im(:,:,:,c) = max(im(:,:,:,c),clipLimits(c,1)); -% im(:,:,:,c) = min(im(:,:,:,c),clipLimits(c,2)); -% im(:,:,:,c) = (im(:,:,:,c) - clipLimits(c,1)) ./ (clipLimits(c,2) - clipLimits(c,1)); -% end -% im = im2uint8(im); - im = max(im,1); im(0 == im_in) = 0; \ No newline at end of file