From f16fcdd049783b410b025783c5f80c8e35c0a948 Mon Sep 17 00:00:00 2001 From: Florian Vollrath Date: Tue, 4 Apr 2017 17:18:19 +0200 Subject: [PATCH] added an alignment script, added a load function in main for alignment script data --- alignmentScript.m | 137 ++++++++++++ .../CellSortLoadFilesFromAlignmentScript.m | 59 +++++ functions/trialAlignmentScript_Belen.m | 210 ++++++++++++++++++ functions/trialAlignmentScript_Leona.m | 2 +- .../trialAlignmentScript_alignOnGreen_Leona.m | 190 ++++++++++++++++ main.m | 3 + 6 files changed, 600 insertions(+), 1 deletion(-) create mode 100644 alignmentScript.m create mode 100644 functions/CellSortLoadFilesFromAlignmentScript.m create mode 100644 functions/trialAlignmentScript_Belen.m create mode 100644 functions/trialAlignmentScript_alignOnGreen_Leona.m diff --git a/alignmentScript.m b/alignmentScript.m new file mode 100644 index 0000000..d5e5959 --- /dev/null +++ b/alignmentScript.m @@ -0,0 +1,137 @@ +clear all +close all +clc +%% Set Paramters +inFolder = 'D:\data\Leona'; +outFolder = 'D:\data\out'; +binningFactor = [1, 1, 2]; +nSubIm = 1000;%number of subImages for med align +referenceChannel = 0; %0: green, 1: red; reference channel for shift corrections +numShiftCorrections = 1; %number of shift corrections +%% Load Files +currentFolder = pwd; +cd(inFolder); +folders = dir; + +for k = length(folders):-1:1 + % remove non-folders + if ~folders(k).isdir + folders(k) = [ ]; + continue + end + % remove folders starting with . + fname = folders(k).name; + if fname(1) == '.' + folders(k) = [ ]; + end +end + +numFolders = length(folders); + +%iterate through all folders +for f = 1:numFolders + %go into folder + cd(inFolder); + cd(folders(f).name); + greenFiles = dir('ChanA_*_*.tif'); + redFiles = dir('ChanB_*_*.tif'); + %check if fileNumber is the same + if size(greenFiles, 1) ~= size(redFiles, 1) + error(['Unequal number of files in trial folder "', folders(f).name, '"!!']); + end + numFiles = size(greenFiles, 1); + + %load first red frame to get resolution and being able to preallocate + temp = readTiffNoStack(redFiles(1).name); + res = size(temp); + + %preallocate data_r + data_r = zeros(res(1), res(2), numFiles); + data_g = zeros(res(1), res(2), numFiles); + %load data + disp(['Loading Files In Folder ', folders(f).name]); + parfor i=1:numFiles + data_r(:,:,i) = readTiffNoStack(redFiles(i).name); + data_g(:,:,i) = readTiffNoStack(greenFiles(i).name); + end + disp(['Shift Correction Of Files In Folder ', folders(f).name]); + + %save stacks in memory + cd(outFolder); + disp(['Write Files Of Folder ', folders(f).name ' in ' outFolder ' to RAM']); + data_r_complete{f} = data_r; + data_g_complete{f} = data_g; +end + +%go back to old current folder +cd(currentFolder); +clear data_r data_g +data_r = data_r_complete; +data_g = data_g_complete; +%create big array +numFrames = 0; +numFrameList = zeros(1,numFolders); +for i = 1:numFolders + numFrames = numFrames + size(data_g{i},3); + numFrameList(i+1) = numFrames; +end + +%preallocate data +data_r_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_r{1})); +data_g_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_g{1})); +for i = 1:numFolders + data_r_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_r{i}; + data_r{i} = []; + data_g_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_g{i}; + data_g{i} = []; +end +clear data_r_complete data_g_complete data_r data_g +data_r = data_r_array; +data_g = data_g_array; +clear data_g_array data_r_array +%% Do Shift Correction +wb = waitbar(0, 'Performing Shift Correction'); + +for j = 1:numShiftCorrections + if referenceChannel + referenceChannelData = data_r; + else + referenceChannelData = data_g; + end + %Med Align + parfor f=1:size(referenceChannelData,3) + referenceChannelData(:,:,f) = imgaussfilt(referenceChannelData(:,:,f),2); + end + [rs, cs] = medAlign(referenceChannelData, nSubIm, 50, -inf); + %shift red and green channel + waitbar(j/numShiftCorrections, wb, 'Performing Med Align..'); + parfor i = 1:size(data_g,3) + data_r(:,:,i) = circshift(data_r(:,:,i),[rs(i),cs(i)]); + data_g(:,:,i) = circshift(data_g(:,:,i),[rs(i),cs(i)]); + end +end +%matVis(data_r,data_g); +%% Export Files +%save trial files +for i=1:numFolders + waitbar(i/numFolders, wb, 'Saving Trial Tiff Files..'); + %binning + data_r_save = uint16(binning(data_r(:,:,numFrameList(i)+1:numFrameList(i+1)), binningFactor, 'mean')); + data_g_save = uint16(binning(data_g(:,:,numFrameList(i)+1:numFrameList(i+1)), binningFactor, 'mean')); + + saveastiff(data_r_save, [outFolder filesep folders(i).name '_r.tif']); + saveastiff(data_g_save, [outFolder filesep folders(i).name '_g.tif']); +end + +%save big tiff file +data_r = uint16(binning(data_r, binningFactor, 'mean')); +data_g = uint16(binning(data_g, binningFactor, 'mean')); +disp('Saving Big Data Set..'); +waitbar(0, wb, 'Saving Big Tiff Files..'); +options.big = true; +saveastiff(data_r, [outFolder filesep 'complete_r.tif'], options); +waitbar(0.5, wb, 'Saving Big Tiff Files..'); +saveastiff(data_g, [outFolder filesep 'complete_g.tif'], options); +%% +close(wb); +disp('Finished Script!'); \ No newline at end of file diff --git a/functions/CellSortLoadFilesFromAlignmentScript.m b/functions/CellSortLoadFilesFromAlignmentScript.m new file mode 100644 index 0000000..36c6417 --- /dev/null +++ b/functions/CellSortLoadFilesFromAlignmentScript.m @@ -0,0 +1,59 @@ +function [data_g_array, data_r_array, numFrameList, fn_green, fn_red, greenFiles, redFiles] = CellSortLoadFilesFromAlignmentScript(outFolder) +greenFiles = dir('*_g*.tif*'); +redFiles = dir('*_r*.tif*'); +%delete complete file from file list +greenFiles(end)=[]; +redFiles(end)=[]; + +fn_green = greenFiles(1).name; +fn_red = redFiles(1).name; +%load files +numberGreen = size(greenFiles,1); +numberRed = size(redFiles,1); +if numberGreen ~= numberRed + error('Unequal number of red and green channel files!!!'); +end + +%load trials +disp('Loading Trial Files..'); +parfor i = 1:numberGreen + data_r{i} = readTiff(redFiles(i).name); + data_g{i} = readTiff(greenFiles(i).name); +end + +%put them in single arrays +numFrames = 0; +numFrameList = zeros(1,numberGreen); +for i = 1:numberGreen + numFrames = numFrames + size(data_g{i},3); + numFrameList(i+1) = numFrames; +end + +%preallocate data +data_r_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_r{1})); +data_g_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_g{1})); +disp('Creating Big Data Set..'); +for i = 1:numberGreen + data_r_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_r{i}; + data_r{i} = []; + data_g_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_g{i}; + data_g{i} = []; +end + +%calculate quality plot +reference = mean(data_r_array, 3); +qualityPlot = zeros(1,size(data_r_array, 3)); +parfor i = 1:size(data_r_array,3) + qualityPlot(i) = sqrt(squeeze(mean(mean((cast(data_r_array(:,:,i),'like', reference) - reference).^2,1),2))); +end +figure('Name','Quality Plot'); +plot(qualityPlot); +for i=1:numberGreen + vline(numFrameList(i), 'black', greenFiles(i).name); +end +title('Quality Of Shift Correction'); +xlabel('frame'); +ylabel('std of frame'); + +disp('Finished Loading Trial Files!'); +end diff --git a/functions/trialAlignmentScript_Belen.m b/functions/trialAlignmentScript_Belen.m new file mode 100644 index 0000000..1bf96fe --- /dev/null +++ b/functions/trialAlignmentScript_Belen.m @@ -0,0 +1,210 @@ +clear all +close all +clc +%% Load Trial Files +numberShiftCorrections = 4; +inFolder = 'D:\data\Leona'; +outFolder = 'D:\data\out'; +binningFactor = [1, 1, 2]; +nSubIm = 10; + + + +%% load single tif files of trials to ram +%operations +currentFolder = pwd; +cd(inFolder); +folders = dir; + +for k = length(folders):-1:1 + % remove non-folders + if ~folders(k).isdir + folders(k) = [ ]; + continue + end + % remove folders starting with . + fname = folders(k).name; + if fname(1) == '.' + folders(k) = [ ]; + end +end + +numFolders = length(folders); + +%iterate through all folders +for f = 1:numFolders + %go into folder + cd(inFolder); + cd(folders(f).name); + greenFiles = dir('ChanA_*_*.tif'); + redFiles = dir('ChanB_*_*.tif'); + %check if fileNumber is the same + if size(greenFiles, 1) ~= size(redFiles, 1) + error(['Unequal number of files in trial folder "', folders(f).name, '"!!']); + end + numFiles = size(greenFiles, 1); + + %load first red frame to get resolution and being able to preallocate + temp = readTiffNoStack(redFiles(1).name); + res = size(temp); + + %preallocate data_r + data_r = zeros(res(1), res(2), numFiles); + data_g = zeros(res(1), res(2), numFiles); + %load data + disp(['Loading Files In Folder ', folders(f).name]); + parfor i=1:numFiles + data_r(:,:,i) = readTiffNoStack(redFiles(i).name); + data_g(:,:,i) = readTiffNoStack(greenFiles(i).name); + end + + disp(['Shift Correction Of Files In Folder ', folders(f).name]); + %do the shift correction + [rs, cs] = medAlign(data_r, nSubIm, 50, -inf); + + %shift red and green channel + disp(['Shift Data Arrays Of Files In Folder ', folders(f).name]); + parfor i = 1:numFiles + data_r(:,:,i) = circshift(data_r(:,:,i),[rs(i),cs(i)]); + data_g(:,:,i) = circshift(data_g(:,:,i),[rs(i),cs(i)]); + end + + %save stacks in memory + cd(outFolder); + disp(['Write Files Of Folder ', folders(f).name ' in ' outFolder ' to RAM']); + data_r_complete{f} = data_r; + data_g_complete{f} = data_g; +end + +disp('Finished Shift Correction And Fusing Of Data!'); +%go back to old current folder +cd(currentFolder); +clear data_r data_g +data_r = data_r_complete; +data_g = data_g_complete; +clear data_r_complete data_g_complete +numberGreen = size(data_g,2); +%% do shift correction +%%shift correct trials to each other +%do shift correction +for shiftCorrectionCounter = 1:numberShiftCorrections +disp('Performing Shift Correction On All Trials..'); +reference = median(data_r{1},3); +for i = 1:numberGreen + disp(['Working on Trial ' num2str(i)]); + medianProj = median(data_r{i},3); + shiftVector = findshift(reference, medianProj, 'iter', 0, 0.25*size(reference,1)); + %shift frames + for f = 1:size(data_r{i},3) + data_r{i}(:,:,f) = imtranslate(data_r{i}(:,:,f),shiftVector', 'linear'); + data_g{i}(:,:,f) = imtranslate(data_g{i}(:,:,f),shiftVector', 'linear'); + end +end +%%do another med align +for j =1:numberGreen + disp(['Working on Trial ' num2str(j)]); + [rs, cs] = medAlign(data_r{j}, nSubIm, 50, -inf); + temp_r = data_r{j}; + temp_g = data_g{j}; + %shift red and green channel + parfor f = 1:size(data_r{j},3) + temp_r(:,:,f) = circshift(temp_r(:,:,f),[rs(f),cs(f)]); + temp_g(:,:,f) = circshift(temp_g(:,:,f),[rs(f),cs(f)]); + end + data_r{j} = temp_r; + data_g{j} = temp_g; +end +%%do another shift correction for every frame, takes some time +reference = median(data_r{1},3); +numberGreen = size(data_g,2); +for i = 1:numberGreen + disp(['Working on Trial ' num2str(i)]); + for f = 1:size(data_r{i},3) + shiftVector = findshift(reference, data_r{j}(:,:,f), 'iter',0, 0.25*size(reference,1)); + %shift frames + + data_r{i}(:,:,f) = imtranslate(data_r{i}(:,:,f),shiftVector', 'linear'); + data_g{i}(:,:,f) = imtranslate(data_g{i}(:,:,f),shiftVector', 'linear'); + end +end +%%do another shift correctionto align trials to each other +reference = median(data_r{1},3); +numberGreen = size(data_g,2); +for i = 1:numberGreen + disp(['Working on Trial ' num2str(i)]); + medianProj = median(data_r{i},3); + shiftVector = findshift(reference, medianProj, 'iter',0, 0.25*size(reference,1)); + %shift frames + for f = 1:size(data_r{i},3) + data_r{i}(:,:,f) = imtranslate(data_r{i}(:,:,f),shiftVector', 'linear'); + data_g{i}(:,:,f) = imtranslate(data_g{i}(:,:,f),shiftVector', 'linear'); + end +end +end +%%visualize data +numFrames = 0; +numFrameList = zeros(1,numberGreen); +for i = 1:numberGreen + numFrames = numFrames + size(data_g{i},3); + numFrameList(i+1) = numFrames; +end + +%preallocate data +data_r_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_r{1})); +data_g_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_g{1})); +disp('Creating Big Data Set..'); +for i = 1:numberGreen + data_r_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_r{i}; + data_g_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_g{i}; +end +%% save tiff files +parfor i=1:numberGreen + %binning + data_r{i} = uint16(binning(data_r{i}, binningFactor, 'mean')); + data_g{i} = uint16(binning(data_g{i}, binningFactor, 'mean')); + + saveastiff(data_r{i}, [outFolder filesep folders(i).name '_r.tif']); + saveastiff(data_g{i}, [outFolder filesep folders(i).name '_g.tif']); +end +%% generate quality plot +%put them in single arrays +numFrames = 0; +numFrameList = zeros(1,numberGreen); +for i = 1:numberGreen + numFrames = numFrames + size(data_g{i},3); + numFrameList(i+1) = numFrames; +end + +%preallocate data +data_r_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_r{1})); +data_g_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_g{1})); +disp('Creating Big Data Set..'); +for i = 1:numberGreen + data_r_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_r{i}; + data_r{i} = []; + data_g_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_g{i}; + data_g{i} = []; +end + +%calculate quality plot +reference = mean(data_r_array, 3); +qualityPlot = zeros(1,size(data_r_array, 3)); +parfor i = 1:size(data_r_array,3) + qualityPlot(i) = sqrt(squeeze(mean(mean((cast(data_r_array(:,:,i),'like', reference) - reference).^2,1),2))); +end +figure('Name','Quality Plot'); +plot(qualityPlot); +for i=1:numberGreen + vline(numFrameList(i), 'black', greenFiles(i).name); +end +title('Quality Of Shift Correction'); +xlabel('frame'); +ylabel('std of frame'); +%% export complete files +disp('Saving Big Data Set..'); +options.big = true; +saveastiff(data_r_array, [outFolder filesep 'complete_r.tif'], options); +saveastiff(data_g_array, [outFolder filesep 'complete_g.tif'], options); +%% Finished +clear all +disp('Finished Complete Script!!!'); \ No newline at end of file diff --git a/functions/trialAlignmentScript_Leona.m b/functions/trialAlignmentScript_Leona.m index 076b9b0..770c9e5 100644 --- a/functions/trialAlignmentScript_Leona.m +++ b/functions/trialAlignmentScript_Leona.m @@ -5,7 +5,7 @@ inFolder = 'D:\data\Leona'; outFolder = 'D:\data\out'; binningFactor = [1, 1, 2]; -nSubIm = 10; +nSubIm = 100; diff --git a/functions/trialAlignmentScript_alignOnGreen_Leona.m b/functions/trialAlignmentScript_alignOnGreen_Leona.m new file mode 100644 index 0000000..a8c1acd --- /dev/null +++ b/functions/trialAlignmentScript_alignOnGreen_Leona.m @@ -0,0 +1,190 @@ +clear all +close all +clc +%% Load Trial Files +inFolder = 'D:\data\Leona'; +outFolder = 'D:\data\out'; +binningFactor = [1, 1, 2]; +nSubIm = 100; + + + +%% load single tif files of trials to ram +%operations +currentFolder = pwd; +cd(inFolder); +folders = dir; + +for k = length(folders):-1:1 + % remove non-folders + if ~folders(k).isdir + folders(k) = [ ]; + continue + end + % remove folders starting with . + fname = folders(k).name; + if fname(1) == '.' + folders(k) = [ ]; + end +end + +numFolders = length(folders); + +%iterate through all folders +for f = 1:numFolders + %go into folder + cd(inFolder); + cd(folders(f).name); + greenFiles = dir('ChanA_*_*.tif'); + redFiles = dir('ChanB_*_*.tif'); + %check if fileNumber is the same + if size(greenFiles, 1) ~= size(redFiles, 1) + error(['Unequal number of files in trial folder "', folders(f).name, '"!!']); + end + numFiles = size(greenFiles, 1); + + %load first red frame to get resolution and being able to preallocate + temp = readTiffNoStack(redFiles(1).name); + res = size(temp); + + %preallocate data_r + data_r = zeros(res(1), res(2), numFiles); + data_g = zeros(res(1), res(2), numFiles); + %load data + disp(['Loading Files In Folder ', folders(f).name]); + parfor i=1:numFiles + data_r(:,:,i) = readTiffNoStack(redFiles(i).name); + data_g(:,:,i) = readTiffNoStack(greenFiles(i).name); + end + + disp(['Shift Correction Of Files In Folder ', folders(f).name]); + %do the shift correction + [rs, cs] = medAlign(data_g, nSubIm, 50, -inf); + + %shift red and green channel + disp(['Shift Data Arrays Of Files In Folder ', folders(f).name]); + parfor i = 1:numFiles + data_r(:,:,i) = circshift(data_r(:,:,i),[rs(i),cs(i)]); + data_g(:,:,i) = circshift(data_g(:,:,i),[rs(i),cs(i)]); + end + + %save stacks in memory + cd(outFolder); + disp(['Write Files Of Folder ', folders(f).name ' in ' outFolder ' to RAM']); + data_r_complete{f} = data_r; + data_g_complete{f} = data_g; +end + +disp('Finished Shift Correction And Fusing Of Data!'); +%go back to old current folder +cd(currentFolder); +clear data_r data_g +data_r = data_r_complete; +data_g = data_g_complete; +clear data_r_complete data_g_complete +%% shift correct trials to each other +%do shift correction +disp('Performing Shift Correction On All Trials..'); +reference = median(data_g{1},3); +numberGreen = size(data_g,2); +for i = 1:numberGreen + disp(['Working on Trial ' num2str(i)]); + medianProj = median(data_g{i},3); + shiftVector = findshift(reference, medianProj, 'iter', 0, 0.25*size(reference,1)); + %shift frames + for f = 1:size(data_r{i},3) + data_r{i}(:,:,f) = imtranslate(data_r{i}(:,:,f),shiftVector', 'linear'); + data_g{i}(:,:,f) = imtranslate(data_g{i}(:,:,f),shiftVector', 'linear'); + end +end +%% do another med align +for j =1:numberGreen + disp(['Working on Trial ' num2str(j)]); + [rs, cs] = medAlign(data_g{j}, nSubIm, 50, -inf); + temp_r = data_r{j}; + temp_g = data_g{j}; + %shift red and green channel + parfor f = 1:size(data_g{j},3) + temp_r(:,:,f) = circshift(temp_r(:,:,f),[rs(f),cs(f)]); + temp_g(:,:,f) = circshift(temp_g(:,:,f),[rs(f),cs(f)]); + end + data_r{j} = temp_r; + data_g{j} = temp_g; +end +%% do another shift correction for every frame, takes some time +reference = median(data_g{1},3); +numberGreen = size(data_g,2); +for i = 1:numberGreen + disp(['Working on Trial ' num2str(i)]); + for f = 1:size(data_r{i},3) + shiftVector = findshift(reference, data_g{j}(:,:,f), 'iter',0, 0.25*size(reference,1)); + %shift frames + + data_r{i}(:,:,f) = imtranslate(data_r{i}(:,:,f),shiftVector', 'linear'); + data_g{i}(:,:,f) = imtranslate(data_g{i}(:,:,f),shiftVector', 'linear'); + end +end +%% do another shift correctionto align trials to each other +reference = median(data_g{1},3); +numberGreen = size(data_g,2); +for i = 1:numberGreen + disp(['Working on Trial ' num2str(i)]); + medianProj = median(data_g{i},3); + shiftVector = findshift(reference, medianProj, 'iter',0, 0.25*size(reference,1)); + %shift frames + for f = 1:size(data_r{i},3) + data_r{i}(:,:,f) = imtranslate(data_r{i}(:,:,f),shiftVector', 'linear'); + data_g{i}(:,:,f) = imtranslate(data_g{i}(:,:,f),shiftVector', 'linear'); + end +end +%% save tiff files +parfor i=1:numberGreen + %binning + data_r{i} = uint16(binning(data_r{i}, binningFactor, 'mean')); + data_g{i} = uint16(binning(data_g{i}, binningFactor, 'mean')); + + saveastiff(data_r{i}, [outFolder filesep folders(i).name '_r.tif']); + saveastiff(data_g{i}, [outFolder filesep folders(i).name '_g.tif']); +end +%% generate quality plot +%put them in single arrays +numFrames = 0; +numFrameList = zeros(1,numberGreen); +for i = 1:numberGreen + numFrames = numFrames + size(data_g{i},3); + numFrameList(i+1) = numFrames; +end + +%preallocate data +data_r_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_r{1})); +data_g_array = zeros(size(data_g{i},1),size(data_g{i},2),numFrames, class(data_g{1})); +disp('Creating Big Data Set..'); +for i = 1:numberGreen + data_r_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_r{i}; + data_r{i} = []; + data_g_array(:,:,(numFrameList(i)+1):numFrameList(i+1)) = data_g{i}; + data_g{i} = []; +end + +%calculate quality plot +reference = mean(data_r_array, 3); +qualityPlot = zeros(1,size(data_r_array, 3)); +parfor i = 1:size(data_r_array,3) + qualityPlot(i) = sqrt(squeeze(mean(mean((cast(data_r_array(:,:,i),'like', reference) - reference).^2,1),2))); +end +figure('Name','Quality Plot'); +plot(qualityPlot); +for i=1:numberGreen + vline(numFrameList(i), 'black', greenFiles(i).name); +end +title('Quality Of Shift Correction'); +xlabel('frame'); +ylabel('std of frame'); +%% export complete files +disp('Saving Big Data Set..'); +options.big = true; +saveastiff(data_r_array, [outFolder filesep folders(i).name '_complete_r.tif'], options); +saveastiff(data_g_array, [outFolder filesep folders(i).name '_complete_g.tif'], options); +%% Finished +clear all +disp('Finished Complete Script!!!'); \ No newline at end of file diff --git a/main.m b/main.m index c963623..839e91e 100644 --- a/main.m +++ b/main.m @@ -21,6 +21,9 @@ % fn_red = 'data_r.tif'; % data_g = readTiff(fn_green); % data_r = readTiff(fn_red); +%% load files from alignment script +outFolder = 'D:\data\out'; +[data_g, data_r, frames, fn_green, fn_red, fileNamesGreen, fileNamesRed] = CellSortLoadFilesFromAlignmentScript(outFolder); %% Crop Data %If you want to crop the data to get rid of the shift correction artifacts, %type in the intervals of pixels in x and y directions you want to keep and