def test_NumpyArray():
    v2a = ak._v2.contents.numpyarray.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3]))
    resultv2 = v2a[np.array([0, 1, -2], np.int64)]
    assert ak.to_list(resultv2) == [0.0, 1.1, 2.2]

    v1a = ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3]))
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1, 2], np.int64)),
                         False)
    assert ak.to_list(resultv1) == [0.0, 1.1, 2.2]
    assert v1v2_equal(resultv1, resultv2)

    v2b = ak._v2.contents.numpyarray.NumpyArray(
        np.arange(2 * 3 * 5, dtype=np.int64).reshape(2, 3, 5))
    resultv2 = v2b[np.array([1, 1, 1], np.int64)]
    assert ak.to_list(resultv2) == [
        [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]],
        [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]],
        [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]],
    ]

    v1b = ak.layout.NumpyArray(
        np.arange(2 * 3 * 5, dtype=np.int64).reshape(2, 3, 5))
    resultv1 = v1b.carry(ak.layout.Index64(np.array([1, 1, 1], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_EmptyArray():
    v1a = ak.layout.EmptyArray()
    v2a = ak._v2.contents.emptyarray.EmptyArray()
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()
def test_ListArray_RecordArray_NumpyArray():
    v1a = ak.layout.ListArray64(
        ak.layout.Index64(np.array([4, 100, 1], dtype=np.int64)),
        ak.layout.Index64(np.array([7, 100, 3, 200], dtype=np.int64)),
        ak.layout.RecordArray(
            [ak.layout.NumpyArray(np.array([6.6, 4.4, 5.5, 7.7, 1.1, 2.2, 3.3, 8.8]))],
            ["nest"],
        ),
    )
    v2a = ak._v2.contents.listarray.ListArray(
        ak._v2.index.Index(np.array([4, 100, 1], dtype=np.int64)),
        ak._v2.index.Index(np.array([7, 100, 3, 200], dtype=np.int64)),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([6.6, 4.4, 5.5, 7.7, 1.1, 2.2, 3.3, 8.8])
                )
            ],
            ["nest"],
        ),
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()
def test_ByteMaskedArray_NumpyArray():
    v1a = ak.layout.ByteMaskedArray(
        ak.layout.Index8(np.array([1, 0, 1, 0, 1], dtype=np.int8)),
        ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
        valid_when=True,
    )
    v2a = ak._v2.contents.bytemaskedarray.ByteMaskedArray(
        ak._v2.index.Index(np.array([1, 0, 1, 0, 1], dtype=np.int8)),
        ak._v2.contents.numpyarray.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
        valid_when=True,
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()

    v1b = ak.layout.ByteMaskedArray(
        ak.layout.Index8(np.array([0, 1, 0, 1, 0], dtype=np.int8)),
        ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
        valid_when=False,
    )
    v2b = ak._v2.contents.bytemaskedarray.ByteMaskedArray(
        ak._v2.index.Index(np.array([0, 1, 0, 1, 0], dtype=np.int8)),
        ak._v2.contents.numpyarray.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
        valid_when=False,
    )
    assert v1v2_equal(v1b, v2b)
    assert v1v2_equal(v2_to_v1(v2b), v1_to_v2(v1b))
    assert ak.to_list(v1b) == ak.to_list(v2b)
    assert newform(json.loads(v1b.form.tojson())) == v2b.form.tolist()
Beispiel #5
0
def test_UnmaskedArray():
    old = ak.layout.UnmaskedArray(
        ak.layout.NumpyArray(
            np.array([[0.0, 1.1, 2.2, 3.3], [0.0, 1.1, 2.2, 3.3]])))
    new = v1_to_v2(old)

    assert ak.to_list(old[0, 1:]) == [1.1, 2.2, 3.3]
    assert ak.to_list(new[0, 1:]) == [1.1, 2.2, 3.3]
    assert v1v2_equal(old[0, 1:], new[0, 1:])

    with pytest.raises(IndexError):
        new[1, "hello"]

    with pytest.raises(IndexError):
        new[1, ["hello", "there"]]

    assert ak.to_list(new[1, np.newaxis, -2]) == [2.2]
    assert ak.to_list(new[1, np.newaxis, np.newaxis, -2]) == [[2.2]]

    assert old.minmax_depth == (2, 2)
    assert new.minmax_depth == (2, 2)

    assert ak.to_list(old[1, ..., -2]) == 2.2
    assert ak.to_list(new[1, ..., -2]) == 2.2

    expectation = [[0.0, 1.1, 2.2, 3.3], [0.0, 1.1, 2.2, 3.3]]
    assert (ak.to_list(old[[1, 0], ]) == expectation)
    assert (ak.to_list(new[[1, 0], ]) == expectation)
    assert ak.to_list(new[[1, 0]]) == expectation
    assert v1v2_equal(old[1, ...], new[1, ...])
    assert ak.to_list(old[1, [1, 0]]) == [1.1, 0.0]
    assert ak.to_list(new[1, [1, 0]]) == [1.1, 0.0]
def test_ByteMaskedArray_RecordArray_NumpyArray():
    v2a = ak._v2.contents.bytemaskedarray.ByteMaskedArray(
        ak._v2.index.Index(np.array([1, 0, 1, 0, 1], np.int8)),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))
            ],
            ["nest"],
        ),
        valid_when=True,
    )
    resultv2 = v2a._carry(ak._v2.index.Index(np.array([0, 1, 4], np.int64)),
                          False, NestedIndexError)
    assert ak.to_list(resultv2) == [{"nest": 1.1}, None, {"nest": 5.5}]

    v1a = ak.layout.ByteMaskedArray(
        ak.layout.Index8(np.array([1, 0, 1, 0, 1], np.int8)),
        ak.layout.RecordArray(
            [ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))],
            ["nest"],
        ),
        valid_when=True,
    )

    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1, 4], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2b = ak._v2.contents.bytemaskedarray.ByteMaskedArray(
        ak._v2.index.Index(np.array([0, 1, 0, 1, 0], np.int8)),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))
            ],
            ["nest"],
        ),
        valid_when=False,
    )
    resultv2 = v2b._carry(ak._v2.index.Index(np.array([3, 1, 4], np.int64)),
                          False, NestedIndexError)
    assert ak.to_list(resultv2) == [None, None, {"nest": 5.5}]

    v1b = ak.layout.ByteMaskedArray(
        ak.layout.Index8(np.array([0, 1, 0, 1, 0], np.int8)),
        ak.layout.RecordArray(
            [ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))],
            ["nest"],
        ),
        valid_when=False,
    )

    resultv1 = v1b.carry(ak.layout.Index64(np.array([3, 1, 4], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_UnmaskedArray_NumpyArray():
    v1a = ak.layout.UnmaskedArray(ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3])))
    v2a = ak._v2.contents.unmaskedarray.UnmaskedArray(
        ak._v2.contents.numpyarray.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3]))
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()
Beispiel #8
0
def test_IndexedArray():
    old = ak.layout.IndexedArray64(
        ak.layout.Index64(np.array([1, 0], np.int64)),
        ak.layout.RegularArray(
            ak.from_numpy(np.arange(2 * 3 * 5).reshape(-1, 5)).layout, 3),
    )
    new = v1_to_v2(old)
    assert v1v2_equal(old[1, 1:], new[1, 1:])

    assert ak.to_list(old[1, 1:]) == [[5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]
    assert ak.to_list(new[1, 1:]) == [[5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]

    with pytest.raises(IndexError):
        new[1, "hello"]

    with pytest.raises(IndexError):
        new[1, ["hello", "there"]]

    assert ak.to_list(new[0, np.newaxis]) == [[[15, 16, 17, 18, 19],
                                               [20, 21, 22, 23, 24],
                                               [25, 26, 27, 28, 29]]]
    assert ak.to_list(old[0, np.newaxis]) == [[[15, 16, 17, 18, 19],
                                               [20, 21, 22, 23, 24],
                                               [25, 26, 27, 28, 29]]]

    assert old.minmax_depth == (3, 3)
    assert new.minmax_depth == (3, 3)

    assert v1v2_equal(old[1, ...], new[1, ...])
    assert ak.to_list(old[1, ...]) == [
        [0, 1, 2, 3, 4],
        [5, 6, 7, 8, 9],
        [10, 11, 12, 13, 14],
    ]
    assert ak.to_list(new[1, ...]) == [
        [0, 1, 2, 3, 4],
        [5, 6, 7, 8, 9],
        [10, 11, 12, 13, 14],
    ]

    expectation = [
        [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]],
        [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]],
    ]
    assert (ak.to_list(old[[1, 0], ]) == expectation)
    assert (ak.to_list(new[[1, 0], ]) == expectation)
    assert ak.to_list(old[[1, 0]]) == expectation
    assert ak.to_list(new[[1, 0]]) == expectation

    assert ak.to_list(old[1, [1, 0]]) == [[5, 6, 7, 8, 9], [0, 1, 2, 3, 4]]
    assert ak.to_list(new[1, [1, 0]]) == [[5, 6, 7, 8, 9], [0, 1, 2, 3, 4]]
    assert v1v2_equal(old[1, [1, 0]], new[1, [1, 0]])
