function exp = stats_read(dataset, algo) % experiment_data = stats_read(dataset, algo) % % Read experiments statistics created by "create_stats.sh". % % For example: % >> exp_aces_fts1 = stats_read('aces','fts1') % fprintf('Deleting cached data... (clear functions) \n'); clear functions fprintf('..done\n'); exp = struct(); exp.dataset = dataset; exp.algo = algo; directory = sprintf('%s_chunks/%s', dataset, algo); addpath(directory) for i=1:1000 script=sprintf('stats_%03d',i); if exist(script) sushi = eval(script); exp.raw{i} = cells2array(sushi); else fprintf('File %s does not exist.\n', script); break; end end rmpath(directory) function s = cells2array(c) names = fieldnames(c{1}); for i=1:size(names,1) name = names{i}; fprintf('Reading %s\n',name); if ischar(c{1}.(name)) continue end s.(name) = join(collect(c, name)); end function res = join(cells) columns = size(cells,2); rows = size(cells{1},1); res = zeros(rows, columns); for j=1:columns if size(cells{j},1) > 0 res(1:rows,j) = cells{j}; else fprintf('No value for cell %d\n', j); pause(0.01); res(1:rows,j) = zeros(rows,1) * NaN; end end function res = collect(cells, field) res = {}; k = 1; for i=1:size(cells,2) s = cells{i}; if isfield(s, field) res{k} = s.(field); else ref{k} = nan; end k = k + 1; end