function name_strs = neuronNameFromId(fileset, neuron_ids)
% neuronNameFromId - Returns string neuron names from a list of neuron ids.
%
% Usage:
% name_strs = neuronNameFromId(fileset, neuron_ids)
%
% Description:
%
% Parameters:
% fileset: A physiol_cip_traceset_fileset object.
% neuron_ids: One or more neuron ids in a vector.
%
% Returns:
% name_strs: Cell array of neuron names corresponding to the ids given.
%
% See also: physiol_cip_traceset_fileset
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2007/11/16
% 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.
neuron_ids_all = cell2mat(struct2cell(fileset.neuron_idx));
neuron_names = fieldnames(fileset.neuron_idx);
% sort the ids
[sorted_ids, sort_indices] = sortrows(neuron_ids_all);
% assertion
diffed_ids = diff(sorted_ids);
if sum(diffed_ids) ~= (size(sorted_ids) - 1)
disp('offending neuron_ids:')
sorted_ids(diffed_ids ~= 1)
error('Neuron ids contain gaps or duplicates!');
end
% return names (assuming neuron_ids_all are strictly icnreasing)
name_strs = neuron_names(sort_indices(neuron_ids));