Exemple #1
0
def test_resize_view_slice():
    f0 = dt.Frame(range(100))
    f1 = f0[8::2, :]
    frame_integrity_check(f1)
    assert f1.shape == (46, 1)
    assert isview(f1)
    f1.nrows = 10
    frame_integrity_check(f1)
    assert f1.shape == (10, 1)
    assert isview(f1)
    assert f1.to_list()[0] == list(range(8, 28, 2))
    f1.nrows = 15
    frame_integrity_check(f1)
    assert f1.shape == (15, 1)
    assert isview(f1)
    assert f1.to_list()[0] == list(range(8, 28, 2)) + [None] * 5
Exemple #2
0
def test_j_colselector2(dt0, tbl0):
    dt2 = dt0[:, [f.A, f.C]]
    frame_integrity_check(dt2)
    assert dt2.shape == (6, 2)
    assert dt2.names == ("A", "C")
    assert not isview(dt2)
    assert dt2.to_list() == [tbl0[0], tbl0[2]]
Exemple #3
0
def test_j_integer(dt0, tbl0):
    for i in range(-4, 4):
        dt1 = dt0[:, i]
        assert dt1.shape == (6, 1)
        assert dt1.names == ("ABCD"[i], )
        assert not isview(dt1)
        assert dt1.to_list()[0] == tbl0[i]
Exemple #4
0
def test_j_colselector1(dt0, tbl0):
    dt1 = dt0[:, f.B]
    frame_integrity_check(dt1)
    assert dt1.shape == (6, 1)
    assert dt1.names == ("B", )
    assert not isview(dt1)
    assert dt1.to_list() == [tbl0[1]]
Exemple #5
0
def test_j_dict(dt0, tbl0):
    dt1 = dt0[:, {"x": f[0], "y": f["D"]}]
    frame_integrity_check(dt1)
    assert dt1.shape == (6, 2)
    assert same_iterables(dt1.names, ("x", "y"))
    assert not isview(dt1)
    assert same_iterables(dt1.to_list(), [tbl0[0], tbl0[3]])
Exemple #6
0
def test_j_string(dt0, tbl0):
    for s in "ABCD":
        dt1 = dt0[:, s]
        assert dt1.shape == (6, 1)
        assert dt1.names == (s, )
        assert not isview(dt1)
        assert dt1.to_list()[0] == tbl0["ABCD".index(s)]
Exemple #7
0
def test_jay_view(tempfile_jay, seed):
    random.seed(seed)
    src = [random.normalvariate(0, 1) for n in range(1000)]
    dt0 = dt.Frame({"values": src})
    dt1 = dt0.sort(0)
    assert isview(dt1)
    dt1.to_jay(tempfile_jay)
    assert os.path.isfile(tempfile_jay)
    dt2 = dt.fread(tempfile_jay)
    assert not isview(dt2)
    assert dt2.source == tempfile_jay
    frame_integrity_check(dt1)
    frame_integrity_check(dt2)
    assert dt1.names == dt2.names
    assert dt1.stypes == dt2.stypes
    assert dt1.to_list() == dt2.to_list()
Exemple #8
0
def test_rows_integer1(dt0, i):
    dt1 = dt0[i, :]
    frame_integrity_check(dt1)
    assert dt1.shape == (1, 3)
    assert dt1.names == dt0.names
    assert dt1.ltypes == dt0.ltypes
    assert isview(dt1)
    assert dt1.to_list() == [[col[i]] for col in dt0.to_list()]
Exemple #9
0
def test_filter_on_view1():
    df0 = dt.Frame({"A": range(50)})
    df1 = df0[::2, :]
    assert df1.shape == (25, 1)
    df2 = df1[f.A < 10, :]
    frame_integrity_check(df2)
    assert isview(df2)
    assert df2.to_list() == [[0, 2, 4, 6, 8]]
Exemple #10
0
def test_int32_small():
    d0 = dt.Frame([17, 2, 96, 245, 847569, 34, -45, None, 1])
    assert d0.stypes == (dt.int32, )
    d1 = d0.sort(0)
    assert d1.stypes == d0.stypes
    assert isview(d1)
    frame_integrity_check(d1)
    assert d1.to_list() == [[None, -45, 1, 2, 17, 34, 96, 245, 847569]]
