FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects

angles

Merged C. Roussos requested to merge cr607-master-patch-11262 into master
vbSPT_to_DDMap.m 0 → 100644
+ 111
0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Convert the output of vbSPT synthetic to input for DDMap
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Select the xml result file generated by icy
clear all
[fn pt] = uigetfile(('*.mat'), 'Choose a File');
load(fn)
min_length = 2; %min traj length minus one
time_int = 0.050;
%% set number of trajectories
traj_no = 10000;
ct=1;
for k = 1 : traj_no
l = size(finalTraj{k},1);
V = [];
%create required struct
for i = 1:l
%take slice
if finalTraj{k}(i,3)>= -100 && finalTraj{k}(i,3)<= 100
V(i) = i;
end
end
V(V==0) = [];
%if M(i) = 2 then particle has reappeared in frame i+1 after
%disappearing for 1 or more frames
M = zeros(length(V)-1:1);
for j = 2 : length(V)
if V(j) - V(j-1) == 1
M(j-1) = 1;
else
M(j-1) = 2;
end
end
%chop trajectories
chop = [1, find(M == 2)];
%in case there are no blinks
if length(chop) == 1 && length(V)> 1
trackedPar(ct).xy = [finalTraj{k}(V,1)/1000, finalTraj{k}(V,2)/1000];
trackedPar(ct).Frame = transpose(V);
trackedPar(ct).TimeStamp = trackedPar(ct).Frame * time_int;
ct = ct+1;
elseif length(chop)>1 && length(V)> 1
%in case there are blinks
%add trajectories before the first 2
if chop(2) > min_length
trackedPar(ct).xy = [finalTraj{k}(V(1:chop(2)),1)/1000, finalTraj{k}(V(1:chop(2)),2)/1000];
trackedPar(ct).Frame = transpose(V(1:chop(2)));
trackedPar(ct).TimeStamp = trackedPar(ct).Frame * time_int;
ct = ct+1;
else
end
if length(chop) > 2
%add trajectories between 2s
for m =3:length(chop)
if (chop(m)-chop(m-1)) > min_length
trackedPar(ct).xy = [finalTraj{k}(V(chop(m-1)+1:chop(m)),1)/1000, finalTraj{k}(V(chop(m-1)+1:chop(m)),2)/1000];
trackedPar(ct).Frame = transpose(V(chop(m-1)+1:chop(m)));
trackedPar(ct).TimeStamp = trackedPar(ct).Frame * time_int;
ct = ct+1;
else
end
end
end
%add remaining trajectory after the last 2
if length(V) - chop(end) > min_length
trackedPar(ct).xy = [finalTraj{k}(V(chop(end)+1:end),1)/1000, finalTraj{k}(V(chop(end)+1:end),2)/1000];
trackedPar(ct).Frame = transpose(V(chop(end)+1:end));
trackedPar(ct).TimeStamp = trackedPar(ct).Frame * time_int;
ct = ct+1;
end
end
end
trackedPar = trackedPar(~cellfun(@isempty,{trackedPar.xy}));
S(1) = 0;
A = size(trackedPar);
for i = 1:A(2)
k = sum(S);
size_2d = size(trackedPar(i).xy);
size_1d = size_2d(1);
for j = 1:size_1d
Trajectory(j+k,1) = i;
Time(j+k,1) = trackedPar(i).Frame(j);
x(j+k,1) = trackedPar(i).xy(j);
y(j+k,1) = trackedPar(i).xy(j+size_1d);
end
S(i+1) = size_1d;
end
T = table(Trajectory,Time,x,y);
save(fullfile(pt, strcat('THOT_',strtok(fn, '.'), '.mat')), 'T');
\ No newline at end of file
Loading