imap-processing 0.11.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 +11 -11
- imap_processing/_version.py +2 -2
- imap_processing/ccsds/ccsds_data.py +1 -2
- imap_processing/ccsds/excel_to_xtce.py +66 -18
- imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +24 -40
- imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +934 -42
- imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +1846 -128
- imap_processing/cdf/config/imap_glows_global_cdf_attrs.yaml +0 -5
- imap_processing/cdf/config/imap_hi_global_cdf_attrs.yaml +10 -11
- imap_processing/cdf/config/imap_hi_variable_attrs.yaml +17 -19
- imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +27 -14
- imap_processing/cdf/config/imap_hit_l1a_variable_attrs.yaml +106 -116
- imap_processing/cdf/config/imap_hit_l1b_variable_attrs.yaml +120 -145
- imap_processing/cdf/config/imap_hit_l2_variable_attrs.yaml +14 -0
- imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +25 -9
- 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_lo_global_cdf_attrs.yaml +0 -12
- imap_processing/cdf/config/imap_lo_l1a_variable_attrs.yaml +1 -1
- imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +23 -20
- imap_processing/cdf/config/imap_mag_l1a_variable_attrs.yaml +361 -0
- imap_processing/cdf/config/imap_mag_l1b_variable_attrs.yaml +160 -0
- imap_processing/cdf/config/imap_mag_l1c_variable_attrs.yaml +160 -0
- imap_processing/cdf/config/imap_spacecraft_global_cdf_attrs.yaml +18 -0
- imap_processing/cdf/config/imap_spacecraft_variable_attrs.yaml +40 -0
- imap_processing/cdf/config/imap_swapi_global_cdf_attrs.yaml +1 -5
- imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +22 -0
- imap_processing/cdf/config/imap_swe_global_cdf_attrs.yaml +12 -4
- imap_processing/cdf/config/imap_swe_l1a_variable_attrs.yaml +16 -2
- imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +64 -52
- imap_processing/cdf/config/imap_swe_l2_variable_attrs.yaml +71 -47
- imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +180 -19
- imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +5045 -41
- imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +80 -17
- imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +32 -57
- imap_processing/cdf/utils.py +52 -38
- imap_processing/cli.py +477 -233
- imap_processing/codice/codice_l1a.py +466 -131
- imap_processing/codice/codice_l1b.py +51 -152
- imap_processing/codice/constants.py +1360 -569
- imap_processing/codice/decompress.py +2 -6
- imap_processing/ena_maps/ena_maps.py +1103 -146
- imap_processing/ena_maps/utils/coordinates.py +19 -0
- imap_processing/ena_maps/utils/map_utils.py +14 -17
- imap_processing/ena_maps/utils/spatial_utils.py +55 -52
- 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 +54 -29
- imap_processing/hi/l1a/histogram.py +0 -1
- imap_processing/hi/l1a/science_direct_event.py +6 -8
- imap_processing/hi/l1b/hi_l1b.py +111 -82
- imap_processing/hi/l1c/hi_l1c.py +416 -32
- imap_processing/hi/utils.py +58 -12
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-sector-dt0-factors_20250219_v002.csv +81 -0
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt0-factors_20250219_v002.csv +205 -0
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt1-factors_20250219_v002.csv +205 -0
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt2-factors_20250219_v002.csv +205 -0
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt3-factors_20250219_v002.csv +205 -0
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-summed-dt0-factors_20250219_v002.csv +68 -0
- imap_processing/hit/hit_utils.py +235 -5
- imap_processing/hit/l0/constants.py +20 -11
- imap_processing/hit/l0/decom_hit.py +21 -5
- imap_processing/hit/l1a/hit_l1a.py +71 -75
- imap_processing/hit/l1b/constants.py +321 -0
- imap_processing/hit/l1b/hit_l1b.py +377 -67
- imap_processing/hit/l2/constants.py +318 -0
- imap_processing/hit/l2/hit_l2.py +723 -0
- imap_processing/hit/packet_definitions/hit_packet_definitions.xml +1323 -71
- imap_processing/ialirt/l0/mag_l0_ialirt_data.py +155 -0
- imap_processing/ialirt/l0/parse_mag.py +374 -0
- imap_processing/ialirt/l0/process_swapi.py +69 -0
- imap_processing/ialirt/l0/process_swe.py +548 -0
- imap_processing/ialirt/packet_definitions/ialirt.xml +216 -208
- 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_mag.xml +115 -0
- imap_processing/ialirt/packet_definitions/ialirt_swapi.xml +14 -14
- imap_processing/ialirt/utils/grouping.py +114 -0
- imap_processing/ialirt/utils/time.py +29 -0
- imap_processing/idex/atomic_masses.csv +22 -0
- imap_processing/idex/decode.py +2 -2
- imap_processing/idex/idex_constants.py +33 -0
- imap_processing/idex/idex_l0.py +22 -8
- imap_processing/idex/idex_l1a.py +81 -51
- imap_processing/idex/idex_l1b.py +13 -39
- imap_processing/idex/idex_l2a.py +823 -0
- imap_processing/idex/idex_l2b.py +120 -0
- imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +11 -11
- imap_processing/idex/packet_definitions/idex_housekeeping_packet_definition.xml +9130 -0
- imap_processing/lo/l0/lo_science.py +7 -2
- imap_processing/lo/l1a/lo_l1a.py +1 -5
- imap_processing/lo/l1b/lo_l1b.py +702 -29
- imap_processing/lo/l1b/tof_conversions.py +11 -0
- imap_processing/lo/l1c/lo_l1c.py +1 -4
- imap_processing/mag/constants.py +51 -0
- imap_processing/mag/imap_mag_sdc_configuration_v001.py +8 -0
- imap_processing/mag/l0/decom_mag.py +10 -3
- imap_processing/mag/l1a/mag_l1a.py +23 -19
- imap_processing/mag/l1a/mag_l1a_data.py +35 -10
- imap_processing/mag/l1b/mag_l1b.py +259 -50
- imap_processing/mag/l1c/interpolation_methods.py +388 -0
- imap_processing/mag/l1c/mag_l1c.py +621 -17
- imap_processing/mag/l2/mag_l2.py +140 -0
- imap_processing/mag/l2/mag_l2_data.py +288 -0
- imap_processing/quality_flags.py +1 -0
- imap_processing/spacecraft/packet_definitions/scid_x252.xml +538 -0
- imap_processing/spacecraft/quaternions.py +121 -0
- imap_processing/spice/geometry.py +19 -22
- imap_processing/spice/kernels.py +0 -276
- imap_processing/spice/pointing_frame.py +257 -0
- imap_processing/spice/repoint.py +149 -0
- imap_processing/spice/spin.py +38 -33
- imap_processing/spice/time.py +24 -0
- imap_processing/swapi/l1/swapi_l1.py +20 -12
- imap_processing/swapi/l2/swapi_l2.py +116 -5
- imap_processing/swapi/swapi_utils.py +32 -0
- imap_processing/swe/l1a/swe_l1a.py +44 -12
- imap_processing/swe/l1a/swe_science.py +13 -13
- imap_processing/swe/l1b/swe_l1b.py +898 -23
- imap_processing/swe/l2/swe_l2.py +75 -136
- imap_processing/swe/packet_definitions/swe_packet_definition.xml +1121 -1
- imap_processing/swe/utils/swe_constants.py +64 -0
- imap_processing/swe/utils/swe_utils.py +85 -28
- imap_processing/tests/ccsds/test_data/expected_output.xml +40 -1
- imap_processing/tests/ccsds/test_excel_to_xtce.py +24 -21
- imap_processing/tests/cdf/test_data/imap_instrument2_global_cdf_attrs.yaml +0 -2
- 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-counters-aggregated_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-counters-singles_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-ialirt_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-omni_20241110193700_v0.0.0.cdf +0 -0
- 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_hi-priorities_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-sectored_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-counters-aggregated_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-counters-singles_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-nsw-angular_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-nsw-priority_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-nsw-species_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/data/validation/imap_codice_l1a_lo-sw-angular_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-sw-priority_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-sw-species_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/test_codice_l1a.py +126 -53
- imap_processing/tests/codice/test_codice_l1b.py +6 -7
- imap_processing/tests/codice/test_decompress.py +4 -4
- imap_processing/tests/conftest.py +239 -27
- imap_processing/tests/ena_maps/conftest.py +51 -0
- imap_processing/tests/ena_maps/test_ena_maps.py +1068 -110
- imap_processing/tests/ena_maps/test_map_utils.py +66 -43
- imap_processing/tests/ena_maps/test_spatial_utils.py +17 -21
- 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/data/l0/H45_diag_fee_20250208.bin +0 -0
- imap_processing/tests/hi/data/l0/H45_diag_fee_20250208_verify.csv +205 -0
- imap_processing/tests/hi/test_hi_l1b.py +22 -27
- imap_processing/tests/hi/test_hi_l1c.py +249 -18
- imap_processing/tests/hi/test_l1a.py +35 -7
- imap_processing/tests/hi/test_science_direct_event.py +3 -3
- imap_processing/tests/hi/test_utils.py +24 -2
- imap_processing/tests/hit/helpers/l1_validation.py +74 -73
- imap_processing/tests/hit/test_data/hskp_sample.ccsds +0 -0
- imap_processing/tests/hit/test_data/imap_hit_l0_raw_20100105_v001.pkts +0 -0
- imap_processing/tests/hit/test_decom_hit.py +5 -1
- imap_processing/tests/hit/test_hit_l1a.py +32 -36
- imap_processing/tests/hit/test_hit_l1b.py +300 -81
- imap_processing/tests/hit/test_hit_l2.py +716 -0
- imap_processing/tests/hit/test_hit_utils.py +184 -7
- imap_processing/tests/hit/validation_data/hit_l1b_standard_sample2_nsrl_v4_3decimals.csv +62 -62
- imap_processing/tests/hit/validation_data/hskp_sample_eu_3_6_2025.csv +89 -0
- imap_processing/tests/hit/validation_data/hskp_sample_raw.csv +89 -88
- imap_processing/tests/hit/validation_data/sci_sample_raw.csv +1 -1
- imap_processing/tests/ialirt/data/l0/461971383-404.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971384-405.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971385-406.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971386-407.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971387-408.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971388-409.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971389-410.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971390-411.bin +0 -0
- imap_processing/tests/ialirt/data/l0/461971391-412.bin +0 -0
- imap_processing/tests/ialirt/data/l0/sample_decoded_i-alirt_data.csv +383 -0
- imap_processing/tests/ialirt/unit/test_decom_ialirt.py +16 -81
- imap_processing/tests/ialirt/unit/test_grouping.py +81 -0
- imap_processing/tests/ialirt/unit/test_parse_mag.py +223 -0
- 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 +319 -6
- imap_processing/tests/ialirt/unit/test_time.py +16 -0
- imap_processing/tests/idex/conftest.py +127 -6
- imap_processing/tests/idex/test_data/imap_idex_l0_raw_20231218_v001.pkts +0 -0
- 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_data/impact_14_tof_high_data.txt +4508 -4508
- imap_processing/tests/idex/test_idex_l0.py +33 -11
- imap_processing/tests/idex/test_idex_l1a.py +92 -21
- imap_processing/tests/idex/test_idex_l1b.py +106 -27
- imap_processing/tests/idex/test_idex_l2a.py +399 -0
- imap_processing/tests/idex/test_idex_l2b.py +93 -0
- imap_processing/tests/lo/test_cdfs/imap_lo_l1a_de_20241022_v002.cdf +0 -0
- imap_processing/tests/lo/test_cdfs/imap_lo_l1a_spin_20241022_v002.cdf +0 -0
- imap_processing/tests/lo/test_lo_l1a.py +3 -3
- imap_processing/tests/lo/test_lo_l1b.py +515 -6
- imap_processing/tests/lo/test_lo_l1c.py +1 -1
- imap_processing/tests/lo/test_lo_science.py +7 -7
- imap_processing/tests/lo/test_star_sensor.py +1 -1
- imap_processing/tests/mag/conftest.py +120 -2
- imap_processing/tests/mag/test_mag_decom.py +5 -4
- imap_processing/tests/mag/test_mag_l1a.py +51 -7
- imap_processing/tests/mag/test_mag_l1b.py +40 -59
- imap_processing/tests/mag/test_mag_l1c.py +354 -19
- imap_processing/tests/mag/test_mag_l2.py +130 -0
- imap_processing/tests/mag/test_mag_validation.py +247 -26
- imap_processing/tests/mag/validation/L1b/T009/MAGScience-normal-(2,2)-8s-20250204-16h39.csv +17 -0
- imap_processing/tests/mag/validation/L1b/T009/mag-l1a-l1b-t009-magi-out.csv +16 -16
- imap_processing/tests/mag/validation/L1b/T009/mag-l1a-l1b-t009-mago-out.csv +16 -16
- imap_processing/tests/mag/validation/L1b/T010/MAGScience-normal-(2,2)-8s-20250206-12h05.csv +17 -0
- imap_processing/tests/mag/validation/L1b/T011/MAGScience-normal-(2,2)-8s-20250204-16h08.csv +17 -0
- imap_processing/tests/mag/validation/L1b/T011/mag-l1a-l1b-t011-magi-out.csv +16 -16
- imap_processing/tests/mag/validation/L1b/T011/mag-l1a-l1b-t011-mago-out.csv +16 -16
- imap_processing/tests/mag/validation/L1b/T012/MAGScience-normal-(2,2)-8s-20250204-16h08.csv +17 -0
- imap_processing/tests/mag/validation/L1b/T012/data.bin +0 -0
- imap_processing/tests/mag/validation/L1b/T012/field_like_all_ranges.txt +19200 -0
- imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-cal.cdf +0 -0
- imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-in.csv +17 -0
- imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-magi-out.csv +17 -0
- imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-mago-out.csv +17 -0
- 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_l1b-calibration_20240229_v001.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/data/SSR_2024_190_20_08_12_0483851794_2_DA_apid0594_1packet.pkts +0 -0
- imap_processing/tests/spacecraft/test_quaternions.py +71 -0
- imap_processing/tests/spice/test_data/fake_repoint_data.csv +5 -0
- imap_processing/tests/spice/test_data/fake_spin_data.csv +11 -11
- imap_processing/tests/spice/test_geometry.py +9 -12
- 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 +121 -0
- 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 +13 -11
- imap_processing/tests/swapi/test_swapi_l2.py +180 -8
- imap_processing/tests/swe/l0_data/2024051010_SWE_HK_packet.bin +0 -0
- imap_processing/tests/swe/l0_data/2024051011_SWE_CEM_RAW_packet.bin +0 -0
- imap_processing/tests/swe/l0_validation_data/idle_export_eu.SWE_APP_HK_20240510_092742.csv +49 -0
- imap_processing/tests/swe/l0_validation_data/idle_export_eu.SWE_CEM_RAW_20240510_092742.csv +593 -0
- 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 +20 -2
- imap_processing/tests/swe/test_swe_l1a_cem_raw.py +52 -0
- imap_processing/tests/swe/test_swe_l1a_hk.py +68 -0
- 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 +153 -91
- imap_processing/tests/test_cli.py +171 -88
- imap_processing/tests/test_utils.py +140 -17
- imap_processing/tests/ultra/data/l0/FM45_UltraFM45_Functional_2024-01-22T0105_20240122T010548.CCSDS +0 -0
- imap_processing/tests/ultra/data/l0/ultra45_raw_sc_ultraimgrates_20220530_00.csv +164 -0
- imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_ultrarawimg_withFSWcalcs_FM45_40P_Phi28p5_BeamCal_LinearScan_phi2850_theta-000_20240207T102740.csv +3243 -3243
- imap_processing/tests/ultra/data/mock_data.py +369 -0
- imap_processing/tests/ultra/unit/conftest.py +115 -89
- imap_processing/tests/ultra/unit/test_badtimes.py +4 -4
- imap_processing/tests/ultra/unit/test_cullingmask.py +8 -6
- imap_processing/tests/ultra/unit/test_de.py +14 -13
- imap_processing/tests/ultra/unit/test_decom_apid_880.py +27 -76
- imap_processing/tests/ultra/unit/test_decom_apid_881.py +54 -11
- 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 +77 -0
- imap_processing/tests/ultra/unit/test_ultra_l1a.py +98 -305
- imap_processing/tests/ultra/unit/test_ultra_l1b.py +60 -14
- imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +2 -2
- imap_processing/tests/ultra/unit/test_ultra_l1b_culling.py +26 -27
- imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +239 -70
- imap_processing/tests/ultra/unit/test_ultra_l1c.py +5 -5
- imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +114 -83
- 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 +27 -39
- 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 -271
- imap_processing/ultra/l1b/badtimes.py +1 -4
- imap_processing/ultra/l1b/cullingmask.py +2 -6
- imap_processing/ultra/l1b/de.py +116 -57
- imap_processing/ultra/l1b/extendedspin.py +20 -18
- imap_processing/ultra/l1b/lookup_utils.py +72 -9
- imap_processing/ultra/l1b/ultra_l1b.py +36 -16
- imap_processing/ultra/l1b/ultra_l1b_culling.py +66 -30
- imap_processing/ultra/l1b/ultra_l1b_extended.py +297 -94
- imap_processing/ultra/l1c/histogram.py +2 -6
- imap_processing/ultra/l1c/spacecraft_pset.py +84 -0
- imap_processing/ultra/l1c/ultra_l1c.py +8 -9
- imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +206 -108
- 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 +31 -12
- imap_processing/utils.py +69 -29
- {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/METADATA +10 -6
- imap_processing-0.13.0.dist-info/RECORD +578 -0
- imap_processing/cdf/config/imap_mag_l1_variable_attrs.yaml +0 -237
- imap_processing/hi/l1a/housekeeping.py +0 -27
- imap_processing/hi/l1b/hi_eng_unit_convert_table.csv +0 -154
- imap_processing/swe/l1b/swe_esa_lookup_table.csv +0 -1441
- imap_processing/swe/l1b/swe_l1b_science.py +0 -652
- 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/hi/data/l1/imap_hi_l1b_45sensor-de_20250415_v999.cdf +0 -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/validation_data/hskp_sample_eu.csv +0 -89
- imap_processing/tests/hit/validation_data/sci_sample_raw1.csv +0 -29
- imap_processing/tests/idex/test_data/imap_idex_l0_raw_20231214_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/swe/test_swe_l1b_science.py +0 -84
- imap_processing/tests/ultra/test_data/mock_data.py +0 -161
- imap_processing/ultra/l1c/pset.py +0 -40
- imap_processing/ultra/lookup_tables/dps_sensitivity45.cdf +0 -0
- imap_processing-0.11.0.dist-info/RECORD +0 -488
- /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/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/{mag/l1b → tests/spacecraft}/__init__.py +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/tests/ultra/{test_data → data}/l0/FM45_40P_Phi28p5_BeamCal_LinearScan_phi28.50_theta-0.00_20240207T102740.CCSDS +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l0/FM45_7P_Phi0.0_BeamCal_LinearScan_phi0.04_theta-0.01_20230821T121304.CCSDS +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l0/FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.CCSDS +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l0/Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.CCSDS +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_auxdata_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_enaphxtofhangimg_FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.csv +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_ultraimgrates_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_ultrarawimgevent_FM45_7P_Phi00_BeamCal_LinearScan_phi004_theta-001_20230821T121304.csv +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l1/dps_exposure_helio_45_E1.cdf +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l1/dps_exposure_helio_45_E12.cdf +0 -0
- /imap_processing/tests/ultra/{test_data → data}/l1/dps_exposure_helio_45_E24.cdf +0 -0
- {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/LICENSE +0 -0
- {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/WHEEL +0 -0
- {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/entry_points.txt +0 -0
|
@@ -58,7 +58,7 @@ default_int32_attrs: &default_int32
|
|
|
58
58
|
|
|
59
59
|
default_float32_attrs: &default_float32
|
|
60
60
|
<<: *default
|
|
61
|
-
FILLVAL: .
|
|
61
|
+
FILLVAL: -1.0e31
|
|
62
62
|
FORMAT: F12.6
|
|
63
63
|
VALIDMIN: -3.4028235e+38
|
|
64
64
|
VALIDMAX: 3.4028235e+38
|
|
@@ -101,11 +101,32 @@ x_coin:
|
|
|
101
101
|
|
|
102
102
|
event_times:
|
|
103
103
|
<<: *default_float32
|
|
104
|
-
CATDESC: time of event as calculated using
|
|
104
|
+
CATDESC: time of event as calculated using Universal Spin Table and de l1a packets
|
|
105
105
|
FIELDNAM: event_times
|
|
106
106
|
LABLAXIS: event times
|
|
107
107
|
UNITS: seconds
|
|
108
108
|
|
|
109
|
+
spin_starts:
|
|
110
|
+
<<: *default_float32
|
|
111
|
+
CATDESC: time of spin from Universal Spin Table.
|
|
112
|
+
FIELDNAM: spin_starts
|
|
113
|
+
LABLAXIS: spin starts
|
|
114
|
+
UNITS: seconds
|
|
115
|
+
|
|
116
|
+
phase_angle:
|
|
117
|
+
<<: *default_float32
|
|
118
|
+
CATDESC: Phase angle from the direct event packet in 1/2 degree increments (range is 0-719)
|
|
119
|
+
FIELDNAM: phase_angle
|
|
120
|
+
LABLAXIS: phase angle
|
|
121
|
+
UNITS: degrees
|
|
122
|
+
|
|
123
|
+
spin:
|
|
124
|
+
<<: *default_uint32
|
|
125
|
+
CATDESC: Spin number.
|
|
126
|
+
FIELDNAM: spin_number
|
|
127
|
+
LABLAXIS: spin number
|
|
128
|
+
UNITS: " "
|
|
129
|
+
|
|
109
130
|
tof_start_stop:
|
|
110
131
|
<<: *default_float32
|
|
111
132
|
CATDESC: Particle time of flight from start to stop
|
|
@@ -172,19 +193,31 @@ energy:
|
|
|
172
193
|
|
|
173
194
|
tof_energy:
|
|
174
195
|
<<: *default_float32
|
|
175
|
-
CATDESC: Energy measured using kinetic energy equation.
|
|
196
|
+
CATDESC: Energy measured using kinetic energy equation in the instrument frame.
|
|
197
|
+
FIELDNAM: energy
|
|
198
|
+
LABLAXIS: energy
|
|
199
|
+
UNITS: keV
|
|
200
|
+
|
|
201
|
+
energy_spacecraft:
|
|
202
|
+
<<: *default_float32
|
|
203
|
+
CATDESC: Energy measured using kinetic energy equation in the despun spacecraft frame.
|
|
204
|
+
FIELDNAM: energy
|
|
205
|
+
LABLAXIS: energy
|
|
206
|
+
UNITS: keV
|
|
207
|
+
|
|
208
|
+
energy_heliosphere:
|
|
209
|
+
<<: *default_float32
|
|
210
|
+
CATDESC: Energy measured using kinetic energy equation in the despun heliosphere frame.
|
|
176
211
|
FIELDNAM: energy
|
|
177
212
|
LABLAXIS: energy
|
|
178
213
|
UNITS: keV
|
|
179
214
|
|
|
180
215
|
species:
|
|
181
|
-
<<: *
|
|
216
|
+
<<: *default_uint8
|
|
182
217
|
DISPLAY_TYPE: no_plot
|
|
183
218
|
CATDESC: Label species type.
|
|
184
219
|
FIELDNAM: Label species type.
|
|
185
|
-
|
|
186
|
-
FORMAT: A8
|
|
187
|
-
dtype: str
|
|
220
|
+
LABLAXIS: species
|
|
188
221
|
UNITS: " "
|
|
189
222
|
|
|
190
223
|
front_back_distance:
|
|
@@ -201,19 +234,33 @@ path_length:
|
|
|
201
234
|
LABLAXIS: path_length
|
|
202
235
|
UNITS: mm / 100
|
|
203
236
|
|
|
204
|
-
|
|
237
|
+
phi:
|
|
238
|
+
<<: *default_float32
|
|
239
|
+
CATDESC: Ultra instrument frame event phi (azimuth with range -90 -> 90).
|
|
240
|
+
FIELDNAM: phi
|
|
241
|
+
LABLAXIS: phi
|
|
242
|
+
UNITS: degrees
|
|
243
|
+
|
|
244
|
+
theta:
|
|
245
|
+
<<: *default_float32
|
|
246
|
+
CATDESC: Ultra instrument frame event theta (elevation with range -90 -> 90).
|
|
247
|
+
FIELDNAM: theta
|
|
248
|
+
LABLAXIS: theta
|
|
249
|
+
UNITS: degrees
|
|
250
|
+
|
|
251
|
+
phi_fwhm:
|
|
205
252
|
<<: *default_float32
|
|
206
|
-
CATDESC:
|
|
207
|
-
FIELDNAM:
|
|
208
|
-
LABLAXIS:
|
|
209
|
-
UNITS:
|
|
253
|
+
CATDESC: FWHM of the phi distribution.
|
|
254
|
+
FIELDNAM: phi_fwhm
|
|
255
|
+
LABLAXIS: phi fwhm
|
|
256
|
+
UNITS: degrees
|
|
210
257
|
|
|
211
|
-
|
|
258
|
+
theta_fwhm:
|
|
212
259
|
<<: *default_float32
|
|
213
|
-
CATDESC:
|
|
214
|
-
FIELDNAM:
|
|
215
|
-
LABLAXIS:
|
|
216
|
-
UNITS:
|
|
260
|
+
CATDESC: FWHM of the theta distribution.
|
|
261
|
+
FIELDNAM: phi_fwhm
|
|
262
|
+
LABLAXIS: phi fwhm
|
|
263
|
+
UNITS: degrees
|
|
217
264
|
|
|
218
265
|
event_efficiency:
|
|
219
266
|
<<: *default_float32
|
|
@@ -222,6 +269,22 @@ event_efficiency:
|
|
|
222
269
|
LABLAXIS: event efficiency
|
|
223
270
|
UNITS: " "
|
|
224
271
|
|
|
272
|
+
direct_event_unit_velocity:
|
|
273
|
+
<<: *default_float32
|
|
274
|
+
CATDESC: Unit vector of the direct event velocity in the instrument frame.
|
|
275
|
+
DEPEND_1: component
|
|
276
|
+
FIELDNAM: direct_event_unit_velocity
|
|
277
|
+
LABLAXIS: direct event unit velocity
|
|
278
|
+
UNITS: " "
|
|
279
|
+
|
|
280
|
+
direct_event_unit_position:
|
|
281
|
+
<<: *default_float32
|
|
282
|
+
CATDESC: Unit vector of the direct event position in the instrument frame.
|
|
283
|
+
DEPEND_1: component
|
|
284
|
+
FIELDNAM: direct_event_unit_position
|
|
285
|
+
LABLAXIS: direct event unit position
|
|
286
|
+
UNITS: " "
|
|
287
|
+
|
|
225
288
|
velocity_sc:
|
|
226
289
|
<<: *default_float32
|
|
227
290
|
CATDESC: x,y,z-components of the velocity vector of the ena in the spacecraft frame.
|
|
@@ -7,30 +7,29 @@ default_attrs: &default
|
|
|
7
7
|
VALIDMIN: -9223372036854775808
|
|
8
8
|
VALIDMAX: 9223372036854775807
|
|
9
9
|
VAR_TYPE: data
|
|
10
|
+
UNITS: " "
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
default_float32_attrs: &default_float32
|
|
12
13
|
<<: *default
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
FILLVAL: -1.0e31
|
|
15
|
+
FORMAT: F12.6
|
|
16
|
+
VALIDMIN: -3.4028235e+38
|
|
17
|
+
VALIDMAX: 3.4028235e+38
|
|
18
|
+
dtype: float32
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
<<: *
|
|
21
|
-
CATDESC:
|
|
22
|
-
FIELDNAM:
|
|
23
|
-
LABLAXIS:
|
|
24
|
-
|
|
25
|
-
UNITS: " "
|
|
20
|
+
latitude:
|
|
21
|
+
<<: *default_float32
|
|
22
|
+
CATDESC: Latitude bin center corresponding to healpix index with range [-90, 90].
|
|
23
|
+
FIELDNAM: latitude
|
|
24
|
+
LABLAXIS: latitude
|
|
25
|
+
UNITS: degrees
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
<<: *
|
|
29
|
-
CATDESC:
|
|
30
|
-
FIELDNAM:
|
|
31
|
-
LABLAXIS:
|
|
32
|
-
|
|
33
|
-
UNITS: seconds
|
|
27
|
+
longitude:
|
|
28
|
+
<<: *default_float32
|
|
29
|
+
CATDESC: Longitude bin center corresponding to healpix index with range [0, 360].
|
|
30
|
+
FIELDNAM: longitude
|
|
31
|
+
LABLAXIS: longitude
|
|
32
|
+
UNITS: degrees
|
|
34
33
|
|
|
35
34
|
species_bin:
|
|
36
35
|
<<: *default
|
|
@@ -40,11 +39,11 @@ species_bin:
|
|
|
40
39
|
# TODO: come back to format
|
|
41
40
|
UNITS: " "
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
<<: *
|
|
45
|
-
CATDESC: Exposure time for a
|
|
46
|
-
FIELDNAM:
|
|
47
|
-
LABLAXIS: exposure
|
|
42
|
+
exposure_factor:
|
|
43
|
+
<<: *default_float32
|
|
44
|
+
CATDESC: Exposure time for a pointing.
|
|
45
|
+
FIELDNAM: exposure_factor
|
|
46
|
+
LABLAXIS: exposure factor
|
|
48
47
|
# TODO: come back to format
|
|
49
48
|
UNITS: seconds
|
|
50
49
|
|
|
@@ -65,7 +64,7 @@ counts:
|
|
|
65
64
|
UNITS: counts
|
|
66
65
|
|
|
67
66
|
background_rates:
|
|
68
|
-
<<: *
|
|
67
|
+
<<: *default_float32
|
|
69
68
|
CATDESC: Background rates. Background dominated by accidentals caused by a combination of UV light and misregistered low energy ENA events.
|
|
70
69
|
FIELDNAM: background_rates
|
|
71
70
|
LABLAXIS: background rates
|
|
@@ -80,30 +79,6 @@ sid:
|
|
|
80
79
|
# TODO: come back to format
|
|
81
80
|
UNITS: " "
|
|
82
81
|
|
|
83
|
-
row:
|
|
84
|
-
<<: *default
|
|
85
|
-
CATDESC: Row number.
|
|
86
|
-
FIELDNAM: row
|
|
87
|
-
LABLAXIS: row
|
|
88
|
-
# TODO: come back to format
|
|
89
|
-
UNITS: " "
|
|
90
|
-
|
|
91
|
-
column:
|
|
92
|
-
<<: *default
|
|
93
|
-
CATDESC: Column number.
|
|
94
|
-
FIELDNAM: column
|
|
95
|
-
LABLAXIS: column
|
|
96
|
-
# TODO: come back to format
|
|
97
|
-
UNITS: " "
|
|
98
|
-
|
|
99
|
-
spin:
|
|
100
|
-
<<: *default
|
|
101
|
-
CATDESC: Spin number at integration start.
|
|
102
|
-
FIELDNAM: spin
|
|
103
|
-
LABLAXIS: spin
|
|
104
|
-
# TODO: come back to format
|
|
105
|
-
UNITS: " "
|
|
106
|
-
|
|
107
82
|
shcoarse:
|
|
108
83
|
<<: *default
|
|
109
84
|
CATDESC: CCSDS packet timestamp.
|
|
@@ -112,10 +87,10 @@ shcoarse:
|
|
|
112
87
|
# TODO: come back to format
|
|
113
88
|
UNITS: seconds
|
|
114
89
|
|
|
115
|
-
|
|
116
|
-
<<: *
|
|
117
|
-
CATDESC:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
UNITS:
|
|
90
|
+
energy_bin_delta:
|
|
91
|
+
<<: *default_float32
|
|
92
|
+
CATDESC: Difference between the energy bin edges.
|
|
93
|
+
DEPEND_0: energy_bin_geometric_mean
|
|
94
|
+
FIELDNAM: energy_bin_delta
|
|
95
|
+
LABLAXIS: energy bin delta
|
|
96
|
+
UNITS: keV
|
imap_processing/cdf/utils.py
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"""Various utility functions to support creation of CDF files."""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
import logging
|
|
4
6
|
import re
|
|
7
|
+
import warnings
|
|
5
8
|
from pathlib import Path
|
|
6
|
-
from typing import Optional
|
|
7
9
|
|
|
8
10
|
import imap_data_access
|
|
9
11
|
import numpy as np
|
|
@@ -19,15 +21,15 @@ logger = logging.getLogger(__name__)
|
|
|
19
21
|
|
|
20
22
|
|
|
21
23
|
def load_cdf(
|
|
22
|
-
file_path: Path, remove_xarray_attrs: bool = True, **kwargs: dict
|
|
24
|
+
file_path: Path | str, remove_xarray_attrs: bool = True, **kwargs: dict
|
|
23
25
|
) -> xr.Dataset:
|
|
24
26
|
"""
|
|
25
27
|
Load the contents of a CDF file into an ``xarray`` dataset.
|
|
26
28
|
|
|
27
29
|
Parameters
|
|
28
30
|
----------
|
|
29
|
-
file_path : Path
|
|
30
|
-
The path to the CDF file.
|
|
31
|
+
file_path : Path or ImapFilePath or str
|
|
32
|
+
The path to the CDF file or ImapFilePath object.
|
|
31
33
|
remove_xarray_attrs : bool
|
|
32
34
|
Whether to remove the xarray attributes that get injected by the
|
|
33
35
|
cdf_to_xarray function from the output xarray.Dataset. Default is True.
|
|
@@ -39,6 +41,9 @@ def load_cdf(
|
|
|
39
41
|
dataset : xarray.Dataset
|
|
40
42
|
The ``xarray`` dataset for the CDF file.
|
|
41
43
|
"""
|
|
44
|
+
if isinstance(file_path, imap_data_access.ImapFilePath):
|
|
45
|
+
file_path = file_path.construct_path()
|
|
46
|
+
|
|
42
47
|
dataset = cdf_to_xarray(file_path, kwargs)
|
|
43
48
|
|
|
44
49
|
# cdf_to_xarray converts single-value attributes to lists
|
|
@@ -60,7 +65,8 @@ def load_cdf(
|
|
|
60
65
|
|
|
61
66
|
|
|
62
67
|
def write_cdf(
|
|
63
|
-
dataset: xr.Dataset,
|
|
68
|
+
dataset: xr.Dataset,
|
|
69
|
+
**extra_cdf_kwargs: dict,
|
|
64
70
|
) -> Path:
|
|
65
71
|
"""
|
|
66
72
|
Write the contents of "data" to a CDF file using cdflib.xarray_to_cdf.
|
|
@@ -69,17 +75,19 @@ def write_cdf(
|
|
|
69
75
|
fills in the final attributes, and converts the whole dataset to a CDF.
|
|
70
76
|
The date in the file name is determined by the time of the first epoch in the
|
|
71
77
|
xarray Dataset. The first 3 file name fields (mission, instrument, level) are
|
|
72
|
-
determined by the "Logical_source" attribute. The version is
|
|
78
|
+
determined by the "Logical_source" attribute. The version is determined from
|
|
73
79
|
"Data_version".
|
|
74
80
|
|
|
81
|
+
The start_date and repointing attributes in the dataset are used to override the
|
|
82
|
+
computed values.
|
|
83
|
+
|
|
84
|
+
If these are not included, start_date is generated from the first epoch in the
|
|
85
|
+
dataset and repointing is not included if the attribute is not present or None.
|
|
86
|
+
|
|
75
87
|
Parameters
|
|
76
88
|
----------
|
|
77
89
|
dataset : xarray.Dataset
|
|
78
90
|
The dataset object to convert to a CDF.
|
|
79
|
-
parent_files : list of Path, optional
|
|
80
|
-
List of parent files that were used to make this file. These get added to
|
|
81
|
-
the ``Parents`` global attribute:
|
|
82
|
-
https://spdf.gsfc.nasa.gov/istp_guide/gattributes.html.
|
|
83
91
|
**extra_cdf_kwargs : dict
|
|
84
92
|
Additional keyword arguments to pass to the ``xarray_to_cdf`` function.
|
|
85
93
|
|
|
@@ -94,26 +102,36 @@ def write_cdf(
|
|
|
94
102
|
# Convert J2000 epoch referenced data to datetime64
|
|
95
103
|
# TODO: This implementation of epoch to time string results in an error of
|
|
96
104
|
# 5 seconds due to 5 leap-second occurrences since the J2000 epoch.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
)
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
# TODO: Create a ttj2000_to_datetime function to handle this conversion
|
|
106
|
+
start_date = dataset.attrs.get("Start_date", None)
|
|
107
|
+
|
|
108
|
+
if start_date is None:
|
|
109
|
+
# If no start time is included, then use the first epoch in the dataset
|
|
110
|
+
dt64 = TTJ2000_EPOCH + dataset["epoch"].values[0].astype("timedelta64[ns]")
|
|
111
|
+
start_date = np.datetime_as_string(dt64, unit="D").replace("-", "")
|
|
112
|
+
|
|
113
|
+
version = dataset.attrs.get("Data_version", None)
|
|
114
|
+
if version is None:
|
|
115
|
+
warnings.warn(
|
|
116
|
+
"No Data_version attribute found in dataset. Using default v999.",
|
|
117
|
+
stacklevel=2,
|
|
118
|
+
)
|
|
119
|
+
version = "v999"
|
|
120
|
+
elif not re.match(r"v\d{3}", version):
|
|
121
|
+
raise ValueError(
|
|
122
|
+
f"The Data_version attribute {version} does not match expected format vXXX."
|
|
123
|
+
)
|
|
124
|
+
|
|
109
125
|
repointing = dataset.attrs.get("Repointing", None)
|
|
126
|
+
|
|
127
|
+
repointing_int = int(repointing[-5:]) if repointing else None
|
|
110
128
|
science_file = imap_data_access.ScienceFilePath.generate_from_inputs(
|
|
111
129
|
instrument=instrument,
|
|
112
130
|
data_level=data_level,
|
|
113
131
|
descriptor=descriptor,
|
|
114
|
-
start_time=
|
|
132
|
+
start_time=start_date,
|
|
115
133
|
version=version,
|
|
116
|
-
repointing=
|
|
134
|
+
repointing=repointing_int,
|
|
117
135
|
)
|
|
118
136
|
file_path = Path(science_file.construct_path())
|
|
119
137
|
if not file_path.parent.exists():
|
|
@@ -126,22 +144,18 @@ def write_cdf(
|
|
|
126
144
|
dataset.attrs["Logical_file_id"] = file_path.stem
|
|
127
145
|
# Add the processing version to the dataset attributes
|
|
128
146
|
dataset.attrs["ground_software_version"] = imap_processing._version.__version__
|
|
129
|
-
# Add any parent files to the dataset attributes
|
|
130
|
-
if parent_files:
|
|
131
|
-
# Include the current files if there are any and include just the filename
|
|
132
|
-
# [file1.txt, file2.cdf, ...]
|
|
133
|
-
dataset.attrs["Parents"] = dataset.attrs.get("Parents", []) + [
|
|
134
|
-
parent_file.name for parent_file in parent_files
|
|
135
|
-
]
|
|
136
147
|
|
|
137
148
|
# Convert the xarray object to a CDF
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
149
|
+
if "l1" in data_level:
|
|
150
|
+
if "terminate_on_warning" not in extra_cdf_kwargs:
|
|
151
|
+
extra_cdf_kwargs["terminate_on_warning"] = False # type: ignore
|
|
152
|
+
else:
|
|
153
|
+
if "terminate_on_warning" not in extra_cdf_kwargs:
|
|
154
|
+
extra_cdf_kwargs["terminate_on_warning"] = True # type: ignore
|
|
155
|
+
if "istp" not in extra_cdf_kwargs:
|
|
156
|
+
extra_cdf_kwargs["istp"] = True # type: ignore
|
|
144
157
|
|
|
158
|
+
xarray_to_cdf(dataset, str(file_path), **extra_cdf_kwargs)
|
|
145
159
|
return file_path
|
|
146
160
|
|
|
147
161
|
|
|
@@ -179,7 +193,7 @@ def parse_filename_like(filename_like: str) -> re.Match:
|
|
|
179
193
|
r"(?P<descriptor>[^_]+)" # Required descriptor
|
|
180
194
|
r"(_(?P<start_date>\d{8}))?" # Optional start date
|
|
181
195
|
r"(-repoint(?P<repointing>\d{5}))?" # Optional repointing field
|
|
182
|
-
r"(?:
|
|
196
|
+
r"(?:_(?P<version>v\d{3}))?" # Optional version
|
|
183
197
|
r"(?:\.(?P<extension>cdf|pkts))?$" # Optional extension
|
|
184
198
|
)
|
|
185
199
|
match = re.match(regex_str, filename_like)
|