def test_IndexedOptionArray_NumpyArray():
    v1a = ak.layout.IndexedOptionArray64(
        ak.layout.Index64(np.array([2, 2, -1, 1, -1, 5, 4], dtype=np.int64)),
        ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
    )
    v2a = ak._v2.contents.indexedoptionarray.IndexedOptionArray(
        ak._v2.index.Index(np.array([2, 2, -1, 1, -1, 5, 4], dtype=np.int64)),
        ak._v2.contents.numpyarray.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()
def test_ListOffsetArray_NumpyArray():
    v1a = ak.layout.ListOffsetArray64(
        ak.layout.Index64(np.array([1, 4, 4, 6], dtype=np.int64)),
        ak.layout.NumpyArray([6.6, 1.1, 2.2, 3.3, 4.4, 5.5, 7.7]),
    )
    v2a = ak._v2.contents.listoffsetarray.ListOffsetArray(
        ak._v2.index.Index(np.array([1, 4, 4, 6], dtype=np.int64)),
        ak._v2.contents.numpyarray.NumpyArray([6.6, 1.1, 2.2, 3.3, 4.4, 5.5, 7.7]),
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()
def test_RecordArray_NumpyArray():
    v1a = ak.layout.RecordArray(
        [
            ak.layout.NumpyArray(np.array([0, 1, 2, 3, 4], dtype=np.int64)),
            ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
        ["x", "y"],
    )
    v2a = ak._v2.contents.recordarray.RecordArray(
        [
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0, 1, 2, 3, 4], dtype=np.int64)
            ),
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])
            ),
        ],
        ["x", "y"],
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()

    v1b = ak.layout.RecordArray(
        [
            ak.layout.NumpyArray(np.array([0, 1, 2, 3, 4], dtype=np.int64)),
            ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
        None,
    )
    v2b = ak._v2.contents.recordarray.RecordArray(
        [
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0, 1, 2, 3, 4], dtype=np.int64)
            ),
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])
            ),
        ],
        None,
    )
    assert v1v2_equal(v1b, v2b)
    assert v1v2_equal(v2_to_v1(v2b), v1_to_v2(v1b))
    assert ak.to_list(v1b) == ak.to_list(v2b)
    assert newform(json.loads(v1b.form.tojson())) == v2b.form.tolist()

    v1c = ak.layout.RecordArray([], [], 10)
    v2c = ak._v2.contents.recordarray.RecordArray([], [], 10)
    assert v1v2_equal(v1c, v2c)
    assert v1v2_equal(v2_to_v1(v2c), v1_to_v2(v1c))
    assert ak.to_list(v1c) == ak.to_list(v2c)
    assert newform(json.loads(v1c.form.tojson())) == v2c.form.tolist()

    v1d = ak.layout.RecordArray([], None, 10)
    v2d = ak._v2.contents.recordarray.RecordArray([], None, 10)
    assert v1v2_equal(v1d, v2d)
    assert v1v2_equal(v2_to_v1(v2d), v1_to_v2(v1d))
    assert ak.to_list(v1d) == ak.to_list(v2d)
    assert newform(json.loads(v1c.form.tojson())) == v2c.form.tolist()
def test_RegularArray_NumpyArray():
    v2a = ak._v2.contents.regulararray.RegularArray(
        ak._v2.contents.numpyarray.NumpyArray(
            np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        3,
    )
    resultv2 = v2a[np.array([0, 1], np.int64)]
    assert ak.to_list(resultv2) == [[0.0, 1.1, 2.2], [3.3, 4.4, 5.5]]

    v1a = ak.layout.RegularArray(
        ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        3,
    )
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1], np.int64)), False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2b = ak._v2.contents.regulararray.RegularArray(
        ak._v2.contents.emptyarray.EmptyArray(), 0, zeros_length=10)
    resultv2 = ak.to_list(v2b[np.array([0, 0, 0], np.int64)])
    assert resultv2 == [[], [], []]

    v1b = ak.layout.RegularArray(ak.layout.EmptyArray(), 0, zeros_length=10)
    resultv1 = ak.to_list(
        v1b.carry(ak.layout.Index64(np.array([0, 0, 0], np.int64)), False))
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
def test_UnionArray_NumpyArray():
    v2a = ak._v2.contents.unionarray.UnionArray(
        ak._v2.index.Index(np.array([1, 1, 0, 0, 1, 0, 1], np.int8)),
        ak._v2.index.Index(np.array([4, 3, 0, 1, 2, 2, 4, 100], np.int64)),
        [
            ak._v2.contents.numpyarray.NumpyArray(np.array([1, 2, 3],
                                                           np.int64)),
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
    )
    resultv2 = v2a[np.array([0, 1, 3], np.int64)]
    assert ak.to_list(resultv2) == [5.5, 4.4, 2]

    v1a = ak.layout.UnionArray8_64(
        ak.layout.Index8(np.array([1, 1, 0, 0, 1, 0, 1], np.int8)),
        ak.layout.Index64(np.array([4, 3, 0, 1, 2, 2, 4, 100], np.int64)),
        [
            ak.layout.NumpyArray(np.array([1, 2, 3], np.int64)),
            ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
    )
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1, 3], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_NumpyArray():
    v1a = ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3]))
    v2a = ak._v2.contents.numpyarray.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3]))
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()

    v1b = ak.layout.NumpyArray(np.arange(2 * 3 * 5, dtype=np.int64).reshape(2, 3, 5))
    v2b = ak._v2.contents.numpyarray.NumpyArray(
        np.arange(2 * 3 * 5, dtype=np.int64).reshape(2, 3, 5)
    )
    assert v1v2_equal(v1b, v2b)
    assert v1v2_equal(v2_to_v1(v2b), v1_to_v2(v1b))
    assert ak.to_list(v1b) == ak.to_list(v2b)
    assert newform(json.loads(v1b.form.tojson())) == v2b.form.tolist()
