Skip to content

Commit 9f213ef

Browse files
authored
HIT L0 - Add sectorate angles (IMAP-Science-Operations-Center#1493)
* Replace declination and azimuth indices with angles provided by HIT * Test new angle dimensions have correct values
1 parent 65890a7 commit 9f213ef

3 files changed

Lines changed: 29 additions & 2 deletions

File tree

imap_processing/hit/l0/constants.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,12 @@
116116
# decompressing data
117117
MANTISSA_BITS = 12
118118
EXPONENT_BITS = 4
119+
120+
# Define sectorate angles
121+
DECLINATION_ANGLES = np.array(
122+
[11.25, 33.75, 56.25, 78.75, 101.25, 123.75, 146.25, 168.75], dtype=np.float32
123+
)
124+
AZIMUTH_ANGLES = np.array(
125+
[12, 36, 60, 84, 108, 132, 156, 180, 204, 228, 252, 276, 300, 324, 348],
126+
dtype=np.float32,
127+
)

imap_processing/hit/l0/decom_hit.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import xarray as xr
55

66
from imap_processing.hit.l0.constants import (
7+
AZIMUTH_ANGLES,
78
COUNTS_DATA_STRUCTURE,
9+
DECLINATION_ANGLES,
810
EXPONENT_BITS,
911
FLAG_PATTERN,
1012
FRAME_SIZE,
@@ -93,6 +95,17 @@ def parse_count_rates(sci_dataset: xr.Dataset) -> None:
9395
# Reshape data to 8x15 for declination and azimuth look directions
9496
parsed_data = np.array(parsed_data).reshape((-1, *field_meta.shape))
9597
dims = ["epoch", "declination", "azimuth"]
98+
# Add angle values to coordinates
99+
sci_dataset.coords["declination"] = xr.DataArray(
100+
data=DECLINATION_ANGLES,
101+
dims=["declination"],
102+
name="declination",
103+
)
104+
sci_dataset.coords["azimuth"] = xr.DataArray(
105+
data=AZIMUTH_ANGLES,
106+
dims=["azimuth"],
107+
name="azimuth",
108+
)
96109
elif "sngrates" in field:
97110
dims = ["epoch", "gain", f"{field}_index"]
98111
elif field_meta.shape[0] > 1:
@@ -102,11 +115,12 @@ def parse_count_rates(sci_dataset: xr.Dataset) -> None:
102115

103116
sci_dataset[field] = xr.DataArray(parsed_data, dims=dims, name=field)
104117
# Add dimensions to coordinates
105-
# TODO: confirm that dtype int16 is correct
106118
for dim in dims:
107119
if dim not in sci_dataset.coords:
108120
sci_dataset.coords[dim] = xr.DataArray(
109-
np.arange(sci_dataset.sizes[dim], dtype=np.int16),
121+
np.arange(sci_dataset.sizes[dim], dtype=np.int16)
122+
if dim == "gain"
123+
else np.arange(sci_dataset.sizes[dim], dtype=np.int32),
110124
dims=[dim],
111125
name=dim,
112126
)

imap_processing/tests/hit/test_decom_hit.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from imap_processing.hit.hit_utils import (
88
HitAPID,
99
)
10+
from imap_processing.hit.l0.constants import AZIMUTH_ANGLES, DECLINATION_ANGLES
1011
from imap_processing.hit.l0.decom_hit import (
1112
assemble_science_frames,
1213
decom_hit,
@@ -122,6 +123,9 @@ def test_parse_count_rates(sci_dataset):
122123
if count_rate_vars in list(sci_dataset.keys()):
123124
assert True
124125

126+
assert np.allclose(sci_dataset["declination"].values, DECLINATION_ANGLES)
127+
assert np.allclose(sci_dataset["azimuth"].values, AZIMUTH_ANGLES)
128+
125129

126130
def test_is_sequential():
127131
"""Test the is_sequential function."""

0 commit comments

Comments
 (0)