def test_update(self): x = np.array([(0,1,2), (2,5,6), (3,2,1)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) y = np.array([1,1,0]) prim_obj = Prim(x, y, threshold=0.8) box = PrimBox(prim_obj, prim_obj._box_init, prim_obj.yi) new_box_lim = np.array([(0,1,1), (2,5,6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) indices = np.array([0,1], dtype=np.int) box.update(new_box_lim, indices) self.assertEqual(box.peeling_trajectory['mean'][1], 1) self.assertEqual(box.peeling_trajectory['coverage'][1], 1) self.assertEqual(box.peeling_trajectory['density'][1], 1) self.assertEqual(box.peeling_trajectory['res dim'][1], 1) self.assertEqual(box.peeling_trajectory['mass'][1], 2/3)
def test_categorical_paste(self): dtype = [('a', np.float), ('b', np.object)] x = np.empty((10, ), dtype=dtype) x['a'] = np.random.rand(10, ) x['b'] = ['a', 'b', 'a', 'b', 'a', 'a', 'b', 'a', 'b', 'a'] y = np.random.randint(0, 2, (10, )) y = y.astype(np.int) prim_obj = Prim(x, y, threshold=0.8) box_lims = np.array([(0, set(['a'])), (1, set(['a']))], dtype=dtype) yi = np.where(x['b'] == 'a') box = PrimBox(prim_obj, box_lims, yi) u = 'b' pastes = categorical_paste(prim_obj, box, u) self.assertEquals(len(pastes), 1) for paste in pastes: indices, box_lims = paste self.assertEquals(indices.shape[0], 10) self.assertEqual(box_lims[u][0], set(['a', 'b']))
def test_init(self): x = np.array([(0, 1, 2), (2, 5, 6), (3, 2, 1)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) y = np.array([0, 1, 2]) prim_obj = Prim(x, y, threshold=0.8) box = PrimBox(prim_obj, prim_obj._box_init, prim_obj.yi) self.assertTrue(box.peeling_trajectory.shape == (1, 5))
def test_update(self): x = np.array([(0, 1, 2), (2, 5, 6), (3, 2, 1)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) y = np.array([1, 1, 0]) prim_obj = Prim(x, y, threshold=0.8) box = PrimBox(prim_obj, prim_obj._box_init, prim_obj.yi) new_box_lim = np.array([(0, 1, 1), (2, 5, 6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) indices = np.array([0, 1], dtype=np.int) box.update(new_box_lim, indices) self.assertEqual(box.peeling_trajectory['mean'][1], 1) self.assertEqual(box.peeling_trajectory['coverage'][1], 1) self.assertEqual(box.peeling_trajectory['density'][1], 1) self.assertEqual(box.peeling_trajectory['res dim'][1], 1) self.assertEqual(box.peeling_trajectory['mass'][1], 2 / 3)
def test_drop_restriction(self): x = np.array([(0,1,2), (2,5,6), (3,2,1)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) y = np.array([1,1,0]) prim_obj = Prim(x, y, threshold=0.8) box = PrimBox(prim_obj, prim_obj._box_init, prim_obj.yi) new_box_lim = np.array([(0,1,1), (2,2,6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) indices = np.array([0,1], dtype=np.int) box.update(new_box_lim, indices) box.drop_restriction('b') correct_box_lims = np.array([(0,1,1), (2,5,6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) box_lims = box._box_lims[-1] names = recfunctions.get_names(correct_box_lims.dtype) for entry in names: lim_correct = correct_box_lims[entry] lim_box = box_lims[entry] for i in range(len(lim_correct)): self.assertEqual(lim_correct[i], lim_box[i]) self.assertEqual(box.peeling_trajectory['mean'][2], 1) self.assertEqual(box.peeling_trajectory['coverage'][2], 1) self.assertEqual(box.peeling_trajectory['density'][2], 1) self.assertEqual(box.peeling_trajectory['res dim'][2], 1) self.assertEqual(box.peeling_trajectory['mass'][2], 2/3)
def test_drop_restriction(self): x = np.array([(0, 1, 2), (2, 5, 6), (3, 2, 1)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) y = np.array([1, 1, 0]) prim_obj = Prim(x, y, threshold=0.8) box = PrimBox(prim_obj, prim_obj._box_init, prim_obj.yi) new_box_lim = np.array([(0, 1, 1), (2, 2, 6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) indices = np.array([0, 1], dtype=np.int) box.update(new_box_lim, indices) box.drop_restriction('b') correct_box_lims = np.array([(0, 1, 1), (2, 5, 6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) box_lims = box._box_lims[-1] names = recfunctions.get_names(correct_box_lims.dtype) for entry in names: lim_correct = correct_box_lims[entry] lim_box = box_lims[entry] for i in range(len(lim_correct)): self.assertEqual(lim_correct[i], lim_box[i]) self.assertEqual(box.peeling_trajectory['mean'][2], 1) self.assertEqual(box.peeling_trajectory['coverage'][2], 1) self.assertEqual(box.peeling_trajectory['density'][2], 1) self.assertEqual(box.peeling_trajectory['res dim'][2], 1) self.assertEqual(box.peeling_trajectory['mass'][2], 2 / 3)
def test_select(self): x = np.array([(0,1,2), (2,5,6), (3,2,1)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) y = np.array([1,1,0]) prim_obj = Prim(x, y, threshold=0.8) box = PrimBox(prim_obj, prim_obj._box_init, prim_obj.yi) new_box_lim = np.array([(0,1,1), (2,5,6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) indices = np.array([0,1], dtype=np.int) box.update(new_box_lim, indices) box.select(0) self.assertTrue(np.all(box.yi==prim_obj.yi))
def test_select(self): x = np.array([(0, 1, 2), (2, 5, 6), (3, 2, 1)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) y = np.array([1, 1, 0]) prim_obj = Prim(x, y, threshold=0.8) box = PrimBox(prim_obj, prim_obj._box_init, prim_obj.yi) new_box_lim = np.array([(0, 1, 1), (2, 5, 6)], dtype=[('a', np.float), ('b', np.float), ('c', np.float)]) indices = np.array([0, 1], dtype=np.int) box.update(new_box_lim, indices) box.select(0) self.assertTrue(np.all(box.yi == prim_obj.yi))
def test_categorical_peel(self): dtype = [('a', np.float), ('b', np.object)] x = np.empty((10, ), dtype=dtype) x['a'] = np.random.rand(10, ) x['b'] = ['a', 'b', 'a', 'b', 'a', 'a', 'b', 'a', 'b', 'a'] y = np.random.randint(0, 2, (10, )) y = y.astype(np.int) prim_obj = Prim(x, y, threshold=0.8) box_lims = np.array([(0, set(['a', 'b'])), (1, set(['a', 'b']))], dtype=dtype) box = PrimBox(prim_obj, box_lims, prim_obj.yi) u = 'b' peels = categorical_peel(prim_obj, box, u) self.assertEquals(len(peels), 2) for peel in peels: pl = peel[1][u] self.assertEquals(len(pl[0]), 1) self.assertEquals(len(pl[1]), 1)