def test_ListArray_RecordArray_NumpyArray():
    v2a = ak._v2.contents.listarray.ListArray(
        ak._v2.index.Index(np.array([4, 100, 1], np.int64)),
        ak._v2.index.Index(np.array([7, 100, 3, 200], np.int64)),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([6.6, 4.4, 5.5, 7.7, 1.1, 2.2, 3.3, 8.8]))
            ],
            ["nest"],
        ),
    )
    resultv2 = v2a[np.array([0, 1], np.int64)]
    assert ak.to_list(resultv2) == [[{
        "nest": 1.1
    }, {
        "nest": 2.2
    }, {
        "nest": 3.3
    }], []]

    v1a = ak.layout.ListArray64(
        ak.layout.Index64(np.array([4, 100, 1], np.int64)),
        ak.layout.Index64(np.array([7, 100, 3, 200], np.int64)),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array([6.6, 4.4, 5.5, 7.7, 1.1, 2.2, 3.3, 8.8]))
            ],
            ["nest"],
        ),
    )
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1], np.int64)), False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_IndexedOptionArray_RecordArray_NumpyArray():
    v2a = ak._v2.contents.indexedoptionarray.IndexedOptionArray(
        ak._v2.index.Index(np.array([2, 2, -1, 1, -1, 5, 4], np.int64)),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))
            ],
            ["nest"],
        ),
    )
    resultv2 = v2a[np.array([0, 1, 4], np.int64)]
    assert ak.to_list(resultv2) == [{"nest": 3.3}, {"nest": 3.3}, None]

    v1a = ak.layout.IndexedOptionArray64(
        ak.layout.Index64(np.array([2, 2, -1, 1, -1, 5, 4], np.int64)),
        ak.layout.RecordArray(
            [ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))],
            ["nest"],
        ),
    )

    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1, 4], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_RegularArray_RecordArray_NumpyArray():
    v2a = ak._v2.contents.regulararray.RegularArray(
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))
            ],
            ["nest"],
        ),
        3,
    )
    resultv2 = v2a._carry(ak._v2.index.Index(np.array([0], np.int64)), False,
                          NestedIndexError)
    assert ak.to_list(resultv2) == [[{
        "nest": 0.0
    }, {
        "nest": 1.1
    }, {
        "nest": 2.2
    }]]

    v1a = ak.layout.RegularArray(
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))
            ],
            ["nest"],
        ),
        3,
    )
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0], np.int64)), False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2b = ak._v2.contents.regulararray.RegularArray(
        ak._v2.contents.recordarray.RecordArray(
            [ak._v2.contents.emptyarray.EmptyArray()], ["nest"]),
        0,
        zeros_length=10,
    )
    resultv2 = v2b._carry(ak._v2.index.Index(np.array([0], np.int64)), False,
                          NestedIndexError)
    assert ak.to_list(resultv2) == [[]]

    v1b = ak.layout.RegularArray(
        ak.layout.RecordArray([ak.layout.EmptyArray()], ["nest"]),
        0,
        zeros_length=10,
    )
    resultv1 = v1b.carry(ak.layout.Index64(np.array([0], np.int64)), False)
    assert ak.to_list(resultv1) == [[]]
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
def test_UnionArray_NumpyArray():
    v1a = ak.layout.UnionArray8_64(
        ak.layout.Index8(np.array([1, 1, 0, 0, 1, 0, 1], dtype=np.int8)),
        ak.layout.Index64(np.array([4, 3, 0, 1, 2, 2, 4, 100], dtype=np.int64)),
        [
            ak.layout.NumpyArray(np.array([1, 2, 3], dtype=np.int64)),
            ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
    )
    v2a = ak._v2.contents.unionarray.UnionArray(
        ak._v2.index.Index(np.array([1, 1, 0, 0, 1, 0, 1], dtype=np.int8)),
        ak._v2.index.Index(np.array([4, 3, 0, 1, 2, 2, 4, 100], dtype=np.int64)),
        [
            ak._v2.contents.numpyarray.NumpyArray(np.array([1, 2, 3], dtype=np.int64)),
            ak._v2.contents.numpyarray.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()
def test_RegularArray_RecordArray_NumpyArray():
    v1a = ak.layout.RegularArray(
        ak.layout.RecordArray(
            [ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6]))],
            ["nest"],
        ),
        3,
    )
    v2a = ak._v2.contents.regulararray.RegularArray(
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6])
                )
            ],
            ["nest"],
        ),
        3,
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()

    v1b = ak.layout.RegularArray(
        ak.layout.RecordArray([ak.layout.EmptyArray()], ["nest"]),
        0,
        zeros_length=10,
    )
    v2b = ak._v2.contents.regulararray.RegularArray(
        ak._v2.contents.recordarray.RecordArray(
            [ak._v2.contents.emptyarray.EmptyArray()], ["nest"]
        ),
        0,
        zeros_length=10,
    )
    assert v1v2_equal(v1b, v2b)
    assert v1v2_equal(v2_to_v1(v2b), v1_to_v2(v1b))
    assert ak.to_list(v1b) == ak.to_list(v2b)
    assert newform(json.loads(v1b.form.tojson())) == v2b.form.tolist()
