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