예제 #1
0
파일: test_sel.py 프로젝트: mvsaha/blahb
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)
예제 #2
0
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)
예제 #3
0
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]))
예제 #4
0
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]))