imap-processing 0.19.2__tar.gz → 0.19.3__tar.gz
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-0.19.2 → imap_processing-0.19.3}/PKG-INFO +2 -2
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/_version.py +2 -2
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_enamaps_l2-common_variable_attrs.yaml +44 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_enamaps_l2-healpix_variable_attrs.yaml +29 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_enamaps_l2-rectangular_variable_attrs.yaml +32 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +8 -8
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/ialirt_spice.py +1 -2
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/parse_mag.py +18 -4
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/process_hit.py +9 -4
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/process_swapi.py +9 -4
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/process_swe.py +9 -4
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spice/geometry.py +0 -2
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l0/decom_tools.py +58 -46
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l0/decom_ultra.py +21 -9
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l0/ultra_utils.py +4 -4
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l2/ultra_l2.py +25 -12
- {imap_processing-0.19.2 → imap_processing-0.19.3}/pyproject.toml +2 -2
- {imap_processing-0.19.2 → imap_processing-0.19.3}/LICENSE +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/README.md +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ancillary/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ancillary/ancillary_dataset_combiner.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ccsds/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ccsds/ccsds_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ccsds/excel_to_xtce.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_codice_l2_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_constant_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_default_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_glows_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_glows_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_glows_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_glows_l2_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_hi_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_hi_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_hit_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_hit_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_hit_l2_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_ialirt_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_idex_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_idex_l2a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_idex_l2b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_idex_l2c_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_lo_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_lo_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_lo_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_lo_l1c_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_mag_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_mag_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_mag_l1c_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_mag_l2_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_spacecraft_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_spacecraft_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_swapi_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_swe_global_cdf_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_swe_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_swe_l2_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/config/imap_variable_schema.yaml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/imap_cdf_manager.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cdf/utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/cli.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/codice_l0.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/codice_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/codice_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/codice_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/data/esa_sweep_values.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/data/lo_stepping_values.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/decompress.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/packet_definitions/P_COD_NHK.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/packet_definitions/codice_packet_definition.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/codice/utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/decom.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/ena_maps.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/utils/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/utils/coordinates.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/utils/corrections.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/utils/map_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/utils/naming.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ena_maps/utils/spatial_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/ancillary/imap_glows_exclusions-by-instr-team_20250923_v002.dat +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/ancillary/imap_glows_map-of-excluded-regions_20250923_v002.dat +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/ancillary/imap_glows_map-of-uv-sources_20250923_v002.dat +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/ancillary/imap_glows_pipeline-settings_20250923_v002.json +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/ancillary/imap_glows_pipeline_settings_v001.json +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/ancillary/imap_glows_suspected-transients_20250923_v002.dat +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/ancillary/l1b_conversion_table_v001.json +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l0/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l0/decom_glows.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l0/glows_l0_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l1a/glows_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l1a/glows_l1a_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l1b/glows_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l1b/glows_l1b_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l2/glows_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/l2/glows_l2_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/packet_definitions/GLX_COMBINED.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/packet_definitions/P_GLX_TMSCDE.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/packet_definitions/P_GLX_TMSCHIST.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/utils/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/glows/utils/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/hi_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/hi_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/hi_l1c.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/hi_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/packet_definitions/TLM_HI_COMBINED_SCI.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/packet_definitions/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hi/utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/hit_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l0/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l0/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l0/decom_hit.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l1a/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l1a/hit_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l1b/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l1b/hit_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l2/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/l2/hit_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/hit/packet_definitions/hit_packet_definitions.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/calculate_ingest.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/generate_coverage.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/mag_l0_ialirt_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/process_codice.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/ialirt.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/ialirt_codicehi.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/ialirt_codicelo.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/ialirt_hit.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/ialirt_mag.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/ialirt_swapi.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/packet_definitions/ialirt_swe.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/process_ephemeris.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/utils/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/utils/create_xarray.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/utils/grouping.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/utils/time.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/atomic_masses.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/decode.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_l0.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_l2a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_l2b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/packet_definitions/idex_housekeeping_packet_definition.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/idex/packet_definitions/idex_science_packet_definition.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/ancillary_data/imap_lo_hydrogen-geometric-factor_v001.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/ancillary_data/imap_lo_oxygen-geometric-factor_v001.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/decompression_tables/decompression_tables.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/decompression_tables/log10_12_to_16_bit_uncompress.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/decompression_tables/log10_8_to_12_bit_uncompress.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/decompression_tables/log10_8_to_16_bit_uncompress.csv +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/lo_apid.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/lo_science.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/lo_star_sensor.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/utils/binary_string.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l0/utils/bit_decompression.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l1a/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l1a/lo_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l1b/lo_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l1b/tof_conversions.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l1c/lo_l1c.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/l2/lo_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/lo_ancillary.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/lo/packet_definitions/lo_xtce.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/imap_mag_sdc_configuration_v001.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l0/decom_mag.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l0/mag_l0_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1a/mag_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1a/mag_l1a_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1b/imap_mag_l1b-calibration_20240229_v002.cdf +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1b/mag_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1c/interpolation_methods.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1c/mag_l1c.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1d/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1d/mag_l1d.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l1d/mag_l1d_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l2/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l2/mag_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/l2/mag_l2_data.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/mag/packet_definitions/MAG_SCI_COMBINED.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/quality_flags.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spacecraft/packet_definitions/scid_x252.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spacecraft/quaternions.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spice/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spice/config.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spice/pointing_frame.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spice/repoint.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spice/spin.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/spice/time.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/l1/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/l1/swapi_l1.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/l2/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/l2/swapi_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/packet_definitions/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/packet_definitions/swapi_packet_definition.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swapi/swapi_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/l1a/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/l1a/swe_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/l1a/swe_science.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/l1b/swe_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/l2/swe_l2.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/packet_definitions/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/packet_definitions/swe_packet_definition.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/utils/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/utils/swe_constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/swe/utils/swe_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/constants.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l0/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1a/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1a/ultra_l1a.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/badtimes.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/de.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/extendedspin.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/goodtimes.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/lookup_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/quality_flag_filters.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/ultra_l1b.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/ultra_l1b_annotated.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/ultra_l1b_culling.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1b/ultra_l1b_extended.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1c/helio_pset.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1c/l1c_lookup_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1c/spacecraft_pset.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1c/ultra_l1c.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1c/ultra_l1c_culling.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/l2/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/packet_definitions/README.md +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/packet_definitions/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/utils/__init__.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ultra/utils/ultra_l1_utils.py +0 -0
- {imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: imap-processing
|
|
3
|
-
Version: 0.19.
|
|
3
|
+
Version: 0.19.3
|
|
4
4
|
Summary: IMAP Science Operations Center Processing
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: IMAP,SDC,SOC,Science Operations
|
|
@@ -30,7 +30,7 @@ Provides-Extra: tools
|
|
|
30
30
|
Requires-Dist: astropy-healpix (>=1.0)
|
|
31
31
|
Requires-Dist: cdflib (>=1.3.6,<2.0.0)
|
|
32
32
|
Requires-Dist: healpy (>=1.18.0,<2.0.0) ; extra == "map-visualization"
|
|
33
|
-
Requires-Dist: imap-data-access (>=0.
|
|
33
|
+
Requires-Dist: imap-data-access (>=0.35.0)
|
|
34
34
|
Requires-Dist: mypy (==1.10.1) ; extra == "dev"
|
|
35
35
|
Requires-Dist: netcdf4 (>=1.7.2,<2.0.0) ; extra == "test"
|
|
36
36
|
Requires-Dist: numpy (<=3)
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
# These version placeholders will be replaced later during substitution.
|
|
2
|
-
__version__ = "0.19.
|
|
3
|
-
__version_tuple__ = (0, 19,
|
|
2
|
+
__version__ = "0.19.3"
|
|
3
|
+
__version_tuple__ = (0, 19, 3)
|
|
@@ -207,6 +207,50 @@ exposure_factor: &exposure_factor
|
|
|
207
207
|
DISPLAY_TYPE: no_plot
|
|
208
208
|
DICT_KEY: SPASE>TemporalDescription:Exposure,Qualifier:Directional,CoordinateSystemName:HAE,CoordinateRepresentation:Spherical
|
|
209
209
|
|
|
210
|
+
geometric_function:
|
|
211
|
+
<<: *default_float32
|
|
212
|
+
CATDESC: The geometric function calculated from multiple pointing sets.
|
|
213
|
+
FIELDNAM: geometric_function
|
|
214
|
+
UNITS: cm^2 sr
|
|
215
|
+
DEPEND_0: epoch
|
|
216
|
+
VAR_TYPE: data
|
|
217
|
+
LABLAXIS: Geometric Factor
|
|
218
|
+
DISPLAY_TYPE: no_plot
|
|
219
|
+
DICT_KEY: SPASE>Particle>ParticleType:Atom,ParticleQuantity:GeometricFactor,Qualifier:Directional,CoordinateSystemName:HAE,CoordinateRepresentation:Spherical
|
|
220
|
+
|
|
221
|
+
efficiency:
|
|
222
|
+
<<: *default_float32
|
|
223
|
+
CATDESC: Event efficiency calculated from multiple pointing sets.
|
|
224
|
+
FIELDNAM: efficiency
|
|
225
|
+
UNITS: " "
|
|
226
|
+
DEPEND_0: epoch
|
|
227
|
+
VAR_TYPE: data
|
|
228
|
+
LABLAXIS: Efficiency
|
|
229
|
+
DISPLAY_TYPE: no_plot
|
|
230
|
+
DICT_KEY: SPASE>Particle>ParticleType:Atom,ParticleQuantity:Other
|
|
231
|
+
|
|
232
|
+
positional_uncert_theta:
|
|
233
|
+
<<: *default_float32
|
|
234
|
+
CATDESC: Positional uncertainty in theta direction calculated from multiple pointing sets.
|
|
235
|
+
FIELDNAM: positional_uncertainty_theta
|
|
236
|
+
UNITS: degrees
|
|
237
|
+
DEPEND_0: epoch
|
|
238
|
+
VAR_TYPE: data
|
|
239
|
+
LABLAXIS: Position Uncertainty Theta
|
|
240
|
+
DISPLAY_TYPE: no_plot
|
|
241
|
+
DICT_KEY: SPASE>Particle>ParticleType:Atom,ParticleQuantity:ArrivalDirection,Qualifier:Uncertainty,CoordinateSystemName:HAE,CoordinateRepresentation:Spherical
|
|
242
|
+
|
|
243
|
+
positional_uncert_phi:
|
|
244
|
+
<<: *default_float32
|
|
245
|
+
CATDESC: Positional uncertainty in phi direction calculated from multiple pointing sets.
|
|
246
|
+
FIELDNAM: positional_uncertainty_phi
|
|
247
|
+
UNITS: degrees
|
|
248
|
+
DEPEND_0: epoch
|
|
249
|
+
VAR_TYPE: data
|
|
250
|
+
LABLAXIS: Position Uncertainty Phi
|
|
251
|
+
DISPLAY_TYPE: no_plot
|
|
252
|
+
DICT_KEY: SPASE>Particle>ParticleType:Atom,ParticleQuantity:ArrivalDirection,Qualifier:Uncertainty,CoordinateSystemName:HAE,CoordinateRepresentation:Spherical
|
|
253
|
+
|
|
210
254
|
obs_date: &obs_date
|
|
211
255
|
<<: *default_int64
|
|
212
256
|
datatype: int64
|
|
@@ -72,6 +72,29 @@ sensitivity:
|
|
|
72
72
|
LABL_PTR_1: energy_label
|
|
73
73
|
LABL_PTR_2: pixel_index_label
|
|
74
74
|
|
|
75
|
+
efficiency:
|
|
76
|
+
DEPEND_1: energy
|
|
77
|
+
DEPEND_2: pixel_index
|
|
78
|
+
LABL_PTR_1: energy_label
|
|
79
|
+
LABL_PTR_2: pixel_index_label
|
|
80
|
+
|
|
81
|
+
geometric_function:
|
|
82
|
+
DEPEND_1: energy
|
|
83
|
+
DEPEND_2: pixel_index
|
|
84
|
+
LABL_PTR_1: energy_label
|
|
85
|
+
LABL_PTR_2: pixel_index_label
|
|
86
|
+
|
|
87
|
+
positional_uncert_theta:
|
|
88
|
+
DEPEND_1: energy
|
|
89
|
+
DEPEND_2: pixel_index
|
|
90
|
+
LABL_PTR_1: energy_label
|
|
91
|
+
LABL_PTR_2: pixel_index_label
|
|
92
|
+
|
|
93
|
+
positional_uncert_phi:
|
|
94
|
+
DEPEND_1: energy
|
|
95
|
+
DEPEND_2: pixel_index
|
|
96
|
+
LABL_PTR_1: energy_label
|
|
97
|
+
LABL_PTR_2: pixel_index_label
|
|
75
98
|
# These data variables will have an extra (energy) dimension
|
|
76
99
|
# only if the energy dimension is present in the L1C data.
|
|
77
100
|
# The default is energy-independent.
|
|
@@ -99,6 +122,12 @@ obs_date:
|
|
|
99
122
|
LABL_PTR_1: energy_label
|
|
100
123
|
LABL_PTR_2: pixel_index_label
|
|
101
124
|
|
|
125
|
+
obs_date_range:
|
|
126
|
+
DEPEND_1: energy
|
|
127
|
+
DEPEND_2: pixel_index
|
|
128
|
+
LABL_PTR_1: energy_label
|
|
129
|
+
LABL_PTR_2: pixel_index_label
|
|
130
|
+
|
|
102
131
|
solid_angle:
|
|
103
132
|
DEPEND_1: pixel_index
|
|
104
133
|
LABL_PTR_1: pixel_index_label
|
|
@@ -134,6 +134,38 @@ exposure_factor:
|
|
|
134
134
|
LABL_PTR_2: longitude_label
|
|
135
135
|
LABL_PTR_3: latitude_label
|
|
136
136
|
|
|
137
|
+
efficiency:
|
|
138
|
+
DEPEND_1: energy
|
|
139
|
+
DEPEND_2: longitude
|
|
140
|
+
DEPEND_3: latitude
|
|
141
|
+
LABL_PTR_1: energy_label
|
|
142
|
+
LABL_PTR_2: longitude_label
|
|
143
|
+
LABL_PTR_3: latitude_label
|
|
144
|
+
|
|
145
|
+
geometric_function:
|
|
146
|
+
DEPEND_1: energy
|
|
147
|
+
DEPEND_2: longitude
|
|
148
|
+
DEPEND_3: latitude
|
|
149
|
+
LABL_PTR_1: energy_label
|
|
150
|
+
LABL_PTR_2: longitude_label
|
|
151
|
+
LABL_PTR_3: latitude_label
|
|
152
|
+
|
|
153
|
+
positional_uncert_theta:
|
|
154
|
+
DEPEND_1: energy
|
|
155
|
+
DEPEND_2: longitude
|
|
156
|
+
DEPEND_3: latitude
|
|
157
|
+
LABL_PTR_1: energy_label
|
|
158
|
+
LABL_PTR_2: longitude_label
|
|
159
|
+
LABL_PTR_3: latitude_label
|
|
160
|
+
|
|
161
|
+
positional_uncert_phi:
|
|
162
|
+
DEPEND_1: energy
|
|
163
|
+
DEPEND_2: longitude
|
|
164
|
+
DEPEND_3: latitude
|
|
165
|
+
LABL_PTR_1: energy_label
|
|
166
|
+
LABL_PTR_2: longitude_label
|
|
167
|
+
LABL_PTR_3: latitude_label
|
|
168
|
+
|
|
137
169
|
obs_date:
|
|
138
170
|
DEPEND_1: energy
|
|
139
171
|
DEPEND_2: longitude
|
|
@@ -68,28 +68,28 @@ imap_ultra_l1a_90sensor-histogram-ena-extof-hi-ang:
|
|
|
68
68
|
Logical_source: imap_ultra_l1a_90sensor-histogram-ena-extof-hi-ang
|
|
69
69
|
Logical_source_description: IMAP-Ultra Instrument Level-1A ExTOF Hi Angular Data.
|
|
70
70
|
|
|
71
|
-
imap_ultra_l1a_45sensor-histogram-
|
|
71
|
+
imap_ultra_l1a_45sensor-histogram-ion-extof-hi-time:
|
|
72
72
|
<<: *instrument_base
|
|
73
73
|
Data_type: L1A_Histogram>Level-1A ExTOF
|
|
74
|
-
Logical_source: imap_ultra_l1a_45sensor-histogram-
|
|
74
|
+
Logical_source: imap_ultra_l1a_45sensor-histogram-ion-extof-hi-time
|
|
75
75
|
Logical_source_description: IMAP-Ultra Instrument Level-1A ExTOF Hi Time Data.
|
|
76
76
|
|
|
77
|
-
imap_ultra_l1a_90sensor-histogram-
|
|
77
|
+
imap_ultra_l1a_90sensor-histogram-ion-extof-hi-time:
|
|
78
78
|
<<: *instrument_base
|
|
79
79
|
Data_type: L1A_Histogram>Level-1A ExTOF
|
|
80
|
-
Logical_source: imap_ultra_l1a_90sensor-histogram-
|
|
80
|
+
Logical_source: imap_ultra_l1a_90sensor-histogram-ion-extof-hi-time
|
|
81
81
|
Logical_source_description: IMAP-Ultra Instrument Level-1A ExTOF Hi Time Data.
|
|
82
82
|
|
|
83
|
-
imap_ultra_l1a_45sensor-histogram-
|
|
83
|
+
imap_ultra_l1a_45sensor-histogram-ion-extof-hi-nrg:
|
|
84
84
|
<<: *instrument_base
|
|
85
85
|
Data_type: L1A_Histogram>Level-1A ExTOF
|
|
86
|
-
Logical_source: imap_ultra_l1a_45sensor-histogram-
|
|
86
|
+
Logical_source: imap_ultra_l1a_45sensor-histogram-ion-extof-hi-nrg
|
|
87
87
|
Logical_source_description: IMAP-Ultra Instrument Level-1A ExTOF Hi Energy Data.
|
|
88
88
|
|
|
89
|
-
imap_ultra_l1a_90sensor-histogram-
|
|
89
|
+
imap_ultra_l1a_90sensor-histogram-ion-extof-hi-nrg:
|
|
90
90
|
<<: *instrument_base
|
|
91
91
|
Data_type: L1A_Histogram>Level-1A ExTOF
|
|
92
|
-
Logical_source: imap_ultra_l1a_90sensor-histogram-
|
|
92
|
+
Logical_source: imap_ultra_l1a_90sensor-histogram-ion-extof-hi-nrg
|
|
93
93
|
Logical_source_description: IMAP-Ultra Instrument Level-1A ExTOF Hi Energy Data.
|
|
94
94
|
|
|
95
95
|
imap_ultra_l1a_45sensor-rates:
|
|
@@ -133,8 +133,7 @@ def transform_instrument_vectors_to_inertial(
|
|
|
133
133
|
spin_phase: NDArray,
|
|
134
134
|
sc_inertial_right: NDArray,
|
|
135
135
|
sc_inertial_decline: NDArray,
|
|
136
|
-
|
|
137
|
-
instrument_frame: SpiceFrame = SpiceFrame.IMAP_MAG,
|
|
136
|
+
instrument_frame: SpiceFrame,
|
|
138
137
|
spacecraft_frame: SpiceFrame = SpiceFrame.IMAP_SPACECRAFT,
|
|
139
138
|
) -> NDArray:
|
|
140
139
|
"""
|
|
@@ -268,6 +268,9 @@ def calculate_l1b(
|
|
|
268
268
|
retrieve_matrix_from_single_l1b_calibration(calibration_dataset, is_mago=False)
|
|
269
269
|
)
|
|
270
270
|
|
|
271
|
+
logger.info(f"calibration_matrix_mago shape: {calibration_matrix_mago.shape}.")
|
|
272
|
+
logger.info(f"calibration_matrix_magi shape: {calibration_matrix_magi.shape}.")
|
|
273
|
+
|
|
271
274
|
# Get time values for each group.
|
|
272
275
|
time_data = get_time(
|
|
273
276
|
grouped_data, group, pkt_counter, time_shift_mago, time_shift_magi
|
|
@@ -392,6 +395,7 @@ def transform_to_inertial(
|
|
|
392
395
|
attitude_time: np.ndarray,
|
|
393
396
|
target_time: float,
|
|
394
397
|
mag_vector: np.ndarray,
|
|
398
|
+
instrument_frame: SpiceFrame,
|
|
395
399
|
) -> np.ndarray:
|
|
396
400
|
"""
|
|
397
401
|
Transform vector to ECLIPJ2000.
|
|
@@ -415,6 +419,8 @@ def transform_to_inertial(
|
|
|
415
419
|
Example: time_data['primary_epoch'].
|
|
416
420
|
mag_vector : numpy.ndarray
|
|
417
421
|
Vector, shape (3).
|
|
422
|
+
instrument_frame : SpiceFrame
|
|
423
|
+
SPICE frame of the instrument.
|
|
418
424
|
|
|
419
425
|
Returns
|
|
420
426
|
-------
|
|
@@ -478,6 +484,7 @@ def transform_to_inertial(
|
|
|
478
484
|
np.array([spin_phase_deg]),
|
|
479
485
|
np.array([ra_deg]),
|
|
480
486
|
np.array([dec_deg]),
|
|
487
|
+
instrument_frame,
|
|
481
488
|
)[0]
|
|
482
489
|
|
|
483
490
|
return inertial_vector
|
|
@@ -570,6 +577,7 @@ def process_packet(
|
|
|
570
577
|
mago_times_all = []
|
|
571
578
|
magi_vectors_all = []
|
|
572
579
|
magi_times_all = []
|
|
580
|
+
incomplete_groups = []
|
|
573
581
|
|
|
574
582
|
for group in unique_groups:
|
|
575
583
|
# Get status values for each group.
|
|
@@ -581,10 +589,7 @@ def process_packet(
|
|
|
581
589
|
]
|
|
582
590
|
|
|
583
591
|
if not np.array_equal(pkt_counter, np.arange(4)):
|
|
584
|
-
|
|
585
|
-
f"Group {group} does not contain all values from 0 to "
|
|
586
|
-
f"3 without duplicates."
|
|
587
|
-
)
|
|
592
|
+
incomplete_groups.append(group)
|
|
588
593
|
continue
|
|
589
594
|
|
|
590
595
|
# Get decoded status data.
|
|
@@ -648,6 +653,7 @@ def process_packet(
|
|
|
648
653
|
attitude_time,
|
|
649
654
|
time_data["primary_epoch"],
|
|
650
655
|
mago_out,
|
|
656
|
+
SpiceFrame.IMAP_MAG_O,
|
|
651
657
|
)
|
|
652
658
|
magi_inertial_vector = transform_to_inertial(
|
|
653
659
|
sc_spin_phase_rad.values,
|
|
@@ -656,6 +662,7 @@ def process_packet(
|
|
|
656
662
|
attitude_time,
|
|
657
663
|
time_data["secondary_epoch"],
|
|
658
664
|
magi_out,
|
|
665
|
+
SpiceFrame.IMAP_MAG_I,
|
|
659
666
|
)
|
|
660
667
|
|
|
661
668
|
met = grouped_data["met"][(grouped_data["group"] == group).values]
|
|
@@ -665,6 +672,13 @@ def process_packet(
|
|
|
665
672
|
magi_vectors_all.append(magi_inertial_vector)
|
|
666
673
|
magi_times_all.append(time_data["secondary_epoch"])
|
|
667
674
|
|
|
675
|
+
if incomplete_groups:
|
|
676
|
+
logger.info(
|
|
677
|
+
f"The following mag groups were skipped due to "
|
|
678
|
+
f"missing or duplicate pkt_counter values: "
|
|
679
|
+
f"{incomplete_groups}"
|
|
680
|
+
)
|
|
681
|
+
|
|
668
682
|
mago_corrected, magnitude = apply_gradiometry_correction(
|
|
669
683
|
np.array(mago_vectors_all),
|
|
670
684
|
np.array(mago_times_all),
|
|
@@ -127,6 +127,7 @@ def process_hit(xarray_data: xr.Dataset) -> list[dict]:
|
|
|
127
127
|
Dictionary final data product.
|
|
128
128
|
"""
|
|
129
129
|
hit_data = []
|
|
130
|
+
incomplete_groups = []
|
|
130
131
|
|
|
131
132
|
# Subsecond time conversion specified in 7516-9054 GSW-FSW ICD.
|
|
132
133
|
# Value of SCLK subseconds, unsigned, (LSB = 1/256 sec)
|
|
@@ -148,10 +149,7 @@ def process_hit(xarray_data: xr.Dataset) -> list[dict]:
|
|
|
148
149
|
|
|
149
150
|
# Ensure no duplicates and all values from 0 to 59 are present
|
|
150
151
|
if not np.array_equal(subcom_values, np.arange(60)):
|
|
151
|
-
|
|
152
|
-
f"Group {group} does not contain all values from 0 to "
|
|
153
|
-
f"59 without duplicates."
|
|
154
|
-
)
|
|
152
|
+
incomplete_groups.append(group)
|
|
155
153
|
continue
|
|
156
154
|
|
|
157
155
|
fast_rate_1 = grouped_data["hit_fast_rate_1"][
|
|
@@ -187,4 +185,11 @@ def process_hit(xarray_data: xr.Dataset) -> list[dict]:
|
|
|
187
185
|
}
|
|
188
186
|
)
|
|
189
187
|
|
|
188
|
+
if incomplete_groups:
|
|
189
|
+
logger.info(
|
|
190
|
+
f"The following hit groups were skipped due to "
|
|
191
|
+
f"missing or duplicate pkt_counter values: "
|
|
192
|
+
f"{incomplete_groups}"
|
|
193
|
+
)
|
|
194
|
+
|
|
190
195
|
return hit_data
|
{imap_processing-0.19.2 → imap_processing-0.19.3}/imap_processing/ialirt/l0/process_swapi.py
RENAMED
|
@@ -158,6 +158,7 @@ def process_swapi_ialirt(
|
|
|
158
158
|
# Add required parameters.
|
|
159
159
|
sci_dataset["met"] = met
|
|
160
160
|
met_values = []
|
|
161
|
+
incomplete_groups = []
|
|
161
162
|
|
|
162
163
|
grouped_dataset = find_groups(sci_dataset, (0, 11), "swapi_seq_number", "met")
|
|
163
164
|
|
|
@@ -179,12 +180,16 @@ def process_swapi_ialirt(
|
|
|
179
180
|
|
|
180
181
|
# Ensure no duplicates and all values from 0 to 11 are present
|
|
181
182
|
if not np.array_equal(seq_values.astype(int), np.arange(12)):
|
|
182
|
-
|
|
183
|
-
f"SWAPI group {group} does not contain all sequence values from 0 to "
|
|
184
|
-
f"11 without duplicates."
|
|
185
|
-
)
|
|
183
|
+
incomplete_groups.append(group)
|
|
186
184
|
continue
|
|
187
185
|
|
|
186
|
+
if incomplete_groups:
|
|
187
|
+
logger.info(
|
|
188
|
+
f"The following swapi groups were skipped due to "
|
|
189
|
+
f"missing or duplicate pkt_counter values: "
|
|
190
|
+
f"{incomplete_groups}"
|
|
191
|
+
)
|
|
192
|
+
|
|
188
193
|
raw_coin_count = process_sweep_data(grouped_dataset, "swapi_coin_cnt")
|
|
189
194
|
raw_coin_rate = raw_coin_count / SWAPI_LIVETIME
|
|
190
195
|
count_rate_error = np.sqrt(raw_coin_count) / SWAPI_LIVETIME
|
|
@@ -478,6 +478,7 @@ def process_swe(accumulated_data: xr.Dataset, in_flight_cal_files: list) -> list
|
|
|
478
478
|
grouped_data = find_groups(accumulated_data, (0, 59), "swe_seq", "time_seconds")
|
|
479
479
|
unique_groups = np.unique(grouped_data["group"])
|
|
480
480
|
swe_data: list[dict] = []
|
|
481
|
+
incomplete_groups = []
|
|
481
482
|
|
|
482
483
|
for group in unique_groups:
|
|
483
484
|
# Sequence values for the group should be 0-59 with no duplicates.
|
|
@@ -485,10 +486,7 @@ def process_swe(accumulated_data: xr.Dataset, in_flight_cal_files: list) -> list
|
|
|
485
486
|
|
|
486
487
|
# Ensure no duplicates and all values from 0 to 59 are present
|
|
487
488
|
if not np.array_equal(seq_values, np.arange(60)):
|
|
488
|
-
|
|
489
|
-
f"Group {group} does not contain all values from 0 to "
|
|
490
|
-
f"59 without duplicates."
|
|
491
|
-
)
|
|
489
|
+
incomplete_groups.append(group)
|
|
492
490
|
continue
|
|
493
491
|
# Prepare raw counts array just for this group
|
|
494
492
|
# (8 energy steps, 7 CEMs, 30 phi bins)
|
|
@@ -570,4 +568,11 @@ def process_swe(accumulated_data: xr.Dataset, in_flight_cal_files: list) -> list
|
|
|
570
568
|
},
|
|
571
569
|
)
|
|
572
570
|
|
|
571
|
+
if incomplete_groups:
|
|
572
|
+
logger.info(
|
|
573
|
+
f"The following swe groups were skipped due to "
|
|
574
|
+
f"missing or duplicate pkt_counter values: "
|
|
575
|
+
f"{incomplete_groups}"
|
|
576
|
+
)
|
|
577
|
+
|
|
573
578
|
return swe_data
|
|
@@ -50,8 +50,6 @@ class SpiceFrame(IntEnum):
|
|
|
50
50
|
IMAP_HI_90 = -43160
|
|
51
51
|
IMAP_ULTRA_45 = -43200
|
|
52
52
|
IMAP_ULTRA_90 = -43210
|
|
53
|
-
# TODO: remove IMAP_MAG frame once all usages have been removed
|
|
54
|
-
IMAP_MAG = -43999
|
|
55
53
|
IMAP_MAG_BOOM = -43250
|
|
56
54
|
IMAP_MAG_I = -43251
|
|
57
55
|
IMAP_MAG_O = -43252
|
|
@@ -157,6 +157,7 @@ def decompress_image(
|
|
|
157
157
|
pixel0: int,
|
|
158
158
|
binary_data: str,
|
|
159
159
|
packet_props: PacketProperties,
|
|
160
|
+
planes_per_packet: int = 1,
|
|
160
161
|
) -> NDArray:
|
|
161
162
|
"""
|
|
162
163
|
Will decompress a binary string representing an image into a matrix of pixel values.
|
|
@@ -174,11 +175,15 @@ def decompress_image(
|
|
|
174
175
|
packet_props : PacketProperties
|
|
175
176
|
Properties of the packet, including width bit, mantissa bit length and pixel
|
|
176
177
|
window dimensions.
|
|
178
|
+
planes_per_packet : int
|
|
179
|
+
Number of image planes in the packet. Default is 1.
|
|
177
180
|
|
|
178
181
|
Returns
|
|
179
182
|
-------
|
|
180
|
-
|
|
181
|
-
A
|
|
183
|
+
planes : NDArray
|
|
184
|
+
A 3D numpy array representing pixel values.
|
|
185
|
+
The last two dimensions correspond to the image dimensions, and the first
|
|
186
|
+
is the number of image planes.
|
|
182
187
|
Each pixel is stored as an unsigned 16-bit integer (uint16).
|
|
183
188
|
|
|
184
189
|
Notes
|
|
@@ -199,51 +204,58 @@ def decompress_image(
|
|
|
199
204
|
)
|
|
200
205
|
|
|
201
206
|
blocks_per_row = cols // pixels_per_block
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
# Decompressed pixel matrix
|
|
206
|
-
p_decom = np.zeros((rows, cols), dtype=np.int16)
|
|
207
|
-
|
|
207
|
+
current_pixel0 = pixel0 # Use the parameter for first plane
|
|
208
|
+
planes = []
|
|
209
|
+
plane_num = 0
|
|
208
210
|
pos = 0 # Starting position in the binary string
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
211
|
+
while plane_num < planes_per_packet:
|
|
212
|
+
# Compressed pixel matrix
|
|
213
|
+
p = np.zeros((rows, cols), dtype=np.uint16)
|
|
214
|
+
# Decompressed pixel matrix
|
|
215
|
+
p_decom = np.zeros((rows, cols), dtype=np.int16)
|
|
216
|
+
|
|
217
|
+
for i in range(rows):
|
|
218
|
+
for j in range(blocks_per_row):
|
|
219
|
+
# Read the width for the block.
|
|
220
|
+
w, pos = read_and_advance(binary_data, width_bit, pos)
|
|
221
|
+
for k in range(pixels_per_block):
|
|
222
|
+
# Handle the special case in which the width is 0
|
|
223
|
+
if w == 0:
|
|
224
|
+
value = 0
|
|
225
|
+
else:
|
|
226
|
+
# Find the value of each pixel in the block
|
|
227
|
+
value, pos = read_and_advance(binary_data, w, pos)
|
|
228
|
+
|
|
229
|
+
# if the least significant bit of value is set (odd)
|
|
230
|
+
if value & 0x01:
|
|
231
|
+
# value >> 1: shifts bits of value one place to the right
|
|
232
|
+
# ~: bitwise NOT operator (flips bits)
|
|
233
|
+
delta_f = ~(value >> 1)
|
|
234
|
+
else:
|
|
235
|
+
delta_f = value >> 1
|
|
236
|
+
|
|
237
|
+
# Calculate the new pixel value and update pixel0
|
|
238
|
+
column_index = j * pixels_per_block + k
|
|
239
|
+
# 0xff is the hexadecimal representation of the number 255,
|
|
240
|
+
# Keeps only the last 8 bits of the result of pixel0 - delta_f
|
|
241
|
+
# This operation ensures that the result is within the range
|
|
242
|
+
# of an 8-bit byte (0-255)
|
|
243
|
+
# Use np.int16 for the arithmetic operation to avoid overflow
|
|
244
|
+
# Then implicitly cast back to the p's uint16 dtype for storage
|
|
245
|
+
p[i][column_index] = np.int16(current_pixel0) - delta_f
|
|
246
|
+
# Perform logarithmic decompression on the pixel value
|
|
247
|
+
p_decom[i][column_index] = log_decompression(
|
|
248
|
+
p[i][column_index], mantissa_bit_length
|
|
249
|
+
)
|
|
250
|
+
current_pixel0 = p[i][column_index]
|
|
251
|
+
current_pixel0 = p[i][0]
|
|
252
|
+
planes.append(p_decom)
|
|
253
|
+
plane_num += 1
|
|
254
|
+
# Read P00 for the next plane (if not the last plane)
|
|
255
|
+
if plane_num < planes_per_packet:
|
|
256
|
+
current_pixel0, pos = read_and_advance(binary_data, 8, pos)
|
|
257
|
+
|
|
258
|
+
return np.stack(planes)
|
|
247
259
|
|
|
248
260
|
|
|
249
261
|
def read_image_raw_events_binary(
|
|
@@ -81,54 +81,66 @@ def process_ultra_tof(ds: xr.Dataset, packet_props: PacketProperties) -> xr.Data
|
|
|
81
81
|
decom_data: defaultdict[str, list[np.ndarray]] = defaultdict(list)
|
|
82
82
|
decom_data["packetdata"] = []
|
|
83
83
|
valid_epoch = []
|
|
84
|
-
|
|
85
84
|
for val, group in ds.groupby("epoch"):
|
|
86
85
|
if set(group["sid"].values) >= set(
|
|
87
86
|
np.arange(0, image_planes, planes_per_packet)
|
|
88
87
|
):
|
|
88
|
+
plane_count = 0
|
|
89
89
|
valid_epoch.append(val)
|
|
90
90
|
group.sortby("sid")
|
|
91
91
|
|
|
92
92
|
for key in scalar_keys:
|
|
93
|
-
|
|
93
|
+
# Repeat the scalar values for each image plane. There may be cases
|
|
94
|
+
# where the last packet has fewer planes than the planes_per_packet, so
|
|
95
|
+
# we slice to ensure the correct length.
|
|
96
|
+
decom_data[key].append(
|
|
97
|
+
np.tile(group[key].values, planes_per_packet)[:image_planes]
|
|
98
|
+
)
|
|
94
99
|
|
|
95
100
|
image = []
|
|
96
101
|
for i in range(num_image_packets):
|
|
97
102
|
binary = convert_to_binary_string(group["packetdata"].values[i])
|
|
103
|
+
# Determine how many planes to decompress in this packet.
|
|
104
|
+
# the last packet might have fewer planes than planes_per_packet.
|
|
105
|
+
# Take the minimum of the remaining planes or the max planes per packet
|
|
106
|
+
# value.
|
|
107
|
+
planes_in_packet = min(image_planes - plane_count, planes_per_packet)
|
|
98
108
|
decompressed = decompress_image(
|
|
99
109
|
group["p00"].values[i],
|
|
100
110
|
binary,
|
|
101
111
|
packet_props,
|
|
112
|
+
planes_in_packet,
|
|
102
113
|
)
|
|
103
114
|
image.append(decompressed)
|
|
115
|
+
plane_count += planes_in_packet
|
|
104
116
|
|
|
105
|
-
decom_data["packetdata"].append(np.
|
|
117
|
+
decom_data["packetdata"].append(np.concatenate(image, axis=0))
|
|
106
118
|
|
|
107
119
|
for key in scalar_keys:
|
|
108
|
-
decom_data[key] = np.stack(decom_data[key])
|
|
120
|
+
decom_data[key] = np.stack(decom_data[key], axis=0)
|
|
109
121
|
|
|
110
|
-
decom_data["packetdata"] = np.stack(decom_data["packetdata"])
|
|
122
|
+
decom_data["packetdata"] = np.stack(decom_data["packetdata"], axis=0)
|
|
111
123
|
|
|
112
124
|
coords = {
|
|
113
125
|
"epoch": np.array(valid_epoch, dtype=np.uint64),
|
|
114
|
-
"
|
|
126
|
+
"plane": xr.DataArray(np.arange(image_planes), dims=["plane"], name="plane"),
|
|
115
127
|
"row": xr.DataArray(np.arange(rows), dims=["row"], name="row"),
|
|
116
128
|
"column": xr.DataArray(np.arange(cols), dims=["column"], name="column"),
|
|
117
129
|
}
|
|
118
130
|
|
|
119
131
|
dataset = xr.Dataset(coords=coords)
|
|
120
132
|
|
|
121
|
-
# Add scalar keys (2D: epoch x
|
|
133
|
+
# Add scalar keys (2D: epoch x packets)
|
|
122
134
|
for key in scalar_keys:
|
|
123
135
|
dataset[key] = xr.DataArray(
|
|
124
136
|
decom_data[key],
|
|
125
|
-
dims=["epoch", "
|
|
137
|
+
dims=["epoch", "plane"],
|
|
126
138
|
)
|
|
127
139
|
|
|
128
140
|
# Add PACKETDATA (4D: epoch x sid x row x column)
|
|
129
141
|
dataset["packetdata"] = xr.DataArray(
|
|
130
142
|
decom_data["packetdata"],
|
|
131
|
-
dims=["epoch", "
|
|
143
|
+
dims=["epoch", "plane", "row", "column"],
|
|
132
144
|
)
|
|
133
145
|
|
|
134
146
|
return dataset
|
|
@@ -137,8 +137,8 @@ ULTRA_EXTOF_HIGH_ANGULAR = PacketProperties(
|
|
|
137
137
|
ULTRA_EXTOF_HIGH_TIME = PacketProperties(
|
|
138
138
|
apid=[888, 952],
|
|
139
139
|
logical_source=[
|
|
140
|
-
"imap_ultra_l1a_45sensor-histogram-
|
|
141
|
-
"imap_ultra_l1a_90sensor-histogram-
|
|
140
|
+
"imap_ultra_l1a_45sensor-histogram-ion-extof-hi-time",
|
|
141
|
+
"imap_ultra_l1a_90sensor-histogram-ion-extof-hi-time",
|
|
142
142
|
],
|
|
143
143
|
addition_to_logical_desc="Energy By Time of Flight High Time Images",
|
|
144
144
|
width=4,
|
|
@@ -153,8 +153,8 @@ ULTRA_EXTOF_HIGH_TIME = PacketProperties(
|
|
|
153
153
|
ULTRA_EXTOF_HIGH_ENERGY = PacketProperties(
|
|
154
154
|
apid=[887, 951],
|
|
155
155
|
logical_source=[
|
|
156
|
-
"imap_ultra_l1a_45sensor-histogram-
|
|
157
|
-
"imap_ultra_l1a_90sensor-histogram-
|
|
156
|
+
"imap_ultra_l1a_45sensor-histogram-ion-extof-hi-nrg",
|
|
157
|
+
"imap_ultra_l1a_90sensor-histogram-ion-extof-hi-nrg",
|
|
158
158
|
],
|
|
159
159
|
addition_to_logical_desc="Energy By Time of Flight High Energy Images",
|
|
160
160
|
width=4,
|