/** 
* @file LabeledSet.h
* @brief Transformations of Labeled set of vectors (only vectors are transformed)
* @author Mi.Ke
* @date 20.01.2010

*/
#include <vector>
#include <map>

#include "vislearning/cbaselib/LabeledSet.h"
#include "vislearning/cbaselib/LabeledSetVectorTransform.h"

using namespace OBJREC;
using namespace std;
using namespace NICE;

		///transformation using no parameters.
		LabeledSetVector* LabeledSetVectorTransform::transform (LabeledSetVector& labeledSet1 ){
			LabeledSetVector* transformedLabeledSet = new LabeledSetVector();
			
			LOOP_ALL( labeledSet1 ) 
			{
				EACH(classno,vec)
				transformedLabeledSet->add(classno, trans->transform(vec));
			}
			return transformedLabeledSet;
		};
		///transformation using one vectorial parameter (equal to many scalar ones).
		LabeledSetVector* LabeledSetVectorTransform::transform (LabeledSetVector& labeledSet1, const NICE::Vector& params){
			std::vector<NICE::Vector> param_vec;
			param_vec.push_back(params);
			return LabeledSetVectorTransform::transform( labeledSet1, param_vec );
		}
		///transformation using many vectorial parameters.
		LabeledSetVector* LabeledSetVectorTransform::transform (LabeledSetVector& labeledSet1, const std::vector<NICE::Vector>& params){
			LabeledSetVector* transformedLabeledSet = new LabeledSetVector();
			LOOP_ALL( labeledSet1 ) 
			{
				EACH(classno,vec)
				transformedLabeledSet->add(classno, trans->transform(vec,params));
			}
			return transformedLabeledSet;
		};