function param_names = paramNames(fileset, item)
% paramNames - Returns the ordered names of parameters for this fileset.
%
% Usage:
% param_names = paramNames(fileset, item)
%
% Description:
% Looks at the filename of the first file to find the parameter names.
%
% Parameters:
% fileset: A params_tests_fileset.
% item: (Optional) If given, read param names by loading item at this index.
%
% Returns:
% params_names: Cell array with ordered parameter names.
%
% See also: params_tests_fileset, testNames, parseFilenameNamesVals
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2004/09/10
% Copyright (c) 2004-14 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('item', 'var')
item = 1;
end
props = get(fileset, 'props');
param_names = {};
filename = getItem(fileset, item);
fullname = fullfile(fileset.path, filename);
% if given, use the regular expression to parse parameters
if isfield(props, 'fileParamsRegexp')
try
param_regexp = regexp(fullname, props.fileParamsRegexp, 'names');
num_params = length(param_regexp);
% convert the regexp sturcture into cell array
for param_num = 1:num_params
param_names{param_num} = param_regexp(param_num).name;
end
catch me
error('pandora:fileset:regexpError', ...
[me.message ': props.fileParamsRegexp must be a regular expression ' ...
'with named captures for variables "name" and "val". See ' ...
'"names" option to regexp.']);
end
% if props.num_params ~= 0 then parse file names
elseif ~ isfield(props, 'num_params') || props.num_params ~= 0
names_vals = parseFilenameNamesVals(fullname, props);
if isfield(props, 'num_params')
num_params = props.num_params;
else
num_params = size(names_vals, 1);
end
param_names = { names_vals{1:num_params, 1} };
end
% parameter names in addition to the ones specified in data filenames
if isfield(props, 'param_names')
str_index = strmatch('trial', props.param_names);
trues = true(1, length(props.param_names));
if ~ isempty(str_index)
% Remove the parameter "trial" from the list of parameters
% coming from the param rows file
trues(str_index) = false;
end
% Convert param names to cell array
param_names = { props.param_names{trues}, param_names{:} };
end