#ifndef _theplu_yat_normalization_quantile_normalizer_
#define _theplu_yat_normalization_quantile_normalizer_
/*
Copyright (C) 2008 Peter Johansson
This file is part of the yat library, http://dev.thep.lu.se/yat
The yat library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3 of the
License, or (at your option) any later version.
The yat library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with yat. If not, see .
*/
namespace theplu {
namespace yat {
namespace utility {
class Matrix;
}
namespace normalization {
/**
\brief Perform quantile normalization
\since New in yat 0.5
*/
class QuantileNormalizer
{
public:
/**
The \a matrix is normalized by sorting each column, replacing
each value with the average across rows, and undo the sorting
in step 1. This results in a \a matrix in which each column has
the same distribution of data, and the rank of an element
within a column is preserved in the normalization.
\note Number of rows in \a matrix and \a result must match.
*/
void operator()(const utility::Matrix& matrix,
utility::Matrix& result) const;
};
}}} // end of namespace normalization, yat and thep
#endif