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_SpotOn.m 0 → 100644
+ 98
0
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
% Convert the output of vbSPT synthetic to input for Spot-On
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
clear
 
clear all
 
% Select the xml result file generated by icy
 
[fn pt] = uigetfile(('*.mat'), 'Choose a File');
 
load(fn)
 
 
time_int = 0.050;
 
min_length = 1; %min trajectory length minus 1
 
%% 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
 
 
 
 
% if length(V) >= 3
 
% trackedPar(k).xy = [finalTraj{k}(V,1), finalTraj{k}(V,2)];
 
% trackedPar(k).Frame = transpose(V);
 
% trackedPar(k).TimeStamp = trackedPar(k).Frame * time_int;
 
% else
 
% end
 
 
 
 
trackedPar = trackedPar(~cellfun(@isempty,{trackedPar.xy}));
 
save(strcat('spot-On_',strtok(fn, '.'), '.mat'))
Loading