imap-processing 0.12.0__py3-none-any.whl → 0.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of imap-processing might be problematic. Click here for more details.
- imap_processing/__init__.py +1 -0
- imap_processing/_version.py +2 -2
- imap_processing/ccsds/ccsds_data.py +1 -2
- imap_processing/ccsds/excel_to_xtce.py +1 -2
- imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +18 -12
- imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +569 -0
- imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +1846 -128
- imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +5 -5
- imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +20 -1
- imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +6 -4
- imap_processing/cdf/config/imap_idex_l1b_variable_attrs.yaml +3 -3
- imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +15 -0
- imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +22 -0
- imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +16 -0
- imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +178 -5
- imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +5045 -41
- imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +33 -19
- imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +8 -48
- imap_processing/cdf/utils.py +41 -33
- imap_processing/cli.py +463 -234
- imap_processing/codice/codice_l1a.py +260 -47
- imap_processing/codice/codice_l1b.py +51 -152
- imap_processing/codice/constants.py +38 -1
- imap_processing/ena_maps/ena_maps.py +658 -65
- imap_processing/ena_maps/utils/coordinates.py +1 -1
- imap_processing/ena_maps/utils/spatial_utils.py +10 -5
- imap_processing/glows/l1a/glows_l1a.py +28 -99
- imap_processing/glows/l1a/glows_l1a_data.py +2 -2
- imap_processing/glows/l1b/glows_l1b.py +1 -4
- imap_processing/glows/l1b/glows_l1b_data.py +1 -3
- imap_processing/glows/l2/glows_l2.py +2 -5
- imap_processing/hi/l1a/hi_l1a.py +31 -12
- imap_processing/hi/l1b/hi_l1b.py +80 -43
- imap_processing/hi/l1c/hi_l1c.py +12 -16
- imap_processing/hit/ancillary/imap_hit_l1b-to-l2-sector-dt0-factors_20250219_v002.csv +81 -0
- imap_processing/hit/hit_utils.py +93 -35
- imap_processing/hit/l0/decom_hit.py +3 -1
- imap_processing/hit/l1a/hit_l1a.py +30 -25
- imap_processing/hit/l1b/constants.py +6 -2
- imap_processing/hit/l1b/hit_l1b.py +279 -318
- imap_processing/hit/l2/constants.py +37 -0
- imap_processing/hit/l2/hit_l2.py +373 -264
- imap_processing/ialirt/l0/parse_mag.py +138 -10
- imap_processing/ialirt/l0/process_swapi.py +69 -0
- imap_processing/ialirt/l0/process_swe.py +318 -22
- imap_processing/ialirt/packet_definitions/ialirt.xml +216 -212
- imap_processing/ialirt/packet_definitions/ialirt_codicehi.xml +1 -1
- imap_processing/ialirt/packet_definitions/ialirt_codicelo.xml +1 -1
- imap_processing/ialirt/packet_definitions/ialirt_swapi.xml +14 -14
- imap_processing/ialirt/utils/grouping.py +1 -1
- imap_processing/idex/idex_constants.py +9 -1
- imap_processing/idex/idex_l0.py +22 -8
- imap_processing/idex/idex_l1a.py +75 -44
- imap_processing/idex/idex_l1b.py +9 -8
- imap_processing/idex/idex_l2a.py +79 -45
- imap_processing/idex/idex_l2b.py +120 -0
- imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +33 -39
- imap_processing/idex/packet_definitions/idex_housekeeping_packet_definition.xml +9130 -0
- imap_processing/lo/l0/lo_science.py +1 -2
- imap_processing/lo/l1a/lo_l1a.py +1 -4
- imap_processing/lo/l1b/lo_l1b.py +527 -6
- imap_processing/lo/l1b/tof_conversions.py +11 -0
- imap_processing/lo/l1c/lo_l1c.py +1 -4
- imap_processing/mag/constants.py +43 -0
- imap_processing/mag/imap_mag_sdc_configuration_v001.py +8 -0
- imap_processing/mag/l1a/mag_l1a.py +2 -9
- imap_processing/mag/l1a/mag_l1a_data.py +10 -10
- imap_processing/mag/l1b/mag_l1b.py +84 -17
- imap_processing/mag/l1c/interpolation_methods.py +180 -3
- imap_processing/mag/l1c/mag_l1c.py +236 -70
- imap_processing/mag/l2/mag_l2.py +140 -0
- imap_processing/mag/l2/mag_l2_data.py +288 -0
- imap_processing/spacecraft/quaternions.py +1 -3
- imap_processing/spice/geometry.py +3 -3
- imap_processing/spice/kernels.py +0 -276
- imap_processing/spice/pointing_frame.py +257 -0
- imap_processing/spice/repoint.py +48 -19
- imap_processing/spice/spin.py +38 -33
- imap_processing/spice/time.py +24 -0
- imap_processing/swapi/l1/swapi_l1.py +16 -12
- imap_processing/swapi/l2/swapi_l2.py +116 -4
- imap_processing/swapi/swapi_utils.py +32 -0
- imap_processing/swe/l1a/swe_l1a.py +2 -9
- imap_processing/swe/l1a/swe_science.py +8 -11
- imap_processing/swe/l1b/swe_l1b.py +898 -23
- imap_processing/swe/l2/swe_l2.py +21 -77
- imap_processing/swe/utils/swe_constants.py +1 -0
- imap_processing/tests/ccsds/test_excel_to_xtce.py +1 -1
- imap_processing/tests/cdf/test_utils.py +14 -16
- imap_processing/tests/codice/conftest.py +44 -33
- imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-pha_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-pha_20241110193700_v0.0.0.cdf +0 -0
- imap_processing/tests/codice/test_codice_l1a.py +20 -11
- imap_processing/tests/codice/test_codice_l1b.py +6 -7
- imap_processing/tests/conftest.py +78 -22
- imap_processing/tests/ena_maps/test_ena_maps.py +462 -33
- imap_processing/tests/ena_maps/test_spatial_utils.py +1 -1
- imap_processing/tests/glows/conftest.py +10 -14
- imap_processing/tests/glows/test_glows_decom.py +4 -4
- imap_processing/tests/glows/test_glows_l1a_cdf.py +6 -27
- imap_processing/tests/glows/test_glows_l1a_data.py +6 -8
- imap_processing/tests/glows/test_glows_l1b.py +11 -11
- imap_processing/tests/glows/test_glows_l1b_data.py +5 -5
- imap_processing/tests/glows/test_glows_l2.py +2 -8
- imap_processing/tests/hi/conftest.py +1 -1
- imap_processing/tests/hi/test_hi_l1b.py +10 -12
- imap_processing/tests/hi/test_hi_l1c.py +27 -24
- imap_processing/tests/hi/test_l1a.py +7 -9
- imap_processing/tests/hi/test_science_direct_event.py +2 -2
- imap_processing/tests/hit/helpers/l1_validation.py +44 -43
- imap_processing/tests/hit/test_decom_hit.py +1 -1
- imap_processing/tests/hit/test_hit_l1a.py +9 -9
- imap_processing/tests/hit/test_hit_l1b.py +172 -217
- imap_processing/tests/hit/test_hit_l2.py +380 -118
- imap_processing/tests/hit/test_hit_utils.py +122 -55
- imap_processing/tests/hit/validation_data/hit_l1b_standard_sample2_nsrl_v4_3decimals.csv +62 -62
- imap_processing/tests/hit/validation_data/sci_sample_raw.csv +1 -1
- imap_processing/tests/ialirt/unit/test_decom_ialirt.py +16 -81
- imap_processing/tests/ialirt/unit/test_grouping.py +2 -2
- imap_processing/tests/ialirt/unit/test_parse_mag.py +71 -16
- imap_processing/tests/ialirt/unit/test_process_codicehi.py +3 -3
- imap_processing/tests/ialirt/unit/test_process_codicelo.py +3 -10
- imap_processing/tests/ialirt/unit/test_process_ephemeris.py +4 -4
- imap_processing/tests/ialirt/unit/test_process_hit.py +3 -3
- imap_processing/tests/ialirt/unit/test_process_swapi.py +24 -16
- imap_processing/tests/ialirt/unit/test_process_swe.py +115 -7
- imap_processing/tests/idex/conftest.py +72 -7
- imap_processing/tests/idex/test_data/imap_idex_l0_raw_20241206_v001.pkts +0 -0
- imap_processing/tests/idex/test_data/imap_idex_l0_raw_20250108_v001.pkts +0 -0
- imap_processing/tests/idex/test_idex_l0.py +33 -11
- imap_processing/tests/idex/test_idex_l1a.py +50 -23
- imap_processing/tests/idex/test_idex_l1b.py +104 -25
- imap_processing/tests/idex/test_idex_l2a.py +48 -32
- imap_processing/tests/idex/test_idex_l2b.py +93 -0
- imap_processing/tests/lo/test_lo_l1a.py +3 -3
- imap_processing/tests/lo/test_lo_l1b.py +371 -6
- imap_processing/tests/lo/test_lo_l1c.py +1 -1
- imap_processing/tests/lo/test_lo_science.py +6 -7
- imap_processing/tests/lo/test_star_sensor.py +1 -1
- imap_processing/tests/mag/conftest.py +58 -9
- imap_processing/tests/mag/test_mag_decom.py +4 -3
- imap_processing/tests/mag/test_mag_l1a.py +13 -7
- imap_processing/tests/mag/test_mag_l1b.py +9 -9
- imap_processing/tests/mag/test_mag_l1c.py +151 -47
- imap_processing/tests/mag/test_mag_l2.py +130 -0
- imap_processing/tests/mag/test_mag_validation.py +144 -7
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-out.csv +1857 -0
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-out.csv +1857 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-out.csv +1793 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-in.csv +1217 -0
- imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-out.csv +1793 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-burst-in.csv +2561 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-in.csv +961 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-out.csv +1539 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-in.csv +1921 -0
- imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-out.csv +2499 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-in.csv +865 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-out.csv +1196 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-in.csv +1729 -0
- imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-out.csv +3053 -0
- imap_processing/tests/mag/validation/L2/imap_mag_l1b_norm-mago_20251017_v002.cdf +0 -0
- imap_processing/tests/mag/validation/calibration/imap_mag_l2-calibration-matrices_20251017_v004.cdf +0 -0
- imap_processing/tests/mag/validation/calibration/imap_mag_l2-offsets-norm_20251017_20251017_v001.cdf +0 -0
- imap_processing/tests/spacecraft/test_quaternions.py +1 -1
- imap_processing/tests/spice/test_data/fake_repoint_data.csv +4 -4
- imap_processing/tests/spice/test_data/fake_spin_data.csv +11 -11
- imap_processing/tests/spice/test_geometry.py +3 -3
- imap_processing/tests/spice/test_kernels.py +1 -200
- imap_processing/tests/spice/test_pointing_frame.py +185 -0
- imap_processing/tests/spice/test_repoint.py +20 -10
- imap_processing/tests/spice/test_spin.py +50 -9
- imap_processing/tests/spice/test_time.py +14 -0
- imap_processing/tests/swapi/lut/imap_swapi_esa-unit-conversion_20250211_v000.csv +73 -0
- imap_processing/tests/swapi/lut/imap_swapi_lut-notes_20250211_v000.csv +1025 -0
- imap_processing/tests/swapi/test_swapi_l1.py +7 -9
- imap_processing/tests/swapi/test_swapi_l2.py +180 -8
- imap_processing/tests/swe/lut/checker-board-indices.csv +24 -0
- imap_processing/tests/swe/lut/imap_swe_esa-lut_20250301_v000.csv +385 -0
- imap_processing/tests/swe/lut/imap_swe_l1b-in-flight-cal_20240510_20260716_v000.csv +3 -0
- imap_processing/tests/swe/test_swe_l1a.py +6 -6
- imap_processing/tests/swe/test_swe_l1a_science.py +3 -3
- imap_processing/tests/swe/test_swe_l1b.py +162 -24
- imap_processing/tests/swe/test_swe_l2.py +82 -102
- imap_processing/tests/test_cli.py +171 -88
- imap_processing/tests/test_utils.py +2 -1
- imap_processing/tests/ultra/data/mock_data.py +49 -21
- imap_processing/tests/ultra/unit/conftest.py +53 -70
- imap_processing/tests/ultra/unit/test_badtimes.py +2 -4
- imap_processing/tests/ultra/unit/test_cullingmask.py +4 -6
- imap_processing/tests/ultra/unit/test_de.py +3 -10
- imap_processing/tests/ultra/unit/test_decom_apid_880.py +27 -76
- imap_processing/tests/ultra/unit/test_decom_apid_881.py +15 -16
- imap_processing/tests/ultra/unit/test_decom_apid_883.py +12 -10
- imap_processing/tests/ultra/unit/test_decom_apid_896.py +202 -55
- imap_processing/tests/ultra/unit/test_lookup_utils.py +23 -1
- imap_processing/tests/ultra/unit/test_spacecraft_pset.py +3 -4
- imap_processing/tests/ultra/unit/test_ultra_l1a.py +84 -307
- imap_processing/tests/ultra/unit/test_ultra_l1b.py +30 -12
- imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +2 -2
- imap_processing/tests/ultra/unit/test_ultra_l1b_culling.py +4 -1
- imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +163 -29
- imap_processing/tests/ultra/unit/test_ultra_l1c.py +5 -5
- imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +32 -43
- imap_processing/tests/ultra/unit/test_ultra_l2.py +230 -0
- imap_processing/ultra/constants.py +1 -1
- imap_processing/ultra/l0/decom_tools.py +21 -34
- imap_processing/ultra/l0/decom_ultra.py +168 -204
- imap_processing/ultra/l0/ultra_utils.py +152 -136
- imap_processing/ultra/l1a/ultra_l1a.py +55 -243
- imap_processing/ultra/l1b/badtimes.py +1 -4
- imap_processing/ultra/l1b/cullingmask.py +2 -6
- imap_processing/ultra/l1b/de.py +62 -47
- imap_processing/ultra/l1b/extendedspin.py +8 -4
- imap_processing/ultra/l1b/lookup_utils.py +72 -9
- imap_processing/ultra/l1b/ultra_l1b.py +3 -8
- imap_processing/ultra/l1b/ultra_l1b_culling.py +4 -4
- imap_processing/ultra/l1b/ultra_l1b_extended.py +236 -78
- imap_processing/ultra/l1c/histogram.py +2 -6
- imap_processing/ultra/l1c/spacecraft_pset.py +2 -4
- imap_processing/ultra/l1c/ultra_l1c.py +1 -5
- imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +107 -60
- imap_processing/ultra/l2/ultra_l2.py +299 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_LeftSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_RightSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_LeftSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_RightSlit.csv +526 -0
- imap_processing/ultra/lookup_tables/FM45_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -2
- imap_processing/ultra/lookup_tables/FM90_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -0
- imap_processing/ultra/packet_definitions/README.md +38 -0
- imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +15302 -482
- imap_processing/ultra/utils/ultra_l1_utils.py +13 -12
- imap_processing/utils.py +1 -1
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/METADATA +3 -2
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/RECORD +264 -225
- imap_processing/hi/l1b/hi_eng_unit_convert_table.csv +0 -154
- imap_processing/mag/imap_mag_sdc-configuration_v001.yaml +0 -6
- imap_processing/mag/l1b/__init__.py +0 -0
- imap_processing/swe/l1b/swe_esa_lookup_table.csv +0 -1441
- imap_processing/swe/l1b/swe_l1b_science.py +0 -699
- imap_processing/tests/swe/test_swe_l1b_science.py +0 -103
- imap_processing/ultra/lookup_tables/dps_sensitivity45.cdf +0 -0
- imap_processing/ultra/lookup_tables/ultra_90_dps_exposure_compressed.cdf +0 -0
- /imap_processing/idex/packet_definitions/{idex_packet_definition.xml → idex_science_packet_definition.xml} +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/20240827095047_SWE_IALIRT_packet.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971383-404.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971384-405.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971385-406.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971386-407.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971387-408.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971388-409.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971389-410.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971390-411.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/461971391-412.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/BinLog CCSDS_FRAG_TLM_20240826_152323Z_IALIRT_data_for_SDC.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/IALiRT Raw Packet Telemetry.txt +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/apid01152.tlm +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/eu_SWP_IAL_20240826_152033.csv +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/hi_fsw_view_1_ccsds.bin +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.ccsds +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.csv +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/idle_export_eu.SWE_IALIRT_20240827_093852.csv +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_hi-ialirt_20240523200000_v0.0.0.cdf +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf +0 -0
- /imap_processing/tests/ialirt/{test_data → data}/l0/sample_decoded_i-alirt_data.csv +0 -0
- /imap_processing/tests/mag/validation/{imap_calibration_mag_20240229_v01.cdf → calibration/imap_mag_l1b-calibration_20240229_v001.cdf} +0 -0
- /imap_processing/{swe/l1b/engineering_unit_convert_table.csv → tests/swe/lut/imap_swe_eu-conversion_20240510_v000.csv} +0 -0
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/LICENSE +0 -0
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/WHEEL +0 -0
- {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/entry_points.txt +0 -0
|
@@ -23,7 +23,21 @@ _BACK_POS_DF_ULTRA90 = pd.read_csv(
|
|
|
23
23
|
BASE_PATH / "ultra90_back-pos-luts.csv", index_col="Index_offset"
|
|
24
24
|
)
|
|
25
25
|
_ENERGY_NORM_DF = pd.read_csv(BASE_PATH / "EgyNorm.mem.csv")
|
|
26
|
-
_IMAGE_PARAMS_DF =
|
|
26
|
+
_IMAGE_PARAMS_DF = {
|
|
27
|
+
"ultra45": pd.read_csv(BASE_PATH / "FM45_Startup1_ULTRA_IMGPARAMS_20240719.csv"),
|
|
28
|
+
"ultra90": pd.read_csv(BASE_PATH / "FM90_Startup1_ULTRA_IMGPARAMS_20240719.csv"),
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
_FWHM_TABLES = {
|
|
32
|
+
("left", "ultra45"): pd.read_csv(BASE_PATH / "Angular_Profiles_FM45_LeftSlit.csv"),
|
|
33
|
+
("right", "ultra45"): pd.read_csv(
|
|
34
|
+
BASE_PATH / "Angular_Profiles_FM45_RightSlit.csv"
|
|
35
|
+
),
|
|
36
|
+
("left", "ultra90"): pd.read_csv(BASE_PATH / "Angular_Profiles_FM90_LeftSlit.csv"),
|
|
37
|
+
("right", "ultra90"): pd.read_csv(
|
|
38
|
+
BASE_PATH / "Angular_Profiles_FM90_RightSlit.csv"
|
|
39
|
+
),
|
|
40
|
+
}
|
|
27
41
|
|
|
28
42
|
|
|
29
43
|
def get_y_adjust(dy_lut: np.ndarray) -> npt.NDArray:
|
|
@@ -32,7 +46,7 @@ def get_y_adjust(dy_lut: np.ndarray) -> npt.NDArray:
|
|
|
32
46
|
|
|
33
47
|
Instead of using trigonometry, this function utilizes a 256-element lookup table
|
|
34
48
|
to find the Y adjustment. For more details, refer to pages 37-38 of the
|
|
35
|
-
IMAP-Ultra Flight Software Specification document
|
|
49
|
+
IMAP-Ultra Flight Software Specification document.
|
|
36
50
|
|
|
37
51
|
Parameters
|
|
38
52
|
----------
|
|
@@ -56,7 +70,7 @@ def get_norm(dn: xr.DataArray, key: str, file_label: str) -> npt.NDArray:
|
|
|
56
70
|
using lookup tables.
|
|
57
71
|
|
|
58
72
|
Further description is available on pages 31-32 of the IMAP-Ultra Flight Software
|
|
59
|
-
Specification document
|
|
73
|
+
Specification document. This will work for both Tp{key}Norm,
|
|
60
74
|
Bt{key}Norm. This is for getStopNorm and getCoinNorm.
|
|
61
75
|
|
|
62
76
|
Parameters
|
|
@@ -92,7 +106,7 @@ def get_back_position(back_index: np.ndarray, key: str, file_label: str) -> npt.
|
|
|
92
106
|
instead of linear equations is necessary. The computation will use different
|
|
93
107
|
tables to accommodate variations between the top and bottom anodes.
|
|
94
108
|
Further description is available on page 32 of the
|
|
95
|
-
IMAP-Ultra Flight Software Specification document
|
|
109
|
+
IMAP-Ultra Flight Software Specification document.
|
|
96
110
|
|
|
97
111
|
Parameters
|
|
98
112
|
----------
|
|
@@ -122,8 +136,8 @@ def get_energy_norm(ssd: np.ndarray, composite_energy: np.ndarray) -> npt.NDArra
|
|
|
122
136
|
Normalize composite energy per SSD using a lookup table.
|
|
123
137
|
|
|
124
138
|
Further description is available on page 41 of the
|
|
125
|
-
IMAP-Ultra Flight Software Specification document
|
|
126
|
-
|
|
139
|
+
IMAP-Ultra Flight Software Specification document.
|
|
140
|
+
Note : There are 8 SSDs containing
|
|
127
141
|
4096 composite energies each.
|
|
128
142
|
|
|
129
143
|
Parameters
|
|
@@ -143,23 +157,72 @@ def get_energy_norm(ssd: np.ndarray, composite_energy: np.ndarray) -> npt.NDArra
|
|
|
143
157
|
return _ENERGY_NORM_DF["NormEnergy"].iloc[row_number]
|
|
144
158
|
|
|
145
159
|
|
|
146
|
-
def get_image_params(image: str) -> np.float64:
|
|
160
|
+
def get_image_params(image: str, sensor: str) -> np.float64:
|
|
147
161
|
"""
|
|
148
162
|
Lookup table for image parameters.
|
|
149
163
|
|
|
150
164
|
Further description is available starting on
|
|
151
165
|
page 30 of the IMAP-Ultra Flight Software
|
|
152
|
-
Specification document
|
|
166
|
+
Specification document.
|
|
153
167
|
|
|
154
168
|
Parameters
|
|
155
169
|
----------
|
|
156
170
|
image : str
|
|
157
171
|
The column name to lookup in the CSV file, e.g., 'XFTLTOFF' or 'XFTRTOFF'.
|
|
172
|
+
sensor : str
|
|
173
|
+
Sensor name: "ultra45" or "ultra90".
|
|
158
174
|
|
|
159
175
|
Returns
|
|
160
176
|
-------
|
|
161
177
|
value : np.float64
|
|
162
178
|
Image parameter value from the CSV file.
|
|
163
179
|
"""
|
|
164
|
-
|
|
180
|
+
lookup_table = _IMAGE_PARAMS_DF[sensor]
|
|
181
|
+
value: np.float64 = lookup_table[image].values[0]
|
|
165
182
|
return value
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def get_angular_profiles(start_type: str, sensor: str) -> pd.DataFrame:
|
|
186
|
+
"""
|
|
187
|
+
Lookup table for FWHM for theta and phi.
|
|
188
|
+
|
|
189
|
+
Further description is available starting on
|
|
190
|
+
page 18 of the Algorithm Document.
|
|
191
|
+
|
|
192
|
+
Parameters
|
|
193
|
+
----------
|
|
194
|
+
start_type : str
|
|
195
|
+
Start Type: Left, Right.
|
|
196
|
+
sensor : str
|
|
197
|
+
Sensor name: "ultra45" or "ultra90".
|
|
198
|
+
|
|
199
|
+
Returns
|
|
200
|
+
-------
|
|
201
|
+
lookup_table : DataFrame
|
|
202
|
+
Angular profile lookup table for a given start_type and sensor.
|
|
203
|
+
"""
|
|
204
|
+
lookup_table = _FWHM_TABLES[(start_type.lower(), sensor)]
|
|
205
|
+
|
|
206
|
+
return lookup_table
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def get_energy_efficiencies() -> pd.DataFrame:
|
|
210
|
+
"""
|
|
211
|
+
Lookup table for efficiencies for theta and phi.
|
|
212
|
+
|
|
213
|
+
Further description is available starting on
|
|
214
|
+
page 18 of the Algorithm Document.
|
|
215
|
+
|
|
216
|
+
Returns
|
|
217
|
+
-------
|
|
218
|
+
lookup_table : DataFrame
|
|
219
|
+
Efficiencies lookup table for a given sensor.
|
|
220
|
+
"""
|
|
221
|
+
# TODO: Move this out of tests directory once we have the aux api
|
|
222
|
+
# TODO: ultra90 efficiencies
|
|
223
|
+
path = imap_module_directory / "tests" / "ultra" / "data" / "l1"
|
|
224
|
+
lookup_table = pd.read_csv(
|
|
225
|
+
path / "Ultra_efficiencies_45_combined_logistic_interpolation.csv"
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
return lookup_table
|
|
@@ -8,7 +8,7 @@ from imap_processing.ultra.l1b.de import calculate_de
|
|
|
8
8
|
from imap_processing.ultra.l1b.extendedspin import calculate_extendedspin
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
def ultra_l1b(data_dict: dict
|
|
11
|
+
def ultra_l1b(data_dict: dict) -> list[xr.Dataset]:
|
|
12
12
|
"""
|
|
13
13
|
Will process ULTRA L1A data into L1B CDF files at output_filepath.
|
|
14
14
|
|
|
@@ -16,8 +16,6 @@ def ultra_l1b(data_dict: dict, data_version: str) -> list[xr.Dataset]:
|
|
|
16
16
|
----------
|
|
17
17
|
data_dict : dict
|
|
18
18
|
The data itself and its dependent data.
|
|
19
|
-
data_version : str
|
|
20
|
-
Version of the data product being created.
|
|
21
19
|
|
|
22
20
|
Returns
|
|
23
21
|
-------
|
|
@@ -39,16 +37,16 @@ def ultra_l1b(data_dict: dict, data_version: str) -> list[xr.Dataset]:
|
|
|
39
37
|
de_dataset = calculate_de(
|
|
40
38
|
data_dict[f"imap_ultra_l1a_{instrument_id}sensor-de"],
|
|
41
39
|
f"imap_ultra_l1b_{instrument_id}sensor-de",
|
|
42
|
-
data_version,
|
|
43
40
|
)
|
|
44
41
|
output_datasets.append(de_dataset)
|
|
45
42
|
# L1b extended data will be created if L1a hk, rates,
|
|
46
|
-
# aux and l1b de data are available
|
|
43
|
+
# aux, params, and l1b de data are available
|
|
47
44
|
elif (
|
|
48
45
|
f"imap_ultra_l1a_{instrument_id}sensor-hk" in data_dict
|
|
49
46
|
and f"imap_ultra_l1b_{instrument_id}sensor-de" in data_dict
|
|
50
47
|
and f"imap_ultra_l1a_{instrument_id}sensor-rates" in data_dict
|
|
51
48
|
and f"imap_ultra_l1a_{instrument_id}sensor-aux" in data_dict
|
|
49
|
+
and f"imap_ultra_l1a_{instrument_id}sensor-params" in data_dict
|
|
52
50
|
):
|
|
53
51
|
extendedspin_dataset = calculate_extendedspin(
|
|
54
52
|
{
|
|
@@ -66,19 +64,16 @@ def ultra_l1b(data_dict: dict, data_version: str) -> list[xr.Dataset]:
|
|
|
66
64
|
],
|
|
67
65
|
},
|
|
68
66
|
f"imap_ultra_l1b_{instrument_id}sensor-extendedspin",
|
|
69
|
-
data_version,
|
|
70
67
|
instrument_id,
|
|
71
68
|
)
|
|
72
69
|
cullingmask_dataset = calculate_cullingmask(
|
|
73
70
|
extendedspin_dataset,
|
|
74
71
|
f"imap_ultra_l1b_{instrument_id}sensor-cullingmask",
|
|
75
|
-
data_version,
|
|
76
72
|
)
|
|
77
73
|
badtimes_dataset = calculate_badtimes(
|
|
78
74
|
extendedspin_dataset,
|
|
79
75
|
cullingmask_dataset["spin_number"].values,
|
|
80
76
|
f"imap_ultra_l1b_{instrument_id}sensor-badtimes",
|
|
81
|
-
data_version,
|
|
82
77
|
)
|
|
83
78
|
output_datasets.extend(
|
|
84
79
|
[extendedspin_dataset, cullingmask_dataset, badtimes_dataset]
|
|
@@ -89,7 +89,7 @@ def flag_attitude(
|
|
|
89
89
|
spin_df = get_spin_data() # Load spin data
|
|
90
90
|
|
|
91
91
|
spin_period = spin_df.loc[spin_df.spin_number.isin(spins), "spin_period_sec"]
|
|
92
|
-
spin_starttime = spin_df.loc[spin_df.spin_number.isin(spins), "
|
|
92
|
+
spin_starttime = spin_df.loc[spin_df.spin_number.isin(spins), "spin_start_met"]
|
|
93
93
|
spin_rates = 60 / spin_period # 60 seconds in a minute
|
|
94
94
|
bad_spin_rate_indices = (spin_rates < UltraConstants.CULLING_RPM_MIN) | (
|
|
95
95
|
spin_rates > UltraConstants.CULLING_RPM_MAX
|
|
@@ -210,10 +210,10 @@ def compare_aux_univ_spin_table(
|
|
|
210
210
|
mismatch_indices = np.zeros(len(spins), dtype=bool)
|
|
211
211
|
|
|
212
212
|
fields_to_compare = [
|
|
213
|
-
("TIMESPINSTART", "
|
|
214
|
-
("TIMESPINSTARTSUB", "
|
|
213
|
+
("TIMESPINSTART", "spin_start_sec_sclk"),
|
|
214
|
+
("TIMESPINSTARTSUB", "spin_start_subsec_sclk"),
|
|
215
215
|
("DURATION", "spin_period_sec"),
|
|
216
|
-
("TIMESPINDATA", "
|
|
216
|
+
("TIMESPINDATA", "spin_start_met"),
|
|
217
217
|
("SPINPERIOD", "spin_period_sec"),
|
|
218
218
|
]
|
|
219
219
|
|