Revision d4891b3428d062f9e4bf86805fe054ed1ce79674 authored by btenner on 26 October 2020, 06:39:25 UTC, committed by GitHub on 26 October 2020, 06:39:25 UTC
1 parent 707c9bf
phase_shift.m
%%Organizes min6 traces from excel file from ImageAnalyzer
function data = phase_shift(conglom_data,interest)
num_cells = round((size(conglom_data,2)-1)/7); %num of cells - assuming channels in IA
num_timepoints = size(conglom_data,1); %num of time points
data = struct;
data.time = conglom_data(:,1);
data.cfp_direct = conglom_data(:,2:num_cells+1);
data.yfpfret = conglom_data(:,num_cells+2:2*num_cells+1);
data.yfp_direct = conglom_data(:,2*num_cells+2:3*num_cells+1);
data.FRET = conglom_data(:,3*num_cells+2:4*num_cells+1);
data.FRET_norm = conglom_data(:,4*num_cells+2:5*num_cells+1);
data.rfp = conglom_data(:,5*num_cells+2:6*num_cells+1);
data.rfp_norm = conglom_data(:,6*num_cells+2:end);
phase = [];
strength = [];
regularity = [];
%rfp_lpfilt = data.rfp_norm(:,interest) - filter((1/10)*ones(1,10),1,data.rfp_norm(:,interest));
%rfp_corrected = data.rfp_norm - repmat(mean(data.rfp_norm(1:8,:)),size(data.rfp_norm,1),1);
%fret_corrected = data.FRET_norm - repmat(mean(data.FRET_norm(1:8,:)),size(data.rfp_norm,1),1);
%high-pass filter calcium and fret
rfp_corrected = data.rfp_norm - reshape(smooth(data.rfp_norm,20),size(data.rfp_norm));
fret_corrected = data.FRET_norm - reshape(smooth(data.FRET_norm,20),size(data.rfp_norm));
%normalize calcium and fret so max = 1
rfp_corrected = rfp_corrected./repmat(max(rfp_corrected),size(rfp_corrected,1),1);
fret_corrected = fret_corrected./repmat(max(fret_corrected),size(fret_corrected,1),1);
%just needed to put quest dialog
figure
fprintf('Move figure away from the center of the screen then press enter... \n')
pause
%loop through each cell
for i=1:size(rfp_corrected,2)
%calculate cross corr between calcium and fret
[acor,lag] = xcorr(rfp_corrected(6:end,i),fret_corrected(6:end,i)); %calculate autocorrelation between rfp sig and fret sig
%redefine lag and acor so that we only look at 40 time-frame window
lag = lag(ceil(end/2)-20:ceil(end/2)+20);
acor = acor(ceil(end/2)-20:ceil(end/2)+20);
%peak pick - change prom if necessary
[pks,locs] = findpeaks(acor/max(acor),lag,'MinPeakProminence',0.7); % find the peaks of the xcorr
disp(i)
plotyy(data.time,data.FRET_norm(:,i),data.time,data.rfp_norm(:,i));
% figure;
% subplot(1,3,1);
% plotyy(data.time,data.FRET_norm(:,i),data.time,data.rfp_norm(:,i));
% subplot(1,3,2);
% plotyy(data.time,fret_corrected(:,i),data.time,rfp_corrected(:,i));
% subplot(1,3,3);
% plot(lag,acor);
% findpeaks(acor/max(acor),lag,'MinPeakProminence',0.7);
%locs
if ~isempty(min(abs(locs)))
phase(1,i) = min(abs(locs));
strength(1,i) = max(acor);
else
phase(1,i) = NaN;
strength(1,i) =NaN;
end
questStr = 'What is this cells phase relationship?';
choice = questdlg(questStr, 'Choose One','In-phase','Out-of-phase','Inconcl','Inconcl');
switch choice
case 'In-phase'
phase(2,i) = 1;
case 'Out-of-phase'
phase(2,i) = 2;
case 'Inconcl'
phase(2,i) = 3;
end
questStr = 'Is this cell responding (calcium)?';
choice = questdlg(questStr, 'Choose One','Regular','Irregular','No','No');
switch choice
case 'Regular'
regularity(1,i) = 1;
case 'Irregular'
regularity(1,i) = 2;
case 'No'
regularity(1,i) = 3;
end
% figure;
% plotyy(data.time,fret_corrected(:,i),data.time,rfp_corrected(:,i));
end
data.phase = phase;
data.strength = strength;
data.regularity = regularity;
close all
end
Computing file changes ...