From e81620fe4c8ebbe53c922cbf84d85bdd6efc0885 Mon Sep 17 00:00:00 2001 From: Laura Sandoval Date: Mon, 4 May 2026 12:43:48 -0600 Subject: [PATCH 1/3] update to use spin angle dimension --- .../config/imap_ialirt_l1_variable_attrs.yaml | 17 +++++++++++++++-- imap_processing/ialirt/utils/create_xarray.py | 11 +++++++++++ .../tests/ialirt/unit/test_create_xarray.py | 11 ++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml b/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml index 46420dc4d5..b16d5e3681 100644 --- a/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml +++ b/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml @@ -240,6 +240,20 @@ codice_hi_spin_sector: VAR_TYPE: support_data dtype: int32 +codice_hi_spin_angle: + CATDESC: CoDICE-Hi spin angle for each spin sector and polar angle pair + FIELDNAM: CoDICE-Hi spin angle + FORMAT: F12.6 + VAR_TYPE: support_data + SCALETYP: linear + UNITS: degrees + VALIDMIN: 0.0 + VALIDMAX: 360.0 + FILLVAL: -1.0e31 + dtype: float32 + DEPEND_1: codice_hi_spin_sector + DEPEND_2: codice_hi_polar + codice_hi_spin_sector_labels: CATDESC: CoDICE-Hi spin sector labels FIELDNAM: CoDICE-Hi spin sector labels @@ -265,8 +279,7 @@ codice_hi_h: CATDESC: Proton flux from CoDICE-Hi in 15 energy bins between 0.02 to 3.62 MeV over 4 spin angles and 4 polar angles DEPEND_0: codice_hi_epoch DEPEND_1: codice_hi_energy_center - DEPEND_2: codice_hi_spin_sector - DEPEND_3: codice_hi_polar + DEPEND_2: codice_hi_spin_angle DISPLAY_TYPE: no_plot FIELDNAM: H+ intensity FORMAT: F11.1 diff --git a/imap_processing/ialirt/utils/create_xarray.py b/imap_processing/ialirt/utils/create_xarray.py index f5a2fa1e56..c13ed5e8b9 100644 --- a/imap_processing/ialirt/utils/create_xarray.py +++ b/imap_processing/ialirt/utils/create_xarray.py @@ -12,6 +12,7 @@ HI_IALIRT_ELEVATION_ANGLE, ) from imap_processing.ialirt.utils.constants import ( + HI_IALIRT_SPIN_ANGLE, IALIRT_DIMS, IALIRT_DTYPES, codice_hi_energy_center, @@ -232,6 +233,15 @@ def create_xarray_from_records(records: list[dict]) -> xr.Dataset: # noqa: PLR0 ), ) + spin_angle = xr.DataArray( + data=HI_IALIRT_SPIN_ANGLE.T.astype(np.float32), + name="codice_hi_spin_angle", + dims=["codice_hi_spin_sector", "codice_hi_polar"], + attrs=cdf_manager.get_variable_attributes( + "codice_hi_spin_angle", check_schema=False + ), + ) + spin_sector_labels = xr.DataArray( [ "0", @@ -267,6 +277,7 @@ def create_xarray_from_records(records: list[dict]) -> xr.Dataset: # noqa: PLR0 "codice_hi_polar": polar, "codice_hi_polar_labels": polar_labels, "codice_hi_spin_sector": spin_sector, + "codice_hi_spin_angle": spin_angle, "codice_hi_spin_sector_labels": spin_sector_labels, "swe_electron_energy": swe_electron_energy, } diff --git a/imap_processing/tests/ialirt/unit/test_create_xarray.py b/imap_processing/tests/ialirt/unit/test_create_xarray.py index d56c502fd3..70724d96f9 100644 --- a/imap_processing/tests/ialirt/unit/test_create_xarray.py +++ b/imap_processing/tests/ialirt/unit/test_create_xarray.py @@ -6,7 +6,7 @@ import numpy.testing as npt from imap_processing.cdf.utils import write_cdf -from imap_processing.ialirt.utils.constants import swe_energy +from imap_processing.ialirt.utils.constants import HI_IALIRT_SPIN_ANGLE, swe_energy from imap_processing.ialirt.utils.create_xarray import create_xarray_from_records @@ -166,3 +166,12 @@ def test_create_dataset(): ) assert test_data_path.exists() + + # codice_hi_spin_angle should be a 2D array of actual spin angles (degrees). + # Shape: (spin_sector=4, polar=4). + spin_angle = dataset["codice_hi_spin_angle"] + assert spin_angle.dims == ("codice_hi_spin_sector", "codice_hi_polar") + assert spin_angle.shape == (4, 4) + npt.assert_allclose( + spin_angle.values, HI_IALIRT_SPIN_ANGLE.T.astype(np.float32), rtol=1e-6 + ) From 41e273bd59533d0a77707cb53dafb721b907944e Mon Sep 17 00:00:00 2001 From: Laura Sandoval Date: Fri, 12 Jun 2026 15:59:45 -0600 Subject: [PATCH 2/3] spin angle --- imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml b/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml index b16d5e3681..8d499a9d06 100644 --- a/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml +++ b/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml @@ -279,7 +279,8 @@ codice_hi_h: CATDESC: Proton flux from CoDICE-Hi in 15 energy bins between 0.02 to 3.62 MeV over 4 spin angles and 4 polar angles DEPEND_0: codice_hi_epoch DEPEND_1: codice_hi_energy_center - DEPEND_2: codice_hi_spin_angle + DEPEND_2: codice_hi_spin_sector + DEPEND_3: codice_hi_polar DISPLAY_TYPE: no_plot FIELDNAM: H+ intensity FORMAT: F11.1 From d01c6729003a6142f342d80227e92fd6d8750bd3 Mon Sep 17 00:00:00 2001 From: Laura Sandoval Date: Fri, 12 Jun 2026 16:31:30 -0600 Subject: [PATCH 3/3] reorder metadata --- .../cdf/config/imap_ialirt_l1_variable_attrs.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml b/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml index 8d499a9d06..7e2ddbdd69 100644 --- a/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml +++ b/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml @@ -242,17 +242,17 @@ codice_hi_spin_sector: codice_hi_spin_angle: CATDESC: CoDICE-Hi spin angle for each spin sector and polar angle pair + DEPEND_1: codice_hi_spin_sector + DEPEND_2: codice_hi_polar FIELDNAM: CoDICE-Hi spin angle + FILLVAL: -1.0e31 FORMAT: F12.6 - VAR_TYPE: support_data SCALETYP: linear UNITS: degrees - VALIDMIN: 0.0 VALIDMAX: 360.0 - FILLVAL: -1.0e31 + VALIDMIN: 0.0 + VAR_TYPE: support_data dtype: float32 - DEPEND_1: codice_hi_spin_sector - DEPEND_2: codice_hi_polar codice_hi_spin_sector_labels: CATDESC: CoDICE-Hi spin sector labels