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
|
@@ -17,7 +17,7 @@ import requests
|
|
|
17
17
|
import spiceypy
|
|
18
18
|
|
|
19
19
|
from imap_processing import imap_module_directory
|
|
20
|
-
from imap_processing.spice.time import met_to_ttj2000ns
|
|
20
|
+
from imap_processing.spice.time import TTJ2000_EPOCH, met_to_ttj2000ns
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
@pytest.fixture(autouse=True)
|
|
@@ -94,7 +94,7 @@ def _download_external_kernels(spice_test_data_path):
|
|
|
94
94
|
|
|
95
95
|
@pytest.fixture(scope="session")
|
|
96
96
|
def _download_test_data():
|
|
97
|
-
_download_external_data(
|
|
97
|
+
_download_external_data(_test_data_paths())
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
def _download_external_data(test_data_path_list):
|
|
@@ -125,10 +125,14 @@ def _download_external_data(test_data_path_list):
|
|
|
125
125
|
logger.info(f"File already exists: {destination}")
|
|
126
126
|
|
|
127
127
|
|
|
128
|
-
def
|
|
128
|
+
def _test_data_paths():
|
|
129
129
|
"""Defines a list of test data files to download from the AWS S3 bucket
|
|
130
130
|
and the corresponding location in which to store the downloaded file"""
|
|
131
131
|
test_data_path_list = [
|
|
132
|
+
(
|
|
133
|
+
"apid_478.bin",
|
|
134
|
+
imap_module_directory / "tests" / "ialirt" / "data" / "l0" / "apid_478.bin",
|
|
135
|
+
),
|
|
132
136
|
(
|
|
133
137
|
"imap_codice_l0_raw_20241110_v001.pkts",
|
|
134
138
|
imap_module_directory
|
|
@@ -155,6 +159,15 @@ def test_data_paths():
|
|
|
155
159
|
/ "l1"
|
|
156
160
|
/ "imap_hi_l1b_45sensor-de_20250415_v999.cdf",
|
|
157
161
|
),
|
|
162
|
+
(
|
|
163
|
+
"imap_hi_l1c_45sensor-pset_20250415_v999.cdf",
|
|
164
|
+
imap_module_directory
|
|
165
|
+
/ "tests"
|
|
166
|
+
/ "hi"
|
|
167
|
+
/ "data"
|
|
168
|
+
/ "l1"
|
|
169
|
+
/ "imap_hi_l1c_45sensor-pset_20250415_v999.cdf",
|
|
170
|
+
),
|
|
158
171
|
(
|
|
159
172
|
"idex_l1a_validation_file.h5",
|
|
160
173
|
imap_module_directory
|
|
@@ -163,6 +176,14 @@ def test_data_paths():
|
|
|
163
176
|
/ "test_data"
|
|
164
177
|
/ "idex_l1a_validation_file.h5",
|
|
165
178
|
),
|
|
179
|
+
(
|
|
180
|
+
"idex_l1b_validation_file.h5",
|
|
181
|
+
imap_module_directory
|
|
182
|
+
/ "tests"
|
|
183
|
+
/ "idex"
|
|
184
|
+
/ "test_data"
|
|
185
|
+
/ "idex_l1b_validation_file.h5",
|
|
186
|
+
),
|
|
166
187
|
(
|
|
167
188
|
"ultra-90_raw_event_data_shortened.csv",
|
|
168
189
|
imap_module_directory
|
|
@@ -199,7 +220,17 @@ def test_data_paths():
|
|
|
199
220
|
/ "l1"
|
|
200
221
|
/ "ultra_90_dps_exposure.csv",
|
|
201
222
|
),
|
|
223
|
+
(
|
|
224
|
+
"Ultra_efficiencies_45_combined_logistic_interpolation.csv",
|
|
225
|
+
imap_module_directory
|
|
226
|
+
/ "tests"
|
|
227
|
+
/ "ultra"
|
|
228
|
+
/ "data"
|
|
229
|
+
/ "l1"
|
|
230
|
+
/ "Ultra_efficiencies_45_combined_logistic_interpolation.csv",
|
|
231
|
+
),
|
|
202
232
|
]
|
|
233
|
+
|
|
203
234
|
return test_data_path_list
|
|
204
235
|
|
|
205
236
|
|
|
@@ -241,7 +272,7 @@ def spice_test_data_path(imap_tests_path):
|
|
|
241
272
|
return imap_tests_path / "spice/test_data"
|
|
242
273
|
|
|
243
274
|
|
|
244
|
-
@pytest.fixture
|
|
275
|
+
@pytest.fixture
|
|
245
276
|
def furnish_time_kernels(spice_test_data_path):
|
|
246
277
|
"""Furnishes (temporarily) the testing LSK and SCLK"""
|
|
247
278
|
spiceypy.kclear()
|
|
@@ -253,7 +284,7 @@ def furnish_time_kernels(spice_test_data_path):
|
|
|
253
284
|
spiceypy.kclear()
|
|
254
285
|
|
|
255
286
|
|
|
256
|
-
@pytest.fixture
|
|
287
|
+
@pytest.fixture
|
|
257
288
|
def furnish_sclk(spice_test_data_path):
|
|
258
289
|
"""Furnishes (temporarily) the SCLK for JPSS stored in the package data directory"""
|
|
259
290
|
test_sclk = spice_test_data_path / "imap_sclk_0000.tsc"
|
|
@@ -262,7 +293,7 @@ def furnish_sclk(spice_test_data_path):
|
|
|
262
293
|
spiceypy.kclear()
|
|
263
294
|
|
|
264
295
|
|
|
265
|
-
@pytest.fixture
|
|
296
|
+
@pytest.fixture
|
|
266
297
|
def furnish_kernels(spice_test_data_path):
|
|
267
298
|
"""Return a function that will furnish an arbitrary list of kernels."""
|
|
268
299
|
|
|
@@ -364,7 +395,7 @@ def session_test_metakernel(monkeypatch_session, tmpdir_factory, spice_test_data
|
|
|
364
395
|
spiceypy.kclear()
|
|
365
396
|
|
|
366
397
|
|
|
367
|
-
@pytest.fixture
|
|
398
|
+
@pytest.fixture
|
|
368
399
|
def use_test_metakernel(
|
|
369
400
|
request, monkeypatch, spice_test_data_path, session_test_metakernel
|
|
370
401
|
):
|
|
@@ -414,14 +445,14 @@ def use_test_metakernel(
|
|
|
414
445
|
spiceypy.kclear()
|
|
415
446
|
|
|
416
447
|
|
|
417
|
-
@pytest.fixture
|
|
448
|
+
@pytest.fixture
|
|
418
449
|
def _unset_metakernel_path(monkeypatch):
|
|
419
450
|
"""Temporarily unsets the SPICE_METAKERNEL environment variable"""
|
|
420
451
|
if os.getenv("SPICE_METAKERNEL", None) is not None:
|
|
421
452
|
monkeypatch.delenv("SPICE_METAKERNEL")
|
|
422
453
|
|
|
423
454
|
|
|
424
|
-
@pytest.fixture
|
|
455
|
+
@pytest.fixture
|
|
425
456
|
def use_test_spin_data_csv(monkeypatch):
|
|
426
457
|
"""Sets the SPIN_DATA_FILEPATH environment variable to input path."""
|
|
427
458
|
|
|
@@ -431,7 +462,7 @@ def use_test_spin_data_csv(monkeypatch):
|
|
|
431
462
|
return wrapped_set_spin_data_filepath
|
|
432
463
|
|
|
433
464
|
|
|
434
|
-
@pytest.fixture
|
|
465
|
+
@pytest.fixture
|
|
435
466
|
def use_fake_spin_data_for_time(
|
|
436
467
|
request, use_test_spin_data_csv, tmpdir, generate_spin_data
|
|
437
468
|
):
|
|
@@ -468,7 +499,7 @@ def use_fake_spin_data_for_time(
|
|
|
468
499
|
return wrapped_set_spin_data_filepath
|
|
469
500
|
|
|
470
501
|
|
|
471
|
-
@pytest.fixture
|
|
502
|
+
@pytest.fixture
|
|
472
503
|
def generate_spin_data():
|
|
473
504
|
def make_data(start_met: float, end_met: Optional[float] = None) -> pd.DataFrame:
|
|
474
505
|
"""
|
|
@@ -476,8 +507,9 @@ def generate_spin_data():
|
|
|
476
507
|
Spin table contains the following fields:
|
|
477
508
|
(
|
|
478
509
|
spin_number,
|
|
479
|
-
|
|
480
|
-
|
|
510
|
+
spin_start_sec_sclk,
|
|
511
|
+
spin_start_subsec_sclk,
|
|
512
|
+
spin_start_utc,
|
|
481
513
|
spin_period_sec,
|
|
482
514
|
spin_period_valid,
|
|
483
515
|
spin_phase_valid,
|
|
@@ -505,18 +537,25 @@ def generate_spin_data():
|
|
|
505
537
|
end_met = start_met + 86400
|
|
506
538
|
|
|
507
539
|
# Create spin start second data of 15 seconds increment
|
|
508
|
-
|
|
509
|
-
|
|
540
|
+
spin_start_met = np.arange(start_met, end_met + 1, 15)
|
|
541
|
+
spin_start_sec = np.floor(spin_start_met).astype(int)
|
|
542
|
+
spin_start_subsec = int((start_met - spin_start_sec[0]) * 1e6)
|
|
543
|
+
|
|
544
|
+
# Calculate UTC times without spice (accepting ~5 second inaccuracy)
|
|
545
|
+
spin_start_dt64 = TTJ2000_EPOCH + (spin_start_met * 1e9).astype(
|
|
546
|
+
"timedelta64[ns]"
|
|
547
|
+
)
|
|
510
548
|
|
|
511
549
|
nspins = len(spin_start_sec)
|
|
512
550
|
|
|
513
551
|
spin_df = pd.DataFrame.from_dict(
|
|
514
552
|
{
|
|
515
553
|
"spin_number": np.arange(nspins, dtype=np.uint32),
|
|
516
|
-
"
|
|
517
|
-
"
|
|
554
|
+
"spin_start_sec_sclk": spin_start_sec,
|
|
555
|
+
"spin_start_subsec_sclk": np.full(
|
|
518
556
|
nspins, spin_start_subsec, dtype=np.uint32
|
|
519
557
|
),
|
|
558
|
+
"spin_start_utc": np.datetime_as_string(spin_start_dt64, unit="us"),
|
|
520
559
|
"spin_period_sec": np.full(nspins, 15.0, dtype=np.float32),
|
|
521
560
|
"spin_period_valid": np.ones(nspins, dtype=np.uint8),
|
|
522
561
|
"spin_phase_valid": np.ones(nspins, dtype=np.uint8),
|
|
@@ -526,7 +565,7 @@ def generate_spin_data():
|
|
|
526
565
|
)
|
|
527
566
|
|
|
528
567
|
# Convert spin_start_sec to datetime to set repointing times flags
|
|
529
|
-
spin_start_dates = met_to_ttj2000ns(spin_start_sec + spin_start_subsec /
|
|
568
|
+
spin_start_dates = met_to_ttj2000ns(spin_start_sec + spin_start_subsec / 1e6)
|
|
530
569
|
spin_start_dates = cdflib.cdfepoch.to_datetime(spin_start_dates)
|
|
531
570
|
|
|
532
571
|
# Convert DatetimeIndex to Series for using .dt accessor
|
|
@@ -550,7 +589,7 @@ def generate_spin_data():
|
|
|
550
589
|
return make_data
|
|
551
590
|
|
|
552
591
|
|
|
553
|
-
@pytest.fixture
|
|
592
|
+
@pytest.fixture
|
|
554
593
|
def use_test_repoint_data_csv(monkeypatch):
|
|
555
594
|
"""Sets the REPOINT_DATA_FILEPATH environment variable to input path."""
|
|
556
595
|
|
|
@@ -588,10 +627,21 @@ def generate_repoint_data(
|
|
|
588
627
|
repoint_start_times = np.array(repoint_start_met)
|
|
589
628
|
if repoint_end_met is None:
|
|
590
629
|
repoint_end_met = repoint_start_times + 15 * 60
|
|
630
|
+
# Calculate UTC times without spice (accepting ~5 second inaccuracy)
|
|
631
|
+
repoint_start_dt64 = TTJ2000_EPOCH + (repoint_start_times * 1e9).astype(
|
|
632
|
+
"timedelta64[ns]"
|
|
633
|
+
)
|
|
634
|
+
repoint_end_dt64 = TTJ2000_EPOCH + (repoint_end_met * 1e9).astype("timedelta64[ns]")
|
|
591
635
|
repoint_df = pd.DataFrame.from_dict(
|
|
592
636
|
{
|
|
593
|
-
"
|
|
594
|
-
"
|
|
637
|
+
"repoint_start_sec_sclk": repoint_start_times.astype(int),
|
|
638
|
+
"repoint_start_subsec_sclk": ((repoint_start_times % 1.0) * 1e6).astype(
|
|
639
|
+
int
|
|
640
|
+
),
|
|
641
|
+
"repoint_start_utc": np.datetime_as_string(repoint_start_dt64, unit="us"),
|
|
642
|
+
"repoint_end_sec_sclk": repoint_end_met.astype(int),
|
|
643
|
+
"repoint_end_subsec_sclk": ((repoint_end_met % 1.0) * 1e6).astype(int),
|
|
644
|
+
"repoint_end_utc": np.datetime_as_string(repoint_end_dt64, unit="us"),
|
|
595
645
|
"repoint_id": np.arange(repoint_start_times.size, dtype=int)
|
|
596
646
|
+ repoint_id_start,
|
|
597
647
|
}
|
|
@@ -599,7 +649,7 @@ def generate_repoint_data(
|
|
|
599
649
|
return repoint_df
|
|
600
650
|
|
|
601
651
|
|
|
602
|
-
@pytest.fixture
|
|
652
|
+
@pytest.fixture
|
|
603
653
|
def use_fake_repoint_data_for_time(use_test_repoint_data_csv, tmpdir):
|
|
604
654
|
"""
|
|
605
655
|
Generate and use fake spin data for testing.
|
|
@@ -641,3 +691,9 @@ def use_fake_repoint_data_for_time(use_test_repoint_data_csv, tmpdir):
|
|
|
641
691
|
use_test_repoint_data_csv(repoint_csv_file_path)
|
|
642
692
|
|
|
643
693
|
return wrapped_repoint_data_filepath
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
if __name__ == "__main__":
|
|
697
|
+
# This is to enable downloading files easier by letting us
|
|
698
|
+
# run this file directly
|
|
699
|
+
_download_external_data(_test_data_paths())
|