def test_semifixed(self): np.random.seed(1) blocks = [1, 2, -3, -4] perm_tree = _PermTree(blocks) perms = np.asarray([perm_tree.permute_indices() for _ in range(10)]) assert_equal(perms[0][2:], perm_tree.original_indices()[2:]) assert_allclose(np.mean(perms, axis=0)[:2], [0.5, 0.5], rtol=0, atol=0.2)
def test_across_permutations(self): np.random.seed(0) y = np.asarray([0, 0, 1, 1, 2, 2]) blocks = np.vstack(( [1, -1], [1, -2], [2, -1], [2, -2], [3, -1], [3, -2], )) perm_tree = _PermTree(blocks) original_indices = perm_tree.original_indices() perms = np.asarray([perm_tree.permute_indices() for _ in range(100)]) assert_equal(perms[0][1::2] - perms[0][::2], [1, 1, 1]) assert_allclose(np.mean(perms, axis=0), [2, 3, 2, 3, 2, 3], rtol=0, atol=0.2)
def test_within_permutatins(self): np.random.seed(1) # i.e. case: y = np.asarray([0,1,0,1,0,1]) blocks = np.vstack(( [-1, 1], [-1, 2], [-2, 1], [-2, 2], [-3, 1], [-3, 2], )) perm_tree = _PermTree(blocks) original_indices = perm_tree.original_indices() perms = np.asarray([perm_tree.permute_indices() for _ in range(10)]) assert_array_less(np.abs(original_indices - perms), 2) assert_allclose(np.mean(perms, axis=0), [0.5, 0.5, 2.5, 2.5, 4.5, 4.5], rtol=0, atol=0.2)
def test_non_int_inputs(self): blocks = ["a", "b", "c"] perm_tree = _PermTree(blocks)
def test_fixed_permutation(self): np.random.seed(0) blocks = [-1, -2, -3, -4] perm_tree = _PermTree(blocks) assert_equal(perm_tree.permute_indices(), perm_tree.original_indices())