/** 
* @file KernelUtils.h
* @author Erik Rodner
* @date 03/01/2010

*/
#ifndef _NICE_OBJREC_KERNELUTILSINCLUDE
#define _NICE_OBJREC_KERNELUTILSINCLUDE

#include <vector>

#include "core/vector/MatrixT.h"
#include "core/basics/Config.h"

namespace OBJREC {
  
/** @class KernelUtils
 * some utilities to select kernel sub matrices etc. 
 *
 * @author Erik Rodner
 */
class KernelUtils
{
    public:
  		static void selectExamples ( const NICE::Config *conf, const NICE::Vector & labels,
			std::vector<int> & trainSelection, std::vector<int> & testSelection );

 		static void getKernelMatrix ( const std::vector<int> & trainSelection, 
			const NICE::Matrix & kernelMatrix, const NICE::Vector & labels, 
			NICE::Matrix & kernelMatrixTrain, NICE::Vector & labelsTrain );
    
		static void getKernelVector ( const std::vector<int> & trainSelection, 
			const NICE::Matrix & kernelMatrix, uint index, NICE::Vector & kernelVector );

};

}

#endif
