function a_stats_db = statsBounds(a_db, tests, props)
% statsBounds - Generates a stats_db object with three rows corresponding to the mean, min, max and number of observations of the tests' distributions.
%
% Usage:
% a_stats_db = statsBounds(a_db, tests, props)
%
% Description:
% A page is generated for each page of data in db.
%
% Parameters:
% a_db: A tests_db object.
% tests: A selection of tests (see onlyRowsTests).
% props: A structure with any optional properties for stats_db.
%
% Returns:
% a_stats_db: A stats_db object.
%
% See also: tests_db
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2004/10/07
% Copyright (c) 2007 Cengiz Gunay <cengique@users.sf.net>.
% This work is licensed under the Academic Free License ("AFL")
% v. 3.0. To view a copy of this license, please look at the COPYING
% file distributed with this software or visit
% http://opensource.org/licenses/afl-3.0.php.
if ~ exist('props', 'var')
props = struct([]);
end
if ~ exist('tests', 'var')
tests = ':';
end
cols = tests2cols(a_db, tests);
num_pages = dbsize(a_db, 3);
pages=1:num_pages;
data = repmat(NaN, [4, length(cols), num_pages]);
for page_num=pages
a_page_db = onlyRowsTests(a_db, ':', tests, page_num);
if dbsize(a_page_db, 1) > 0
[means, n] = mean(a_page_db, 1);
data(:, :, page_num) = [get(means, 'data'); ...
min(get(a_page_db, 'data'), [], 1); ...
max(get(a_page_db, 'data'), [], 1); n];
end
end
row_names = {'mean', 'min', 'max', 'n'};
% Original column names
col_name_cell = fieldnames(a_db.col_idx);
col_names = col_name_cell(cols);
a_stats_db = stats_db(data, col_names, row_names, {}, ...
[ 'Mean value and min-max bounds from ' get(a_db, 'id') ], props);