imap-processing 0.18.0__tar.gz → 0.19.2__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.

Files changed (282) hide show
  1. {imap_processing-0.18.0 → imap_processing-0.19.2}/PKG-INFO +2 -2
  2. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/_version.py +2 -2
  3. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ancillary/ancillary_dataset_combiner.py +161 -1
  4. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +6 -0
  5. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +221 -1057
  6. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +307 -283
  7. imap_processing-0.19.2/imap_processing/cdf/config/imap_codice_l2_variable_attrs.yaml +1869 -0
  8. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_constant_attrs.yaml +4 -2
  9. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_enamaps_l2-common_variable_attrs.yaml +11 -0
  10. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_glows_l1b_variable_attrs.yaml +15 -1
  11. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_hi_global_cdf_attrs.yaml +5 -0
  12. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +10 -4
  13. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_idex_l2a_variable_attrs.yaml +33 -4
  14. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_idex_l2b_variable_attrs.yaml +8 -91
  15. imap_processing-0.19.2/imap_processing/cdf/config/imap_idex_l2c_variable_attrs.yaml +120 -0
  16. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_lo_global_cdf_attrs.yaml +5 -4
  17. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_lo_l1a_variable_attrs.yaml +4 -15
  18. imap_processing-0.19.2/imap_processing/cdf/config/imap_lo_l1c_variable_attrs.yaml +270 -0
  19. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +85 -2
  20. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_mag_l1c_variable_attrs.yaml +24 -1
  21. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +20 -8
  22. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +45 -35
  23. imap_processing-0.19.2/imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +199 -0
  24. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cli.py +138 -93
  25. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/codice_l0.py +2 -1
  26. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/codice_l1a.py +167 -69
  27. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/codice_l1b.py +42 -32
  28. imap_processing-0.19.2/imap_processing/codice/codice_l2.py +278 -0
  29. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/constants.py +790 -603
  30. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/data/lo_stepping_values.csv +1 -1
  31. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/decom.py +1 -4
  32. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ena_maps/ena_maps.py +71 -43
  33. imap_processing-0.19.2/imap_processing/ena_maps/utils/corrections.py +291 -0
  34. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ena_maps/utils/map_utils.py +20 -4
  35. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ena_maps/utils/naming.py +8 -2
  36. imap_processing-0.19.2/imap_processing/glows/ancillary/imap_glows_exclusions-by-instr-team_20250923_v002.dat +10 -0
  37. imap_processing-0.19.2/imap_processing/glows/ancillary/imap_glows_map-of-excluded-regions_20250923_v002.dat +393 -0
  38. imap_processing-0.19.2/imap_processing/glows/ancillary/imap_glows_map-of-uv-sources_20250923_v002.dat +593 -0
  39. imap_processing-0.19.2/imap_processing/glows/ancillary/imap_glows_pipeline-settings_20250923_v002.json +54 -0
  40. imap_processing-0.19.2/imap_processing/glows/ancillary/imap_glows_suspected-transients_20250923_v002.dat +10 -0
  41. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l1b/glows_l1b.py +123 -18
  42. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l1b/glows_l1b_data.py +358 -47
  43. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l2/glows_l2.py +11 -0
  44. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hi/hi_l1a.py +124 -3
  45. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hi/hi_l1b.py +154 -71
  46. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hi/hi_l1c.py +4 -109
  47. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hi/hi_l2.py +104 -60
  48. imap_processing-0.19.2/imap_processing/hi/utils.py +503 -0
  49. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l0/constants.py +3 -0
  50. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l0/decom_hit.py +3 -6
  51. imap_processing-0.19.2/imap_processing/hit/l1a/hit_l1a.py +654 -0
  52. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l1b/hit_l1b.py +54 -126
  53. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l2/hit_l2.py +6 -6
  54. imap_processing-0.19.2/imap_processing/ialirt/calculate_ingest.py +219 -0
  55. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/constants.py +12 -2
  56. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/generate_coverage.py +15 -2
  57. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/ialirt_spice.py +6 -2
  58. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/parse_mag.py +293 -42
  59. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/process_hit.py +5 -3
  60. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/process_swapi.py +41 -25
  61. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/process_ephemeris.py +70 -14
  62. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/utils/create_xarray.py +1 -1
  63. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_l0.py +2 -2
  64. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_l1a.py +2 -3
  65. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_l1b.py +2 -3
  66. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_l2a.py +130 -4
  67. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_l2b.py +158 -143
  68. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_utils.py +1 -3
  69. imap_processing-0.19.2/imap_processing/lo/ancillary_data/imap_lo_hydrogen-geometric-factor_v001.csv +75 -0
  70. imap_processing-0.19.2/imap_processing/lo/ancillary_data/imap_lo_oxygen-geometric-factor_v001.csv +75 -0
  71. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/lo_science.py +25 -24
  72. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l1b/lo_l1b.py +93 -19
  73. imap_processing-0.19.2/imap_processing/lo/l1c/lo_l1c.py +600 -0
  74. imap_processing-0.19.2/imap_processing/lo/l2/lo_l2.py +1027 -0
  75. imap_processing-0.19.2/imap_processing/lo/lo_ancillary.py +55 -0
  76. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1a/mag_l1a.py +1 -0
  77. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1a/mag_l1a_data.py +26 -0
  78. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1b/mag_l1b.py +3 -2
  79. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1c/interpolation_methods.py +14 -15
  80. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1c/mag_l1c.py +23 -6
  81. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1d/mag_l1d.py +57 -14
  82. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1d/mag_l1d_data.py +202 -32
  83. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l2/mag_l2.py +2 -0
  84. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l2/mag_l2_data.py +14 -5
  85. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/quality_flags.py +23 -1
  86. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spice/geometry.py +89 -39
  87. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spice/pointing_frame.py +4 -8
  88. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spice/repoint.py +78 -2
  89. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spice/spin.py +28 -8
  90. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spice/time.py +12 -22
  91. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/l1/swapi_l1.py +10 -4
  92. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/l2/swapi_l2.py +15 -17
  93. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/l1b/swe_l1b.py +1 -2
  94. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/constants.py +30 -24
  95. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l0/ultra_utils.py +9 -11
  96. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1a/ultra_l1a.py +1 -2
  97. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/badtimes.py +35 -11
  98. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/de.py +95 -31
  99. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/extendedspin.py +31 -16
  100. imap_processing-0.19.2/imap_processing/ultra/l1b/goodtimes.py +112 -0
  101. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/lookup_utils.py +281 -28
  102. imap_processing-0.19.2/imap_processing/ultra/l1b/quality_flag_filters.py +23 -0
  103. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/ultra_l1b.py +7 -7
  104. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/ultra_l1b_culling.py +169 -7
  105. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/ultra_l1b_extended.py +311 -69
  106. imap_processing-0.19.2/imap_processing/ultra/l1c/helio_pset.py +202 -0
  107. imap_processing-0.19.2/imap_processing/ultra/l1c/l1c_lookup_utils.py +289 -0
  108. imap_processing-0.19.2/imap_processing/ultra/l1c/spacecraft_pset.py +211 -0
  109. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1c/ultra_l1c.py +33 -24
  110. imap_processing-0.19.2/imap_processing/ultra/l1c/ultra_l1c_culling.py +92 -0
  111. imap_processing-0.19.2/imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +740 -0
  112. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l2/ultra_l2.py +54 -11
  113. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/utils/ultra_l1_utils.py +37 -7
  114. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/utils.py +3 -4
  115. {imap_processing-0.18.0 → imap_processing-0.19.2}/pyproject.toml +4 -3
  116. imap_processing-0.18.0/imap_processing/cdf/config/imap_codice_l2_variable_attrs.yaml +0 -1028
  117. imap_processing-0.18.0/imap_processing/cdf/config/imap_idex_l2c_variable_attrs.yaml +0 -30
  118. imap_processing-0.18.0/imap_processing/cdf/config/imap_lo_l1c_variable_attrs.yaml +0 -179
  119. imap_processing-0.18.0/imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +0 -96
  120. imap_processing-0.18.0/imap_processing/codice/codice_l2.py +0 -72
  121. imap_processing-0.18.0/imap_processing/hi/utils.py +0 -249
  122. imap_processing-0.18.0/imap_processing/hit/l1a/hit_l1a.py +0 -364
  123. imap_processing-0.18.0/imap_processing/idex/idex_l2c.py +0 -84
  124. imap_processing-0.18.0/imap_processing/lo/l1c/lo_l1c.py +0 -420
  125. imap_processing-0.18.0/imap_processing/lo/l2/lo_l2.py +0 -213
  126. imap_processing-0.18.0/imap_processing/spice/kernels.py +0 -187
  127. imap_processing-0.18.0/imap_processing/ultra/l1b/cullingmask.py +0 -87
  128. imap_processing-0.18.0/imap_processing/ultra/l1b/quality_flag_filters.py +0 -14
  129. imap_processing-0.18.0/imap_processing/ultra/l1c/helio_pset.py +0 -100
  130. imap_processing-0.18.0/imap_processing/ultra/l1c/histogram.py +0 -36
  131. imap_processing-0.18.0/imap_processing/ultra/l1c/spacecraft_pset.py +0 -100
  132. imap_processing-0.18.0/imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +0 -632
  133. {imap_processing-0.18.0 → imap_processing-0.19.2}/LICENSE +0 -0
  134. {imap_processing-0.18.0 → imap_processing-0.19.2}/README.md +0 -0
  135. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/__init__.py +0 -0
  136. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ancillary/__init__.py +0 -0
  137. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ccsds/__init__.py +0 -0
  138. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ccsds/ccsds_data.py +0 -0
  139. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ccsds/excel_to_xtce.py +0 -0
  140. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/__init__.py +0 -0
  141. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_default_global_cdf_attrs.yaml +0 -0
  142. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_enamaps_l2-healpix_variable_attrs.yaml +0 -0
  143. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_enamaps_l2-rectangular_variable_attrs.yaml +0 -0
  144. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_glows_global_cdf_attrs.yaml +0 -0
  145. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_glows_l1a_variable_attrs.yaml +0 -0
  146. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_glows_l2_variable_attrs.yaml +0 -0
  147. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_hi_variable_attrs.yaml +0 -0
  148. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_hit_l1a_variable_attrs.yaml +0 -0
  149. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_hit_l1b_variable_attrs.yaml +0 -0
  150. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_hit_l2_variable_attrs.yaml +0 -0
  151. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_ialirt_global_cdf_attrs.yaml +0 -0
  152. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_ialirt_l1_variable_attrs.yaml +0 -0
  153. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +0 -0
  154. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +0 -0
  155. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_idex_l1b_variable_attrs.yaml +0 -0
  156. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_lo_l1b_variable_attrs.yaml +0 -0
  157. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_mag_l1a_variable_attrs.yaml +0 -0
  158. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_mag_l1b_variable_attrs.yaml +0 -0
  159. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_mag_l2_variable_attrs.yaml +0 -0
  160. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_spacecraft_global_cdf_attrs.yaml +0 -0
  161. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_spacecraft_variable_attrs.yaml +0 -0
  162. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_swapi_global_cdf_attrs.yaml +0 -0
  163. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +0 -0
  164. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_swe_global_cdf_attrs.yaml +0 -0
  165. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_swe_l1a_variable_attrs.yaml +0 -0
  166. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +0 -0
  167. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_swe_l2_variable_attrs.yaml +0 -0
  168. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +0 -0
  169. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/config/imap_variable_schema.yaml +0 -0
  170. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/imap_cdf_manager.py +0 -0
  171. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/cdf/utils.py +0 -0
  172. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/__init__.py +0 -0
  173. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/data/esa_sweep_values.csv +0 -0
  174. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/decompress.py +0 -0
  175. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/packet_definitions/P_COD_NHK.xml +0 -0
  176. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/packet_definitions/codice_packet_definition.xml +0 -0
  177. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/codice/utils.py +0 -0
  178. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ena_maps/__init__.py +0 -0
  179. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ena_maps/utils/__init__.py +0 -0
  180. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ena_maps/utils/coordinates.py +0 -0
  181. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ena_maps/utils/spatial_utils.py +0 -0
  182. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/__init__.py +0 -0
  183. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/ancillary/imap_glows_pipeline_settings_v001.json +0 -0
  184. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/ancillary/l1b_conversion_table_v001.json +0 -0
  185. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l0/__init__.py +0 -0
  186. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l0/decom_glows.py +0 -0
  187. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l0/glows_l0_data.py +0 -0
  188. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l1a/glows_l1a.py +0 -0
  189. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l1a/glows_l1a_data.py +0 -0
  190. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/l2/glows_l2_data.py +0 -0
  191. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/packet_definitions/GLX_COMBINED.xml +0 -0
  192. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/packet_definitions/P_GLX_TMSCDE.xml +0 -0
  193. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/packet_definitions/P_GLX_TMSCHIST.xml +0 -0
  194. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/utils/__init__.py +0 -0
  195. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/glows/utils/constants.py +0 -0
  196. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hi/__init__.py +0 -0
  197. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hi/packet_definitions/TLM_HI_COMBINED_SCI.xml +0 -0
  198. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hi/packet_definitions/__init__.py +0 -0
  199. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/__init__.py +0 -0
  200. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/hit_utils.py +0 -0
  201. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l0/__init__.py +0 -0
  202. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l1a/__init__.py +0 -0
  203. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l1b/constants.py +0 -0
  204. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/l2/constants.py +0 -0
  205. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/hit/packet_definitions/hit_packet_definitions.xml +0 -0
  206. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/__init__.py +0 -0
  207. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/__init__.py +0 -0
  208. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/mag_l0_ialirt_data.py +0 -0
  209. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/process_codice.py +0 -0
  210. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/l0/process_swe.py +0 -0
  211. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/__init__.py +0 -0
  212. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/ialirt.xml +0 -0
  213. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/ialirt_codicehi.xml +0 -0
  214. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/ialirt_codicelo.xml +0 -0
  215. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/ialirt_hit.xml +0 -0
  216. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/ialirt_mag.xml +0 -0
  217. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/ialirt_swapi.xml +0 -0
  218. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/packet_definitions/ialirt_swe.xml +0 -0
  219. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/utils/constants.py +0 -0
  220. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/utils/grouping.py +0 -0
  221. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ialirt/utils/time.py +0 -0
  222. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/__init__.py +0 -0
  223. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/atomic_masses.csv +0 -0
  224. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/decode.py +0 -0
  225. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_constants.py +0 -0
  226. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +0 -0
  227. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/packet_definitions/idex_housekeeping_packet_definition.xml +0 -0
  228. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/idex/packet_definitions/idex_science_packet_definition.xml +0 -0
  229. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/__init__.py +0 -0
  230. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/__init__.py +0 -0
  231. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/decompression_tables/decompression_tables.py +0 -0
  232. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/decompression_tables/log10_12_to_16_bit_uncompress.csv +0 -0
  233. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/decompression_tables/log10_8_to_12_bit_uncompress.csv +0 -0
  234. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/decompression_tables/log10_8_to_16_bit_uncompress.csv +0 -0
  235. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/lo_apid.py +0 -0
  236. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/lo_star_sensor.py +0 -0
  237. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/utils/binary_string.py +0 -0
  238. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l0/utils/bit_decompression.py +0 -0
  239. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l1a/__init__.py +0 -0
  240. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l1a/lo_l1a.py +0 -0
  241. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/l1b/tof_conversions.py +0 -0
  242. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/lo/packet_definitions/lo_xtce.xml +0 -0
  243. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/__init__.py +0 -0
  244. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/constants.py +0 -0
  245. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/imap_mag_sdc_configuration_v001.py +0 -0
  246. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l0/decom_mag.py +0 -0
  247. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l0/mag_l0_data.py +0 -0
  248. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1b/imap_mag_l1b-calibration_20240229_v002.cdf +0 -0
  249. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l1d/__init__.py +0 -0
  250. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/l2/__init__.py +0 -0
  251. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/mag/packet_definitions/MAG_SCI_COMBINED.xml +0 -0
  252. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spacecraft/packet_definitions/scid_x252.xml +0 -0
  253. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spacecraft/quaternions.py +0 -0
  254. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spice/__init__.py +0 -0
  255. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/spice/config.py +0 -0
  256. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/__init__.py +0 -0
  257. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/l1/__init__.py +0 -0
  258. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/l2/__init__.py +0 -0
  259. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/packet_definitions/__init__.py +0 -0
  260. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/packet_definitions/swapi_packet_definition.xml +0 -0
  261. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swapi/swapi_utils.py +0 -0
  262. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/__init__.py +0 -0
  263. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/l1a/__init__.py +0 -0
  264. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/l1a/swe_l1a.py +0 -0
  265. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/l1a/swe_science.py +0 -0
  266. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/l2/swe_l2.py +0 -0
  267. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/packet_definitions/__init__.py +0 -0
  268. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/packet_definitions/swe_packet_definition.xml +0 -0
  269. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/utils/__init__.py +0 -0
  270. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/utils/swe_constants.py +0 -0
  271. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/swe/utils/swe_utils.py +0 -0
  272. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/__init__.py +0 -0
  273. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l0/__init__.py +0 -0
  274. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l0/decom_tools.py +0 -0
  275. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l0/decom_ultra.py +0 -0
  276. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1a/__init__.py +0 -0
  277. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l1b/ultra_l1b_annotated.py +0 -0
  278. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/l2/__init__.py +0 -0
  279. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/packet_definitions/README.md +0 -0
  280. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +0 -0
  281. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/packet_definitions/__init__.py +0 -0
  282. {imap_processing-0.18.0 → imap_processing-0.19.2}/imap_processing/ultra/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imap-processing
