def testCrossValidateSvm(self):
   glab.SetCorpus(EXAMPLE_LARGE_CORPUS)
   glab.ImprintS2Prototypes(NUM_PROTOTYPES)
   glab.CrossValidateSvm()
   e = glab.GetExperiment()
   self.assertEqual(e.train_results, None)
   self.assertNotEqual(e.test_results['accuracy'], None)
 def testImprintS2Prototypes(self):
   glab.SetCorpus(EXAMPLE_CORPUS)
   glab.ImprintS2Prototypes(NUM_PROTOTYPES)
   e = glab.GetExperiment()
   # S2 kernels are stored as a list of arrays, with one list entry per kernel
   # size. Check that we've imprinted NUM_PROTOTYPES patches for each kernel
   # size.
   self.assertEqual(map(len, e.model.s2_kernels),
       [ NUM_PROTOTYPES ] * len(e.model.s2_kernels) )
 def testStoreExperiment_notEmpty(self):
   temp_dir = TempDir()
   glab.SetCorpus(EXAMPLE_CORPUS)
   glab.ImprintS2Prototypes(10)
   glab.RunSvm()
   old_exp = glab.GetExperiment()
   exp_path = pjoin(temp_dir.dir, 'dat')
   glab.StoreExperiment(exp_path)
   new_exp = glab.LoadExperiment(exp_path)
   self.assertEqual(new_exp, old_exp)
 def _testSetCorpus(self, images, expected_classes):
   root = MockDirs(**images)
   glab.SetCorpus(root.dir, classes = expected_classes)
   e = glab.GetExperiment()
   self.assertEqual(e.corpus, root.dir)
   self.assertNotEqual(e.classes, None)
   if expected_classes == None:
     self.assertEqual(sorted(e.classes), sorted(images.keys()))
   else:
     self.assertEqual(e.classes, expected_classes)
   for idx in range(len(e.classes)):
     actual_images = sorted(map(os.path.basename,
         e.train_images[idx] + e.test_images[idx]))
     expected_images = sorted(images[e.classes[idx]])
     self.assertEqual(actual_images, expected_images)
 def _testSetTrainTestSplitFromDirs(self, train_images, test_images,
     expected_classes):
   root = MockDirs(train = train_images, test = test_images)
   glab.SetTrainTestSplitFromDirs(pjoin(root.dir, 'train'),
       pjoin(root.dir, 'test'), classes = expected_classes)
   e = glab.GetExperiment()
   self.assertNotEqual(e.classes, None)
   if expected_classes == None:
     self.assertEqual(sorted(e.classes), sorted(train_images.keys()))
   else:
     self.assertEqual(e.classes, expected_classes)
   for idx in range(len(e.classes)):
     cls = e.classes[idx]
     actual_images = sorted(map(os.path.basename, e.train_images[idx]))
     self.assertEqual(actual_images, sorted(train_images[cls]))
     actual_images = sorted(map(os.path.basename, e.test_images[idx]))
     self.assertEqual(actual_images, sorted(test_images[cls]))
 def _testSetCorpusSubdirs(self, images, expected_classes):
   root = MockDirs(**images)
   if expected_classes == None:
     subdirs = [ pjoin(root.dir, cls) for cls in images.keys() ]
   else:
     subdirs = [ pjoin(root.dir, cls) for cls in expected_classes ]
   glab.SetCorpusSubdirs(subdirs, classes = expected_classes, balance = False)
   e = glab.GetExperiment()
   self.assertNotEqual(e.classes, None)
   if expected_classes == None:
     self.assertEqual(sorted(e.classes), sorted(images.keys()))
   else:
     self.assertEqual(e.classes, expected_classes)
   for idx in range(len(e.classes)):
     actual_images = sorted(map(os.path.basename,
         e.train_images[idx] + e.test_images[idx]))
     expected_images = sorted(images[e.classes[idx]])
     self.assertEqual(actual_images, expected_images)
 def testMakeNormalRandomS2Prototypes(self):
   glab.SetCorpus(EXAMPLE_CORPUS)
   glab.MakeNormalRandomS2Prototypes(NUM_PROTOTYPES)
   e = glab.GetExperiment()
   self.assertEqual(map(len, e.model.s2_kernels),
       [ NUM_PROTOTYPES ] * len(e.model.s2_kernels) )
 def testMakeUniformRandomS2Prototypes(self):
   glab.MakeUniformRandomS2Prototypes(NUM_PROTOTYPES)
   e = glab.GetExperiment()
   self.assertEqual(map(len, e.model.s2_kernels),
       [ NUM_PROTOTYPES ] * len(e.model.s2_kernels) )
 def testRunSvm(self):
   glab.SetCorpus(EXAMPLE_CORPUS)
   glab.RunSvm()
   e = glab.GetExperiment()
   self.assertNotEqual(e.train_results['accuracy'], None)
   self.assertNotEqual(e.test_results['accuracy'], None)