imap-processing 0.6.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.
- imap_processing/__init__.py +34 -0
- imap_processing/_version.py +3 -0
- imap_processing/ccsds/__init__.py +0 -0
- imap_processing/ccsds/ccsds_data.py +55 -0
- imap_processing/ccsds/excel_to_xtce.py +477 -0
- imap_processing/cdf/__init__.py +0 -0
- imap_processing/cdf/cdf_attribute_manager.py +322 -0
- imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +212 -0
- imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +1358 -0
- imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +391 -0
- imap_processing/cdf/config/imap_constant_attrs.yaml +33 -0
- imap_processing/cdf/config/imap_default_global_cdf_attrs.yaml +17 -0
- imap_processing/cdf/config/imap_glows_global_cdf_attrs.yaml +41 -0
- imap_processing/cdf/config/imap_glows_l1a_variable_attrs.yaml +499 -0
- imap_processing/cdf/config/imap_glows_l1b_variable_attrs.yaml +334 -0
- imap_processing/cdf/config/imap_hi_global_cdf_attrs.yaml +51 -0
- imap_processing/cdf/config/imap_hi_variable_attrs.yaml +435 -0
- imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +27 -0
- imap_processing/cdf/config/imap_hit_l1a_variable_attrs.yaml +493 -0
- imap_processing/cdf/config/imap_hit_l1b_variable_attrs.yaml +564 -0
- imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +24 -0
- imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +426 -0
- imap_processing/cdf/config/imap_lo_global_cdf_attrs.yaml +90 -0
- imap_processing/cdf/config/imap_lo_l1a_variable_attrs.yaml +487 -0
- imap_processing/cdf/config/imap_lo_l1b_variable_attrs.yaml +121 -0
- imap_processing/cdf/config/imap_lo_l1c_variable_attrs.yaml +179 -0
- imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +97 -0
- imap_processing/cdf/config/imap_mag_l1_variable_attrs.yaml +201 -0
- imap_processing/cdf/config/imap_swapi_global_cdf_attrs.yaml +33 -0
- imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +137 -0
- imap_processing/cdf/config/imap_swe_global_cdf_attrs.yaml +24 -0
- imap_processing/cdf/config/imap_swe_l1a_variable_attrs.yaml +234 -0
- imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +273 -0
- imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +100 -0
- imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +52 -0
- imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +297 -0
- imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +121 -0
- imap_processing/cdf/config/shared/default_global_cdf_attrs_schema.yaml +246 -0
- imap_processing/cdf/config/shared/default_variable_cdf_attrs_schema.yaml +466 -0
- imap_processing/cdf/imap_cdf_manager.py +64 -0
- imap_processing/cdf/utils.py +147 -0
- imap_processing/cli.py +863 -0
- imap_processing/codice/__init__.py +1 -0
- imap_processing/codice/codice_l0.py +54 -0
- imap_processing/codice/codice_l1a.py +558 -0
- imap_processing/codice/codice_l1b.py +194 -0
- imap_processing/codice/constants.py +986 -0
- imap_processing/codice/data/esa_sweep_values.csv +257 -0
- imap_processing/codice/data/lo_stepping_values.csv +129 -0
- imap_processing/codice/decompress.py +142 -0
- imap_processing/codice/packet_definitions/P_COD_NHK.xml +618 -0
- imap_processing/codice/packet_definitions/codice_packet_definition.xml +5073 -0
- imap_processing/codice/utils.py +95 -0
- imap_processing/decom.py +40 -0
- imap_processing/glows/__init__.py +1 -0
- imap_processing/glows/ancillary/l1b_conversion_table_v001.json +42 -0
- imap_processing/glows/l0/__init__.py +0 -0
- imap_processing/glows/l0/decom_glows.py +91 -0
- imap_processing/glows/l0/glows_l0_data.py +194 -0
- imap_processing/glows/l1a/glows_l1a.py +424 -0
- imap_processing/glows/l1a/glows_l1a_data.py +555 -0
- imap_processing/glows/l1b/glows_l1b.py +270 -0
- imap_processing/glows/l1b/glows_l1b_data.py +583 -0
- imap_processing/glows/packet_definitions/GLX_COMBINED.xml +254 -0
- imap_processing/glows/packet_definitions/P_GLX_TMSCDE.xml +97 -0
- imap_processing/glows/packet_definitions/P_GLX_TMSCHIST.xml +215 -0
- imap_processing/glows/utils/__init__.py +0 -0
- imap_processing/glows/utils/constants.py +105 -0
- imap_processing/hi/__init__.py +1 -0
- imap_processing/hi/l0/__init__.py +0 -0
- imap_processing/hi/l0/decom_hi.py +24 -0
- imap_processing/hi/l1a/__init__.py +0 -0
- imap_processing/hi/l1a/hi_l1a.py +73 -0
- imap_processing/hi/l1a/histogram.py +142 -0
- imap_processing/hi/l1a/housekeeping.py +27 -0
- imap_processing/hi/l1a/science_direct_event.py +341 -0
- imap_processing/hi/l1b/__init__.py +0 -0
- imap_processing/hi/l1b/hi_eng_unit_convert_table.csv +154 -0
- imap_processing/hi/l1b/hi_l1b.py +127 -0
- imap_processing/hi/l1c/__init__.py +0 -0
- imap_processing/hi/l1c/hi_l1c.py +228 -0
- imap_processing/hi/packet_definitions/__init__.py +0 -0
- imap_processing/hi/packet_definitions/hi_packet_definition.xml +482 -0
- imap_processing/hi/utils.py +27 -0
- imap_processing/hit/__init__.py +1 -0
- imap_processing/hit/l0/__init__.py +0 -0
- imap_processing/hit/l0/data_classes/housekeeping.py +240 -0
- imap_processing/hit/l0/data_classes/science_packet.py +259 -0
- imap_processing/hit/l0/decom_hit.py +467 -0
- imap_processing/hit/l0/utils/hit_base.py +57 -0
- imap_processing/hit/l1a/__init__.py +0 -0
- imap_processing/hit/l1a/hit_l1a.py +254 -0
- imap_processing/hit/l1b/hit_l1b.py +179 -0
- imap_processing/hit/packet_definitions/hit_packet_definitions.xml +1276 -0
- imap_processing/ialirt/__init__.py +0 -0
- imap_processing/ialirt/l0/__init__.py +0 -0
- imap_processing/ialirt/l0/process_hit.py +220 -0
- imap_processing/ialirt/packet_definitions/__init__.py +0 -0
- imap_processing/ialirt/packet_definitions/ialirt.xml +778 -0
- imap_processing/ialirt/packet_definitions/ialirt_hit.xml +186 -0
- imap_processing/idex/__init__.py +2 -0
- imap_processing/idex/idex_constants.py +27 -0
- imap_processing/idex/idex_l0.py +31 -0
- imap_processing/idex/idex_l1a.py +631 -0
- imap_processing/idex/packet_definitions/idex_packet_definition.xml +3162 -0
- imap_processing/lo/__init__.py +1 -0
- imap_processing/lo/l0/__init__.py +0 -0
- imap_processing/lo/l0/data_classes/science_direct_events.py +215 -0
- imap_processing/lo/l0/data_classes/star_sensor.py +98 -0
- imap_processing/lo/l0/decompression_tables/12_to_16_bit.csv +4097 -0
- imap_processing/lo/l0/decompression_tables/8_to_12_bit.csv +257 -0
- imap_processing/lo/l0/decompression_tables/8_to_16_bit.csv +257 -0
- imap_processing/lo/l0/decompression_tables/decompression_tables.py +75 -0
- imap_processing/lo/l0/lo_apid.py +15 -0
- imap_processing/lo/l0/lo_science.py +150 -0
- imap_processing/lo/l0/utils/binary_string.py +59 -0
- imap_processing/lo/l0/utils/bit_decompression.py +62 -0
- imap_processing/lo/l0/utils/lo_base.py +57 -0
- imap_processing/lo/l1a/__init__.py +0 -0
- imap_processing/lo/l1a/lo_l1a.py +157 -0
- imap_processing/lo/l1b/lo_l1b.py +160 -0
- imap_processing/lo/l1c/lo_l1c.py +180 -0
- imap_processing/lo/packet_definitions/lo_xtce.xml +3541 -0
- imap_processing/mag/__init__.py +2 -0
- imap_processing/mag/constants.py +108 -0
- imap_processing/mag/l0/decom_mag.py +170 -0
- imap_processing/mag/l0/mag_l0_data.py +118 -0
- imap_processing/mag/l1a/mag_l1a.py +317 -0
- imap_processing/mag/l1a/mag_l1a_data.py +1007 -0
- imap_processing/mag/l1b/__init__.py +0 -0
- imap_processing/mag/l1b/imap_calibration_mag_20240229_v01.cdf +0 -0
- imap_processing/mag/l1b/mag_l1b.py +125 -0
- imap_processing/mag/l1c/mag_l1c.py +57 -0
- imap_processing/mag/packet_definitions/MAG_SCI_COMBINED.xml +235 -0
- imap_processing/quality_flags.py +91 -0
- imap_processing/spice/__init__.py +1 -0
- imap_processing/spice/geometry.py +322 -0
- imap_processing/spice/kernels.py +459 -0
- imap_processing/spice/time.py +72 -0
- imap_processing/swapi/__init__.py +1 -0
- imap_processing/swapi/l1/__init__.py +0 -0
- imap_processing/swapi/l1/swapi_l1.py +685 -0
- imap_processing/swapi/l2/__init__.py +0 -0
- imap_processing/swapi/l2/swapi_l2.py +107 -0
- imap_processing/swapi/packet_definitions/__init__.py +0 -0
- imap_processing/swapi/packet_definitions/swapi_packet_definition.xml +708 -0
- imap_processing/swapi/swapi_utils.py +25 -0
- imap_processing/swe/__init__.py +1 -0
- imap_processing/swe/l1a/__init__.py +0 -0
- imap_processing/swe/l1a/swe_l1a.py +48 -0
- imap_processing/swe/l1a/swe_science.py +223 -0
- imap_processing/swe/l1b/engineering_unit_convert_table.csv +65 -0
- imap_processing/swe/l1b/swe_esa_lookup_table.csv +1441 -0
- imap_processing/swe/l1b/swe_l1b.py +49 -0
- imap_processing/swe/l1b/swe_l1b_science.py +557 -0
- imap_processing/swe/packet_definitions/__init__.py +0 -0
- imap_processing/swe/packet_definitions/swe_packet_definition.xml +303 -0
- imap_processing/swe/utils/__init__.py +0 -0
- imap_processing/swe/utils/swe_utils.py +9 -0
- imap_processing/tests/__init__.py +0 -0
- imap_processing/tests/ccsds/test_data/expected_output.xml +171 -0
- imap_processing/tests/ccsds/test_excel_to_xtce.py +285 -0
- imap_processing/tests/cdf/__init__.py +0 -0
- imap_processing/tests/cdf/imap_default_global_cdf_attrs.yaml +8 -0
- imap_processing/tests/cdf/shared/default_global_cdf_attrs_schema.yaml +246 -0
- imap_processing/tests/cdf/shared/default_variable_cdf_attrs_schema.yaml +466 -0
- imap_processing/tests/cdf/test_cdf_attribute_manager.py +353 -0
- imap_processing/tests/cdf/test_data/imap_default_global_test_cdf_attrs.yaml +7 -0
- imap_processing/tests/cdf/test_data/imap_instrument1_global_cdf_attrs.yaml +14 -0
- imap_processing/tests/cdf/test_data/imap_instrument1_level1_variable_attrs.yaml +23 -0
- imap_processing/tests/cdf/test_data/imap_instrument2_global_cdf_attrs.yaml +23 -0
- imap_processing/tests/cdf/test_data/imap_instrument2_level2_variable_attrs.yaml +30 -0
- imap_processing/tests/cdf/test_data/imap_test_global.yaml +26 -0
- imap_processing/tests/cdf/test_data/imap_test_variable.yaml +41 -0
- imap_processing/tests/cdf/test_imap_cdf_manager.py +62 -0
- imap_processing/tests/cdf/test_utils.py +109 -0
- imap_processing/tests/codice/__init__.py +0 -0
- imap_processing/tests/codice/conftest.py +56 -0
- imap_processing/tests/codice/data/eu_unit_lookup_table.csv +101 -0
- imap_processing/tests/codice/data/idle_export_eu.COD_NHK_20230822_122700 2.csv +100 -0
- imap_processing/tests/codice/data/idle_export_raw.COD_NHK_20230822_122700.csv +100 -0
- imap_processing/tests/codice/data/imap_codice_l0_hi-counters-aggregated_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_hi-counters-singles_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_hi-omni_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_hi-pha_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_hi-sectored_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_hskp_20100101_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-counters-aggregated_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-counters-singles_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-angular_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-priority_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-species_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-pha_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-sw-angular_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-sw-priority_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l0_lo-sw-species_20240429_v001.pkts +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_hi-counters-aggregated_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_hi-counters-singles_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_hi-omni_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_hi-sectored_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_hskp_20100101_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-counters-aggregated_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-counters-singles_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-angular_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-priority_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-species_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-angular_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-priority_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-species_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_hi-counters-aggregated_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_hi-counters-singles_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_hi-omni_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_hi-sectored_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_hskp_20100101_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-counters-aggregated_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-counters-singles_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-angular_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-priority_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-species_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-angular_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-priority_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-species_20240429_v001.cdf +0 -0
- imap_processing/tests/codice/test_codice_l0.py +144 -0
- imap_processing/tests/codice/test_codice_l1a.py +187 -0
- imap_processing/tests/codice/test_codice_l1b.py +60 -0
- imap_processing/tests/codice/test_decompress.py +50 -0
- imap_processing/tests/conftest.py +372 -0
- imap_processing/tests/glows/direct_events_validation_data_l1a.csv +5704 -0
- imap_processing/tests/glows/glows_test_packet_20110921_v01.pkts +0 -0
- imap_processing/tests/glows/test_glows_decom.py +133 -0
- imap_processing/tests/glows/test_glows_l1a_cdf.py +85 -0
- imap_processing/tests/glows/test_glows_l1a_data.py +510 -0
- imap_processing/tests/glows/test_glows_l1b.py +348 -0
- imap_processing/tests/glows/test_glows_l1b_data.py +70 -0
- imap_processing/tests/hi/__init__.py +0 -0
- imap_processing/tests/hi/conftest.py +133 -0
- imap_processing/tests/hi/test_data/l0/20231030_H45_APP_NHK.bin +0 -0
- imap_processing/tests/hi/test_data/l0/20231030_H45_APP_NHK.csv +201 -0
- imap_processing/tests/hi/test_data/l0/20231030_H45_SCI_CNT.bin +0 -0
- imap_processing/tests/hi/test_data/l0/20231030_H45_SCI_DE.bin +0 -0
- imap_processing/tests/hi/test_data/l0/README.txt +54 -0
- imap_processing/tests/hi/test_decom.py +55 -0
- imap_processing/tests/hi/test_hi_l1b.py +31 -0
- imap_processing/tests/hi/test_hi_l1c.py +69 -0
- imap_processing/tests/hi/test_l1a.py +96 -0
- imap_processing/tests/hi/test_l1a_sci_de.py +72 -0
- imap_processing/tests/hi/test_utils.py +15 -0
- imap_processing/tests/hit/PREFLIGHT_raw_record_2023_256_15_59_04_apid1251.pkts +0 -0
- imap_processing/tests/hit/PREFLIGHT_raw_record_2023_256_15_59_04_apid1252.pkts +0 -0
- imap_processing/tests/hit/__init__.py +0 -0
- imap_processing/tests/hit/test_data/imap_hit_l0_hk_20100105_v001.pkts +0 -0
- imap_processing/tests/hit/test_data/sci_sample.ccsds +0 -0
- imap_processing/tests/hit/test_hit_decom.py +230 -0
- imap_processing/tests/hit/test_hit_l1a.py +224 -0
- imap_processing/tests/hit/test_hit_l1b.py +52 -0
- imap_processing/tests/hit/validation_data/hskp_sample_raw.csv +88 -0
- imap_processing/tests/ialirt/__init__.py +0 -0
- imap_processing/tests/ialirt/test_data/l0/IALiRT Raw Packet Telemetry.txt +33 -0
- imap_processing/tests/ialirt/test_data/l0/hit_ialirt_sample.ccsds +0 -0
- imap_processing/tests/ialirt/test_data/l0/hit_ialirt_sample.csv +1001 -0
- imap_processing/tests/ialirt/unit/__init__.py +0 -0
- imap_processing/tests/ialirt/unit/test_decom_ialirt.py +94 -0
- imap_processing/tests/ialirt/unit/test_process_hit.py +226 -0
- imap_processing/tests/idex/__init__.py +0 -0
- imap_processing/tests/idex/conftest.py +22 -0
- imap_processing/tests/idex/imap_idex_l0_raw_20230725_v001.pkts +0 -0
- imap_processing/tests/idex/impact_14_tof_high_data.txt +8189 -0
- imap_processing/tests/idex/test_idex_l0.py +45 -0
- imap_processing/tests/idex/test_idex_l1a.py +91 -0
- imap_processing/tests/lo/__init__.py +0 -0
- imap_processing/tests/lo/test_binary_string.py +21 -0
- imap_processing/tests/lo/test_bit_decompression.py +39 -0
- imap_processing/tests/lo/test_cdfs/imap_lo_l0_raw_20240627_v001.pkts +0 -0
- imap_processing/tests/lo/test_cdfs/imap_lo_l1a_de_20100101_v001.cdf +0 -0
- imap_processing/tests/lo/test_cdfs/imap_lo_l1a_spin_20100101_v001.cdf +0 -0
- imap_processing/tests/lo/test_cdfs/imap_lo_l1b_de_20100101_v001.cdf +0 -0
- imap_processing/tests/lo/test_lo_l1a.py +66 -0
- imap_processing/tests/lo/test_lo_l1b.py +74 -0
- imap_processing/tests/lo/test_lo_l1c.py +66 -0
- imap_processing/tests/lo/test_science_counts.py +41 -0
- imap_processing/tests/lo/test_science_direct_events.py +209 -0
- imap_processing/tests/lo/test_star_sensor.py +35 -0
- imap_processing/tests/mag/imap_mag_l1a_burst-magi_20231025_v001.cdf +0 -0
- imap_processing/tests/mag/mag_l0_test_data.pkts +0 -0
- imap_processing/tests/mag/mag_l0_test_output.csv +37 -0
- imap_processing/tests/mag/mag_l1_test_data.pkts +0 -0
- imap_processing/tests/mag/mag_l1a_test_output.csv +97 -0
- imap_processing/tests/mag/test_mag_decom.py +117 -0
- imap_processing/tests/mag/test_mag_l1a.py +856 -0
- imap_processing/tests/mag/test_mag_l1b.py +77 -0
- imap_processing/tests/mag/test_mag_l1c.py +40 -0
- imap_processing/tests/spice/__init__.py +0 -0
- imap_processing/tests/spice/test_data/imap_ena_sim_metakernel.template +4 -0
- imap_processing/tests/spice/test_data/imap_science_0001.tf +171 -0
- imap_processing/tests/spice/test_data/imap_sclk_0000.tsc +156 -0
- imap_processing/tests/spice/test_data/imap_sim_ck_2hr_2secsampling_with_nutation.bc +0 -0
- imap_processing/tests/spice/test_data/imap_simple_metakernel.template +3 -0
- imap_processing/tests/spice/test_data/imap_spk_demo.bsp +0 -0
- imap_processing/tests/spice/test_data/imap_wkcp.tf +1806 -0
- imap_processing/tests/spice/test_data/naif0012.tls +150 -0
- imap_processing/tests/spice/test_data/sim_1yr_imap_attitude.bc +0 -0
- imap_processing/tests/spice/test_data/sim_1yr_imap_pointing_frame.bc +0 -0
- imap_processing/tests/spice/test_geometry.py +214 -0
- imap_processing/tests/spice/test_kernels.py +272 -0
- imap_processing/tests/spice/test_time.py +35 -0
- imap_processing/tests/swapi/__init__.py +0 -0
- imap_processing/tests/swapi/conftest.py +16 -0
- imap_processing/tests/swapi/l0_data/__init__.py +0 -0
- imap_processing/tests/swapi/l0_data/imap_swapi_l0_raw_20231012_v001.pkts +0 -0
- imap_processing/tests/swapi/l0_validation_data/__init__.py +0 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_AUT_20231012_125245.csv +124 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_HK_20231012_125245.csv +98 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_MG_20231012_125245.csv +9 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_SCI_20231012_125245.csv +72 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_AUT_20231012_125245.csv +124 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_HK_20231012_125245.csv +98 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_MG_20231012_125245.csv +9 -0
- imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_SCI_20231012_125245.csv +72 -0
- imap_processing/tests/swapi/test_swapi_decom.py +135 -0
- imap_processing/tests/swapi/test_swapi_l1.py +354 -0
- imap_processing/tests/swapi/test_swapi_l2.py +21 -0
- imap_processing/tests/swe/__init__.py +0 -0
- imap_processing/tests/swe/conftest.py +35 -0
- imap_processing/tests/swe/decompressed/20230927173238_4th_quarter_decompressed.csv +181 -0
- imap_processing/tests/swe/decompressed/20230927173253_1st_quarter_decompressed.csv +181 -0
- imap_processing/tests/swe/decompressed/20230927173308_2nd_quarter_decompressed.csv +181 -0
- imap_processing/tests/swe/decompressed/20230927173323_3rd_quarter_decompressed.csv +181 -0
- imap_processing/tests/swe/l0_data/2024051010_SWE_SCIENCE_packet.bin +0 -0
- imap_processing/tests/swe/l0_validation_data/idle_export_eu.SWE_SCIENCE_20240510_092742.csv +544 -0
- imap_processing/tests/swe/l0_validation_data/idle_export_raw.SWE_SCIENCE_20240510_092742.csv +363 -0
- imap_processing/tests/swe/test_swe_l1a.py +12 -0
- imap_processing/tests/swe/test_swe_l1a_science.py +129 -0
- imap_processing/tests/swe/test_swe_l1b.py +61 -0
- imap_processing/tests/swe/test_swe_l1b_science.py +65 -0
- imap_processing/tests/test_cli.py +229 -0
- imap_processing/tests/test_decom.py +66 -0
- imap_processing/tests/test_quality_flags.py +71 -0
- imap_processing/tests/test_utils.py +107 -0
- imap_processing/tests/ultra/__init__.py +0 -0
- imap_processing/tests/ultra/test_data/l0/FM45_40P_Phi28p5_BeamCal_LinearScan_phi28.50_theta-0.00_20240207T102740.CCSDS +0 -0
- imap_processing/tests/ultra/test_data/l0/FM45_7P_Phi0.0_BeamCal_LinearScan_phi0.04_theta-0.01_20230821T121304.CCSDS +0 -0
- imap_processing/tests/ultra/test_data/l0/FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.CCSDS +0 -0
- imap_processing/tests/ultra/test_data/l0/Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.CCSDS +0 -0
- imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_auxdata_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +24 -0
- imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_enaphxtofhangimg_FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.csv +105 -0
- imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_ultraimgrates_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +24 -0
- imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_ultrarawimg_withFSWcalcs_FM45_40P_Phi28p5_BeamCal_LinearScan_phi2850_theta-000_20240207T102740.csv +3314 -0
- imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_ultrarawimgevent_FM45_7P_Phi00_BeamCal_LinearScan_phi004_theta-001_20230821T121304.csv +702 -0
- imap_processing/tests/ultra/unit/__init__.py +0 -0
- imap_processing/tests/ultra/unit/conftest.py +210 -0
- imap_processing/tests/ultra/unit/test_decom_apid_880.py +98 -0
- imap_processing/tests/ultra/unit/test_decom_apid_881.py +50 -0
- imap_processing/tests/ultra/unit/test_decom_apid_883.py +44 -0
- imap_processing/tests/ultra/unit/test_decom_apid_896.py +104 -0
- imap_processing/tests/ultra/unit/test_lookup_utils.py +68 -0
- imap_processing/tests/ultra/unit/test_ultra_l1a.py +338 -0
- imap_processing/tests/ultra/unit/test_ultra_l1b.py +122 -0
- imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +57 -0
- imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +342 -0
- imap_processing/tests/ultra/unit/test_ultra_l1c.py +104 -0
- imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +35 -0
- imap_processing/ultra/__init__.py +1 -0
- imap_processing/ultra/constants.py +60 -0
- imap_processing/ultra/l0/__init__.py +0 -0
- imap_processing/ultra/l0/decom_tools.py +281 -0
- imap_processing/ultra/l0/decom_ultra.py +278 -0
- imap_processing/ultra/l0/ultra_utils.py +326 -0
- imap_processing/ultra/l1a/__init__.py +0 -0
- imap_processing/ultra/l1a/ultra_l1a.py +319 -0
- imap_processing/ultra/l1b/badtimes.py +26 -0
- imap_processing/ultra/l1b/cullingmask.py +26 -0
- imap_processing/ultra/l1b/de.py +59 -0
- imap_processing/ultra/l1b/extendedspin.py +45 -0
- imap_processing/ultra/l1b/lookup_utils.py +165 -0
- imap_processing/ultra/l1b/ultra_l1b.py +65 -0
- imap_processing/ultra/l1b/ultra_l1b_annotated.py +54 -0
- imap_processing/ultra/l1b/ultra_l1b_extended.py +764 -0
- imap_processing/ultra/l1c/histogram.py +36 -0
- imap_processing/ultra/l1c/pset.py +36 -0
- imap_processing/ultra/l1c/ultra_l1c.py +52 -0
- imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +54 -0
- imap_processing/ultra/lookup_tables/EgyNorm.mem.csv +32769 -0
- imap_processing/ultra/lookup_tables/FM45_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -0
- imap_processing/ultra/lookup_tables/ultra45_back-pos-luts.csv +4097 -0
- imap_processing/ultra/lookup_tables/ultra45_tdc_norm.csv +2050 -0
- imap_processing/ultra/lookup_tables/ultra90_back-pos-luts.csv +4097 -0
- imap_processing/ultra/lookup_tables/ultra90_tdc_norm.csv +2050 -0
- imap_processing/ultra/lookup_tables/yadjust.csv +257 -0
- imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +547 -0
- imap_processing/ultra/packet_definitions/__init__.py +0 -0
- imap_processing/ultra/utils/__init__.py +0 -0
- imap_processing/ultra/utils/ultra_l1_utils.py +50 -0
- imap_processing/utils.py +413 -0
- imap_processing-0.6.0.dist-info/LICENSE +21 -0
- imap_processing-0.6.0.dist-info/METADATA +107 -0
- imap_processing-0.6.0.dist-info/RECORD +398 -0
- imap_processing-0.6.0.dist-info/WHEEL +4 -0
- imap_processing-0.6.0.dist-info/entry_points.txt +4 -0
|
File without changes
|
|
Binary file
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"""MAG L1B Processing."""
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
import xarray as xr
|
|
7
|
+
|
|
8
|
+
from imap_processing.cdf.imap_cdf_manager import ImapCdfAttributes
|
|
9
|
+
from imap_processing.cdf.utils import load_cdf
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def mag_l1b(input_dataset: xr.Dataset, version: str) -> xr.Dataset:
|
|
13
|
+
"""
|
|
14
|
+
Will process MAG L1B data from L1A data.
|
|
15
|
+
|
|
16
|
+
Parameters
|
|
17
|
+
----------
|
|
18
|
+
input_dataset : xr.Dataset
|
|
19
|
+
The input dataset to process.
|
|
20
|
+
version : str
|
|
21
|
+
The version of the output data.
|
|
22
|
+
|
|
23
|
+
Returns
|
|
24
|
+
-------
|
|
25
|
+
output_dataset : xr.Dataset
|
|
26
|
+
The processed dataset.
|
|
27
|
+
"""
|
|
28
|
+
# TODO:
|
|
29
|
+
# Read in calibration file
|
|
30
|
+
# multiply all vectors by calibration file
|
|
31
|
+
|
|
32
|
+
output_dataset = mag_l1b_processing(input_dataset)
|
|
33
|
+
attribute_manager = ImapCdfAttributes()
|
|
34
|
+
attribute_manager.add_instrument_global_attrs("mag")
|
|
35
|
+
attribute_manager.add_global_attribute("Data_version", version)
|
|
36
|
+
|
|
37
|
+
# Variable attributes can remain the same as L1A
|
|
38
|
+
input_logical_source = input_dataset.attrs["Logical_source"]
|
|
39
|
+
if isinstance(input_dataset.attrs["Logical_source"], list):
|
|
40
|
+
input_logical_source = input_dataset.attrs["Logical_source"][0]
|
|
41
|
+
|
|
42
|
+
logical_source = input_logical_source.replace("l1a", "l1b")
|
|
43
|
+
output_dataset.attrs = attribute_manager.get_global_attributes(logical_source)
|
|
44
|
+
|
|
45
|
+
return output_dataset
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def mag_l1b_processing(input_dataset: xr.Dataset) -> xr.Dataset:
|
|
49
|
+
"""
|
|
50
|
+
Will process MAG L1B data from L1A data.
|
|
51
|
+
|
|
52
|
+
MAG L1B is almost identical to L1A, with only the vectors and attributes getting
|
|
53
|
+
updated. All non-vector variables are the same.
|
|
54
|
+
|
|
55
|
+
Parameters
|
|
56
|
+
----------
|
|
57
|
+
input_dataset : xr.Dataset
|
|
58
|
+
The input dataset to process.
|
|
59
|
+
|
|
60
|
+
Returns
|
|
61
|
+
-------
|
|
62
|
+
output_dataset : xr.Dataset
|
|
63
|
+
L1b dataset.
|
|
64
|
+
"""
|
|
65
|
+
# TODO: There is a time alignment step that will add a lot of complexity.
|
|
66
|
+
# This needs to be done once we have some SPICE time data.
|
|
67
|
+
|
|
68
|
+
dims = [["direction"]]
|
|
69
|
+
new_dims = [["direction"]]
|
|
70
|
+
# TODO: This should definitely be loaded from AWS
|
|
71
|
+
calibration_dataset = load_cdf(
|
|
72
|
+
Path(__file__).parent / "imap_calibration_mag_20240229_v01.cdf"
|
|
73
|
+
)
|
|
74
|
+
# TODO: Check validity of time range for calibration
|
|
75
|
+
if "mago" in input_dataset.attrs["Logical_source"][0]:
|
|
76
|
+
calibration_matrix = calibration_dataset["MFOTOURFO"]
|
|
77
|
+
else:
|
|
78
|
+
calibration_matrix = calibration_dataset["MFITOURFI"]
|
|
79
|
+
|
|
80
|
+
l1b_fields = xr.apply_ufunc(
|
|
81
|
+
calibrate,
|
|
82
|
+
input_dataset["vectors"],
|
|
83
|
+
input_core_dims=dims,
|
|
84
|
+
output_core_dims=new_dims,
|
|
85
|
+
vectorize=True,
|
|
86
|
+
keep_attrs=True,
|
|
87
|
+
kwargs={"calibration_matrix": calibration_matrix},
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
output_dataset = input_dataset.copy()
|
|
91
|
+
output_dataset["vectors"] = l1b_fields
|
|
92
|
+
|
|
93
|
+
# TODO add/update attributes
|
|
94
|
+
return output_dataset
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def calibrate(
|
|
98
|
+
input_vector: np.ndarray, calibration_matrix: xr.DataArray = None
|
|
99
|
+
) -> np.ndarray:
|
|
100
|
+
"""
|
|
101
|
+
Apply calibration matrix to input vector.
|
|
102
|
+
|
|
103
|
+
The calibration matrix contains 3x3 matrices for each range. To calibrate the input
|
|
104
|
+
vector, we take the range (which is the fourth value of the vector) to determine
|
|
105
|
+
the correct calibration matrix. We then multiply the input vector by that matrix.
|
|
106
|
+
|
|
107
|
+
Parameters
|
|
108
|
+
----------
|
|
109
|
+
input_vector : numpy.ndarray
|
|
110
|
+
The input vector to calibrate [x, y, z, range].
|
|
111
|
+
calibration_matrix : xr.DataArray
|
|
112
|
+
The full set of calibration matrices, for each range. Size is ((3, 3, 4)).
|
|
113
|
+
|
|
114
|
+
Returns
|
|
115
|
+
-------
|
|
116
|
+
updated_vector : numpy.ndarray
|
|
117
|
+
Calibrated vector.
|
|
118
|
+
"""
|
|
119
|
+
updated_vector = input_vector.copy()
|
|
120
|
+
|
|
121
|
+
updated_vector[:3] = np.matmul(
|
|
122
|
+
input_vector[:3], calibration_matrix.values[:, :, int(input_vector[3])]
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
return updated_vector
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""MAG L1C processing module."""
|
|
2
|
+
|
|
3
|
+
import xarray as xr
|
|
4
|
+
|
|
5
|
+
from imap_processing.cdf.imap_cdf_manager import ImapCdfAttributes
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def mag_l1c(
|
|
9
|
+
first_input_dataset: xr.Dataset, second_input_dataset: xr.Dataset, version: str
|
|
10
|
+
) -> xr.Dataset:
|
|
11
|
+
"""
|
|
12
|
+
Will process MAG L1C data from L1A data.
|
|
13
|
+
|
|
14
|
+
This requires both the norm and burst data to be passed in.
|
|
15
|
+
|
|
16
|
+
Parameters
|
|
17
|
+
----------
|
|
18
|
+
first_input_dataset : xr.Dataset
|
|
19
|
+
The first input dataset to process. This can be either burst or norm data, for
|
|
20
|
+
mago or magi.
|
|
21
|
+
second_input_dataset : xr.Dataset
|
|
22
|
+
The second input dataset to process. This should be burst if first_input_dataset
|
|
23
|
+
was norm, or norm if first_input_dataset was burst. It should match the
|
|
24
|
+
instrument - both inputs should be mago or magi.
|
|
25
|
+
version : str
|
|
26
|
+
The version of the output data.
|
|
27
|
+
|
|
28
|
+
Returns
|
|
29
|
+
-------
|
|
30
|
+
output_dataset : xr.Dataset
|
|
31
|
+
L1C data set.
|
|
32
|
+
"""
|
|
33
|
+
# TODO: L1C processing involves filling gaps with burst data.
|
|
34
|
+
input_logical_source_1 = first_input_dataset.attrs["Logical_source"]
|
|
35
|
+
if isinstance(first_input_dataset.attrs["Logical_source"], list):
|
|
36
|
+
input_logical_source_1 = first_input_dataset.attrs["Logical_source"][0]
|
|
37
|
+
|
|
38
|
+
input_logical_source_2 = second_input_dataset.attrs["Logical_source"]
|
|
39
|
+
if isinstance(second_input_dataset.attrs["Logical_source"], list):
|
|
40
|
+
input_logical_source_2 = second_input_dataset.attrs["Logical_source"][0]
|
|
41
|
+
|
|
42
|
+
if "norm" in input_logical_source_1:
|
|
43
|
+
output_dataset = first_input_dataset.copy()
|
|
44
|
+
logical_source = input_logical_source_1.replace("l1b", "l1c")
|
|
45
|
+
elif "norm" in input_logical_source_2:
|
|
46
|
+
output_dataset = second_input_dataset.copy()
|
|
47
|
+
logical_source = input_logical_source_2.replace("l1b", "l1c")
|
|
48
|
+
else:
|
|
49
|
+
raise RuntimeError("Neither input dataset is norm data")
|
|
50
|
+
|
|
51
|
+
attribute_manager = ImapCdfAttributes()
|
|
52
|
+
attribute_manager.add_instrument_global_attrs("mag")
|
|
53
|
+
attribute_manager.add_global_attribute("Data_version", version)
|
|
54
|
+
|
|
55
|
+
output_dataset.attrs = attribute_manager.get_global_attributes(logical_source)
|
|
56
|
+
|
|
57
|
+
return output_dataset
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
<?xml version='1.0' encoding='utf-8'?>
|
|
2
|
+
<xtce:SpaceSystem xmlns:xtce="http://www.omg.org/space/xtce" name="P_MAG_SCI_NORM">
|
|
3
|
+
<xtce:Header date="2023-11" version="1.0" author="IMAP SDC" />
|
|
4
|
+
<xtce:TelemetryMetaData>
|
|
5
|
+
<xtce:ParameterTypeSet>
|
|
6
|
+
<xtce:IntegerParameterType name="UINT1" signed="false">
|
|
7
|
+
<xtce:IntegerDataEncoding sizeInBits="1" encoding="unsigned" />
|
|
8
|
+
</xtce:IntegerParameterType>
|
|
9
|
+
<xtce:IntegerParameterType name="UINT2" signed="false">
|
|
10
|
+
<xtce:IntegerDataEncoding sizeInBits="2" encoding="unsigned" />
|
|
11
|
+
</xtce:IntegerParameterType>
|
|
12
|
+
<xtce:IntegerParameterType name="UINT3" signed="false">
|
|
13
|
+
<xtce:IntegerDataEncoding sizeInBits="3" encoding="unsigned" />
|
|
14
|
+
</xtce:IntegerParameterType>
|
|
15
|
+
<xtce:IntegerParameterType name="UINT4" signed="false">
|
|
16
|
+
<xtce:IntegerDataEncoding sizeInBits="4" encoding="unsigned" />
|
|
17
|
+
</xtce:IntegerParameterType>
|
|
18
|
+
<xtce:IntegerParameterType name="UINT8" signed="false">
|
|
19
|
+
<xtce:IntegerDataEncoding sizeInBits="8" encoding="unsigned" />
|
|
20
|
+
</xtce:IntegerParameterType>
|
|
21
|
+
<xtce:IntegerParameterType name="UINT11" signed="false">
|
|
22
|
+
<xtce:IntegerDataEncoding sizeInBits="11" encoding="unsigned" />
|
|
23
|
+
</xtce:IntegerParameterType>
|
|
24
|
+
<xtce:IntegerParameterType name="UINT14" signed="false">
|
|
25
|
+
<xtce:IntegerDataEncoding sizeInBits="14" encoding="unsigned" />
|
|
26
|
+
</xtce:IntegerParameterType>
|
|
27
|
+
<xtce:IntegerParameterType name="UINT16" signed="false">
|
|
28
|
+
<xtce:IntegerDataEncoding sizeInBits="16" encoding="unsigned" />
|
|
29
|
+
</xtce:IntegerParameterType>
|
|
30
|
+
<xtce:IntegerParameterType name="UINT32" signed="false">
|
|
31
|
+
<xtce:IntegerDataEncoding sizeInBits="32" encoding="unsigned" />
|
|
32
|
+
</xtce:IntegerParameterType>
|
|
33
|
+
<xtce:BinaryParameterType name="VAR_BYTE">
|
|
34
|
+
<xtce:UnitSet />
|
|
35
|
+
<xtce:BinaryDataEncoding bitOrder="mostSignificantBitFirst">
|
|
36
|
+
<xtce:SizeInBits>
|
|
37
|
+
<xtce:DynamicValue>
|
|
38
|
+
<xtce:ParameterInstanceRef parameterRef="PKT_LEN"/>
|
|
39
|
+
<xtce:LinearAdjustment intercept="-160" slope="8"/>
|
|
40
|
+
</xtce:DynamicValue>
|
|
41
|
+
</xtce:SizeInBits>
|
|
42
|
+
</xtce:BinaryDataEncoding>
|
|
43
|
+
</xtce:BinaryParameterType>
|
|
44
|
+
</xtce:ParameterTypeSet>
|
|
45
|
+
<xtce:ParameterSet>
|
|
46
|
+
<!-- MAG includes some ESA Header values as well as the standard NASA headers-->
|
|
47
|
+
<xtce:Parameter name="VERSION" parameterTypeRef="UINT3">
|
|
48
|
+
<xtce:LongDescription>CCSDS Packet Version Number (always 0)</xtce:LongDescription>
|
|
49
|
+
</xtce:Parameter>
|
|
50
|
+
<xtce:Parameter name="TYPE" parameterTypeRef="UINT1">
|
|
51
|
+
<xtce:LongDescription>CCSDS Packet Type Indicator (0=telemetry)</xtce:LongDescription>
|
|
52
|
+
</xtce:Parameter>
|
|
53
|
+
<xtce:Parameter name="SEC_HDR_FLG" parameterTypeRef="UINT1">
|
|
54
|
+
<xtce:LongDescription>CCSDS Packet Secondary Header Flag (always 1)</xtce:LongDescription>
|
|
55
|
+
</xtce:Parameter>
|
|
56
|
+
<xtce:Parameter name="PKT_APID" parameterTypeRef="UINT11">
|
|
57
|
+
<xtce:LongDescription>CCSDS Packet Application Process ID</xtce:LongDescription>
|
|
58
|
+
</xtce:Parameter>
|
|
59
|
+
<xtce:Parameter name="SEQ_FLGS" parameterTypeRef="UINT2">
|
|
60
|
+
<xtce:LongDescription>CCSDS Packet Grouping Flags (3=not part of group)</xtce:LongDescription>
|
|
61
|
+
</xtce:Parameter>
|
|
62
|
+
<xtce:Parameter name="SRC_SEQ_CTR" parameterTypeRef="UINT14">
|
|
63
|
+
<xtce:LongDescription>CCSDS Packet Sequence Count (increments with each new packet)</xtce:LongDescription>
|
|
64
|
+
</xtce:Parameter>
|
|
65
|
+
<xtce:Parameter name="PKT_LEN" parameterTypeRef="UINT16">
|
|
66
|
+
<xtce:LongDescription>CCSDS Packet Length (number of bytes after Packet length minus 1)</xtce:LongDescription>
|
|
67
|
+
</xtce:Parameter>
|
|
68
|
+
<xtce:Parameter name="PHVERNO" parameterTypeRef="UINT3">
|
|
69
|
+
<xtce:ShortDescription>ESA CCSDS Packet Version Number</xtce:ShortDescription>
|
|
70
|
+
</xtce:Parameter>
|
|
71
|
+
<xtce:Parameter name="PHTYPE" parameterTypeRef="UINT1">
|
|
72
|
+
<xtce:ShortDescription>ESA CCSDS Packet Type Indicator</xtce:ShortDescription>
|
|
73
|
+
</xtce:Parameter>
|
|
74
|
+
<xtce:Parameter name="PHSHF" parameterTypeRef="UINT1">
|
|
75
|
+
<xtce:ShortDescription>ESA CCSDS Packet Secondary Header Flag</xtce:ShortDescription>
|
|
76
|
+
</xtce:Parameter>
|
|
77
|
+
<xtce:Parameter name="PHAPID" parameterTypeRef="UINT11">
|
|
78
|
+
<xtce:ShortDescription>ESA CCSDS Packet Application Process ID</xtce:ShortDescription>
|
|
79
|
+
</xtce:Parameter>
|
|
80
|
+
<xtce:Parameter name="PHGROUPF" parameterTypeRef="UINT2">
|
|
81
|
+
<xtce:ShortDescription>ESA CCSDS Packet Grouping Flags</xtce:ShortDescription>
|
|
82
|
+
</xtce:Parameter>
|
|
83
|
+
<xtce:Parameter name="PHSEQCNT" parameterTypeRef="UINT14">
|
|
84
|
+
<xtce:ShortDescription>ESA CCSDS Packet Sequence Count</xtce:ShortDescription>
|
|
85
|
+
</xtce:Parameter>
|
|
86
|
+
<xtce:Parameter name="PHDLEN" parameterTypeRef="UINT16">
|
|
87
|
+
<xtce:ShortDescription>ESA CCSDS Packet Length</xtce:ShortDescription>
|
|
88
|
+
</xtce:Parameter>
|
|
89
|
+
<xtce:Parameter name="SHCOARSE" parameterTypeRef="UINT32">
|
|
90
|
+
<xtce:ShortDescription>Mission elapsed time</xtce:ShortDescription>
|
|
91
|
+
<xtce:LongDescription>CCSDS Packet 2nd Header Coarse Time</xtce:LongDescription>
|
|
92
|
+
</xtce:Parameter>
|
|
93
|
+
<xtce:Parameter name="PUS_SPARE1" parameterTypeRef="UINT1">
|
|
94
|
+
<xtce:ShortDescription>PUS Spare 1</xtce:ShortDescription>
|
|
95
|
+
<xtce:LongDescription>PUS Spare 1</xtce:LongDescription>
|
|
96
|
+
</xtce:Parameter>
|
|
97
|
+
<xtce:Parameter name="PUS_VERSION" parameterTypeRef="UINT3">
|
|
98
|
+
<xtce:ShortDescription>PUS Version Number</xtce:ShortDescription>
|
|
99
|
+
<xtce:LongDescription>PUS Version Number</xtce:LongDescription>
|
|
100
|
+
</xtce:Parameter>
|
|
101
|
+
<xtce:Parameter name="PUS_SPARE2" parameterTypeRef="UINT4">
|
|
102
|
+
<xtce:ShortDescription>PUS Spare 2</xtce:ShortDescription>
|
|
103
|
+
<xtce:LongDescription>PUS Spare 2</xtce:LongDescription>
|
|
104
|
+
</xtce:Parameter>
|
|
105
|
+
<xtce:Parameter name="PUS_STYPE" parameterTypeRef="UINT8">
|
|
106
|
+
<xtce:ShortDescription>PUS Service Type</xtce:ShortDescription>
|
|
107
|
+
<xtce:LongDescription>PUS Service Type</xtce:LongDescription>
|
|
108
|
+
</xtce:Parameter>
|
|
109
|
+
<xtce:Parameter name="PUS_SSUBTYPE" parameterTypeRef="UINT8">
|
|
110
|
+
<xtce:ShortDescription>PUS Service Subtype</xtce:ShortDescription>
|
|
111
|
+
<xtce:LongDescription>PUS Service Subtype</xtce:LongDescription>
|
|
112
|
+
</xtce:Parameter>
|
|
113
|
+
<xtce:Parameter name="COMPRESSION" parameterTypeRef="UINT1">
|
|
114
|
+
<xtce:ShortDescription>Science Data Compression Flag</xtce:ShortDescription>
|
|
115
|
+
<xtce:LongDescription>Science Data Compression Flag</xtce:LongDescription>
|
|
116
|
+
</xtce:Parameter>
|
|
117
|
+
<xtce:Parameter name="MAGO_ACT" parameterTypeRef="UINT1">
|
|
118
|
+
<xtce:ShortDescription>MAGO Active Status</xtce:ShortDescription>
|
|
119
|
+
<xtce:LongDescription>MAGO Active Status</xtce:LongDescription>
|
|
120
|
+
</xtce:Parameter>
|
|
121
|
+
<xtce:Parameter name="MAGI_ACT" parameterTypeRef="UINT1">
|
|
122
|
+
<xtce:ShortDescription>MAGI Active Status</xtce:ShortDescription>
|
|
123
|
+
<xtce:LongDescription>MAGI Active Status</xtce:LongDescription>
|
|
124
|
+
</xtce:Parameter>
|
|
125
|
+
<xtce:Parameter name="PRI_SENS" parameterTypeRef="UINT1">
|
|
126
|
+
<xtce:ShortDescription>Primary Sensor</xtce:ShortDescription>
|
|
127
|
+
<xtce:LongDescription>Primary Sensor</xtce:LongDescription>
|
|
128
|
+
</xtce:Parameter>
|
|
129
|
+
<xtce:Parameter name="SPARE1" parameterTypeRef="UINT4">
|
|
130
|
+
<xtce:ShortDescription>Spare</xtce:ShortDescription>
|
|
131
|
+
<xtce:LongDescription>Spare</xtce:LongDescription>
|
|
132
|
+
</xtce:Parameter>
|
|
133
|
+
<xtce:Parameter name="PRI_VECSEC" parameterTypeRef="UINT3">
|
|
134
|
+
<xtce:ShortDescription>Primary Vectors per Second</xtce:ShortDescription>
|
|
135
|
+
<xtce:LongDescription>Primary Vectors per Second</xtce:LongDescription>
|
|
136
|
+
</xtce:Parameter>
|
|
137
|
+
<xtce:Parameter name="SEC_VECSEC" parameterTypeRef="UINT3">
|
|
138
|
+
<xtce:ShortDescription>Secondary Vectors per second</xtce:ShortDescription>
|
|
139
|
+
<xtce:LongDescription>Secondary Vectors per second</xtce:LongDescription>
|
|
140
|
+
</xtce:Parameter>
|
|
141
|
+
<xtce:Parameter name="SPARE2" parameterTypeRef="UINT2">
|
|
142
|
+
<xtce:ShortDescription>Spare</xtce:ShortDescription>
|
|
143
|
+
<xtce:LongDescription>Spare</xtce:LongDescription>
|
|
144
|
+
</xtce:Parameter>
|
|
145
|
+
<xtce:Parameter name="PRI_COARSETM" parameterTypeRef="UINT32">
|
|
146
|
+
<xtce:ShortDescription>Primary Coarse Time</xtce:ShortDescription>
|
|
147
|
+
<xtce:LongDescription>Primary Coarse Time</xtce:LongDescription>
|
|
148
|
+
</xtce:Parameter>
|
|
149
|
+
<xtce:Parameter name="PRI_FNTM" parameterTypeRef="UINT16">
|
|
150
|
+
<xtce:ShortDescription>Primary Fine Time</xtce:ShortDescription>
|
|
151
|
+
<xtce:LongDescription>Primary Fine Time</xtce:LongDescription>
|
|
152
|
+
</xtce:Parameter>
|
|
153
|
+
<xtce:Parameter name="SEC_COARSETM" parameterTypeRef="UINT32">
|
|
154
|
+
<xtce:ShortDescription>Secondary Coarse Time</xtce:ShortDescription>
|
|
155
|
+
<xtce:LongDescription>Secondary Coarse Time</xtce:LongDescription>
|
|
156
|
+
</xtce:Parameter>
|
|
157
|
+
<xtce:Parameter name="SEC_FNTM" parameterTypeRef="UINT16">
|
|
158
|
+
<xtce:ShortDescription>Secondary Fine Time</xtce:ShortDescription>
|
|
159
|
+
<xtce:LongDescription>Secondary Fine Time</xtce:LongDescription>
|
|
160
|
+
</xtce:Parameter>
|
|
161
|
+
<xtce:Parameter name="VECTORS" parameterTypeRef="VAR_BYTE">
|
|
162
|
+
<xtce:ShortDescription>MAG Science Vectors</xtce:ShortDescription>
|
|
163
|
+
</xtce:Parameter>
|
|
164
|
+
</xtce:ParameterSet>
|
|
165
|
+
<xtce:ContainerSet>
|
|
166
|
+
<xtce:SequenceContainer name="CCSDSPacket">
|
|
167
|
+
<xtce:EntryList>
|
|
168
|
+
<xtce:ParameterRefEntry parameterRef="VERSION" />
|
|
169
|
+
<xtce:ParameterRefEntry parameterRef="TYPE" />
|
|
170
|
+
<xtce:ParameterRefEntry parameterRef="SEC_HDR_FLG" />
|
|
171
|
+
<xtce:ParameterRefEntry parameterRef="PKT_APID" />
|
|
172
|
+
<xtce:ParameterRefEntry parameterRef="SEQ_FLGS" />
|
|
173
|
+
<xtce:ParameterRefEntry parameterRef="SRC_SEQ_CTR" />
|
|
174
|
+
<xtce:ParameterRefEntry parameterRef="PKT_LEN" />
|
|
175
|
+
</xtce:EntryList>
|
|
176
|
+
</xtce:SequenceContainer>
|
|
177
|
+
<xtce:SequenceContainer name="P_MAG_SCI_NORM">
|
|
178
|
+
<xtce:BaseContainer containerRef="CCSDSPacket">
|
|
179
|
+
<xtce:RestrictionCriteria>
|
|
180
|
+
<xtce:Comparison parameterRef="PKT_APID" value="1052" useCalibratedValue="false" />
|
|
181
|
+
</xtce:RestrictionCriteria>
|
|
182
|
+
</xtce:BaseContainer>
|
|
183
|
+
<xtce:EntryList>
|
|
184
|
+
<xtce:ParameterRefEntry parameterRef="SHCOARSE" />
|
|
185
|
+
<xtce:ParameterRefEntry parameterRef="PUS_SPARE1" />
|
|
186
|
+
<xtce:ParameterRefEntry parameterRef="PUS_VERSION" />
|
|
187
|
+
<xtce:ParameterRefEntry parameterRef="PUS_SPARE2" />
|
|
188
|
+
<xtce:ParameterRefEntry parameterRef="PUS_STYPE" />
|
|
189
|
+
<xtce:ParameterRefEntry parameterRef="PUS_SSUBTYPE" />
|
|
190
|
+
<xtce:ParameterRefEntry parameterRef="COMPRESSION" />
|
|
191
|
+
<xtce:ParameterRefEntry parameterRef="MAGO_ACT" />
|
|
192
|
+
<xtce:ParameterRefEntry parameterRef="MAGI_ACT" />
|
|
193
|
+
<xtce:ParameterRefEntry parameterRef="PRI_SENS" />
|
|
194
|
+
<xtce:ParameterRefEntry parameterRef="SPARE1" />
|
|
195
|
+
<xtce:ParameterRefEntry parameterRef="PRI_VECSEC" />
|
|
196
|
+
<xtce:ParameterRefEntry parameterRef="SEC_VECSEC" />
|
|
197
|
+
<xtce:ParameterRefEntry parameterRef="SPARE2" />
|
|
198
|
+
<xtce:ParameterRefEntry parameterRef="PRI_COARSETM" />
|
|
199
|
+
<xtce:ParameterRefEntry parameterRef="PRI_FNTM" />
|
|
200
|
+
<xtce:ParameterRefEntry parameterRef="SEC_COARSETM" />
|
|
201
|
+
<xtce:ParameterRefEntry parameterRef="SEC_FNTM" />
|
|
202
|
+
<xtce:ParameterRefEntry parameterRef="VECTORS" />
|
|
203
|
+
</xtce:EntryList>
|
|
204
|
+
</xtce:SequenceContainer>
|
|
205
|
+
<xtce:SequenceContainer name="P_MAG_SCI_BURST">
|
|
206
|
+
<xtce:BaseContainer containerRef="CCSDSPacket">
|
|
207
|
+
<xtce:RestrictionCriteria>
|
|
208
|
+
<xtce:Comparison parameterRef="PKT_APID" value="1068" useCalibratedValue="false" />
|
|
209
|
+
</xtce:RestrictionCriteria>
|
|
210
|
+
</xtce:BaseContainer>
|
|
211
|
+
<xtce:EntryList>
|
|
212
|
+
<xtce:ParameterRefEntry parameterRef="SHCOARSE" />
|
|
213
|
+
<xtce:ParameterRefEntry parameterRef="PUS_SPARE1" />
|
|
214
|
+
<xtce:ParameterRefEntry parameterRef="PUS_VERSION" />
|
|
215
|
+
<xtce:ParameterRefEntry parameterRef="PUS_SPARE2" />
|
|
216
|
+
<xtce:ParameterRefEntry parameterRef="PUS_STYPE" />
|
|
217
|
+
<xtce:ParameterRefEntry parameterRef="PUS_SSUBTYPE" />
|
|
218
|
+
<xtce:ParameterRefEntry parameterRef="COMPRESSION" />
|
|
219
|
+
<xtce:ParameterRefEntry parameterRef="MAGO_ACT" />
|
|
220
|
+
<xtce:ParameterRefEntry parameterRef="MAGI_ACT" />
|
|
221
|
+
<xtce:ParameterRefEntry parameterRef="PRI_SENS" />
|
|
222
|
+
<xtce:ParameterRefEntry parameterRef="SPARE1" />
|
|
223
|
+
<xtce:ParameterRefEntry parameterRef="PRI_VECSEC" />
|
|
224
|
+
<xtce:ParameterRefEntry parameterRef="SEC_VECSEC" />
|
|
225
|
+
<xtce:ParameterRefEntry parameterRef="SPARE2" />
|
|
226
|
+
<xtce:ParameterRefEntry parameterRef="PRI_COARSETM" />
|
|
227
|
+
<xtce:ParameterRefEntry parameterRef="PRI_FNTM" />
|
|
228
|
+
<xtce:ParameterRefEntry parameterRef="SEC_COARSETM" />
|
|
229
|
+
<xtce:ParameterRefEntry parameterRef="SEC_FNTM" />
|
|
230
|
+
<xtce:ParameterRefEntry parameterRef="VECTORS" />
|
|
231
|
+
</xtce:EntryList>
|
|
232
|
+
</xtce:SequenceContainer>
|
|
233
|
+
</xtce:ContainerSet>
|
|
234
|
+
</xtce:TelemetryMetaData>
|
|
235
|
+
</xtce:SpaceSystem>
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""Bitwise flagging."""
|
|
2
|
+
|
|
3
|
+
from enum import IntFlag
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FlagNameMixin(IntFlag):
|
|
7
|
+
"""Modifies flags for Python versions < 3.11."""
|
|
8
|
+
|
|
9
|
+
@property
|
|
10
|
+
def name(self) -> str:
|
|
11
|
+
"""
|
|
12
|
+
Override the default name property to handle combined flags.
|
|
13
|
+
|
|
14
|
+
Returns
|
|
15
|
+
-------
|
|
16
|
+
combined_name : str
|
|
17
|
+
The combined name of the individual flags.
|
|
18
|
+
"""
|
|
19
|
+
if self._name_ is not None:
|
|
20
|
+
return self._name_
|
|
21
|
+
|
|
22
|
+
members = [member for member in self.__class__ if member & self == member]
|
|
23
|
+
return "|".join(str(m).split(".", 1)[-1] for m in members if m != 0x0)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class CommonFlags(FlagNameMixin):
|
|
27
|
+
"""Common quality flags."""
|
|
28
|
+
|
|
29
|
+
NONE = 0x0
|
|
30
|
+
INF = 2**0 # bit 0, Infinite value
|
|
31
|
+
NEG = 2**1 # bit 1, Negative value
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ENAFlags(FlagNameMixin):
|
|
35
|
+
"""Common ENA flags."""
|
|
36
|
+
|
|
37
|
+
BADSPIN = 2**2 # bit 2, Bad spin
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class ImapUltraFlags(FlagNameMixin):
|
|
41
|
+
"""IMAP Ultra flags."""
|
|
42
|
+
|
|
43
|
+
NONE = CommonFlags.NONE
|
|
44
|
+
INF = CommonFlags.INF # bit 0
|
|
45
|
+
NEG = CommonFlags.NEG # bit 1
|
|
46
|
+
BADSPIN = ENAFlags.BADSPIN # bit 2
|
|
47
|
+
FLAG1 = 2**3 # bit 2
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class ImapLoFlags(FlagNameMixin):
|
|
51
|
+
"""IMAP Lo flags."""
|
|
52
|
+
|
|
53
|
+
NONE = CommonFlags.NONE
|
|
54
|
+
INF = CommonFlags.INF # bit 0
|
|
55
|
+
NEG = CommonFlags.NEG # bit 1
|
|
56
|
+
BADSPIN = ENAFlags.BADSPIN # bit 2
|
|
57
|
+
FLAG2 = 2**3 # bit 2
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class HitFlags(
|
|
61
|
+
FlagNameMixin,
|
|
62
|
+
):
|
|
63
|
+
"""Hit flags."""
|
|
64
|
+
|
|
65
|
+
NONE = CommonFlags.NONE
|
|
66
|
+
INF = CommonFlags.INF # bit 0
|
|
67
|
+
NEG = CommonFlags.NEG # bit 1
|
|
68
|
+
FLAG3 = 2**2 # bit 2
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class SWAPIFlags(
|
|
72
|
+
FlagNameMixin,
|
|
73
|
+
):
|
|
74
|
+
"""SWAPI flags."""
|
|
75
|
+
|
|
76
|
+
NONE = CommonFlags.NONE
|
|
77
|
+
INF = CommonFlags.INF # bit 0
|
|
78
|
+
NEG = CommonFlags.NEG # bit 1
|
|
79
|
+
SWP_PCEM_COMP = 2**2 # bit 2
|
|
80
|
+
SWP_SCEM_COMP = 2**3 # bit 3
|
|
81
|
+
SWP_COIN_COMP = 2**4 # bit 4
|
|
82
|
+
OVR_T_ST = 2**5 # bit 5
|
|
83
|
+
UND_T_ST = 2**6 # bit 6
|
|
84
|
+
PCEM_CNT_ST = 2**7 # bit 7
|
|
85
|
+
SCEM_CNT_ST = 2**8 # bit 8
|
|
86
|
+
PCEM_V_ST = 2**9 # bit 9
|
|
87
|
+
PCEM_I_ST = 2**10 # bit 10
|
|
88
|
+
PCEM_INT_ST = 2**11 # bit 11
|
|
89
|
+
SCEM_V_ST = 2**12 # bit 12
|
|
90
|
+
SCEM_I_ST = 2**13 # bit 13
|
|
91
|
+
SCEM_INT_ST = 2**14 # bit 14
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
IMAP_SC_ID = -43
|