imap-processing 0.11.0__py3-none-any.whl → 0.13.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of imap-processing might be problematic. Click here for more details.

Files changed (415) hide show
  1. imap_processing/__init__.py +11 -11
  2. imap_processing/_version.py +2 -2
  3. imap_processing/ccsds/ccsds_data.py +1 -2
  4. imap_processing/ccsds/excel_to_xtce.py +66 -18
  5. imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +24 -40
  6. imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +934 -42
  7. imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +1846 -128
  8. imap_processing/cdf/config/imap_glows_global_cdf_attrs.yaml +0 -5
  9. imap_processing/cdf/config/imap_hi_global_cdf_attrs.yaml +10 -11
  10. imap_processing/cdf/config/imap_hi_variable_attrs.yaml +17 -19
  11. imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +27 -14
  12. imap_processing/cdf/config/imap_hit_l1a_variable_attrs.yaml +106 -116
  13. imap_processing/cdf/config/imap_hit_l1b_variable_attrs.yaml +120 -145
  14. imap_processing/cdf/config/imap_hit_l2_variable_attrs.yaml +14 -0
  15. imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +25 -9
  16. imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +6 -4
  17. imap_processing/cdf/config/imap_idex_l1b_variable_attrs.yaml +3 -3
  18. imap_processing/cdf/config/imap_lo_global_cdf_attrs.yaml +0 -12
  19. imap_processing/cdf/config/imap_lo_l1a_variable_attrs.yaml +1 -1
  20. imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +23 -20
  21. imap_processing/cdf/config/imap_mag_l1a_variable_attrs.yaml +361 -0
  22. imap_processing/cdf/config/imap_mag_l1b_variable_attrs.yaml +160 -0
  23. imap_processing/cdf/config/imap_mag_l1c_variable_attrs.yaml +160 -0
  24. imap_processing/cdf/config/imap_spacecraft_global_cdf_attrs.yaml +18 -0
  25. imap_processing/cdf/config/imap_spacecraft_variable_attrs.yaml +40 -0
  26. imap_processing/cdf/config/imap_swapi_global_cdf_attrs.yaml +1 -5
  27. imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +22 -0
  28. imap_processing/cdf/config/imap_swe_global_cdf_attrs.yaml +12 -4
  29. imap_processing/cdf/config/imap_swe_l1a_variable_attrs.yaml +16 -2
  30. imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +64 -52
  31. imap_processing/cdf/config/imap_swe_l2_variable_attrs.yaml +71 -47
  32. imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +180 -19
  33. imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +5045 -41
  34. imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +80 -17
  35. imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +32 -57
  36. imap_processing/cdf/utils.py +52 -38
  37. imap_processing/cli.py +477 -233
  38. imap_processing/codice/codice_l1a.py +466 -131
  39. imap_processing/codice/codice_l1b.py +51 -152
  40. imap_processing/codice/constants.py +1360 -569
  41. imap_processing/codice/decompress.py +2 -6
  42. imap_processing/ena_maps/ena_maps.py +1103 -146
  43. imap_processing/ena_maps/utils/coordinates.py +19 -0
  44. imap_processing/ena_maps/utils/map_utils.py +14 -17
  45. imap_processing/ena_maps/utils/spatial_utils.py +55 -52
  46. imap_processing/glows/l1a/glows_l1a.py +28 -99
  47. imap_processing/glows/l1a/glows_l1a_data.py +2 -2
  48. imap_processing/glows/l1b/glows_l1b.py +1 -4
  49. imap_processing/glows/l1b/glows_l1b_data.py +1 -3
  50. imap_processing/glows/l2/glows_l2.py +2 -5
  51. imap_processing/hi/l1a/hi_l1a.py +54 -29
  52. imap_processing/hi/l1a/histogram.py +0 -1
  53. imap_processing/hi/l1a/science_direct_event.py +6 -8
  54. imap_processing/hi/l1b/hi_l1b.py +111 -82
  55. imap_processing/hi/l1c/hi_l1c.py +416 -32
  56. imap_processing/hi/utils.py +58 -12
  57. imap_processing/hit/ancillary/imap_hit_l1b-to-l2-sector-dt0-factors_20250219_v002.csv +81 -0
  58. imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt0-factors_20250219_v002.csv +205 -0
  59. imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt1-factors_20250219_v002.csv +205 -0
  60. imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt2-factors_20250219_v002.csv +205 -0
  61. imap_processing/hit/ancillary/imap_hit_l1b-to-l2-standard-dt3-factors_20250219_v002.csv +205 -0
  62. imap_processing/hit/ancillary/imap_hit_l1b-to-l2-summed-dt0-factors_20250219_v002.csv +68 -0
  63. imap_processing/hit/hit_utils.py +235 -5
  64. imap_processing/hit/l0/constants.py +20 -11
  65. imap_processing/hit/l0/decom_hit.py +21 -5
  66. imap_processing/hit/l1a/hit_l1a.py +71 -75
  67. imap_processing/hit/l1b/constants.py +321 -0
  68. imap_processing/hit/l1b/hit_l1b.py +377 -67
  69. imap_processing/hit/l2/constants.py +318 -0
  70. imap_processing/hit/l2/hit_l2.py +723 -0
  71. imap_processing/hit/packet_definitions/hit_packet_definitions.xml +1323 -71
  72. imap_processing/ialirt/l0/mag_l0_ialirt_data.py +155 -0
  73. imap_processing/ialirt/l0/parse_mag.py +374 -0
  74. imap_processing/ialirt/l0/process_swapi.py +69 -0
  75. imap_processing/ialirt/l0/process_swe.py +548 -0
  76. imap_processing/ialirt/packet_definitions/ialirt.xml +216 -208
  77. imap_processing/ialirt/packet_definitions/ialirt_codicehi.xml +1 -1
  78. imap_processing/ialirt/packet_definitions/ialirt_codicelo.xml +1 -1
  79. imap_processing/ialirt/packet_definitions/ialirt_mag.xml +115 -0
  80. imap_processing/ialirt/packet_definitions/ialirt_swapi.xml +14 -14
  81. imap_processing/ialirt/utils/grouping.py +114 -0
  82. imap_processing/ialirt/utils/time.py +29 -0
  83. imap_processing/idex/atomic_masses.csv +22 -0
  84. imap_processing/idex/decode.py +2 -2
  85. imap_processing/idex/idex_constants.py +33 -0
  86. imap_processing/idex/idex_l0.py +22 -8
  87. imap_processing/idex/idex_l1a.py +81 -51
  88. imap_processing/idex/idex_l1b.py +13 -39
  89. imap_processing/idex/idex_l2a.py +823 -0
  90. imap_processing/idex/idex_l2b.py +120 -0
  91. imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +11 -11
  92. imap_processing/idex/packet_definitions/idex_housekeeping_packet_definition.xml +9130 -0
  93. imap_processing/lo/l0/lo_science.py +7 -2
  94. imap_processing/lo/l1a/lo_l1a.py +1 -5
  95. imap_processing/lo/l1b/lo_l1b.py +702 -29
  96. imap_processing/lo/l1b/tof_conversions.py +11 -0
  97. imap_processing/lo/l1c/lo_l1c.py +1 -4
  98. imap_processing/mag/constants.py +51 -0
  99. imap_processing/mag/imap_mag_sdc_configuration_v001.py +8 -0
  100. imap_processing/mag/l0/decom_mag.py +10 -3
  101. imap_processing/mag/l1a/mag_l1a.py +23 -19
  102. imap_processing/mag/l1a/mag_l1a_data.py +35 -10
  103. imap_processing/mag/l1b/mag_l1b.py +259 -50
  104. imap_processing/mag/l1c/interpolation_methods.py +388 -0
  105. imap_processing/mag/l1c/mag_l1c.py +621 -17
  106. imap_processing/mag/l2/mag_l2.py +140 -0
  107. imap_processing/mag/l2/mag_l2_data.py +288 -0
  108. imap_processing/quality_flags.py +1 -0
  109. imap_processing/spacecraft/packet_definitions/scid_x252.xml +538 -0
  110. imap_processing/spacecraft/quaternions.py +121 -0
  111. imap_processing/spice/geometry.py +19 -22
  112. imap_processing/spice/kernels.py +0 -276
  113. imap_processing/spice/pointing_frame.py +257 -0
  114. imap_processing/spice/repoint.py +149 -0
  115. imap_processing/spice/spin.py +38 -33
  116. imap_processing/spice/time.py +24 -0
  117. imap_processing/swapi/l1/swapi_l1.py +20 -12
  118. imap_processing/swapi/l2/swapi_l2.py +116 -5
  119. imap_processing/swapi/swapi_utils.py +32 -0
  120. imap_processing/swe/l1a/swe_l1a.py +44 -12
  121. imap_processing/swe/l1a/swe_science.py +13 -13
  122. imap_processing/swe/l1b/swe_l1b.py +898 -23
  123. imap_processing/swe/l2/swe_l2.py +75 -136
  124. imap_processing/swe/packet_definitions/swe_packet_definition.xml +1121 -1
  125. imap_processing/swe/utils/swe_constants.py +64 -0
  126. imap_processing/swe/utils/swe_utils.py +85 -28
  127. imap_processing/tests/ccsds/test_data/expected_output.xml +40 -1
  128. imap_processing/tests/ccsds/test_excel_to_xtce.py +24 -21
  129. imap_processing/tests/cdf/test_data/imap_instrument2_global_cdf_attrs.yaml +0 -2
  130. imap_processing/tests/cdf/test_utils.py +14 -16
  131. imap_processing/tests/codice/conftest.py +44 -33
  132. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-counters-aggregated_20241110193700_v0.0.0.cdf +0 -0
  133. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-counters-singles_20241110193700_v0.0.0.cdf +0 -0
  134. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-ialirt_20241110193700_v0.0.0.cdf +0 -0
  135. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-omni_20241110193700_v0.0.0.cdf +0 -0
  136. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-pha_20241110193700_v0.0.0.cdf +0 -0
  137. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-priorities_20241110193700_v0.0.0.cdf +0 -0
  138. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-sectored_20241110193700_v0.0.0.cdf +0 -0
  139. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-counters-aggregated_20241110193700_v0.0.0.cdf +0 -0
  140. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-counters-singles_20241110193700_v0.0.0.cdf +0 -0
  141. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf +0 -0
  142. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-nsw-angular_20241110193700_v0.0.0.cdf +0 -0
  143. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-nsw-priority_20241110193700_v0.0.0.cdf +0 -0
  144. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-nsw-species_20241110193700_v0.0.0.cdf +0 -0
  145. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-pha_20241110193700_v0.0.0.cdf +0 -0
  146. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-sw-angular_20241110193700_v0.0.0.cdf +0 -0
  147. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-sw-priority_20241110193700_v0.0.0.cdf +0 -0
  148. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-sw-species_20241110193700_v0.0.0.cdf +0 -0
  149. imap_processing/tests/codice/test_codice_l1a.py +126 -53
  150. imap_processing/tests/codice/test_codice_l1b.py +6 -7
  151. imap_processing/tests/codice/test_decompress.py +4 -4
  152. imap_processing/tests/conftest.py +239 -27
  153. imap_processing/tests/ena_maps/conftest.py +51 -0
  154. imap_processing/tests/ena_maps/test_ena_maps.py +1068 -110
  155. imap_processing/tests/ena_maps/test_map_utils.py +66 -43
  156. imap_processing/tests/ena_maps/test_spatial_utils.py +17 -21
  157. imap_processing/tests/glows/conftest.py +10 -14
  158. imap_processing/tests/glows/test_glows_decom.py +4 -4
  159. imap_processing/tests/glows/test_glows_l1a_cdf.py +6 -27
  160. imap_processing/tests/glows/test_glows_l1a_data.py +6 -8
  161. imap_processing/tests/glows/test_glows_l1b.py +11 -11
  162. imap_processing/tests/glows/test_glows_l1b_data.py +5 -5
  163. imap_processing/tests/glows/test_glows_l2.py +2 -8
  164. imap_processing/tests/hi/conftest.py +1 -1
  165. imap_processing/tests/hi/data/l0/H45_diag_fee_20250208.bin +0 -0
  166. imap_processing/tests/hi/data/l0/H45_diag_fee_20250208_verify.csv +205 -0
  167. imap_processing/tests/hi/test_hi_l1b.py +22 -27
  168. imap_processing/tests/hi/test_hi_l1c.py +249 -18
  169. imap_processing/tests/hi/test_l1a.py +35 -7
  170. imap_processing/tests/hi/test_science_direct_event.py +3 -3
  171. imap_processing/tests/hi/test_utils.py +24 -2
  172. imap_processing/tests/hit/helpers/l1_validation.py +74 -73
  173. imap_processing/tests/hit/test_data/hskp_sample.ccsds +0 -0
  174. imap_processing/tests/hit/test_data/imap_hit_l0_raw_20100105_v001.pkts +0 -0
  175. imap_processing/tests/hit/test_decom_hit.py +5 -1
  176. imap_processing/tests/hit/test_hit_l1a.py +32 -36
  177. imap_processing/tests/hit/test_hit_l1b.py +300 -81
  178. imap_processing/tests/hit/test_hit_l2.py +716 -0
  179. imap_processing/tests/hit/test_hit_utils.py +184 -7
  180. imap_processing/tests/hit/validation_data/hit_l1b_standard_sample2_nsrl_v4_3decimals.csv +62 -62
  181. imap_processing/tests/hit/validation_data/hskp_sample_eu_3_6_2025.csv +89 -0
  182. imap_processing/tests/hit/validation_data/hskp_sample_raw.csv +89 -88
  183. imap_processing/tests/hit/validation_data/sci_sample_raw.csv +1 -1
  184. imap_processing/tests/ialirt/data/l0/461971383-404.bin +0 -0
  185. imap_processing/tests/ialirt/data/l0/461971384-405.bin +0 -0
  186. imap_processing/tests/ialirt/data/l0/461971385-406.bin +0 -0
  187. imap_processing/tests/ialirt/data/l0/461971386-407.bin +0 -0
  188. imap_processing/tests/ialirt/data/l0/461971387-408.bin +0 -0
  189. imap_processing/tests/ialirt/data/l0/461971388-409.bin +0 -0
  190. imap_processing/tests/ialirt/data/l0/461971389-410.bin +0 -0
  191. imap_processing/tests/ialirt/data/l0/461971390-411.bin +0 -0
  192. imap_processing/tests/ialirt/data/l0/461971391-412.bin +0 -0
  193. imap_processing/tests/ialirt/data/l0/sample_decoded_i-alirt_data.csv +383 -0
  194. imap_processing/tests/ialirt/unit/test_decom_ialirt.py +16 -81
  195. imap_processing/tests/ialirt/unit/test_grouping.py +81 -0
  196. imap_processing/tests/ialirt/unit/test_parse_mag.py +223 -0
  197. imap_processing/tests/ialirt/unit/test_process_codicehi.py +3 -3
  198. imap_processing/tests/ialirt/unit/test_process_codicelo.py +3 -10
  199. imap_processing/tests/ialirt/unit/test_process_ephemeris.py +4 -4
  200. imap_processing/tests/ialirt/unit/test_process_hit.py +3 -3
  201. imap_processing/tests/ialirt/unit/test_process_swapi.py +24 -16
  202. imap_processing/tests/ialirt/unit/test_process_swe.py +319 -6
  203. imap_processing/tests/ialirt/unit/test_time.py +16 -0
  204. imap_processing/tests/idex/conftest.py +127 -6
  205. imap_processing/tests/idex/test_data/imap_idex_l0_raw_20231218_v001.pkts +0 -0
  206. imap_processing/tests/idex/test_data/imap_idex_l0_raw_20241206_v001.pkts +0 -0
  207. imap_processing/tests/idex/test_data/imap_idex_l0_raw_20250108_v001.pkts +0 -0
  208. imap_processing/tests/idex/test_data/impact_14_tof_high_data.txt +4508 -4508
  209. imap_processing/tests/idex/test_idex_l0.py +33 -11
  210. imap_processing/tests/idex/test_idex_l1a.py +92 -21
  211. imap_processing/tests/idex/test_idex_l1b.py +106 -27
  212. imap_processing/tests/idex/test_idex_l2a.py +399 -0
  213. imap_processing/tests/idex/test_idex_l2b.py +93 -0
  214. imap_processing/tests/lo/test_cdfs/imap_lo_l1a_de_20241022_v002.cdf +0 -0
  215. imap_processing/tests/lo/test_cdfs/imap_lo_l1a_spin_20241022_v002.cdf +0 -0
  216. imap_processing/tests/lo/test_lo_l1a.py +3 -3
  217. imap_processing/tests/lo/test_lo_l1b.py +515 -6
  218. imap_processing/tests/lo/test_lo_l1c.py +1 -1
  219. imap_processing/tests/lo/test_lo_science.py +7 -7
  220. imap_processing/tests/lo/test_star_sensor.py +1 -1
  221. imap_processing/tests/mag/conftest.py +120 -2
  222. imap_processing/tests/mag/test_mag_decom.py +5 -4
  223. imap_processing/tests/mag/test_mag_l1a.py +51 -7
  224. imap_processing/tests/mag/test_mag_l1b.py +40 -59
  225. imap_processing/tests/mag/test_mag_l1c.py +354 -19
  226. imap_processing/tests/mag/test_mag_l2.py +130 -0
  227. imap_processing/tests/mag/test_mag_validation.py +247 -26
  228. imap_processing/tests/mag/validation/L1b/T009/MAGScience-normal-(2,2)-8s-20250204-16h39.csv +17 -0
  229. imap_processing/tests/mag/validation/L1b/T009/mag-l1a-l1b-t009-magi-out.csv +16 -16
  230. imap_processing/tests/mag/validation/L1b/T009/mag-l1a-l1b-t009-mago-out.csv +16 -16
  231. imap_processing/tests/mag/validation/L1b/T010/MAGScience-normal-(2,2)-8s-20250206-12h05.csv +17 -0
  232. imap_processing/tests/mag/validation/L1b/T011/MAGScience-normal-(2,2)-8s-20250204-16h08.csv +17 -0
  233. imap_processing/tests/mag/validation/L1b/T011/mag-l1a-l1b-t011-magi-out.csv +16 -16
  234. imap_processing/tests/mag/validation/L1b/T011/mag-l1a-l1b-t011-mago-out.csv +16 -16
  235. imap_processing/tests/mag/validation/L1b/T012/MAGScience-normal-(2,2)-8s-20250204-16h08.csv +17 -0
  236. imap_processing/tests/mag/validation/L1b/T012/data.bin +0 -0
  237. imap_processing/tests/mag/validation/L1b/T012/field_like_all_ranges.txt +19200 -0
  238. imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-cal.cdf +0 -0
  239. imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-in.csv +17 -0
  240. imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-magi-out.csv +17 -0
  241. imap_processing/tests/mag/validation/L1b/T012/mag-l1a-l1b-t012-mago-out.csv +17 -0
  242. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-in.csv +1217 -0
  243. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-out.csv +1857 -0
  244. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-in.csv +1217 -0
  245. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-out.csv +1857 -0
  246. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-in.csv +1217 -0
  247. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-out.csv +1793 -0
  248. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-in.csv +1217 -0
  249. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-out.csv +1793 -0
  250. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-burst-in.csv +2561 -0
  251. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-in.csv +961 -0
  252. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-out.csv +1539 -0
  253. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-in.csv +1921 -0
  254. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-out.csv +2499 -0
  255. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-in.csv +865 -0
  256. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-out.csv +1196 -0
  257. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-in.csv +1729 -0
  258. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-out.csv +3053 -0
  259. imap_processing/tests/mag/validation/L2/imap_mag_l1b_norm-mago_20251017_v002.cdf +0 -0
  260. imap_processing/tests/mag/validation/calibration/imap_mag_l1b-calibration_20240229_v001.cdf +0 -0
  261. imap_processing/tests/mag/validation/calibration/imap_mag_l2-calibration-matrices_20251017_v004.cdf +0 -0
  262. imap_processing/tests/mag/validation/calibration/imap_mag_l2-offsets-norm_20251017_20251017_v001.cdf +0 -0
  263. imap_processing/tests/spacecraft/data/SSR_2024_190_20_08_12_0483851794_2_DA_apid0594_1packet.pkts +0 -0
  264. imap_processing/tests/spacecraft/test_quaternions.py +71 -0
  265. imap_processing/tests/spice/test_data/fake_repoint_data.csv +5 -0
  266. imap_processing/tests/spice/test_data/fake_spin_data.csv +11 -11
  267. imap_processing/tests/spice/test_geometry.py +9 -12
  268. imap_processing/tests/spice/test_kernels.py +1 -200
  269. imap_processing/tests/spice/test_pointing_frame.py +185 -0
  270. imap_processing/tests/spice/test_repoint.py +121 -0
  271. imap_processing/tests/spice/test_spin.py +50 -9
  272. imap_processing/tests/spice/test_time.py +14 -0
  273. imap_processing/tests/swapi/lut/imap_swapi_esa-unit-conversion_20250211_v000.csv +73 -0
  274. imap_processing/tests/swapi/lut/imap_swapi_lut-notes_20250211_v000.csv +1025 -0
  275. imap_processing/tests/swapi/test_swapi_l1.py +13 -11
  276. imap_processing/tests/swapi/test_swapi_l2.py +180 -8
  277. imap_processing/tests/swe/l0_data/2024051010_SWE_HK_packet.bin +0 -0
  278. imap_processing/tests/swe/l0_data/2024051011_SWE_CEM_RAW_packet.bin +0 -0
  279. imap_processing/tests/swe/l0_validation_data/idle_export_eu.SWE_APP_HK_20240510_092742.csv +49 -0
  280. imap_processing/tests/swe/l0_validation_data/idle_export_eu.SWE_CEM_RAW_20240510_092742.csv +593 -0
  281. imap_processing/tests/swe/lut/checker-board-indices.csv +24 -0
  282. imap_processing/tests/swe/lut/imap_swe_esa-lut_20250301_v000.csv +385 -0
  283. imap_processing/tests/swe/lut/imap_swe_l1b-in-flight-cal_20240510_20260716_v000.csv +3 -0
  284. imap_processing/tests/swe/test_swe_l1a.py +20 -2
  285. imap_processing/tests/swe/test_swe_l1a_cem_raw.py +52 -0
  286. imap_processing/tests/swe/test_swe_l1a_hk.py +68 -0
  287. imap_processing/tests/swe/test_swe_l1a_science.py +3 -3
  288. imap_processing/tests/swe/test_swe_l1b.py +162 -24
  289. imap_processing/tests/swe/test_swe_l2.py +153 -91
  290. imap_processing/tests/test_cli.py +171 -88
  291. imap_processing/tests/test_utils.py +140 -17
  292. imap_processing/tests/ultra/data/l0/FM45_UltraFM45_Functional_2024-01-22T0105_20240122T010548.CCSDS +0 -0
  293. imap_processing/tests/ultra/data/l0/ultra45_raw_sc_ultraimgrates_20220530_00.csv +164 -0
  294. imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_ultrarawimg_withFSWcalcs_FM45_40P_Phi28p5_BeamCal_LinearScan_phi2850_theta-000_20240207T102740.csv +3243 -3243
  295. imap_processing/tests/ultra/data/mock_data.py +369 -0
  296. imap_processing/tests/ultra/unit/conftest.py +115 -89
  297. imap_processing/tests/ultra/unit/test_badtimes.py +4 -4
  298. imap_processing/tests/ultra/unit/test_cullingmask.py +8 -6
  299. imap_processing/tests/ultra/unit/test_de.py +14 -13
  300. imap_processing/tests/ultra/unit/test_decom_apid_880.py +27 -76
  301. imap_processing/tests/ultra/unit/test_decom_apid_881.py +54 -11
  302. imap_processing/tests/ultra/unit/test_decom_apid_883.py +12 -10
  303. imap_processing/tests/ultra/unit/test_decom_apid_896.py +202 -55
  304. imap_processing/tests/ultra/unit/test_lookup_utils.py +23 -1
  305. imap_processing/tests/ultra/unit/test_spacecraft_pset.py +77 -0
  306. imap_processing/tests/ultra/unit/test_ultra_l1a.py +98 -305
  307. imap_processing/tests/ultra/unit/test_ultra_l1b.py +60 -14
  308. imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +2 -2
  309. imap_processing/tests/ultra/unit/test_ultra_l1b_culling.py +26 -27
  310. imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +239 -70
  311. imap_processing/tests/ultra/unit/test_ultra_l1c.py +5 -5
  312. imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +114 -83
  313. imap_processing/tests/ultra/unit/test_ultra_l2.py +230 -0
  314. imap_processing/ultra/constants.py +1 -1
  315. imap_processing/ultra/l0/decom_tools.py +27 -39
  316. imap_processing/ultra/l0/decom_ultra.py +168 -204
  317. imap_processing/ultra/l0/ultra_utils.py +152 -136
  318. imap_processing/ultra/l1a/ultra_l1a.py +55 -271
  319. imap_processing/ultra/l1b/badtimes.py +1 -4
  320. imap_processing/ultra/l1b/cullingmask.py +2 -6
  321. imap_processing/ultra/l1b/de.py +116 -57
  322. imap_processing/ultra/l1b/extendedspin.py +20 -18
  323. imap_processing/ultra/l1b/lookup_utils.py +72 -9
  324. imap_processing/ultra/l1b/ultra_l1b.py +36 -16
  325. imap_processing/ultra/l1b/ultra_l1b_culling.py +66 -30
  326. imap_processing/ultra/l1b/ultra_l1b_extended.py +297 -94
  327. imap_processing/ultra/l1c/histogram.py +2 -6
  328. imap_processing/ultra/l1c/spacecraft_pset.py +84 -0
  329. imap_processing/ultra/l1c/ultra_l1c.py +8 -9
  330. imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +206 -108
  331. imap_processing/ultra/l2/ultra_l2.py +299 -0
  332. imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_LeftSlit.csv +526 -0
  333. imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_RightSlit.csv +526 -0
  334. imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_LeftSlit.csv +526 -0
  335. imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_RightSlit.csv +526 -0
  336. imap_processing/ultra/lookup_tables/FM45_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -2
  337. imap_processing/ultra/lookup_tables/FM90_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -0
  338. imap_processing/ultra/packet_definitions/README.md +38 -0
  339. imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +15302 -482
  340. imap_processing/ultra/utils/ultra_l1_utils.py +31 -12
  341. imap_processing/utils.py +69 -29
  342. {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/METADATA +10 -6
  343. imap_processing-0.13.0.dist-info/RECORD +578 -0
  344. imap_processing/cdf/config/imap_mag_l1_variable_attrs.yaml +0 -237
  345. imap_processing/hi/l1a/housekeeping.py +0 -27
  346. imap_processing/hi/l1b/hi_eng_unit_convert_table.csv +0 -154
  347. imap_processing/swe/l1b/swe_esa_lookup_table.csv +0 -1441
  348. imap_processing/swe/l1b/swe_l1b_science.py +0 -652
  349. imap_processing/tests/codice/data/imap_codice_l1a_hi-counters-aggregated_20240429_v001.cdf +0 -0
  350. imap_processing/tests/codice/data/imap_codice_l1a_hi-counters-singles_20240429_v001.cdf +0 -0
  351. imap_processing/tests/codice/data/imap_codice_l1a_hi-omni_20240429_v001.cdf +0 -0
  352. imap_processing/tests/codice/data/imap_codice_l1a_hi-sectored_20240429_v001.cdf +0 -0
  353. imap_processing/tests/codice/data/imap_codice_l1a_hskp_20100101_v001.cdf +0 -0
  354. imap_processing/tests/codice/data/imap_codice_l1a_lo-counters-aggregated_20240429_v001.cdf +0 -0
  355. imap_processing/tests/codice/data/imap_codice_l1a_lo-counters-singles_20240429_v001.cdf +0 -0
  356. imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-angular_20240429_v001.cdf +0 -0
  357. imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-priority_20240429_v001.cdf +0 -0
  358. imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-species_20240429_v001.cdf +0 -0
  359. imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-angular_20240429_v001.cdf +0 -0
  360. imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-priority_20240429_v001.cdf +0 -0
  361. imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-species_20240429_v001.cdf +0 -0
  362. imap_processing/tests/codice/data/imap_codice_l1b_hi-counters-aggregated_20240429_v001.cdf +0 -0
  363. imap_processing/tests/codice/data/imap_codice_l1b_hi-counters-singles_20240429_v001.cdf +0 -0
  364. imap_processing/tests/codice/data/imap_codice_l1b_hi-omni_20240429_v001.cdf +0 -0
  365. imap_processing/tests/codice/data/imap_codice_l1b_hi-sectored_20240429_v001.cdf +0 -0
  366. imap_processing/tests/codice/data/imap_codice_l1b_hskp_20100101_v001.cdf +0 -0
  367. imap_processing/tests/codice/data/imap_codice_l1b_lo-counters-aggregated_20240429_v001.cdf +0 -0
  368. imap_processing/tests/codice/data/imap_codice_l1b_lo-counters-singles_20240429_v001.cdf +0 -0
  369. imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-angular_20240429_v001.cdf +0 -0
  370. imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-priority_20240429_v001.cdf +0 -0
  371. imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-species_20240429_v001.cdf +0 -0
  372. imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-angular_20240429_v001.cdf +0 -0
  373. imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-priority_20240429_v001.cdf +0 -0
  374. imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-species_20240429_v001.cdf +0 -0
  375. imap_processing/tests/hi/data/l1/imap_hi_l1b_45sensor-de_20250415_v999.cdf +0 -0
  376. imap_processing/tests/hit/PREFLIGHT_raw_record_2023_256_15_59_04_apid1251.pkts +0 -0
  377. imap_processing/tests/hit/PREFLIGHT_raw_record_2023_256_15_59_04_apid1252.pkts +0 -0
  378. imap_processing/tests/hit/validation_data/hskp_sample_eu.csv +0 -89
  379. imap_processing/tests/hit/validation_data/sci_sample_raw1.csv +0 -29
  380. imap_processing/tests/idex/test_data/imap_idex_l0_raw_20231214_v001.pkts +0 -0
  381. imap_processing/tests/lo/test_cdfs/imap_lo_l1a_de_20100101_v001.cdf +0 -0
  382. imap_processing/tests/lo/test_cdfs/imap_lo_l1a_spin_20100101_v001.cdf +0 -0
  383. imap_processing/tests/swe/test_swe_l1b_science.py +0 -84
  384. imap_processing/tests/ultra/test_data/mock_data.py +0 -161
  385. imap_processing/ultra/l1c/pset.py +0 -40
  386. imap_processing/ultra/lookup_tables/dps_sensitivity45.cdf +0 -0
  387. imap_processing-0.11.0.dist-info/RECORD +0 -488
  388. /imap_processing/idex/packet_definitions/{idex_packet_definition.xml → idex_science_packet_definition.xml} +0 -0
  389. /imap_processing/tests/ialirt/{test_data → data}/l0/20240827095047_SWE_IALIRT_packet.bin +0 -0
  390. /imap_processing/tests/ialirt/{test_data → data}/l0/BinLog CCSDS_FRAG_TLM_20240826_152323Z_IALIRT_data_for_SDC.bin +0 -0
  391. /imap_processing/tests/ialirt/{test_data → data}/l0/IALiRT Raw Packet Telemetry.txt +0 -0
  392. /imap_processing/tests/ialirt/{test_data → data}/l0/apid01152.tlm +0 -0
  393. /imap_processing/tests/ialirt/{test_data → data}/l0/eu_SWP_IAL_20240826_152033.csv +0 -0
  394. /imap_processing/tests/ialirt/{test_data → data}/l0/hi_fsw_view_1_ccsds.bin +0 -0
  395. /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.ccsds +0 -0
  396. /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.csv +0 -0
  397. /imap_processing/tests/ialirt/{test_data → data}/l0/idle_export_eu.SWE_IALIRT_20240827_093852.csv +0 -0
  398. /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_hi-ialirt_20240523200000_v0.0.0.cdf +0 -0
  399. /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf +0 -0
  400. /imap_processing/{mag/l1b → tests/spacecraft}/__init__.py +0 -0
  401. /imap_processing/{swe/l1b/engineering_unit_convert_table.csv → tests/swe/lut/imap_swe_eu-conversion_20240510_v000.csv} +0 -0
  402. /imap_processing/tests/ultra/{test_data → data}/l0/FM45_40P_Phi28p5_BeamCal_LinearScan_phi28.50_theta-0.00_20240207T102740.CCSDS +0 -0
  403. /imap_processing/tests/ultra/{test_data → data}/l0/FM45_7P_Phi0.0_BeamCal_LinearScan_phi0.04_theta-0.01_20230821T121304.CCSDS +0 -0
  404. /imap_processing/tests/ultra/{test_data → data}/l0/FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.CCSDS +0 -0
  405. /imap_processing/tests/ultra/{test_data → data}/l0/Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.CCSDS +0 -0
  406. /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_auxdata_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +0 -0
  407. /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_enaphxtofhangimg_FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.csv +0 -0
  408. /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_ultraimgrates_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +0 -0
  409. /imap_processing/tests/ultra/{test_data → data}/l0/ultra45_raw_sc_ultrarawimgevent_FM45_7P_Phi00_BeamCal_LinearScan_phi004_theta-001_20230821T121304.csv +0 -0
  410. /imap_processing/tests/ultra/{test_data → data}/l1/dps_exposure_helio_45_E1.cdf +0 -0
  411. /imap_processing/tests/ultra/{test_data → data}/l1/dps_exposure_helio_45_E12.cdf +0 -0
  412. /imap_processing/tests/ultra/{test_data → data}/l1/dps_exposure_helio_45_E24.cdf +0 -0
  413. {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/LICENSE +0 -0
  414. {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/WHEEL +0 -0
  415. {imap_processing-0.11.0.dist-info → imap_processing-0.13.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,24 @@
1
+ 0,371,12,383,24,395,36,407,48,419,60,431,72,443,84,455,96,467,108,479,120,491,132,503,144,515,156,527,168,539
2
+ 180,551,192,563,204,575,216,587,228,599,240,611,252,623,264,635,276,647,288,659,300,671,312,683,324,695,336,707,348,719
3
+ 360,11,372,23,384,35,396,47,408,59,420,71,432,83,444,95,456,107,468,119,480,131,492,143,504,155,516,167,528,179
4
+ 540,191,552,203,564,215,576,227,588,239,600,251,612,263,624,275,636,287,648,299,660,311,672,323,684,335,696,347,708,359
5
+ 1,370,13,382,25,394,37,406,49,418,61,430,73,442,85,454,97,466,109,478,121,490,133,502,145,514,157,526,169,538
6
+ 181,550,193,562,205,574,217,586,229,598,241,610,253,622,265,634,277,646,289,658,301,670,313,682,325,694,337,706,349,718
7
+ 361,10,373,22,385,34,397,46,409,58,421,70,433,82,445,94,457,106,469,118,481,130,493,142,505,154,517,166,529,178
8
+ 541,190,553,202,565,214,577,226,589,238,601,250,613,262,625,274,637,286,649,298,661,310,673,322,685,334,697,346,709,358
9
+ 2,369,14,381,26,393,38,405,50,417,62,429,74,441,86,453,98,465,110,477,122,489,134,501,146,513,158,525,170,537
10
+ 182,549,194,561,206,573,218,585,230,597,242,609,254,621,266,633,278,645,290,657,302,669,314,681,326,693,338,705,350,717
11
+ 362,9,374,21,386,33,398,45,410,57,422,69,434,81,446,93,458,105,470,117,482,129,494,141,506,153,518,165,530,177
12
+ 542,189,554,201,566,213,578,225,590,237,602,249,614,261,626,273,638,285,650,297,662,309,674,321,686,333,698,345,710,357
13
+ 3,368,15,380,27,392,39,404,51,416,63,428,75,440,87,452,99,464,111,476,123,488,135,500,147,512,159,524,171,536
14
+ 183,548,195,560,207,572,219,584,231,596,243,608,255,620,267,632,279,644,291,656,303,668,315,680,327,692,339,704,351,716
15
+ 363,8,375,20,387,32,399,44,411,56,423,68,435,80,447,92,459,104,471,116,483,128,495,140,507,152,519,164,531,176
16
+ 543,188,555,200,567,212,579,224,591,236,603,248,615,260,627,272,639,284,651,296,663,308,675,320,687,332,699,344,711,356
17
+ 4,367,16,379,28,391,40,403,52,415,64,427,76,439,88,451,100,463,112,475,124,487,136,499,148,511,160,523,172,535
18
+ 184,547,196,559,208,571,220,583,232,595,244,607,256,619,268,631,280,643,292,655,304,667,316,679,328,691,340,703,352,715
19
+ 364,7,376,19,388,31,400,43,412,55,424,67,436,79,448,91,460,103,472,115,484,127,496,139,508,151,520,163,532,175
20
+ 544,187,556,199,568,211,580,223,592,235,604,247,616,259,628,271,640,283,652,295,664,307,676,319,688,331,700,343,712,355
21
+ 5,366,17,378,29,390,41,402,53,414,65,426,77,438,89,450,101,462,113,474,125,486,137,498,149,510,161,522,173,534
22
+ 185,546,197,558,209,570,221,582,233,594,245,606,257,618,269,630,281,642,293,654,305,666,317,678,329,690,341,702,353,714
23
+ 365,6,377,18,389,30,401,42,413,54,425,66,437,78,449,90,461,102,473,114,485,126,497,138,509,150,521,162,533,174
24
+ 545,186,557,198,569,210,581,222,593,234,605,246,617,258,629,270,641,282,653,294,665,306,677,318,689,330,701,342,713,354
@@ -0,0 +1,385 @@
1
+ table_idx,esa_step,esa_v,v_index,ialirt
2
+ 0,0,0.56,1,0
3
+ 0,1,2.1,5,0
4
+ 0,2,7.85,9,0
5
+ 0,3,29.39,13,1
6
+ 0,4,110.03,17,1
7
+ 0,5,411.93,21,0
8
+ 0,6,797.03,23,0
9
+ 0,7,212.89,19,1
10
+ 0,8,56.87,15,1
11
+ 0,9,15.19,11,0
12
+ 0,10,4.06,7,0
13
+ 0,11,1.08,3,0
14
+ 0,180,0.78,2,0
15
+ 0,181,2.92,6,0
16
+ 0,182,10.92,10,0
17
+ 0,183,40.88,14,1
18
+ 0,184,153.05,18,1
19
+ 0,185,572.99,22,0
20
+ 0,186,1108.66,24,0
21
+ 0,187,296.14,20,0
22
+ 0,188,79.1,16,1
23
+ 0,189,21.13,12,1
24
+ 0,190,5.64,8,0
25
+ 0,191,1.51,4,0
26
+ 0,360,1.08,3,0
27
+ 0,361,4.06,7,0
28
+ 0,362,15.19,11,0
29
+ 0,363,56.87,15,1
30
+ 0,364,212.89,19,1
31
+ 0,365,797.03,23,0
32
+ 0,366,411.93,21,0
33
+ 0,367,110.03,17,1
34
+ 0,368,29.39,13,1
35
+ 0,369,7.85,9,0
36
+ 0,370,2.1,5,0
37
+ 0,371,0.56,1,0
38
+ 0,540,1.51,4,0
39
+ 0,541,5.64,8,0
40
+ 0,542,21.13,12,1
41
+ 0,543,79.1,16,1
42
+ 0,544,296.14,20,0
43
+ 0,545,1108.66,24,0
44
+ 0,546,572.99,22,0
45
+ 0,547,153.05,18,1
46
+ 0,548,40.88,14,1
47
+ 0,549,10.92,10,0
48
+ 0,550,2.92,6,0
49
+ 0,551,0.78,2,0
50
+ 1,0,5.64,8,0
51
+ 1,1,5.64,8,0
52
+ 1,2,5.64,8,0
53
+ 1,3,5.64,8,0
54
+ 1,4,5.64,8,0
55
+ 1,5,5.64,8,0
56
+ 1,6,5.64,8,0
57
+ 1,7,5.64,8,0
58
+ 1,8,5.64,8,0
59
+ 1,9,5.64,8,0
60
+ 1,10,5.64,8,0
61
+ 1,11,5.64,8,0
62
+ 1,180,5.64,8,0
63
+ 1,181,5.64,8,0
64
+ 1,182,5.64,8,0
65
+ 1,183,5.64,8,0
66
+ 1,184,5.64,8,0
67
+ 1,185,5.64,8,0
68
+ 1,186,5.64,8,0
69
+ 1,187,5.64,8,0
70
+ 1,188,5.64,8,0
71
+ 1,189,5.64,8,0
72
+ 1,190,5.64,8,0
73
+ 1,191,5.64,8,0
74
+ 1,360,5.64,8,0
75
+ 1,361,5.64,8,0
76
+ 1,362,5.64,8,0
77
+ 1,363,5.64,8,0
78
+ 1,364,5.64,8,0
79
+ 1,365,5.64,8,0
80
+ 1,366,5.64,8,0
81
+ 1,367,5.64,8,0
82
+ 1,368,5.64,8,0
83
+ 1,369,5.64,8,0
84
+ 1,370,5.64,8,0
85
+ 1,371,5.64,8,0
86
+ 1,540,5.64,8,0
87
+ 1,541,5.64,8,0
88
+ 1,542,5.64,8,0
89
+ 1,543,5.64,8,0
90
+ 1,544,5.64,8,0
91
+ 1,545,5.64,8,0
92
+ 1,546,5.64,8,0
93
+ 1,547,5.64,8,0
94
+ 1,548,5.64,8,0
95
+ 1,549,5.64,8,0
96
+ 1,550,5.64,8,0
97
+ 1,551,5.64,8,0
98
+ 2,0,0.56,1,0
99
+ 2,1,0.78,2,0
100
+ 2,2,1.08,3,0
101
+ 2,3,1.51,4,0
102
+ 2,4,2.1,5,0
103
+ 2,5,2.92,6,0
104
+ 2,6,2.92,6,0
105
+ 2,7,2.1,5,0
106
+ 2,8,1.51,4,0
107
+ 2,9,1.08,3,0
108
+ 2,10,0.78,2,0
109
+ 2,11,0.56,1,0
110
+ 2,180,4.06,7,0
111
+ 2,181,5.64,8,0
112
+ 2,182,7.85,9,0
113
+ 2,183,10.92,10,0
114
+ 2,184,15.19,11,0
115
+ 2,185,21.13,12,0
116
+ 2,186,21.13,12,0
117
+ 2,187,15.19,11,0
118
+ 2,188,10.92,10,0
119
+ 2,189,7.85,9,0
120
+ 2,190,5.64,8,0
121
+ 2,191,4.06,7,0
122
+ 2,360,29.39,13,0
123
+ 2,361,40.88,14,0
124
+ 2,362,56.87,15,0
125
+ 2,363,79.1,16,0
126
+ 2,364,110.03,17,0
127
+ 2,365,153.05,18,0
128
+ 2,366,153.05,18,0
129
+ 2,367,110.03,17,0
130
+ 2,368,79.1,16,0
131
+ 2,369,56.87,15,0
132
+ 2,370,40.88,14,0
133
+ 2,371,29.39,13,0
134
+ 2,540,212.89,19,0
135
+ 2,541,296.14,20,0
136
+ 2,542,411.93,21,0
137
+ 2,543,572.99,22,0
138
+ 2,544,797.03,23,0
139
+ 2,545,1108.66,24,0
140
+ 2,546,1108.66,24,0
141
+ 2,547,797.03,23,0
142
+ 2,548,572.99,22,0
143
+ 2,549,411.93,21,0
144
+ 2,550,296.14,20,0
145
+ 2,551,212.89,19,0
146
+ 3,0,10.92,10,0
147
+ 3,1,21.13,12,0
148
+ 3,2,40.88,14,0
149
+ 3,3,79.1,16,0
150
+ 3,4,153.05,18,0
151
+ 3,5,296.14,20,0
152
+ 3,6,411.93,21,0
153
+ 3,7,212.89,19,0
154
+ 3,8,110.03,17,0
155
+ 3,9,56.87,15,0
156
+ 3,10,29.39,13,0
157
+ 3,11,15.19,11,0
158
+ 3,180,15.19,11,0
159
+ 3,181,29.39,13,0
160
+ 3,182,56.87,15,0
161
+ 3,183,110.03,17,0
162
+ 3,184,212.89,19,0
163
+ 3,185,411.93,21,0
164
+ 3,186,296.14,20,0
165
+ 3,187,153.05,18,0
166
+ 3,188,79.1,16,0
167
+ 3,189,40.88,14,0
168
+ 3,190,21.13,12,0
169
+ 3,191,10.92,10,0
170
+ 3,360,10.92,10,0
171
+ 3,361,21.13,12,0
172
+ 3,362,40.88,14,0
173
+ 3,363,79.1,16,0
174
+ 3,364,153.05,18,0
175
+ 3,365,296.14,20,0
176
+ 3,366,411.93,21,0
177
+ 3,367,212.89,19,0
178
+ 3,368,110.03,17,0
179
+ 3,369,56.87,15,0
180
+ 3,370,29.39,13,0
181
+ 3,371,15.19,11,0
182
+ 3,540,15.19,11,0
183
+ 3,541,29.39,13,0
184
+ 3,542,56.87,15,0
185
+ 3,543,110.03,17,0
186
+ 3,544,212.89,19,0
187
+ 3,545,411.93,21,0
188
+ 3,546,296.14,20,0
189
+ 3,547,153.05,18,0
190
+ 3,548,79.1,16,0
191
+ 3,549,40.88,14,0
192
+ 3,550,21.13,12,0
193
+ 3,551,10.92,10,0
194
+ 4,0,0.56,1,0
195
+ 4,1,1.08,3,0
196
+ 4,2,2.1,5,0
197
+ 4,3,4.06,7,0
198
+ 4,4,7.85,9,0
199
+ 4,5,15.19,11,0
200
+ 4,6,21.13,12,0
201
+ 4,7,10.92,10,0
202
+ 4,8,5.64,8,0
203
+ 4,9,2.92,6,0
204
+ 4,10,1.51,4,0
205
+ 4,11,0.78,2,0
206
+ 4,180,0.78,2,0
207
+ 4,181,1.51,4,0
208
+ 4,182,2.92,6,0
209
+ 4,183,5.64,8,0
210
+ 4,184,10.92,10,0
211
+ 4,185,21.13,12,0
212
+ 4,186,15.19,11,0
213
+ 4,187,7.85,9,0
214
+ 4,188,4.06,7,0
215
+ 4,189,2.1,5,0
216
+ 4,190,1.08,3,0
217
+ 4,191,0.56,1,0
218
+ 4,360,29.39,13,0
219
+ 4,361,56.87,15,0
220
+ 4,362,110.03,17,0
221
+ 4,363,212.89,19,0
222
+ 4,364,411.93,21,0
223
+ 4,365,797.03,23,0
224
+ 4,366,1108.66,24,0
225
+ 4,367,572.99,22,0
226
+ 4,368,296.14,20,0
227
+ 4,369,153.05,18,0
228
+ 4,370,79.1,16,0
229
+ 4,371,40.88,14,0
230
+ 4,540,40.88,14,0
231
+ 4,541,79.1,16,0
232
+ 4,542,153.05,18,0
233
+ 4,543,296.14,20,0
234
+ 4,544,572.99,22,0
235
+ 4,545,1108.66,24,0
236
+ 4,546,797.03,23,0
237
+ 4,547,411.93,21,0
238
+ 4,548,212.89,19,0
239
+ 4,549,110.03,17,0
240
+ 4,550,56.87,15,0
241
+ 4,551,29.39,13,0
242
+ 5,0,0.56,1,0
243
+ 5,1,0.56,1,0
244
+ 5,2,0.56,1,0
245
+ 5,3,0.56,1,0
246
+ 5,4,0.56,1,0
247
+ 5,5,0.56,1,0
248
+ 5,6,0.56,1,0
249
+ 5,7,0.56,1,0
250
+ 5,8,0.56,1,0
251
+ 5,9,0.56,1,0
252
+ 5,10,0.56,1,0
253
+ 5,11,0.56,1,0
254
+ 5,180,0.56,1,0
255
+ 5,181,0.56,1,0
256
+ 5,182,0.56,1,0
257
+ 5,183,0.56,1,0
258
+ 5,184,0.56,1,0
259
+ 5,185,0.56,1,0
260
+ 5,186,0.56,1,0
261
+ 5,187,0.56,1,0
262
+ 5,188,0.56,1,0
263
+ 5,189,0.56,1,0
264
+ 5,190,0.56,1,0
265
+ 5,191,0.56,1,0
266
+ 5,360,0.56,1,0
267
+ 5,361,0.56,1,0
268
+ 5,362,0.56,1,0
269
+ 5,363,0.56,1,0
270
+ 5,364,0.56,1,0
271
+ 5,365,0.56,1,0
272
+ 5,366,0.56,1,0
273
+ 5,367,0.56,1,0
274
+ 5,368,0.56,1,0
275
+ 5,369,0.56,1,0
276
+ 5,370,0.56,1,0
277
+ 5,371,0.56,1,0
278
+ 5,540,0.56,1,0
279
+ 5,541,0.56,1,0
280
+ 5,542,0.56,1,0
281
+ 5,543,0.56,1,0
282
+ 5,544,0.56,1,0
283
+ 5,545,0.56,1,0
284
+ 5,546,0.56,1,0
285
+ 5,547,0.56,1,0
286
+ 5,548,0.56,1,0
287
+ 5,549,0.56,1,0
288
+ 5,550,0.56,1,0
289
+ 5,551,0.56,1,0
290
+ 6,0,0.56,1,0
291
+ 6,1,0.56,1,0
292
+ 6,2,0.56,1,0
293
+ 6,3,0.56,1,0
294
+ 6,4,0.56,1,0
295
+ 6,5,0.56,1,0
296
+ 6,6,0.56,1,0
297
+ 6,7,0.56,1,0
298
+ 6,8,0.56,1,0
299
+ 6,9,0.56,1,0
300
+ 6,10,0.56,1,0
301
+ 6,11,0.56,1,0
302
+ 6,180,0.56,1,0
303
+ 6,181,0.56,1,0
304
+ 6,182,0.56,1,0
305
+ 6,183,0.56,1,0
306
+ 6,184,0.56,1,0
307
+ 6,185,0.56,1,0
308
+ 6,186,0.56,1,0
309
+ 6,187,0.56,1,0
310
+ 6,188,0.56,1,0
311
+ 6,189,0.56,1,0
312
+ 6,190,0.56,1,0
313
+ 6,191,0.56,1,0
314
+ 6,360,0.56,1,0
315
+ 6,361,0.56,1,0
316
+ 6,362,0.56,1,0
317
+ 6,363,0.56,1,0
318
+ 6,364,0.56,1,0
319
+ 6,365,0.56,1,0
320
+ 6,366,0.56,1,0
321
+ 6,367,0.56,1,0
322
+ 6,368,0.56,1,0
323
+ 6,369,0.56,1,0
324
+ 6,370,0.56,1,0
325
+ 6,371,0.56,1,0
326
+ 6,540,0.56,1,0
327
+ 6,541,0.56,1,0
328
+ 6,542,0.56,1,0
329
+ 6,543,0.56,1,0
330
+ 6,544,0.56,1,0
331
+ 6,545,0.56,1,0
332
+ 6,546,0.56,1,0
333
+ 6,547,0.56,1,0
334
+ 6,548,0.56,1,0
335
+ 6,549,0.56,1,0
336
+ 6,550,0.56,1,0
337
+ 6,551,0.56,1,0
338
+ 7,0,0.56,1,0
339
+ 7,1,0.56,1,0
340
+ 7,2,0.56,1,0
341
+ 7,3,0.56,1,0
342
+ 7,4,0.56,1,0
343
+ 7,5,0.56,1,0
344
+ 7,6,0.56,1,0
345
+ 7,7,0.56,1,0
346
+ 7,8,0.56,1,0
347
+ 7,9,0.56,1,0
348
+ 7,10,0.56,1,0
349
+ 7,11,0.56,1,0
350
+ 7,180,0.56,1,0
351
+ 7,181,0.56,1,0
352
+ 7,182,0.56,1,0
353
+ 7,183,0.56,1,0
354
+ 7,184,0.56,1,0
355
+ 7,185,0.56,1,0
356
+ 7,186,0.56,1,0
357
+ 7,187,0.56,1,0
358
+ 7,188,0.56,1,0
359
+ 7,189,0.56,1,0
360
+ 7,190,0.56,1,0
361
+ 7,191,0.56,1,0
362
+ 7,360,0.56,1,0
363
+ 7,361,0.56,1,0
364
+ 7,362,0.56,1,0
365
+ 7,363,0.56,1,0
366
+ 7,364,0.56,1,0
367
+ 7,365,0.56,1,0
368
+ 7,366,0.56,1,0
369
+ 7,367,0.56,1,0
370
+ 7,368,0.56,1,0
371
+ 7,369,0.56,1,0
372
+ 7,370,0.56,1,0
373
+ 7,371,0.56,1,0
374
+ 7,540,0.56,1,0
375
+ 7,541,0.56,1,0
376
+ 7,542,0.56,1,0
377
+ 7,543,0.56,1,0
378
+ 7,544,0.56,1,0
379
+ 7,545,0.56,1,0
380
+ 7,546,0.56,1,0
381
+ 7,547,0.56,1,0
382
+ 7,548,0.56,1,0
383
+ 7,549,0.56,1,0
384
+ 7,550,0.56,1,0
385
+ 7,551,0.56,1,0
@@ -0,0 +1,3 @@
1
+ met_time,cem1,cem2,cem3,cem4,cem5,cem6,cem7
2
+ 453050308,1,1,1,1,1,1,1
3
+ 1782864000,1,1,1,1,1,1,1
@@ -5,8 +5,26 @@ from imap_processing.swe.l1a.swe_l1a import swe_l1a
5
5
 
6
6
  def test_cdf_creation():
7
7
  test_data_path = "tests/swe/l0_data/2024051010_SWE_SCIENCE_packet.bin"
8
- processed_data = swe_l1a(imap_module_directory / test_data_path, "001")
8
+ processed_data = swe_l1a(imap_module_directory / test_data_path)
9
9
 
10
10
  cem_raw_cdf_filepath = write_cdf(processed_data[0])
11
11
 
12
- assert cem_raw_cdf_filepath.name == "imap_swe_l1a_sci_20240510_v001.cdf"
12
+ assert cem_raw_cdf_filepath.name == "imap_swe_l1a_sci_20240510_v999.cdf"
13
+
14
+
15
+ def test_cdf_creation_hk():
16
+ test_data_path = "tests/swe/l0_data/2024051010_SWE_HK_packet.bin"
17
+ processed_data = swe_l1a(imap_module_directory / test_data_path)
18
+
19
+ hk_cdf_filepath = write_cdf(processed_data[0])
20
+
21
+ assert hk_cdf_filepath.name == "imap_swe_l1a_hk_20240510_v999.cdf"
22
+
23
+
24
+ def test_cdf_creation_cem_raw():
25
+ test_data_path = "tests/swe/l0_data/2024051011_SWE_CEM_RAW_packet.bin"
26
+ processed_data = swe_l1a(imap_module_directory / test_data_path)
27
+
28
+ cem_raw_cdf_filepath = write_cdf(processed_data[0])
29
+
30
+ assert cem_raw_cdf_filepath.name == "imap_swe_l1a_cem-raw_20240510_v999.cdf"
@@ -0,0 +1,52 @@
1
+ from dataclasses import fields
2
+
3
+ import pandas as pd
4
+ import pytest
5
+
6
+ from imap_processing import imap_module_directory
7
+ from imap_processing.ccsds.ccsds_data import CcsdsData
8
+ from imap_processing.swe.utils.swe_utils import SWEAPID
9
+ from imap_processing.utils import packet_file_to_datasets
10
+
11
+
12
+ @pytest.fixture(scope="session")
13
+ def decom_raw_cem_data():
14
+ """Read test data from file"""
15
+ test_folder_path = imap_module_directory / "tests/swe/l0_data"
16
+ packet_file = test_folder_path / "2024051011_SWE_CEM_RAW_packet.bin"
17
+ xtce_document = (
18
+ imap_module_directory / "swe/packet_definitions/swe_packet_definition.xml"
19
+ )
20
+ datasets_by_apid = packet_file_to_datasets(
21
+ packet_file, xtce_document, use_derived_value=False
22
+ )
23
+ return datasets_by_apid[SWEAPID.SWE_CEM_RAW]
24
+
25
+
26
+ def test_number_of_packets(decom_raw_cem_data):
27
+ """This test and validate number of packets."""
28
+ expected_number_of_packets = 25
29
+ assert len(decom_raw_cem_data) == expected_number_of_packets
30
+
31
+
32
+ def test_swe_raw_cem_data(decom_raw_cem_data):
33
+ """This test and validate raw data of SWE raw CEM data."""
34
+ # read validation data
35
+ test_data_path = imap_module_directory / "tests/swe/l0_validation_data"
36
+ raw_validation_data = pd.read_csv(
37
+ test_data_path / "idle_export_eu.SWE_CEM_RAW_20240510_092742.csv",
38
+ index_col="SHCOARSE",
39
+ )
40
+
41
+ first_data = decom_raw_cem_data.isel(epoch=0)
42
+ validation_data = raw_validation_data.loc[first_data["shcoarse"].values]
43
+
44
+ ccsds_header_keys = [field.name for field in fields(CcsdsData)]
45
+ ccsds_header_keys += ["SHCOARSE"]
46
+
47
+ # compare unpacked data to validation data
48
+ for key in first_data.keys():
49
+ if key.upper() in ccsds_header_keys:
50
+ continue
51
+ # check if the data is the same.
52
+ assert first_data[key] == validation_data[key.upper()]
@@ -0,0 +1,68 @@
1
+ from dataclasses import fields
2
+
3
+ import numpy as np
4
+ import pandas as pd
5
+ import pytest
6
+
7
+ from imap_processing import imap_module_directory
8
+ from imap_processing.ccsds.ccsds_data import CcsdsData
9
+ from imap_processing.swe.utils.swe_utils import SWEAPID
10
+ from imap_processing.utils import packet_file_to_datasets
11
+
12
+
13
+ @pytest.fixture(scope="session")
14
+ def decom_hk_data():
15
+ """Read test data from file"""
16
+ test_folder_path = imap_module_directory / "tests/swe/l0_data"
17
+ packet_file = test_folder_path / "2024051010_SWE_HK_packet.bin"
18
+ xtce_document = (
19
+ imap_module_directory / "swe/packet_definitions/swe_packet_definition.xml"
20
+ )
21
+ datasets_by_apid = packet_file_to_datasets(
22
+ packet_file,
23
+ xtce_document,
24
+ use_derived_value=True,
25
+ )
26
+ return datasets_by_apid[SWEAPID.SWE_APP_HK]
27
+
28
+
29
+ def test_swe_hk_data(decom_hk_data):
30
+ """This test and validate raw data of SWAPI raw housekeeping data."""
31
+ # read validation data
32
+ test_data_path = imap_module_directory / "tests/swe/l0_validation_data"
33
+
34
+ raw_validation_data = pd.read_csv(
35
+ test_data_path / "idle_export_eu.SWE_APP_HK_20240510_092742.csv",
36
+ index_col="SHCOARSE",
37
+ )
38
+
39
+ first_data = decom_hk_data.isel(epoch=0)
40
+ validation_data = raw_validation_data.loc[first_data["shcoarse"].values]
41
+
42
+ # TODO: check with SWE team
43
+ mismatched_keys = [
44
+ "HVPS_ESA_DAC",
45
+ ]
46
+
47
+ ccsds_header_keys = [field.name for field in fields(CcsdsData)]
48
+ ccsds_header_keys += ["SHCOARSE"]
49
+ # compare raw values of validation data
50
+ for key in first_data.keys():
51
+ data_key = key.upper()
52
+ if data_key in ccsds_header_keys:
53
+ continue
54
+
55
+ if data_key in mismatched_keys:
56
+ continue
57
+
58
+ # Compare derived string values to validation data
59
+ if str(first_data[key].dtype).startswith("<U"):
60
+ assert first_data[key].values == validation_data[data_key]
61
+ # Compare derived float values to validation data
62
+ elif first_data[key].dtype == "float64":
63
+ np.testing.assert_almost_equal(
64
+ first_data[key].values, validation_data[data_key], decimal=6
65
+ )
66
+ # Compare derived integer values to validation data
67
+ else:
68
+ assert first_data[key].values == validation_data[data_key]
@@ -75,7 +75,7 @@ def test_data_order(decom_test_data):
75
75
  )
76
76
 
77
77
  # Get unpacked science data
78
- processed_data = swe_science(decom_test_data, "001")
78
+ processed_data = swe_science(decom_test_data)
79
79
 
80
80
  quarter_cycle = processed_data["quarter_cycle"].isel(epoch=slice(0, 4))
81
81
  np.testing.assert_array_equal(quarter_cycle, [0, 1, 2, 3])
@@ -84,7 +84,7 @@ def test_data_order(decom_test_data):
84
84
  def test_swe_science_algorithm(decom_test_data):
85
85
  """Test general shape of return dataset from swe_science."""
86
86
  # Get unpacked science data
87
- processed_data = swe_science(decom_test_data, "001")
87
+ processed_data = swe_science(decom_test_data)
88
88
 
89
89
  # science data should have this shape, 15x12x7.
90
90
  science_data = processed_data["science_data"].data[0]
@@ -101,7 +101,7 @@ def test_decompress_counts(decom_test_data, l1a_validation_df):
101
101
  raw_counts = l1a_validation_df.iloc[:, 1:8]
102
102
  decompressed_counts = l1a_validation_df.iloc[:, 8:15]
103
103
 
104
- l1a_dataset = swe_science(decom_test_data, "001")
104
+ l1a_dataset = swe_science(decom_test_data)
105
105
 
106
106
  # compare raw counts
107
107
  assert np.all(