imap-processing 0.12.0__py3-none-any.whl → 0.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of imap-processing might be problematic. Click here for more details.
- imap_processing/__init__.py +1 -0
- imap_processing/_version.py +2 -2
- imap_processing/ccsds/ccsds_data.py +1 -2
- imap_processing/ccsds/excel_to_xtce.py +1 -2
- imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +18 -12
- imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +569 -0
- imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +1846 -128
- imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +5 -5
- imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +20 -1
- imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +6 -4
- imap_processing/cdf/config/imap_idex_l1b_variable_attrs.yaml +3 -3
- imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +15 -0
- imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +22 -0
- imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +16 -0
- imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +178 -5
- imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +5045 -41
- imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +33 -19
- imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +8 -48
- imap_processing/cdf/utils.py +41 -33
- imap_processing/cli.py +463 -234
- imap_processing/codice/codice_l1a.py +260 -47
- imap_processing/codice/codice_l1b.py +51 -152
- imap_processing/codice/constants.py +38 -1
- imap_processing/ena_maps/ena_maps.py +658 -65
- imap_processing/ena_maps/utils/coordinates.py +1 -1
- imap_processing/ena_maps/utils/spatial_utils.py +10 -5
- imap_processing/glows/l1a/glows_l1a.py +28 -99
- imap_processing/glows/l1a/glows_l1a_data.py +2 -2
- imap_processing/glows/l1b/glows_l1b.py +1 -4
- imap_processing/glows/l1b/glows_l1b_data.py +1 -3
- imap_processing/glows/l2/glows_l2.py +2 -5
- imap_processing/hi/l1a/hi_l1a.py +31 -12
- imap_processing/hi/l1b/hi_l1b.py +80 -43
- imap_processing/hi/l1c/hi_l1c.py +12 -16
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-sector-dt0-factors_20250219_v002.csv +81 -0
- imap_processing/hit/hit_utils.py +93 -35
- imap_processing/hit/l0/decom_hit.py +3 -1
- imap_processing/hit/l1a/hit_l1a.py +30 -25
- imap_processing/hit/l1b/constants.py +6 -2
- imap_processing/hit/l1b/hit_l1b.py +279 -318
- imap_processing/hit/l2/constants.py +37 -0
- imap_processing/hit/l2/hit_l2.py +373 -264
- imap_processing/ialirt/l0/parse_mag.py +138 -10
- imap_processing/ialirt/l0/process_swapi.py +69 -0
- imap_processing/ialirt/l0/process_swe.py +318 -22
- imap_processing/ialirt/packet_definitions/ialirt.xml +216 -212
- imap_processing/ialirt/packet_definitions/ialirt_codicehi.xml +1 -1
- imap_processing/ialirt/packet_definitions/ialirt_codicelo.xml +1 -1
- imap_processing/ialirt/packet_definitions/ialirt_swapi.xml +14 -14
- imap_processing/ialirt/utils/grouping.py +1 -1
- imap_processing/idex/idex_constants.py +9 -1
- imap_processing/idex/idex_l0.py +22 -8
- imap_processing/idex/idex_l1a.py +75 -44
- imap_processing/idex/idex_l1b.py +9 -8
- imap_processing/idex/idex_l2a.py +79 -45
- imap_processing/idex/idex_l2b.py +120 -0
- imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +33 -39
- imap_processing/idex/packet_definitions/idex_housekeeping_packet_definition.xml +9130 -0
- imap_processing/lo/l0/lo_science.py +1 -2
- imap_processing/lo/l1a/lo_l1a.py +1 -4
- imap_processing/lo/l1b/lo_l1b.py +527 -6
- imap_processing/lo/l1b/tof_conversions.py +11 -0
- imap_processing/lo/l1c/lo_l1c.py +1 -4
- imap_processing/mag/constants.py +43 -0
- imap_processing/mag/imap_mag_sdc_configuration_v001.py +8 -0
- imap_processing/mag/l1a/mag_l1a.py +2 -9
- imap_processing/mag/l1a/mag_l1a_data.py +10 -10
- imap_processing/mag/l1b/mag_l1b.py +84 -17
- imap_processing/mag/l1c/interpolation_methods.py +180 -3
- imap_processing/mag/l1c/mag_l1c.py +236 -70
- imap_processing/mag/l2/mag_l2.py +140 -0
- imap_processing/mag/l2/mag_l2_data.py +288 -0
- imap_processing/spacecraft/quaternions.py +1 -3
- imap_processing/spice/geometry.py +3 -3
- imap_processing/spice/kernels.py +0 -276
- imap_processing/spice/pointing_frame.py +257 -0
- imap_processing/spice/repoint.py +48 -19
- imap_processing/spice/spin.py +38 -33
- imap_processing/spice/time.py +24 -0
- imap_processing/swapi/l1/swapi_l1.py +16 -12
- imap_processing/swapi/l2/swapi_l2.py +116 -4
- imap_processing/swapi/swapi_utils.py +32 -0
- imap_processing/swe/l1a/swe_l1a.py +2 -9
- imap_processing/swe/l1a/swe_science.py +8 -11
- imap_processing/swe/l1b/swe_l1b.py +898 -23
- imap_processing/swe/l2/swe_l2.py +21 -77
- imap_processing/swe/utils/swe_constants.py +1 -0
- imap_processing/tests/ccsds/test_excel_to_xtce.py +1 -1
- imap_processing/tests/cdf/test_utils.py +14 -16
- imap_processing/tests/codice/conftest.py +44 -33
- imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-pha_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-pha_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/test_codice_l1a.py +20 -11
- imap_processing/tests/codice/test_codice_l1b.py +6 -7
- imap_processing/tests/conftest.py +78 -22
- imap_processing/tests/ena_maps/test_ena_maps.py +462 -33
- imap_processing/tests/ena_maps/test_spatial_utils.py +1 -1
- imap_processing/tests/glows/conftest.py +10 -14
- imap_processing/tests/glows/test_glows_decom.py +4 -4
- imap_processing/tests/glows/test_glows_l1a_cdf.py +6 -27
- imap_processing/tests/glows/test_glows_l1a_data.py +6 -8
- imap_processing/tests/glows/test_glows_l1b.py +11 -11
- imap_processing/tests/glows/test_glows_l1b_data.py +5 -5
- imap_processing/tests/glows/test_glows_l2.py +2 -8
- imap_processing/tests/hi/conftest.py +1 -1
- imap_processing/tests/hi/test_hi_l1b.py +10 -12
- imap_processing/tests/hi/test_hi_l1c.py +27 -24
- imap_processing/tests/hi/test_l1a.py +7 -9
- imap_processing/tests/hi/test_science_direct_event.py +2 -2
- imap_processing/tests/hit/helpers/l1_validation.py +44 -43
- imap_processing/tests/hit/test_decom_hit.py +1 -1
- imap_processing/tests/hit/test_hit_l1a.py +9 -9
- imap_processing/tests/hit/test_hit_l1b.py +172 -217
- imap_processing/tests/hit/test_hit_l2.py +380 -118
- imap_processing/tests/hit/test_hit_utils.py +122 -55
- imap_processing/tests/hit/validation_data/hit_l1b_standard_sample2_nsrl_v4_3decimals.csv +62 -62
- imap_processing/tests/hit/validation_data/sci_sample_raw.csv +1 -1
- imap_processing/tests/ialirt/unit/test_decom_ialirt.py +16 -81
- imap_processing/tests/ialirt/unit/test_grouping.py +2 -2
- imap_processing/tests/ialirt/unit/test_parse_mag.py +71 -16
- imap_processing/tests/ialirt/unit/test_process_codicehi.py +3 -3
- imap_processing/tests/ialirt/unit/test_process_codicelo.py +3 -10
- imap_processing/tests/ialirt/unit/test_process_ephemeris.py +4 -4
- imap_processing/tests/ialirt/unit/test_process_hit.py +3 -3
- imap_processing/tests/ialirt/unit/test_process_swapi.py +24 -16
- imap_processing/tests/ialirt/unit/test_process_swe.py +115 -7
- imap_processing/tests/idex/conftest.py +72 -7
- imap_processing/tests/idex/test_data/imap_idex_l0_raw_20241206_v001.pkts +0 -0
- imap_processing/tests/idex/test_data/imap_idex_l0_raw_20250108_v001.pkts +0 -0
- imap_processing/tests/idex/test_idex_l0.py +33 -11
- imap_processing/tests/idex/test_idex_l1a.py +50 -23
- imap_processing/tests/idex/test_idex_l1b.py +104 -25
- imap_processing/tests/idex/test_idex_l2a.py +48 -32
- imap_processing/tests/idex/test_idex_l2b.py +93 -0
- imap_processing/tests/lo/test_lo_l1a.py +3 -3
- imap_processing/tests/lo/test_lo_l1b.py +371 -6
- imap_processing/tests/lo/test_lo_l1c.py +1 -1
- imap_processing/tests/lo/test_lo_science.py +6 -7
- imap_processing/tests/lo/test_star_sensor.py +1 -1
- imap_processing/tests/mag/conftest.py +58 -9
- imap_processing/tests/mag/test_mag_decom.py +4 -3
- imap_processing/tests/mag/test_mag_l1a.py +13 -7
- imap_processing/tests/mag/test_mag_l1b.py +9 -9
- imap_processing/tests/mag/test_mag_l1c.py +151 -47
- imap_processing/tests/mag/test_mag_l2.py +130 -0
- imap_processing/tests/mag/test_mag_validation.py +144 -7
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-out.csv +1857 -0
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-out.csv +1857 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-out.csv +1793 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-out.csv +1793 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-burst-in.csv +2561 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-in.csv +961 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-out.csv +1539 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-in.csv +1921 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-out.csv +2499 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-in.csv +865 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-out.csv +1196 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-in.csv +1729 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-out.csv +3053 -0
- imap_processing/tests/mag/validation/L2/imap_mag_l1b_norm-mago_20251017_v002.cdf +0 -0
- imap_processing/tests/mag/validation/calibration/imap_mag_l2-calibration-matrices_20251017_v004.cdf +0 -0
- imap_processing/tests/mag/validation/calibration/imap_mag_l2-offsets-norm_20251017_20251017_v001.cdf +0 -0
- imap_processing/tests/spacecraft/test_quaternions.py +1 -1
- imap_processing/tests/spice/test_data/fake_repoint_data.csv +4 -4
- imap_processing/tests/spice/test_data/fake_spin_data.csv +11 -11
- imap_processing/tests/spice/test_geometry.py +3 -3
- imap_processing/tests/spice/test_kernels.py +1 -200
- imap_processing/tests/spice/test_pointing_frame.py +185 -0
- imap_processing/tests/spice/test_repoint.py +20 -10
- imap_processing/tests/spice/test_spin.py +50 -9
- imap_processing/tests/spice/test_time.py +14 -0
- imap_processing/tests/swapi/lut/imap_swapi_esa-unit-conversion_20250211_v000.csv +73 -0
- imap_processing/tests/swapi/lut/imap_swapi_lut-notes_20250211_v000.csv +1025 -0
- imap_processing/tests/swapi/test_swapi_l1.py +7 -9
- imap_processing/tests/swapi/test_swapi_l2.py +180 -8
- imap_processing/tests/swe/lut/checker-board-indices.csv +24 -0
- imap_processing/tests/swe/lut/imap_swe_esa-lut_20250301_v000.csv +385 -0
- imap_processing/tests/swe/lut/imap_swe_l1b-in-flight-cal_20240510_20260716_v000.csv +3 -0
- imap_processing/tests/swe/test_swe_l1a.py +6 -6
- imap_processing/tests/swe/test_swe_l1a_science.py +3 -3
- imap_processing/tests/swe/test_swe_l1b.py +162 -24
- imap_processing/tests/swe/test_swe_l2.py +82 -102
- imap_processing/tests/test_cli.py +171 -88
- imap_processing/tests/test_utils.py +2 -1
- imap_processing/tests/ultra/data/mock_data.py +49 -21
- imap_processing/tests/ultra/unit/conftest.py +53 -70
- imap_processing/tests/ultra/unit/test_badtimes.py +2 -4
- imap_processing/tests/ultra/unit/test_cullingmask.py +4 -6
- imap_processing/tests/ultra/unit/test_de.py +3 -10
- imap_processing/tests/ultra/unit/test_decom_apid_880.py +27 -76
- imap_processing/tests/ultra/unit/test_decom_apid_881.py +15 -16
- imap_processing/tests/ultra/unit/test_decom_apid_883.py +12 -10
- imap_processing/tests/ultra/unit/test_decom_apid_896.py +202 -55
- imap_processing/tests/ultra/unit/test_lookup_utils.py +23 -1
- imap_processing/tests/ultra/unit/test_spacecraft_pset.py +3 -4
- imap_processing/tests/ultra/unit/test_ultra_l1a.py +84 -307
- imap_processing/tests/ultra/unit/test_ultra_l1b.py +30 -12
- imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +2 -2
- imap_processing/tests/ultra/unit/test_ultra_l1b_culling.py +4 -1
- imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +163 -29
- imap_processing/tests/ultra/unit/test_ultra_l1c.py +5 -5
- imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +32 -43
- imap_processing/tests/ultra/unit/test_ultra_l2.py +230 -0
- imap_processing/ultra/constants.py +1 -1
- imap_processing/ultra/l0/decom_tools.py +21 -34
- imap_processing/ultra/l0/decom_ultra.py +168 -204
- imap_processing/ultra/l0/ultra_utils.py +152 -136
- imap_processing/ultra/l1a/ultra_l1a.py +55 -243
- imap_processing/ultra/l1b/badtimes.py +1 -4
- imap_processing/ultra/l1b/cullingmask.py +2 -6
- imap_processing/ultra/l1b/de.py +62 -47
- imap_processing/ultra/l1b/extendedspin.py +8 -4
- imap_processing/ultra/l1b/lookup_utils.py +72 -9
- imap_processing/ultra/l1b/ultra_l1b.py +3 -8
- imap_processing/ultra/l1b/ultra_l1b_culling.py +4 -4
- imap_processing/ultra/l1b/ultra_l1b_extended.py +236 -78
- imap_processing/ultra/l1c/histogram.py +2 -6
- imap_processing/ultra/l1c/spacecraft_pset.py +2 -4
- imap_processing/ultra/l1c/ultra_l1c.py +1 -5
- imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +107 -60
- imap_processing/ultra/l2/ultra_l2.py +299 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_LeftSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_RightSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_LeftSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_RightSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/FM45_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -2
- imap_processing/ultra/lookup_tables/FM90_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -0
- imap_processing/ultra/packet_definitions/README.md +38 -0
- imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +15302 -482
- imap_processing/ultra/utils/ultra_l1_utils.py +13 -12
- imap_processing/utils.py +1 -1
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/METADATA +3 -2
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/RECORD +264 -225
- imap_processing/hi/l1b/hi_eng_unit_convert_table.csv +0 -154
- imap_processing/mag/imap_mag_sdc-configuration_v001.yaml +0 -6
- imap_processing/mag/l1b/__init__.py +0 -0
- imap_processing/swe/l1b/swe_esa_lookup_table.csv +0 -1441
- imap_processing/swe/l1b/swe_l1b_science.py +0 -699
- imap_processing/tests/swe/test_swe_l1b_science.py +0 -103
- imap_processing/ultra/lookup_tables/dps_sensitivity45.cdf +0 -0
- imap_processing/ultra/lookup_tables/ultra_90_dps_exposure_compressed.cdf +0 -0
- /imap_processing/idex/packet_definitions/{idex_packet_definition.xml → idex_science_packet_definition.xml} +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/20240827095047_SWE_IALIRT_packet.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971383-404.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971384-405.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971385-406.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971386-407.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971387-408.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971388-409.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971389-410.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971390-411.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971391-412.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/BinLog CCSDS_FRAG_TLM_20240826_152323Z_IALIRT_data_for_SDC.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/IALiRT Raw Packet Telemetry.txt +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/apid01152.tlm +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/eu_SWP_IAL_20240826_152033.csv +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/hi_fsw_view_1_ccsds.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.ccsds +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.csv +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/idle_export_eu.SWE_IALIRT_20240827_093852.csv +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_hi-ialirt_20240523200000_v0.0.0.cdf +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/sample_decoded_i-alirt_data.csv +0 -0
- /imap_processing/tests/mag/validation/{imap_calibration_mag_20240229_v01.cdf → calibration/imap_mag_l1b-calibration_20240229_v001.cdf} +0 -0
- /imap_processing/{swe/l1b/engineering_unit_convert_table.csv → tests/swe/lut/imap_swe_eu-conversion_20240510_v000.csv} +0 -0
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/LICENSE +0 -0
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/WHEEL +0 -0
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"""Contains data classes to support Ultra L0 processing."""
|
|
2
2
|
|
|
3
|
-
from dataclasses import fields
|
|
4
3
|
from typing import NamedTuple, Union
|
|
5
4
|
|
|
6
|
-
import numpy as np
|
|
7
|
-
|
|
8
5
|
|
|
9
6
|
class PacketProperties(NamedTuple):
|
|
10
7
|
"""Class that represents properties of the ULTRA packet type."""
|
|
@@ -46,8 +43,8 @@ ULTRA_RATES = PacketProperties(
|
|
|
46
43
|
ULTRA_TOF = PacketProperties(
|
|
47
44
|
apid=[883, 947],
|
|
48
45
|
logical_source=[
|
|
49
|
-
"imap_ultra_l1a_45sensor-histogram",
|
|
50
|
-
"imap_ultra_l1a_90sensor-histogram",
|
|
46
|
+
"imap_ultra_l1a_45sensor-histogram-ena-phxtof-hi-ang",
|
|
47
|
+
"imap_ultra_l1a_90sensor-histogram-ena-phxtof-hi-ang",
|
|
51
48
|
],
|
|
52
49
|
addition_to_logical_desc="Time of Flight Images",
|
|
53
50
|
width=4,
|
|
@@ -64,229 +61,266 @@ ULTRA_EVENTS = PacketProperties(
|
|
|
64
61
|
len_array=None,
|
|
65
62
|
mantissa_bit_length=None,
|
|
66
63
|
)
|
|
64
|
+
ULTRA_HK = PacketProperties(
|
|
65
|
+
apid=[
|
|
66
|
+
866,
|
|
67
|
+
867,
|
|
68
|
+
868,
|
|
69
|
+
869,
|
|
70
|
+
870,
|
|
71
|
+
871,
|
|
72
|
+
873,
|
|
73
|
+
874,
|
|
74
|
+
875,
|
|
75
|
+
876,
|
|
76
|
+
877,
|
|
77
|
+
930,
|
|
78
|
+
931,
|
|
79
|
+
932,
|
|
80
|
+
933,
|
|
81
|
+
934,
|
|
82
|
+
935,
|
|
83
|
+
937,
|
|
84
|
+
938,
|
|
85
|
+
939,
|
|
86
|
+
940,
|
|
87
|
+
941,
|
|
88
|
+
],
|
|
89
|
+
logical_source=[
|
|
90
|
+
"imap_ultra_l1a_45sensor-alarm",
|
|
91
|
+
"imap_ultra_l1a_45sensor-memchecksum",
|
|
92
|
+
"imap_ultra_l1a_45sensor-memdump",
|
|
93
|
+
"imap_ultra_l1a_45sensor-status",
|
|
94
|
+
"imap_ultra_l1a_45sensor-bootstatus",
|
|
95
|
+
"imap_ultra_l1a_45sensor-macrodump",
|
|
96
|
+
"imap_ultra_l1a_45sensor-monitorlimits",
|
|
97
|
+
"imap_ultra_l1a_45sensor-params",
|
|
98
|
+
"imap_ultra_l1a_45sensor-cmdtext",
|
|
99
|
+
"imap_ultra_l1a_45sensor-scauto",
|
|
100
|
+
"imap_ultra_l1a_45sensor-imgparams",
|
|
101
|
+
"imap_ultra_l1a_90sensor-alarm",
|
|
102
|
+
"imap_ultra_l1a_90sensor-memchecksum",
|
|
103
|
+
"imap_ultra_l1a_90sensor-memdump",
|
|
104
|
+
"imap_ultra_l1a_90sensor-status",
|
|
105
|
+
"imap_ultra_l1a_90sensor-bootstatus",
|
|
106
|
+
"imap_ultra_l1a_90sensor-macrodump",
|
|
107
|
+
"imap_ultra_l1a_90sensor-monitorlimits",
|
|
108
|
+
"imap_ultra_l1a_90sensor-params",
|
|
109
|
+
"imap_ultra_l1a_90sensor-cmdtext",
|
|
110
|
+
"imap_ultra_l1a_90sensor-scauto",
|
|
111
|
+
"imap_ultra_l1a_90sensor-imgparams",
|
|
112
|
+
],
|
|
113
|
+
addition_to_logical_desc="Housekeeping",
|
|
114
|
+
width=None,
|
|
115
|
+
block=None,
|
|
116
|
+
len_array=None,
|
|
117
|
+
mantissa_bit_length=None,
|
|
118
|
+
)
|
|
67
119
|
|
|
68
120
|
|
|
69
|
-
# Module-level constant for event field ranges
|
|
70
121
|
# Module-level constant for event field ranges
|
|
71
122
|
EVENT_FIELD_RANGES = {
|
|
72
123
|
# Coincidence Type
|
|
73
|
-
"
|
|
124
|
+
"coin_type": (0, 2),
|
|
74
125
|
# Start Type
|
|
75
|
-
"
|
|
126
|
+
"start_type": (2, 4),
|
|
76
127
|
# Stop Type
|
|
77
|
-
"
|
|
128
|
+
"stop_type": (4, 8),
|
|
78
129
|
# Start Position Time to Digital Converter
|
|
79
|
-
"
|
|
130
|
+
"start_pos_tdc": (8, 19),
|
|
80
131
|
# Stop North Time to Digital Converter
|
|
81
|
-
"
|
|
132
|
+
"stop_north_tdc": (19, 30),
|
|
82
133
|
# Stop East Time to Digital Converter
|
|
83
|
-
"
|
|
134
|
+
"stop_east_tdc": (30, 41),
|
|
84
135
|
# Stop South Time to Digital Converter
|
|
85
|
-
"
|
|
136
|
+
"stop_south_tdc": (41, 52),
|
|
86
137
|
# Stop West Time to Digital Converter
|
|
87
|
-
"
|
|
138
|
+
"stop_west_tdc": (52, 63),
|
|
88
139
|
# Coincidence North Time to Digital Converter
|
|
89
|
-
"
|
|
140
|
+
"coin_north_tdc": (63, 74),
|
|
90
141
|
# Coincidence South Time to Digital Converter
|
|
91
|
-
"
|
|
142
|
+
"coin_south_tdc": (74, 85),
|
|
92
143
|
# Coincidence Discrete Time to Digital Converter
|
|
93
|
-
"
|
|
144
|
+
"coin_discrete_tdc": (85, 96),
|
|
94
145
|
# Energy/Pulse Height
|
|
95
|
-
"
|
|
146
|
+
"energy_ph": (96, 108),
|
|
96
147
|
# Pulse Width
|
|
97
|
-
"
|
|
148
|
+
"pulse_width": (108, 119),
|
|
98
149
|
# Event Flag Count
|
|
99
|
-
"
|
|
150
|
+
"event_flag_cnt": (119, 120),
|
|
100
151
|
# Event Flag PHCmpSL
|
|
101
|
-
"
|
|
152
|
+
"event_flag_phcmpsl": (120, 121),
|
|
102
153
|
# Event Flag PHCmpSR
|
|
103
|
-
"
|
|
154
|
+
"event_flag_phcmpsr": (121, 122),
|
|
104
155
|
# Event Flag PHCmpCD
|
|
105
|
-
"
|
|
156
|
+
"event_flag_phcmpcd": (122, 123),
|
|
106
157
|
# Solid State Detector Flags
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
158
|
+
"ssd_flag_7": (123, 124),
|
|
159
|
+
"ssd_flag_6": (124, 125),
|
|
160
|
+
"ssd_flag_5": (125, 126),
|
|
161
|
+
"ssd_flag_4": (126, 127),
|
|
162
|
+
"ssd_flag_3": (127, 128),
|
|
163
|
+
"ssd_flag_2": (128, 129),
|
|
164
|
+
"ssd_flag_1": (129, 130),
|
|
165
|
+
"ssd_flag_0": (130, 131),
|
|
115
166
|
# Constant Fraction Discriminator Flag Coincidence Top North
|
|
116
|
-
"
|
|
167
|
+
"cfd_flag_cointn": (131, 132),
|
|
117
168
|
# Constant Fraction Discriminator Flag Coincidence Bottom North
|
|
118
|
-
"
|
|
169
|
+
"cfd_flag_coinbn": (132, 133),
|
|
119
170
|
# Constant Fraction Discriminator Flag Coincidence Top South
|
|
120
|
-
"
|
|
171
|
+
"cfd_flag_coints": (133, 134),
|
|
121
172
|
# Constant Fraction Discriminator Flag Coincidence Bottom South
|
|
122
|
-
"
|
|
173
|
+
"cfd_flag_coinbs": (134, 135),
|
|
123
174
|
# Constant Fraction Discriminator Flag Coincidence Discrete
|
|
124
|
-
"
|
|
175
|
+
"cfd_flag_coind": (135, 136),
|
|
125
176
|
# Constant Fraction Discriminator Flag Start Right Full
|
|
126
|
-
"
|
|
177
|
+
"cfd_flag_startrf": (136, 137),
|
|
127
178
|
# Constant Fraction Discriminator Flag Start Left Full
|
|
128
|
-
"
|
|
179
|
+
"cfd_flag_startlf": (137, 138),
|
|
129
180
|
# Constant Fraction Discriminator Flag Start Position Right
|
|
130
|
-
"
|
|
181
|
+
"cfd_flag_startrp": (138, 139),
|
|
131
182
|
# Constant Fraction Discriminator Flag Start Position Left
|
|
132
|
-
"
|
|
183
|
+
"cfd_flag_startlp": (139, 140),
|
|
133
184
|
# Constant Fraction Discriminator Flag Stop Top North
|
|
134
|
-
"
|
|
185
|
+
"cfd_flag_stoptn": (140, 141),
|
|
135
186
|
# Constant Fraction Discriminator Flag Stop Bottom North
|
|
136
|
-
"
|
|
187
|
+
"cfd_flag_stopbn": (141, 142),
|
|
137
188
|
# Constant Fraction Discriminator Flag Stop Top East
|
|
138
|
-
"
|
|
189
|
+
"cfd_flag_stopte": (142, 143),
|
|
139
190
|
# Constant Fraction Discriminator Flag Stop Bottom East
|
|
140
|
-
"
|
|
191
|
+
"cfd_flag_stopbe": (143, 144),
|
|
141
192
|
# Constant Fraction Discriminator Flag Stop Top South
|
|
142
|
-
"
|
|
193
|
+
"cfd_flag_stopts": (144, 145),
|
|
143
194
|
# Constant Fraction Discriminator Flag Stop Bottom South
|
|
144
|
-
"
|
|
195
|
+
"cfd_flag_stopbs": (145, 146),
|
|
145
196
|
# Constant Fraction Discriminator Flag Stop Top West
|
|
146
|
-
"
|
|
197
|
+
"cfd_flag_stoptw": (146, 147),
|
|
147
198
|
# Constant Fraction Discriminator Flag Stop Bottom West
|
|
148
|
-
"
|
|
199
|
+
"cfd_flag_stopbw": (147, 148),
|
|
149
200
|
# Bin
|
|
150
|
-
"
|
|
201
|
+
"bin": (148, 156),
|
|
151
202
|
# Phase Angle
|
|
152
|
-
"
|
|
203
|
+
"phase_angle": (156, 166),
|
|
153
204
|
}
|
|
154
205
|
|
|
155
206
|
|
|
156
207
|
RATES_KEYS = [
|
|
157
208
|
# Start Right Full Constant Fraction Discriminator (CFD) Pulses
|
|
158
|
-
"
|
|
209
|
+
"start_rf",
|
|
159
210
|
# Start Left Full Constant Fraction Discriminator (CFD) Pulses
|
|
160
|
-
"
|
|
211
|
+
"start_lf",
|
|
161
212
|
# Start Position Right Full Constant Fraction Discriminator (CFD) Pulses
|
|
162
|
-
"
|
|
213
|
+
"start_rp",
|
|
163
214
|
# Start Position Left Constant Fraction Discriminator (CFD) Pulses
|
|
164
|
-
"
|
|
215
|
+
"start_lp",
|
|
165
216
|
# Stop Top North Constant Fraction Discriminator (CFD) Pulses
|
|
166
|
-
"
|
|
217
|
+
"stop_tn",
|
|
167
218
|
# Stop Bottom North Constant Fraction Discriminator (CFD) Pulses
|
|
168
|
-
"
|
|
219
|
+
"stop_bn",
|
|
169
220
|
# Stop Top East Constant Fraction Discriminator (CFD) Pulses
|
|
170
|
-
"
|
|
221
|
+
"stop_te",
|
|
171
222
|
# Stop Bottom East Constant Fraction Discriminator (CFD) Pulses
|
|
172
|
-
"
|
|
223
|
+
"stop_be",
|
|
173
224
|
# Stop Top South Constant Fraction Discriminator (CFD) Pulses
|
|
174
|
-
"
|
|
225
|
+
"stop_ts",
|
|
175
226
|
# Stop Bottom South Constant Fraction Discriminator (CFD) Pulses
|
|
176
|
-
"
|
|
227
|
+
"stop_bs",
|
|
177
228
|
# Stop Top West Constant Fraction Discriminator (CFD) Pulses
|
|
178
|
-
"
|
|
229
|
+
"stop_tw",
|
|
179
230
|
# Stop Bottom West Constant Fraction Discriminator (CFD) Pulses
|
|
180
|
-
"
|
|
231
|
+
"stop_bw",
|
|
181
232
|
# Coincidence Top North Constant Fraction Discriminator (CFD) Pulses
|
|
182
|
-
"
|
|
233
|
+
"coin_tn",
|
|
183
234
|
# Coincidence Bottom North Constant Fraction Discriminator (CFD) Pulses
|
|
184
|
-
"
|
|
235
|
+
"coin_bn",
|
|
185
236
|
# Coincidence Top South Constant Fraction Discriminator (CFD) Pulses
|
|
186
|
-
"
|
|
237
|
+
"coin_ts",
|
|
187
238
|
# Coincidence Bottom South Constant Fraction Discriminator (CFD) Pulses
|
|
188
|
-
"
|
|
239
|
+
"coin_bs",
|
|
189
240
|
# Coincidence Discrete Constant Fraction Discriminator (CFD) Pulses
|
|
190
|
-
"
|
|
241
|
+
"coin_d",
|
|
191
242
|
# Solid State Detector (SSD) Energy Pulses
|
|
192
|
-
"
|
|
193
|
-
"
|
|
194
|
-
"
|
|
195
|
-
"
|
|
196
|
-
"
|
|
197
|
-
"
|
|
198
|
-
"
|
|
199
|
-
"
|
|
243
|
+
"ssd0",
|
|
244
|
+
"ssd1",
|
|
245
|
+
"ssd2",
|
|
246
|
+
"ssd3",
|
|
247
|
+
"ssd4",
|
|
248
|
+
"ssd5",
|
|
249
|
+
"ssd6",
|
|
250
|
+
"ssd7",
|
|
200
251
|
# Start Position Time to Digital Converter (TDC) Chip VE Pulses
|
|
201
|
-
"
|
|
252
|
+
"start_pos",
|
|
202
253
|
# Stop North TDC-chip VE Pulses
|
|
203
|
-
"
|
|
254
|
+
"stop_n",
|
|
204
255
|
# Stop East TDC-chip VE Pulses
|
|
205
|
-
"
|
|
256
|
+
"stop_e",
|
|
206
257
|
# Stop South TDC-chip VE Pulses
|
|
207
|
-
"
|
|
258
|
+
"stop_s",
|
|
208
259
|
# Stop West TDC-chip VE Pulses
|
|
209
|
-
"
|
|
260
|
+
"stop_w",
|
|
210
261
|
# Coincidence North TDC-chip VE Pulses
|
|
211
|
-
"
|
|
262
|
+
"coin_n_tdc",
|
|
212
263
|
# Coincidence Discrete TDC-chip VE Pulses
|
|
213
|
-
"
|
|
264
|
+
"coin_d_tdc",
|
|
214
265
|
# Coincidence South TDC-chip VE Pulses
|
|
215
|
-
"
|
|
266
|
+
"coin_s_tdc",
|
|
216
267
|
# Stop Top North Valid Pulse Height Flag
|
|
217
|
-
"
|
|
268
|
+
"stop_top_n",
|
|
218
269
|
# Stop Bottom North Valid Pulse Height Flag
|
|
219
|
-
"
|
|
270
|
+
"stop_bot_n",
|
|
220
271
|
# Start-Right/Stop Single Coincidence.
|
|
221
272
|
# Stop can be either Top or Bottom.
|
|
222
273
|
# Coincidence is allowed, but not required.
|
|
223
274
|
# No SSD.
|
|
224
|
-
"
|
|
275
|
+
"start_right_stop_coin_single",
|
|
225
276
|
# Start-Left/Stop Single Coincidence.
|
|
226
277
|
# Stop can be either Top or Bottom.
|
|
227
278
|
# Coincidence is allowed, but not required.
|
|
228
279
|
# No SSD.
|
|
229
|
-
"
|
|
280
|
+
"start_left_stop_coin_single",
|
|
230
281
|
# Start-Right/Stop/Coin Coincidence.
|
|
231
282
|
# Double Coincidence.
|
|
232
283
|
# Stop/Coin can be either Top or Bottom. No SSD.
|
|
233
|
-
"
|
|
284
|
+
"start_right_stop_coin_double",
|
|
234
285
|
# Start-Left/Stop/Coin Coincidence.
|
|
235
286
|
# Double Coincidence.
|
|
236
287
|
# Stop/Coin can be either Top or Bottom. No SSD.
|
|
237
|
-
"
|
|
288
|
+
"start_left_stop_coin_double",
|
|
238
289
|
# Start/Stop/Coin Coincidence +
|
|
239
290
|
# Position Match.
|
|
240
291
|
# Double Coincidence + Fine Position Match
|
|
241
292
|
# between Stop and Coin measurements.
|
|
242
293
|
# No SSD.
|
|
243
|
-
"
|
|
294
|
+
"start_stop_coin_pos",
|
|
244
295
|
# Start-Right/SSD/Coin-D Coincidence.
|
|
245
296
|
# Energy Coincidence.
|
|
246
|
-
"
|
|
297
|
+
"start_right_ssd_coin_d",
|
|
247
298
|
# Start-Left/SSD/Coin-D Coincidence.
|
|
248
299
|
# Energy Coincidence.
|
|
249
|
-
"
|
|
300
|
+
"start_left_ssd_coin_d",
|
|
250
301
|
# Event Analysis Activity Time.
|
|
251
|
-
"
|
|
302
|
+
"event_active_time",
|
|
252
303
|
# Events that would have been written to the FIFO.
|
|
253
304
|
# (attempted to write).
|
|
254
|
-
"
|
|
305
|
+
"fifo_valid_events",
|
|
255
306
|
# Events generated by the pulser.
|
|
256
|
-
"
|
|
307
|
+
"pulser_events",
|
|
257
308
|
# Coincidence (windowed) between the Stop/Coin top.
|
|
258
|
-
"
|
|
309
|
+
"window_stop_coin",
|
|
259
310
|
# Coincidence between Start Left and Window-Stop/Coin.
|
|
260
|
-
"
|
|
311
|
+
"start_left_window_stop_coin",
|
|
261
312
|
# Coincidence between Start Right and Window-Stop/Coin.
|
|
262
|
-
"
|
|
313
|
+
"start_right_window_stop_coin",
|
|
263
314
|
# TODO: Below will be added later. It is not in the current data.
|
|
264
315
|
# Processed events generated by the pulser.
|
|
265
|
-
# "
|
|
316
|
+
# "processed_pulser_events",
|
|
266
317
|
# Processed events.
|
|
267
|
-
# "
|
|
318
|
+
# "processed_events",
|
|
268
319
|
# Discarded events.
|
|
269
|
-
# "
|
|
320
|
+
# "discarded_events"
|
|
270
321
|
]
|
|
271
322
|
|
|
272
323
|
|
|
273
|
-
def append_fillval(decom_data: dict, packet): # type: ignore[no-untyped-def]
|
|
274
|
-
# ToDo, need packet param type
|
|
275
|
-
"""
|
|
276
|
-
Append fill values to all fields.
|
|
277
|
-
|
|
278
|
-
Parameters
|
|
279
|
-
----------
|
|
280
|
-
decom_data : dict
|
|
281
|
-
Parsed data.
|
|
282
|
-
packet : space_packet_parser.packets.CCSDSPacket
|
|
283
|
-
Packet.
|
|
284
|
-
"""
|
|
285
|
-
for key in decom_data:
|
|
286
|
-
if (key not in packet.header.keys()) and (key not in packet.user_data.keys()):
|
|
287
|
-
decom_data[key].append(np.iinfo(np.int64).min)
|
|
288
|
-
|
|
289
|
-
|
|
290
324
|
def parse_event(event_binary: str) -> dict:
|
|
291
325
|
"""
|
|
292
326
|
Parse a binary string representing a single event.
|
|
@@ -306,21 +340,3 @@ def parse_event(event_binary: str) -> dict:
|
|
|
306
340
|
field_value = int(event_binary[start:end], 2)
|
|
307
341
|
fields_dict[field] = field_value
|
|
308
342
|
return fields_dict
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
def append_ccsds_fields(decom_data: dict, ccsds_data_object: object) -> None:
|
|
312
|
-
"""
|
|
313
|
-
Append CCSDS fields to event_data.
|
|
314
|
-
|
|
315
|
-
Parameters
|
|
316
|
-
----------
|
|
317
|
-
decom_data : dict
|
|
318
|
-
Parsed data.
|
|
319
|
-
ccsds_data_object : DataclassInstance
|
|
320
|
-
CCSDS data object.
|
|
321
|
-
"""
|
|
322
|
-
for field in fields(ccsds_data_object.__class__): # type: ignore[arg-type]
|
|
323
|
-
ccsds_key = field.name
|
|
324
|
-
if ccsds_key not in decom_data:
|
|
325
|
-
decom_data[ccsds_key] = []
|
|
326
|
-
decom_data[ccsds_key].append(getattr(ccsds_data_object, ccsds_key))
|