File: test_1116_project_maskedarrays.py

package info (click to toggle)
python-awkward 2.6.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 23,088 kB
  • sloc: python: 148,689; cpp: 33,562; sh: 432; makefile: 21; javascript: 8
file content (69 lines) | stat: -rw-r--r-- 1,902 bytes parent folder | download
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# BSD 3-Clause License; see https://github.com/scikit-hep/awkward/blob/main/LICENSE

from __future__ import annotations

import numpy as np
import pytest  # noqa: F401

import awkward as ak

to_list = ak.operations.to_list


def test_bytemaskedarray():
    array = ak.operations.from_iter(
        [[0.0, 1.1, 2.2], [3.3, 4.4], [5.5], [6.6, 7.7, 8.8, 9.9]], highlevel=False
    )
    mask2 = ak.index.Index8(np.array([0, 1, 0, 0], dtype=np.int8))
    maskedarray2 = ak.contents.ByteMaskedArray(mask2, array, valid_when=False)

    assert to_list(maskedarray2.project()) == [
        [0.0, 1.1, 2.2],
        [5.5],
        [6.6, 7.7, 8.8, 9.9],
    ]

    assert to_list(maskedarray2.project(mask2)) == [
        [0.0, 1.1, 2.2],
        [5.5],
        [6.6, 7.7, 8.8, 9.9],
    ]


def test_bitmaskedarray():
    array = ak.operations.from_iter(
        [[0.0, 1.1, 2.2], [3.3, 4.4], [5.5], [6.6, 7.7, 8.8, 9.9]], highlevel=False
    )
    mask = ak.index.IndexU8(np.array([0, 1, 0, 0], dtype=np.uint8))
    maskedarray2 = ak.contents.BitMaskedArray(
        mask, array, valid_when=False, length=4, lsb_order=True
    )

    assert to_list(maskedarray2.project()) == [
        [0.0, 1.1, 2.2],
        [3.3, 4.4],
        [5.5],
        [6.6, 7.7, 8.8, 9.9],
    ]


def test_unmasked():
    array = ak.operations.from_iter(
        [[0.0, 1.1, 2.2], [3.3, 4.4], [5.5], [6.6, 7.7, 8.8, 9.9]], highlevel=False
    )
    unmaskedarray2 = ak.contents.UnmaskedArray(array)

    assert to_list(unmaskedarray2.project()) == [
        [0.0, 1.1, 2.2],
        [3.3, 4.4],
        [5.5],
        [6.6, 7.7, 8.8, 9.9],
    ]


def test_indexed():
    array2 = ak.highlevel.Array([1, 2, 3, None, 4, None, None, 5]).layout
    mask2 = ak.index.Index8(np.array([0, 1, 0, 0, 1, 0, 1, 1], dtype=np.int8))

    assert to_list(array2.project()) == [1, 2, 3, 4, 5]
    assert to_list(array2.project(mask2)) == [1, 3]