3
- Version: 0.18.0
3
+ Version: 0.19.2
4
4
  Summary: IMAP Science Operations Center Processing
5
5
  License: MIT
6
6
  Keywords: IMAP,SDC,SOC,Science Operations
@@ -28,7 +28,7 @@ Provides-Extra: map-visualization
28
28
  Provides-Extra: test
29
29
  Provides-Extra: tools
30
30
  Requires-Dist: astropy-healpix (>=1.0)
31
- Requires-Dist: cdflib (>=1.3.1,<2.0.0)
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
33
  Requires-Dist: imap-data-access (>=0.32.0)
34
34
  Requires-Dist: mypy (==1.10.1) ; extra == "dev"
@@ -1,3 +1,3 @@
1
1
  # These version placeholders will be replaced later during substitution.
2
- __version__ = "0.18.0"
3
- __version_tuple__ = (0, 18, 0)
2
+ __version__ = "0.19.2"
3
+ __version_tuple__ = (0, 19, 2)
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import json
5
6
  from collections import namedtuple
6
7
  from pathlib import Path
7
8
 
@@ -144,7 +145,53 @@ class AncillaryCombiner:
144
145
  """
145
146
  return cdf_to_xarray(filepath)
146
147
 
147
- def _combine_input_datasets(self) -> xr.Dataset:
148
+ @staticmethod
149
+ def convert_json_to_dataset(filepath: str | Path) -> xr.Dataset:
150
+ """
151
+ Read a JSON file and convert it to an xarray Dataset.
152
+
153
+ This method handles JSON files by converting them to xarray Datasets
154
+ with appropriate structure. Nested dictionaries are flattened using
155
+ underscore separation, up to 2 levels deep.
156
+
157
+ Parameters
158
+ ----------
159
+ filepath : str | Path
160
+ The path to the JSON file to convert.
161
+
162
+ Returns
163
+ -------
164
+ xr.Dataset
165
+ The converted xarray dataset with JSON data as data variables.
166
+ """
167
+ with open(filepath) as f:
168
+ json_data = json.load(f)
169
+
170
+ # Convert JSON data to xarray Dataset with appropriate structure
171
+ # Each top-level key becomes a data variable
172
+
173
+ # The structure of the dictionary is {<variable_name>: (dims, data)}
174
+ # For the lists, we specify the dimension names. For scalars, pass in [].
175
+ data_vars = {}
176
+ for key, value in json_data.items():
177
+ if isinstance(value, (list, tuple)):
178
+ # Handle arrays/lists
179
+ data_vars[key] = ([f"dim_{key}"], value)
180
+ elif isinstance(value, dict):
181
+ # Handle nested dictionaries by flattening with underscore
182
+ for subkey, subvalue in value.items():
183
+ flat_key = f"{key}_{subkey}"
184
+ if isinstance(subvalue, (list, tuple)):
185
+ data_vars[flat_key] = ([f"dim_{flat_key}"], subvalue)
186
+ else:
187
+ data_vars[flat_key] = ([], subvalue)
188
+ else:
189
+ # Handle scalar values
190
+ data_vars[key] = ([], value)
191
+
192
+ return xr.Dataset(data_vars)
193
+
194
+ def _combine_input_datasets(self) -> xr.Dataset: # noqa: PLR0912
148
195
  """
