% gettracelist2 - Gets a list of the form: '1 3 7-10' and returns a column vector with the traces numbers, and the number of traces.
%
% Usage:
% [traces, ntraces] = gettracelist2('list');
%
% Description:
% Please note the space between single traces and the dash for ranges of
%traces.
%
% Author: <adelgado@biology.emory.edu>
function [traces, ntraces] = gettracelist2(liststr)
if isnumeric(liststr) % add by Li Su. for compatibility just in case.
traces=liststr;
else
tidx = sscanf(liststr, '%i');
rgs = find(tidx(:, 1) < 0);
nrgs = size(rgs);
if (nrgs(1, 1)) >= 1;
tidx(rgs(:, 1), 1) = tidx(rgs(:, 1), 1)*-1;
end
traces = zeros(max(tidx), 1);
ntrs = size(tidx);
for i = 1: ntrs(1, 1);
traces(tidx(i, 1), 1) = tidx(i, 1);
end
ridx = zeros(nrgs(1, 1), 1);
if (nrgs(1, 1)) >= 1;
for i = 1: nrgs(1, 1);
ridx(i, 1) = tidx(rgs(i, 1), 1)-tidx(rgs(i, 1)-1, 1)+1;
end
for i = 1: nrgs(1, 1);
range = [tidx(rgs(i, 1)-1, 1): tidx(rgs(i, 1), 1)];
traces(tidx(rgs(i, 1)-1, 1): tidx(rgs(i, 1), 1), 1) = range';
end
end
traces = find(traces(:, 1) ~= 0);
clear tidx ntrs ridx nrgs rgs range trls;
end
ntrs = size(traces);
ntraces = ntrs(1, 1);