Beispiel #20
0
def test_ListOffsetArray_NumpyArray():
    old = ak.layout.ListOffsetArray64(
        ak.layout.Index64(np.array([0, 1, 2, 3], np.int64)),
        ak.layout.NumpyArray(
            np.array([
                [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
                [11.1, 22.2, 33.3, 44.4, 55.5, 66.6],
                [21.1, 22.2, 23.3, 24.4, 25.5, 26.6],
                [31.1, 32.2, 33.3, 34.4, 35.5, 36.6],
                [41.1, 42.2, 43.3, 44.4, 45.5, 46.6],
            ])),
    )
    new = v1_to_v2(old)

    assert ak.to_list(old[0, 0:]) == [[1.1, 2.2, 3.3, 4.4, 5.5, 6.6]]
    assert ak.to_list(new[0, 0:]) == [[1.1, 2.2, 3.3, 4.4, 5.5, 6.6]]
    assert v1v2_equal(old[0, 1:], new[0, 1:])

    with pytest.raises(IndexError):
        new[1, "hello"]

    with pytest.raises(IndexError):
        new[1, ["hello", "there"]]

    assert ak.to_list(
        new[1, np.newaxis]) == [[[11.1, 22.2, 33.3, 44.4, 55.5, 66.6]]]
    assert ak.to_list(
        old[1, np.newaxis]) == [[[11.1, 22.2, 33.3, 44.4, 55.5, 66.6]]]

    assert old.minmax_depth == (3, 3)
    assert new.minmax_depth == (3, 3)

    assert ak.to_list(old[1, ...]) == [[11.1, 22.2, 33.3, 44.4, 55.5, 66.6]]
    assert ak.to_list(new[1, ...]) == [[11.1, 22.2, 33.3, 44.4, 55.5, 66.6]]

    expectation = [
        [[11.1, 22.2, 33.3, 44.4, 55.5, 66.6]],
        [[1.1, 2.2, 3.3, 4.4, 5.5, 6.6]],
    ]
    assert (ak.to_list(old[[1, 0], ]) == expectation)
    assert (ak.to_list(new[[1, 0], ]) == expectation)
    assert ak.to_list(old[[1, 0]]) == expectation
    assert ak.to_list(new[[1, 0]]) == expectation

    assert ak.to_list(old[0, [0, 0]]) == [
        [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
        [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
    ]
    assert ak.to_list(new[0, [0, 0]]) == [
        [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
        [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
    ]
def test_UnmaskedArray_NumpyArray():
    v2a = ak._v2.contents.unmaskedarray.UnmaskedArray(
        ak._v2.contents.numpyarray.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3])))
    resultv2 = v2a[np.array([0, 1, 3], np.int64)]
    assert ak.to_list(resultv2) == [0.0, 1.1, 3.3]

    v1a = ak.layout.UnmaskedArray(
        ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3])))
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1, 3], np.int64)),
                         False)

    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_ListOffsetArray_NumpyArray():
    v2a = ak._v2.contents.listoffsetarray.ListOffsetArray(
        ak._v2.index.Index(np.array([1, 4, 4, 6, 3], np.int64)),
        ak._v2.contents.numpyarray.NumpyArray(
            [6.6, 1.1, 2.2, 3.3, 4.4, 5.5, 7.7]),
    )
    resultv2 = v2a[np.array([1, 2], np.int64)]
    assert ak.to_list(resultv2) == [[], [4.4, 5.5]]

    v1a = ak.layout.ListOffsetArray64(
        ak.layout.Index64(np.array([1, 4, 4, 6, 3], np.int64)),
        ak.layout.NumpyArray([6.6, 1.1, 2.2, 3.3, 4.4, 5.5, 7.7]),
    )
    resultv1 = v1a.carry(ak.layout.Index64(np.array([1, 2], np.int64)), False)

    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_IndexedArray_NumpyArray():
    v2a = ak._v2.contents.indexedarray.IndexedArray(
        ak._v2.index.Index(np.array([2, 2, 0, 1, 4, 5, 4], np.int64)),
        ak._v2.contents.numpyarray.NumpyArray(
            np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
    )
    resultv2 = v2a[np.array([0, 1, 4], np.int64)]
    assert ak.to_list(resultv2) == [3.3, 3.3, 5.5]

    v1a = ak.layout.IndexedArray64(
        ak.layout.Index64(np.array([2, 2, 0, 1, 4, 5, 4], np.int64)),
        ak.layout.NumpyArray(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])),
    )
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1, 4], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_ListArray_NumpyArray():
    v2a = ak._v2.contents.listarray.ListArray(
        ak._v2.index.Index(np.array([4, 100, 1], np.int64)),
        ak._v2.index.Index(np.array([7, 100, 3, 200], np.int64)),
        ak._v2.contents.numpyarray.NumpyArray(
            np.array([6.6, 4.4, 5.5, 7.7, 1.1, 2.2, 3.3, 8.8])),
    )
    resultv2 = v2a[np.array([1, -1], np.int64)]
    assert ak.to_list(resultv2) == [[], [4.4, 5.5]]

    v1a = ak.layout.ListArray64(
        ak.layout.Index64(np.array([4, 100, 1], np.int64)),
        ak.layout.Index64(np.array([7, 100, 3, 200], np.int64)),
        ak.layout.NumpyArray(np.array([6.6, 4.4, 5.5, 7.7, 1.1, 2.2, 3.3,
                                       8.8])),
    )
    resultv1 = v1a[np.array([1, -1], np.int64)]
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
Beispiel #25
0
def test_ByteMaskedArray():
    old = ak.layout.ByteMaskedArray(
        ak.layout.Index8(np.array([1, 1, 1], np.int8)),
        ak.layout.NumpyArray(
            np.array([
                [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
                [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
                [1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
            ])),
        valid_when=True,
    )

    new = v1_to_v2(old)

    assert ak.to_list(old[:, 5:]) == [[6.6], [6.6], [6.6]]
    assert ak.to_list(new[:, 5:]) == [[6.6], [6.6], [6.6]]

    assert v1v2_equal(old[:, 5:], new[:, 5:])

    with pytest.raises(IndexError):
        new[1, "hello"]

    with pytest.raises(IndexError):
        new[1, ["hello", "there"]]

    assert ak.to_list(new[1, np.newaxis]) == [[1.1, 2.2, 3.3, 4.4, 5.5, 6.6]]
    assert ak.to_list(old[1, np.newaxis]) == [[1.1, 2.2, 3.3, 4.4, 5.5, 6.6]]

    assert old.minmax_depth == (2, 2)
    assert new.minmax_depth == (2, 2)

    assert ak.to_list(old[0, ..., 0]) == 1.1
    assert ak.to_list(new[0, ..., 0]) == 1.1

    expectation = [[1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
                   [1.1, 2.2, 3.3, 4.4, 5.5, 6.6]]
    assert (ak.to_list(old[[1, 0], ]) == expectation)
    assert (ak.to_list(new[[1, 0], ]) == expectation)
    assert ak.to_list(new[[1, 0]]) == expectation

    assert ak.to_list(old[1, [1, 0]]) == [2.2, 1.1]
    assert ak.to_list(new[1, [1, 0]]) == [2.2, 1.1]
def test_UnmaskedArray_RecordArray_NumpyArray():
    v2a = ak._v2.contents.unmaskedarray.UnmaskedArray(
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([0.0, 1.1, 2.2, 3.3]))
            ],
            ["nest"],
        ))
    resultv2 = v2a._carry(
        ak._v2.index.Index(np.array([0, 1, 1, 1, 1], np.int64)), False,
        NestedIndexError)
    assert ak.to_list(resultv2) == [
        {
            "nest": 0.0
        },
        {
            "nest": 1.1
        },
        {
            "nest": 1.1
        },
        {
            "nest": 1.1
        },
        {
            "nest": 1.1
        },
    ]

    v1a = ak.layout.UnmaskedArray(
        ak.layout.RecordArray(
            [ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3]))],
            ["nest"],
        ))
    resultv1 = v1a.carry(
        ak.layout.Index64(np.array([0, 1, 1, 1, 1], np.int64)), False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_BitMaskedArray_RecordArray_NumpyArray():
    v2a = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array([
                    True,
                    True,
                    True,
                    True,
                    False,
                    False,
                    False,
                    False,
                    True,
                    False,
                    True,
                    False,
                    True,
                ]))),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=False,
    )
    resultv2 = v2a._carry(ak._v2.index.Index(np.array([0, 1, 4], np.int64)),
                          False, NestedIndexError)
    assert ak.to_list(resultv2) == [{"nest": 0.0}, {"nest": 1.0}, None]

    v1a = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array([
                    True,
                    True,
                    True,
                    True,
                    False,
                    False,
                    False,
                    False,
                    True,
                    False,
                    True,
                    False,
                    True,
                ]))),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=False,
    )
    resultv1 = v1a.carry(ak.layout.Index64(np.array([0, 1, 4], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2b = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    np.uint8,
                ))),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=False,
    )
    resultv2 = v2b._carry(ak._v2.index.Index(np.array([1, 1, 4], np.int64)),
                          False, NestedIndexError)
    assert ak.to_list(resultv2) == [{"nest": 1.0}, {"nest": 1.0}, None]

    v1b = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    np.uint8,
                ))),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=False,
    )
    resultv1 = v1b.carry(ak.layout.Index64(np.array([1, 1, 4], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2c = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                        1,
                    ],
                    np.uint8,
                ))),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=True,
    )
    resultv2 = v2c._carry(ak._v2.index.Index(np.array([0, 1, 4], np.int64)),
                          False, NestedIndexError)
    assert ak.to_list(resultv2) == [{"nest": 0.0}, {"nest": 1.0}, None]

    v1c = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                        1,
                    ],
                    np.uint8,
                ))),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=True,
    )
    resultv1 = v1c.carry(ak.layout.Index64(np.array([0, 1, 4], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2d = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array(
                    [
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    np.uint8,
                ))),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=True,
    )
    resultv2 = v2d._carry(ak._v2.index.Index(np.array([0, 0, 0], np.int64)),
                          False, NestedIndexError)
    assert ak.to_list(resultv2) == [{
        "nest": 0.0
    }, {
        "nest": 0.0
    }, {
        "nest": 0.0
    }]

    v1d = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    np.uint8,
                ))),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array([
                        0.0,
                        1.0,
                        2.0,
                        3.0,
                        4.0,
                        5.0,
                        6.0,
                        7.0,
                        1.1,
                        2.2,
                        3.3,
                        4.4,
                        5.5,
                        6.6,
                    ]))
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=True,
    )
    resultv1 = v1d.carry(ak.layout.Index64(np.array([0, 0, 0], np.int64)),
                         False)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)