149
196
  Combine all the input datasets into one output dataset.
150
197
 
@@ -167,6 +214,10 @@ class AncillaryCombiner:
167
214
  """
168
215
  output_dataset = xr.Dataset()
169
216
 
217
+ # Handle empty input gracefully
218
+ if not self.timestamped_data:
219
+ return output_dataset
220
+
170
221
  full_range_start = None
171
222
  full_range_end = None
172
223
  for timestamped_data in self.timestamped_data:
@@ -258,3 +309,112 @@ class MagAncillaryCombiner(AncillaryCombiner):
258
309
  expected_end_date: np.datetime64 | str,
259
310
  ):
260
311
  super().__init__(ancillary_input, expected_end_date)
312
+
313
+
314
+ class GlowsAncillaryCombiner(AncillaryCombiner):
315
+ """
316
+ GLOWS-specific instance of AncillaryConverter for bad-angle flag data.
317
+
318
+ This class handles GLOWS ancillary files for L1B processing, including:
319
+ - Excluded regions map (.dat files with ecliptic coordinates)
320
+ - UV sources map (.dat files with star positions and masking radii)
321
+ - Suspected transients (.dat files with time-based histogram masks)
322
+ - Instrument team exclusions (.dat files with time-based histogram masks)
323
+
324
+ Parameters
325
+ ----------
326
+ ancillary_input : ProcessingInput
327
+ Collection of GLOWS ancillary files.
328
+ expected_end_date : np.datetime64 | str
329
+ The expected end date of the dataset. This is used to fill in the end date
330
+ of the dataset if it is not provided in the input file. This should either
331
+ be a numpy datetime64 object or a string in the format YYYYMMDD.
332
+ """
333
+
334
+ def __init__(
335
+ self,
336
+ ancillary_input: ProcessingInput | list[Path],
337
+ expected_end_date: np.datetime64 | str,
338
+ ):
339
+ super().__init__(ancillary_input, expected_end_date)
340
+
341
+ def convert_file_to_dataset(self, filepath: str | Path) -> xr.Dataset:
342
+ """
343
+ Convert GLOWS ancillary .dat files to xarray datasets.
344
+
345
+ This method handles different types of GLOWS ancillary files:
346
+ - excluded_regions: longitude/latitude coordinate pairs
347
+ - uv_sources: star names with coordinates and masking radii
348
+ - suspected_transients: time-based histogram masks
349
+ - exclusions_by_instr_team: time-based histogram masks
350
+
351
+ Parameters
352
+ ----------
353
+ filepath : str | Path
354
+ The path to the GLOWS ancillary file to convert.
355
+
356
+ Returns
357
+ -------
358
+ xr.Dataset
359
+ The converted xarray dataset with appropriate dimensions and variables.
360
+ """
361
+ filepath = Path(filepath)
362
+ filename = filepath.name
363
+
364
+ if "excluded-regions" in filename:
365
+ # Handle excluded regions (2 columns: longitude, latitude)
366
+ data = np.loadtxt(filepath, comments="#")
367
+ return xr.Dataset(
368
+ {
369
+ "ecliptic_longitude_deg": (["region"], data[:, 0]),
370
+ "ecliptic_latitude_deg": (["region"], data[:, 1]),
371
+ }
372
+ )
373
+
374
+ elif "uv-sources" in filename:
375
+ # Handle UV sources (4 columns: name, longitude, latitude, radius)
376
+ data = np.loadtxt(filepath, comments="#", dtype=str)
377
+ return xr.Dataset(
378
+ {
379
+ "object_name": (["source"], data[:, 0]),
380
+ "ecliptic_longitude_deg": (["source"], data[:, 1].astype(float)),
381
+ "ecliptic_latitude_deg": (["source"], data[:, 2].astype(float)),
382
+ "angular_radius_for_masking": (
383
+ ["source"],
384
+ data[:, 3].astype(float),
385
+ ),
386
+ }
387
+ )
388
+
389
+ elif "suspected-transients" in filename:
390
+ # Handle suspected transients (time identifier + mask string)
391
+ with open(filepath) as f:
392
+ lines = [line.strip() for line in f if not line.startswith("#")]
393
+ identifiers = [line.split(" ", 1)[0] for line in lines]
394
+ masks = [line.split(" ", 1)[1] for line in lines]
395
+ return xr.Dataset(
396
+ {
397
+ "l1b_unique_block_identifier": (["time_block"], identifiers),
398
+ "histogram_mask_array": (["time_block"], masks),
399
+ }
400
+ )
401
+
402
+ elif "exclusions-by-instr-team" in filename:
403
+ # Handle instrument team exclusions (time identifier + mask string)
404
+ with open(filepath) as f:
405
+ lines = [line.strip() for line in f if not line.startswith("#")]
406
+ identifiers = [line.split(" ", 1)[0] for line in lines]
407
+ masks = [line.split(" ", 1)[1] for line in lines]
408
+ return xr.Dataset(
409
+ {
410
+ "l1b_unique_block_identifier": (["time_block"], identifiers),
411
+ "histogram_mask_array": (["time_block"], masks),
412
+ }
413
+ )
414
+
415
+ elif filename.endswith(".json"):
416
+ # Handle pipeline settings JSON file using the generic read_json method
417
+ return self.convert_json_to_dataset(filepath)
418
+
419
+ else:
420
+ raise ValueError(f"Unknown GLOWS ancillary file type: {filename}")
@@ -234,3 +234,9 @@ imap_codice_l2_hi-direct-events:
234
234
  Data_type: L2_hi-direct-events>Level-2 Hi Event Data
235
235
  Logical_source: imap_codice_l2_hi-direct-events
236
236
  Logical_source_description: IMAP Mission CoDICE Hi Level-2 Event Data.
237
+
238
+ imap_codice_l2_lo-sw-species:
239
+ <<: *instrument_base
240
+ Data_type: L2_lo-sw-species>Level-2 Lo Sunward Species Intensities Data
241
+ Logical_source: imap_codice_l2_lo-sw-species
242
+ Logical_source_description: IMAP Mission CoDICE Lo Level-2 Sunward Species Intensity Data.