forked from IMAP-Science-Operations-Center/imap_processing
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_quality_flags.py
More file actions
71 lines (61 loc) · 2.22 KB
/
Copy pathtest_quality_flags.py
File metadata and controls
71 lines (61 loc) · 2.22 KB
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
70
71
"""Test bitwise flagging."""
import numpy as np
from imap_processing.quality_flags import HitFlags, ImapHkUltraFlags, ImapLoFlags
def test_quality_flags():
"""Test the bitwise operations."""
# Test individual flags
assert HitFlags.NONE == 0x0
assert ImapHkUltraFlags.NONE == 0x0
assert ImapLoFlags.NONE == 0x0
assert HitFlags.INF == 2**0
assert ImapHkUltraFlags.INF == 2**0
assert ImapLoFlags.INF == 2**0
assert HitFlags.NEG == 2**1
assert ImapHkUltraFlags.NEG == 2**1
assert ImapLoFlags.NEG == 2**1
assert ImapHkUltraFlags.BADSPIN == 2**2
assert ImapLoFlags.BADSPIN == 2**2
assert ImapHkUltraFlags.FLAG1 == 2**3
assert ImapLoFlags.FLAG2 == 2**3
assert HitFlags.FLAG3 == 2**2
# Test combined flags for Ultra
flag = (
ImapHkUltraFlags.INF
| ImapHkUltraFlags.NEG
| ImapHkUltraFlags.BADSPIN
| ImapHkUltraFlags.FLAG1
)
assert flag & ImapHkUltraFlags.INF
assert flag & ImapHkUltraFlags.BADSPIN
assert flag & ImapHkUltraFlags.FLAG1
assert flag.name == "INF|NEG|BADSPIN|FLAG1"
assert flag.value == 15
# Test combined flags for Lo
flag = ImapLoFlags.INF | ImapLoFlags.NEG | ImapLoFlags.BADSPIN | ImapLoFlags.FLAG2
assert flag & ImapLoFlags.INF
assert flag & ImapLoFlags.BADSPIN
assert flag & ImapLoFlags.FLAG2
assert flag.name == "INF|NEG|BADSPIN|FLAG2"
assert flag.value == 15
# Test combined flags for HIT
flag = HitFlags.INF | HitFlags.NEG | HitFlags.FLAG3
assert flag & HitFlags.INF
assert flag & HitFlags.FLAG3
assert flag.name == "INF|NEG|FLAG3"
assert flag.value == 7
# Test use-case for Ultra
data = np.array([-6, np.inf, 2, 3])
quality = np.array(
[
ImapHkUltraFlags.INF | ImapHkUltraFlags.NEG,
ImapHkUltraFlags.INF,
ImapHkUltraFlags.NONE,
ImapHkUltraFlags.NONE,
]
)
# Select data without INF flags
non_inf_mask = (quality & ImapHkUltraFlags.INF.value) == 0
np.array_equal(data[non_inf_mask], np.array([-6, 2, 3]))
# Select data without NEG or INF flags
non_neg_mask = (quality & ImapHkUltraFlags.NEG.value) == 0
np.array_equal(data[non_inf_mask & non_neg_mask], np.array([2, 3]))