def test_BitMaskedArray_RecordArray_NumpyArray():
    v1a = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        True,
                        True,
                        True,
                        True,
                        False,
                        False,
                        False,
                        False,
                        True,
                        False,
                        True,
                        False,
                        True,
                    ]
                )
            )
        ),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=False,
    )
    v2a = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array(
                    [
                        True,
                        True,
                        True,
                        True,
                        False,
                        False,
                        False,
                        False,
                        True,
                        False,
                        True,
                        False,
                        True,
                    ]
                )
            )
        ),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=False,
    )
    assert v1v2_equal(v1a, v2a)
    assert v1v2_equal(v2_to_v1(v2a), v1_to_v2(v1a))
    assert ak.to_list(v1a) == ak.to_list(v2a)
    assert newform(json.loads(v1a.form.tojson())) == v2a.form.tolist()

    v1b = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    dtype=np.uint8,
                )
            )
        ),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=False,
    )
    v2b = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    dtype=np.uint8,
                )
            )
        ),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=False,
    )
    assert v1v2_equal(v1b, v2b)
    assert v1v2_equal(v2_to_v1(v2b), v1_to_v2(v1b))
    assert ak.to_list(v1b) == ak.to_list(v2b)
    assert newform(json.loads(v1b.form.tojson())) == v2b.form.tolist()

    v1c = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                        1,
                    ],
                    dtype=np.uint8,
                )
            )
        ),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=True,
    )
    v2c = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array(
                    [
                        0,
                        0,
                        0,
                        0,
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                        1,
                    ],
                    dtype=np.uint8,
                )
            )
        ),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=True,
        length=13,
        lsb_order=True,
    )
    assert v1v2_equal(v1c, v2c)
    assert v1v2_equal(v2_to_v1(v2c), v1_to_v2(v1c))
    assert ak.to_list(v1c) == ak.to_list(v2c)
    assert newform(json.loads(v1c.form.tojson())) == v2c.form.tolist()

    v1d = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    dtype=np.uint8,
                )
            )
        ),
        ak.layout.RecordArray(
            [
                ak.layout.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=True,
    )
    v2d = ak._v2.contents.bitmaskedarray.BitMaskedArray(
        ak._v2.index.Index(
            np.packbits(
                np.array(
                    [
                        1,
                        1,
                        1,
                        1,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        1,
                        0,
                        1,
                        0,
                    ],
                    dtype=np.uint8,
                )
            )
        ),
        ak._v2.contents.recordarray.RecordArray(
            [
                ak._v2.contents.numpyarray.NumpyArray(
                    np.array(
                        [
                            0.0,
                            1.0,
                            2.0,
                            3.0,
                            4.0,
                            5.0,
                            6.0,
                            7.0,
                            1.1,
                            2.2,
                            3.3,
                            4.4,
                            5.5,
                            6.6,
                        ]
                    )
                )
            ],
            ["nest"],
        ),
        valid_when=False,
        length=13,
        lsb_order=True,
    )
    assert v1v2_equal(v1d, v2d)
    assert v1v2_equal(v2_to_v1(v2d), v1_to_v2(v1d))
    assert ak.to_list(v1d) == ak.to_list(v2d)
    assert newform(json.loads(v1d.form.tojson())) == v2d.form.tolist()
Beispiel #29
0
def test_BitMaskedArray():
    old = ak.layout.BitMaskedArray(
        ak.layout.IndexU8(
            np.packbits(
                np.array(
                    [
                        [
                            1,
                            1,
                            1,
                            1,
                            0,
                            0,
                            0,
                            0,
                            1,
                            0,
                            1,
                            0,
                            1,
                        ],
                        [
                            1,
                            1,
                            1,
                            1,
                            0,
                            0,
                            0,
                            0,
                            1,
                            0,
                            1,
                            0,
                            1,
                        ],
                    ],
                    np.uint8,
                ))),
        ak.layout.NumpyArray(
            np.array([
                [
                    0.0,
                    1.0,
                    2.0,
                    3.0,
                    4.0,
                    5.0,
                    6.0,
                    7.0,
                    1.1,
                    2.2,
                    3.3,
                    4.4,
                    5.5,
                    6.6,
                ],
                [
                    0.0,
                    1.0,
                    2.0,
                    3.0,
                    4.0,
                    5.0,
                    6.0,
                    7.0,
                    1.1,
                    2.2,
                    3.3,
                    4.4,
                    5.5,
                    6.6,
                ],
            ])),
        valid_when=True,
        length=2,
        lsb_order=False,
    )

    new = v1_to_v2(old)

    assert v1v2_equal(old[:, :], new[:, :])

    assert ak.to_list(old[:, 5:]) == [
        [5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
        [5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
    ]

    assert ak.to_list(new[:, 5:]) == [
        [5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
        [5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
    ]

    assert v1v2_equal(old[:, 5:], new[:, 5:])

    with pytest.raises(IndexError):
        new[1, "hello"]

    with pytest.raises(IndexError):
        new[1, ["hello", "there"]]

    assert ak.to_list(new[1, np.newaxis]) == [[
        0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6
    ]]
    assert ak.to_list(old[1, np.newaxis]) == [[
        0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6
    ]]

    assert old.minmax_depth == (2, 2)
    assert new.minmax_depth == (2, 2)

    assert ak.to_list(old[0, ..., 0]) == 0.0
    assert ak.to_list(new[0, ..., 0]) == 0.0

    expectation = [
        [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
        [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6],
    ]
    assert (ak.to_list(old[[1, 0], ]) == expectation)
    assert (ak.to_list(new[[1, 0], ]) == expectation)
    assert ak.to_list(old[[1, 0]]) == expectation
    assert ak.to_list(new[[1, 0]]) == expectation

    assert ak.to_list(old[1, [1, 0]]) == [1.0, 0.0]
    assert ak.to_list(new[1, [1, 0]]) == [1.0, 0.0]
    assert v1v2_equal(old[1, [1, 0]], new[1, [1, 0]])
def test_RecordArray_NumpyArray_lazy():
    v2a = ak._v2.contents.recordarray.RecordArray(
        [
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0, 1, 2, 3, 4], np.int64)),
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
        ["x", "y"],
    )
    resultv2 = v2a._carry(ak._v2.index.Index(np.array([1, 2], np.int64)), True,
                          NestedIndexError)
    assert ak.to_list(resultv2) == [{"x": 1, "y": 1.1}, {"x": 2, "y": 2.2}]

    v1a = ak.layout.RecordArray(
        [
            ak.layout.NumpyArray(np.array([0, 1, 2, 3, 4], np.int64)),
            ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
        ["x", "y"],
    )
    resultv1 = v1a[np.array([1, 2], np.int64)]
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2b = ak._v2.contents.recordarray.RecordArray(
        [
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0, 1, 2, 3, 4], np.int64)),
            ak._v2.contents.numpyarray.NumpyArray(
                np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
        None,
    )
    resultv2 = v2b._carry(
        ak._v2.index.Index(np.array([0, 1, 2, 3, 4], np.int64)), True,
        NestedIndexError)
    assert ak.to_list(resultv2) == [(0, 0.0), (1, 1.1), (2, 2.2), (3, 3.3),
                                    (4, 4.4)]

    v1b = ak.layout.RecordArray(
        [
            ak.layout.NumpyArray(np.array([0, 1, 2, 3, 4], np.int64)),
            ak.layout.NumpyArray(np.array([0.0, 1.1, 2.2, 3.3, 4.4, 5.5])),
        ],
        None,
    )
    resultv1 = v1b.carry(
        ak.layout.Index64(np.array([0, 1, 2, 3, 4], np.int64)), True)
    assert ak.to_list(resultv1) == ak.to_list(resultv2)
    assert v1v2_equal(resultv1, resultv2)

    v2c = ak._v2.contents.recordarray.RecordArray([], [], 10)
    resultv2 = v2c[np.array([0], np.int64)]
    assert ak.to_list(resultv2) == [{}]

    v1c = ak.layout.RecordArray([], [], 10)
    resultv1 = v1c[np.array([0], np.int64)]
    assert ak.to_list(resultv1) == ak.to_list(resultv2)

    v2d = ak._v2.contents.recordarray.RecordArray([], None, 10)
    resultv2 = v2d[np.array([0], np.int64)]
    assert ak.to_list(resultv2) == [()]

    v1d = ak.layout.RecordArray([], None, 10)
    resultv1 = v1d[np.array([0], np.int64)]
    assert ak.to_list(resultv1) == ak.to_list(resultv2)