def test_sel_rand(): for ndim in range(1, 6): print(ndim, end=' ') for _ in range(n_tests): # print(n, end=' ') n = int(ndim**(ndim / 2)) * randint(0, hi - lo) locs = randint(lo, hi, size=(n, ndim), dtype=np.int32) i = IndexSet(locs, CONSUME) n_selectors = randint(1, 4) selectors = [(randint(0, ndim), gen_random_selector(lo, hi), rand_bool()) for _ in range(n_selectors)] j = i for dim, selector, should_omit in selectors: if should_omit: j = j.omit(dim, selector) else: j = j.sel(dim, selector) result = j.fin().loc bools = np.ones(i.n, dtype=bool) for dim, selector, should_omit in selectors: if should_omit: bools &= naive_omit(selector, i.loc[:, dim]) else: bools &= naive_sel(selector, i.loc[:, dim]) reference = i.loc[bools] AAE(result, reference)
def test_timsort_rand(): for i in range(N_TESTS * 5): n = np.random.randint(1, 1000) labels = np.random.randint(-10, 10, size=n) result = timsort_(labels.copy()) ref = np.argsort(labels, kind="mergesort") AAE(result, ref)
def test_union_NANLAST(): a = make_indexset([0, 1, 3, 4, 5, 6, 7]) a_data = make_data([na, -3, -6, na, -9, na, 1]) # Overlap | | | | b = make_indexset([4, 5, 6, 7, 9, 10, 11]) b_data = make_data([na, na, -2, -5, na, -3, 7]) merge = np.array([DATA_NANLAST], dtype=np.uint8) # Both a and b have no data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 9, 10, 11])) assert c.data is None c = union_(b, a, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 9, 10, 11])) assert c.data is None # Only a has data and is first a.data = a_data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 9, 10, 11])) AAE(c.data, T([na, -3, -6, na, -9, na, 1, na, na, na])) # Only b has data and is last a.reset_data() b.data = b_data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 9, 10, 11])) AAE(c.data, T([na, na, na, na, na, -2, -5, na, -3, 7])) # Both a and b have data, a is first a.data, b.data = a_data, b_data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 9, 10, 11])) AAE(c.data, T([na, -3, -6, na, -9, -2, -5, na, -3, 7])) # Both a and b have data, b is first c = union_(b, a, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 9, 10, 11])) AAE(c.data, T([na, -3, -6, na, -9, -2, 1, na, -3, 7]))
def test_union_NANSUM(): a = make_indexset([0, 1, 3, 4, 5, 6, 7, 8]) a_data = make_data([na, -3, -6, na, -9, na, 1, 3]) # Overlap | | | | | b = make_indexset([4, 5, 6, 7, 8, 9, 10, 11]) b_data = make_data([na, na, -2, -5, 10, na, -3, 7]) merge = np.array([DATA_NANSUM], dtype=np.uint8) # Both a and b have no data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11])) assert c.data is None c = union_(b, a, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11])) assert c.data is None # Only a has data and is first a.data = a_data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11])) AAE(c.data, T([na, -3, -6, na, -9, na, 1, 3, na, na, na])) # Only b has data and is last a.reset_data() b.data = b_data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11])) AAE(c.data, T([na, na, na, na, na, -2, -5, 10, na, -3, 7])) # Both a and b have data, a is first a.data, b.data = a_data, b_data c = union_(a, b, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11])) AAE(c.data, T([na, -3, -6, na, -9, -2, -4, 13, na, -3, 7])) # Both a and b have data, b is first (same as last; order does not matter) c = union_(b, a, merge) AAE(c.loc, T([0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11])) AAE(c.data, T([na, -3, -6, na, -9, -2, -4, 13, na, -3, 7]))