Exemple #11
0
def test_int8_small():
    d0 = dt.Frame([17, 2, 96, 45, 84, 75, 69, 34, -45, None, 1])
    assert d0.stypes == (stype.int8, )
    d1 = d0.sort(0)
    assert d1.stypes == d0.stypes
    assert isview(d1)
    frame_integrity_check(d1)
    assert d1.to_list() == [[None, -45, 1, 2, 17, 34, 45, 69, 75, 84, 96]]
Exemple #12
0
def test_bool8_small():
    d0 = dt.Frame([True, False, False, None, True, True, None])
    assert d0.stypes == (stype.bool8, )
    d1 = d0[:, :, sort("C0")]
    assert d1.stypes == d0.stypes
    assert isview(d1)
    frame_integrity_check(d1)
    assert d1.to_list() == [[None, None, False, False, True, True, True]]
Exemple #13
0
def test_resize_view_array():
    f0 = dt.Frame(range(100))
    f1 = f0[[1, 1, 2, 3, 5, 8, 13, 0], :]
    frame_integrity_check(f1)
    assert f1.shape == (8, 1)
    assert isview(f1)
    assert f1.to_list() == [[1, 1, 2, 3, 5, 8, 13, 0]]
    f1.nrows = 4
    frame_integrity_check(f1)
    assert f1.shape == (4, 1)
    assert isview(f1)
    assert f1.to_list() == [[1, 1, 2, 3]]
    f1.nrows = 5
    frame_integrity_check(f1)
    assert f1.shape == (5, 1)
    assert isview(f1)
    assert f1.to_list() == [[1, 1, 2, 3, None]]
Exemple #14
0
def test_bool8_small_stable():
    DT0 = dt.Frame(A=[True, False, False, None, True, True, None],
                   B=[1, 2, 3, 4, 5, 6, 7])
    DT1 = dt.Frame(A=[None, None, False, False, True, True, True],
                   B=[4, 7, 2, 3, 1, 5, 6])
    DTS = DT0[:, :, sort(f.A)]
    assert DT0['A'].stype == dt.bool8
    assert isview(DTS)
    assert_equals(DTS, DT1)
Exemple #15
0
def test_bool8_large_stable(n):
    d0 = dt.Frame([[True, False, None] * n, range(3 * n)], names=["A", "B"])
    assert d0.stypes[0] == stype.bool8
    d1 = d0[:, f.B, sort(f.A)]
    assert isview(d1)
    frame_integrity_check(d1)
    assert d1.to_list() == [list(range(2, 3 * n, 3)) +
                            list(range(1, 3 * n, 3)) +
                            list(range(0, 3 * n, 3))]
Exemple #16
0
def test_rows_bool_column(dt0):
    col = dt.Frame([1, 0, 1, 1, None, 0, None, 1, 1, 0])
    dt1 = dt0[col, :]
    frame_integrity_check(dt1)
    assert dt1.shape == (5, 3)
    assert dt1.names == ("colA", "colB", "colC")
    assert dt1.ltypes == (ltype.bool, ltype.int, ltype.real)
    assert isview(dt1)
    assert as_list(dt1)[1] == [7, 9, 10000, -1, 1]
Exemple #17
0
def test_numpy_constructor_view(numpy):
    d0 = dt.Frame([range(100), range(0, 1000000, 10000)])
    d1 = d0[::-2, :]
    assert isview(d1)
    n1 = numpy.array(d1)
    assert n1.dtype == numpy.dtype("int32")
    assert n1.T.tolist() == [list(range(99, 0, -2)),
                             list(range(990000, 0, -20000))]
    assert (d1.to_numpy() == n1).all()
Exemple #18
0
def test_rows_range1(dt0, rangeobj):
    dt1 = dt0[rangeobj, :]
    frame_integrity_check(dt1)
    assert dt1.shape == (len(rangeobj), 3)
    assert dt1.names == dt0.names
    assert dt1.ltypes == dt0.ltypes
    assert len(rangeobj) == 0 or isview(dt1)
    assert dt1.to_list() == [[col[i] for i in rangeobj]
                             for col in dt0.to_list()]
