Skip to content

BUG - CoDICE L3a DE with missing priority - Card 3200 #104

@jtniehof

Description

@jtniehof

Description of the issue

Discussed in email chain 4/30.

There are cases where the L1a priority counts are missing epoch values which are present in the L2 direct events, resulting in a failure when calculating the normalization.

Steps to reproduce the issue

imap_cli --instrument codice --data-level l3a --descriptor lo-direct-events --start-date 20251213 --version v001 --dependency imap_codice_l3a_lo-direct-events-a8091f36_20251213_v001.json

Expected vs Actual behavior

   Building imap-l3-processing @ file:///
      Built imap-l3-processing @ file:///
Uninstalled 1 package in 0.64ms
Installed 1 package in 0.79ms
2026-05-14 17:52:58,742 - imap_data_access.io - INFO - Downloading file imap/dependency/codice/l3a/2025/12/imap_codice_l3a_lo-direct-events-a8091f36_20251213_v001.json from https://api.imap-mission.com/api-key/download/imap/dependency/codice/l3a/2025/12/imap_codice_l3a_lo-direct-events-a8091f36_20251213_v001.json to /data/imap/dependency/codice/l3a/2025/12/imap_codice_l3a_lo-direct-events-a8091f36_20251213_v001.json
2026-05-14 17:52:59,210 - imap_data_access.io - INFO - File /data/imap/dependency/codice/l3a/2025/12/imap_codice_l3a_lo-direct-events-a8091f36_20251213_v001.json downloaded successfully
2026-05-14 17:52:59,212 - imap_data_access.io - INFO - Downloading file imap/codice/l1a/2025/12/imap_codice_l1a_lo-sw-priority_20251213_v005.cdf from https://api.imap-mission.com/api-key/download/imap/codice/l1a/2025/12/imap_codice_l1a_lo-sw-priority_20251213_v005.cdf to /data/imap/codice/l1a/2025/12/imap_codice_l1a_lo-sw-priority_20251213_v005.cdf
2026-05-14 17:52:59,722 - imap_data_access.io - INFO - File /data/imap/codice/l1a/2025/12/imap_codice_l1a_lo-sw-priority_20251213_v005.cdf downloaded successfully
2026-05-14 17:52:59,723 - imap_data_access.io - INFO - Downloading file imap/codice/l1a/2025/12/imap_codice_l1a_lo-nsw-priority_20251213_v005.cdf from https://api.imap-mission.com/api-key/download/imap/codice/l1a/2025/12/imap_codice_l1a_lo-nsw-priority_20251213_v005.cdf to /data/imap/codice/l1a/2025/12/imap_codice_l1a_lo-nsw-priority_20251213_v005.cdf
2026-05-14 17:53:00,219 - imap_data_access.io - INFO - File /data/imap/codice/l1a/2025/12/imap_codice_l1a_lo-nsw-priority_20251213_v005.cdf downloaded successfully
2026-05-14 17:53:00,220 - imap_data_access.io - INFO - Downloading file imap/codice/l2/2025/12/imap_codice_l2_lo-direct-events_20251213_v002.cdf from https://api.imap-mission.com/api-key/download/imap/codice/l2/2025/12/imap_codice_l2_lo-direct-events_20251213_v002.cdf to /data/imap/codice/l2/2025/12/imap_codice_l2_lo-direct-events_20251213_v002.cdf
2026-05-14 17:53:00,883 - imap_data_access.io - INFO - File /data/imap/codice/l2/2025/12/imap_codice_l2_lo-direct-events_20251213_v002.cdf downloaded successfully
2026-05-14 17:53:00,884 - imap_data_access.io - INFO - Downloading file imap/ancillary/codice/imap_codice_mass-coefficient-lookup_20241110_v003.csv from https://api.imap-mission.com/api-key/download/imap/ancillary/codice/imap_codice_mass-coefficient-lookup_20241110_v003.csv to /data/imap/ancillary/codice/imap_codice_mass-coefficient-lookup_20241110_v003.csv
2026-05-14 17:53:01,305 - imap_data_access.io - INFO - File /data/imap/ancillary/codice/imap_codice_mass-coefficient-lookup_20241110_v003.csv downloaded successfully
2026-05-14 17:53:01,306 - imap_data_access.io - INFO - Downloading file imap/ancillary/codice/imap_codice_lo-energy-per-charge_20241110_v002.csv from https://api.imap-mission.com/api-key/download/imap/ancillary/codice/imap_codice_lo-energy-per-charge_20241110_v002.csv to /data/imap/ancillary/codice/imap_codice_lo-energy-per-charge_20241110_v002.csv
2026-05-14 17:53:01,731 - imap_data_access.io - INFO - File /data/imap/ancillary/codice/imap_codice_lo-energy-per-charge_20241110_v002.csv downloaded successfully
/imap_l3_processing/codice/l3/lo/models.py:132: RuntimeWarning: invalid value encountered in cast
  ...].astype(int),
/imap_l3_processing/codice/l3/lo/science/codice_lo_calculations.py:42: RuntimeWarning: divide by zero encountered in log
  energy = np.log(apd_energy)
/imap_l3_processing/codice/l3/lo/science/codice_lo_calculations.py:42: RuntimeWarning: invalid value encountered in log
  energy = np.log(apd_energy)
/imap_l3_processing/codice/l3/lo/science/codice_lo_calculations.py:43: RuntimeWarning: invalid value encountered in log
  tof = np.log(tof)
2026-05-14 17:53:08,001 - __main__ - ERROR - Unhandled Exception:
Traceback (most recent call last):
  File "//imap_l3_data_processor.py", line 180, in <module>
    raise e
  File "//imap_l3_data_processor.py", line 177, in <module>
    imap_l3_processor()
  File "//imap_l3_data_processor.py", line 146, in imap_l3_processor
    paths = processor.process()
            ^^^^^^^^^^^^^^^^^^^
  File "/imap_l3_processing/codice/l3/lo/codice_lo_processor.py", line 40, in process
    data_product = self.process_l3a_direct_event_data_product(dependencies)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/imap_l3_processing/codice/l3/lo/codice_lo_processor.py", line 201, in process_l3a_direct_event_data_product
    normalization = calculate_normalization_factor(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/imap_l3_processing/codice/l3/lo/science/codice_lo_calculations.py", line 94, in calculate_normalization_factor
    np.divide(numerator, denominator, out=division_result, where=denominator!=0)
ValueError: operands could not be broadcast together with shapes (356,7,128,24) (357,7,128,24) (356,7,128,24) (357,7,128,24) 

Code Snippet (If applicable)

Code

Additional notes, affected areas, and suggested fixes

A previous example I looked at was 2026-4-23, where timestamp 5:10:32 is only in the direct events, and not in the priority.

L3 code needs to match direct events to priority rates by timestamp, not just by index. If the priority is missing for a given direct event timestamp, make the normalization fill and the normalization per event 0. This indicates that we're missing something and can't calculate the normalization, but the norm per event makes the event "fall out" when we're computing VDFs later.

If there's a priority timestamp but no direct event timestamp, no worries...we aren't making a direct event record for that time anyhow.

Metadata

Metadata

Labels

Data Release 1Deadline: June 15, 2026Ins: CoDICERelated to the CoDICE instrumentRelease BlockerNeeds to be addressed before (next) public releasebugSomething isn't working

Type

No fields configured for Bug.

Projects

Status

Blocked

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions