CKernelMeanMatching::CKernelMeanMatching(CKernel* kernel, SGVector<index_t> training_indices,
                                         SGVector<index_t> test_indices) :
	CSGObject(), m_kernel(NULL)
{
	set_kernel(kernel);
	set_training_indices(training_indices);
	set_test_indices(test_indices);
}
void InstancesInformation::from_XML(TiXmlElement* instances_information_element)
{
   if(!instances_information_element)
   {
      std::ostringstream buffer;

      buffer << "OpenNN Exception: InstancesInformation class.\n"
             << "void from_XML(TiXmlElement*) method.\n"
             << "Pointer to instances information element is NULL.\n";

	  throw std::logic_error(buffer.str());   
   }

   // Instances number 

   TiXmlElement* instances_number_element = instances_information_element->FirstChildElement("InstancesNumber");

   if(instances_number_element)
   {        
      unsigned int new_instances_number = atoi(instances_number_element->GetText());           
  
      try
      {
         set_instances_number(new_instances_number);
      }
      catch(std::exception& e)
      {
         std::cout << e.what() << std::endl;		 
      }      
   }

   // Training indices

   TiXmlElement* training_indices_element = instances_information_element->FirstChildElement("TrainingIndices");

   if(training_indices_element)
   {        
      Vector<unsigned int> new_training_indices;
      new_training_indices.parse(training_indices_element->GetText());
	  new_training_indices -= 1;

      try
      {
         set_training_indices(new_training_indices);
      }
      catch(std::exception& e)
      {
         std::cout << e.what() << std::endl;		 
      }
   }

   // Generalization indices

   TiXmlElement* generalization_indices_element = instances_information_element->FirstChildElement("GeneralizationIndices");

   if(generalization_indices_element)
   {        
      Vector<unsigned int> new_generalization_indices;
      new_generalization_indices.parse(generalization_indices_element->GetText());
	  new_generalization_indices -= 1;

      try
      {
         set_generalization_indices(new_generalization_indices);
      }
      catch(std::exception& e)
      {
         std::cout << e.what() << std::endl;		 
      }
   }

   // Testing indices

   TiXmlElement* testing_indices_element = instances_information_element->FirstChildElement("TestingIndices");

   if(testing_indices_element)
   {        
      Vector<unsigned int> new_testing_indices;
      new_testing_indices.parse(testing_indices_element->GetText());
	  new_testing_indices -= 1;

      try
      {
         set_testing_indices(new_testing_indices);
      }
      catch(std::exception& e)
      {
         std::cout << e.what() << std::endl;		 
      }
   }
}