Exemple #19
0
def test_bool8_large(n):
    nn = 2 * n
    DT0 = dt.Frame([True, False, True, None, None, False] * n)
    DT1 = dt.Frame([[None] * nn + [False] * nn + [True] * nn])
    assert DT0.stype == dt.bool8
    DTS = DT0.sort(0)
    DTT = DT0[::-1, :].sort(0)
    assert isview(DTS)
    assert_equals(DTS, DT1)
    assert_equals(DTT, DT1)
Exemple #20
0
def test_dt_repeat_multicol():
    f0 = dt.Frame(A=[None, 1.4, -2.6, 3.9998],
                  B=["row", "row", "row", "your boat"],
                  C=[25, -9, 18, 2],
                  D=[True, None, True, False])
    f1 = dt.repeat(f0, 4)
    frame_integrity_check(f1)
    assert isview(f1)
    assert f1.names == f0.names
    assert f1.stypes == f0.stypes
    assert f1.to_list() == [col * 4 for col in f0.to_list()]
Exemple #21
0
def test_bool8_large(n):
    d0 = dt.Frame([True, False, True, None, None, False] * n)
    assert d0.stypes == (stype.bool8, )
    d1 = d0.sort(0)
    assert d1.stypes == d0.stypes
    assert d1.names == d0.names
    assert isview(d1)
    frame_integrity_check(d0)
    frame_integrity_check(d1)
    nn = 2 * n
    assert d1.to_list() == [[None] * nn + [False] * nn + [True] * nn]
Exemple #22
0
def test_bool8_small_stable():
    d0 = dt.Frame([[True, False, False, None, True, True, None],
                   [1, 2, 3, 4, 5, 6, 7]])
    assert d0.stypes == (stype.bool8, stype.int8)
    d1 = d0[:, :, sort("C0")]
    assert d1.stypes == d0.stypes
    assert d1.names == d0.names
    assert isview(d1)
    frame_integrity_check(d1)
    assert d1.to_list() == [[None, None, False, False, True, True, True],
                            [4, 7, 2, 3, 1, 5, 6]]
Exemple #23
0
def test_groupby_on_view():
    # See issue #1542
    DT = dt.Frame(A=[1, 2, 3, 1, 2, 3],
                  B=[3, 6, 2, 4, 3, 1],
                  C=['b', 'd', 'b', 'b', 'd', 'b'])
    V = DT[f.A != 1, :]
    assert isview(V)
    assert_equals(
        V, dt.Frame(A=[2, 3, 2, 3], B=[6, 2, 3, 1], C=['d', 'b', 'd', 'b']))
    RES = V[:, max(f.B), by(f.C)]
    assert_equals(RES, dt.Frame(C=['b', 'd'], B=[2, 6]))
Exemple #24
0
def test_int64_large0(n):
    a = -6654966461866573261
    b = -6655043958000990616
    c = 5207085498673612884
    d = 5206891724645893889
    d0 = dt.Frame([c, d, a, b] * n)
    d1 = d0.sort(0)
    frame_integrity_check(d0)
    frame_integrity_check(d1)
    assert isview(d1)
    assert b < a < d < c
    assert d0.to_list() == [[c, d, a, b] * n]
    assert d1.to_list() == [[b] * n + [a] * n + [d] * n + [c] * n]
Exemple #25
0
def test_nonfirst_column():
    """Check that sorting by n-th column works too..."""
    d0 = dt.Frame([range(100), [random.randint(0, 50) for _ in range(100)]],
                  names=["A", "B"])
    d1 = d0.sort("B")
    frame_integrity_check(d0)
    frame_integrity_check(d1)
    assert isview(d1)
    assert d0.shape == d1.shape == (100, 2)
    assert d0.names == d1.names == ("A", "B")
    a0, a1 = d1.to_list()
    assert sorted(a0) == list(range(100))
    assert a0 != list(range(100))
    assert a1 == sorted(a1)
