function row_indices = getParamRowIndices(a_db, rows, to_db)

% getParamRowIndices - Returns indices of rows with matching parameter values from rows of this db.
%
% Usage:
% row_indices = getParamRowIndices(a_db, rows, to_db)
%
% Description:
%
%   Parameters:
%	a_db: A params_tests_db object.
%	rows: rows to find indices for.
%	to_db: Where to find the matching rows.
%
%   Returns:
%	row_indices: Array of row indices.
%
% See also: makeModifiedParamDB, scanParamAllRows, scaleParamsOneRow, writeParFile
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2005/01/14

% 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 ischar(rows) && strcmp(rows, ':')
  rows = 1:dbsize(a_db, 1);
end

data = get(a_db, 'data');
row_indices = [];
for row_num=rows
  row = data(row_num, :);
  lrows = true(dbsize(to_db, 1), 1);
  for param_num=1:a_db.num_params
    col_db = onlyRowsTests(to_db, ':', param_num);
    lrows = lrows & (col_db >= (row(param_num) - eps) & col_db <= (row(param_num) + eps));
  end
  found_num = find(lrows);
  if length(found_num) > 1 
    warning(['Found multiple matches for row ' num2str(row_num) '.' ]);
    found_num = NaN;
  elseif length(found_num) == 0
    warning(['No match found for row ' num2str(row_num) '.' ]);
    row
    found_num = NaN;
  end
  row_indices = [row_indices, found_num];  
end