Exemple #26
0
def test_groupby_on_view():
    # See issue #1542
    DT = dt.Frame(A=[1, 2, 3, 1, 2, 3],
                  B=[3, 6, 2, 4, 3, 1],
                  C=['b', 'd', 'b', 'b', 'd', 'b'])
    V = DT[f.A != 1, :]
    assert isview(V)
    assert V.shape == (4, 3)
    assert V.to_dict() == {'A': [2, 3, 2, 3],
                           'B': [6, 2, 3, 1],
                           'C': ['d', 'b', 'd', 'b']}
    RES = V[:, max(f.B), by(f.C)]
    assert RES.shape == (2, 2)
    assert RES.to_dict() == {'C': ['b', 'd'],
                             'C0': [2, 6]}
Exemple #27
0
def test_j_expression(dt0, tbl0):
    dt1 = dt0[:, f.A + f.B]
    frame_integrity_check(dt1)
    assert dt1.shape == (6, 1)
    assert dt1.ltypes == (ltype.int, )
    assert dt1.to_list() == [[tbl0[0][i] + tbl0[1][i] for i in range(6)]]
    dt2 = dt0[:, [f.A + f.B, f.C - f.D, f.A / f.C, f.B * f.D]]
    frame_integrity_check(dt2)
    assert dt2.shape == (6, 4)
    assert dt2.ltypes == (ltype.int, ltype.real, ltype.real, ltype.int)
    assert dt2.to_list() == [[tbl0[0][i] + tbl0[1][i] for i in range(6)],
                            [tbl0[2][i] - tbl0[3][i] for i in range(6)],
                            [tbl0[0][i] / tbl0[2][i] for i in range(6)],
                            [tbl0[1][i] * tbl0[3][i] for i in range(6)]]
    dt3 = dt0[:, {"foo": f.A + f.B - f.C * 10, "a": f.A, "b": f[1], "c": f[2]}]
    frame_integrity_check(dt3)
    assert dt3.shape == (6, 4)
    assert same_iterables(dt3.names, ("foo", "a", "b", "c"))
    assert same_iterables(dt3.ltypes,
                          (ltype.real, ltype.int, ltype.int, ltype.real))
    assert not isview(dt3)
    assert dt3[:, "foo"].to_list() == [[tbl0[0][i] + tbl0[1][i] - tbl0[2][i] * 10
                                       for i in range(6)]]
Exemple #28
0
def test_keys_simple():
    dt0 = dt.Frame([["Joe", "Mary", "Leslie", "Adam", "Alice"],
                    [1, 5, 15, 12, 8], [3.6, 9.78, 2.01, -4.23, 5.3819]],
                   names=["name", "sex", "avg"])
    assert dt0.key == tuple()
    dt0.key = "name"
    frame_integrity_check(dt0)
    assert dt0.key == ("name", )
    assert dt0.shape == (5, 3)
    assert dt0.names == ("name", "sex", "avg")
    assert dt0.to_list() == [["Adam", "Alice", "Joe", "Leslie", "Mary"],
                             [12, 8, 1, 15, 5],
                             [-4.23, 5.3819, 3.6, 2.01, 9.78]]
    dt0.key = "sex"
    frame_integrity_check(dt0)
    assert not isview(dt0)
    assert dt0.key == ("sex", )
    assert dt0.shape == (5, 3)
    assert dt0.names == ("sex", "name", "avg")
    assert dt0.to_list() == [[1, 5, 8, 12, 15],
                             ["Joe", "Mary", "Alice", "Adam", "Leslie"],
                             [3.6, 9.78, 5.3819, -4.23, 2.01]]
    dt0.key = None
    assert dt0.key == tuple()
Exemple #29
0
def test_chained_array2(dt0):
    dt3 = dt0[[2, 5, 1, 1, 1, 0], :][::-1, :]
    frame_integrity_check(dt3)
    assert dt3.shape == (6, 3)
    assert isview(dt3)
    assert as_list(dt3)[:2] == [[0, 1, 1, 1, 0, 1], [7, -11, -11, -11, 0, 9]]
Exemple #30
0
def test_chained_array1(dt0):
    dt2 = dt0[[2, 5, 1, 1, 1, 0], :][::2, :]
    frame_integrity_check(dt2)
    assert dt2.shape == (3, 3)
    assert isview(dt2)
    assert as_list(dt2) == [[1, 1, 1], [9, -11, -11], [1.3, 1, 1]]