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

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

Potentially problematic release.


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

Files changed (272) hide show
  1. imap_processing/__init__.py +1 -0
  2. imap_processing/_version.py +2 -2
  3. imap_processing/ccsds/ccsds_data.py +1 -2
  4. imap_processing/ccsds/excel_to_xtce.py +1 -2
  5. imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +18 -12
  6. imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +569 -0
  7. imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +1846 -128
  8. imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +5 -5
  9. imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +20 -1
  10. imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +6 -4
  11. imap_processing/cdf/config/imap_idex_l1b_variable_attrs.yaml +3 -3
  12. imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +15 -0
  13. imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +22 -0
  14. imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +16 -0
  15. imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +178 -5
  16. imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +5045 -41
  17. imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +33 -19
  18. imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +8 -48
  19. imap_processing/cdf/utils.py +41 -33
  20. imap_processing/cli.py +463 -234
  21. imap_processing/codice/codice_l1a.py +260 -47
  22. imap_processing/codice/codice_l1b.py +51 -152
  23. imap_processing/codice/constants.py +38 -1
  24. imap_processing/ena_maps/ena_maps.py +658 -65
  25. imap_processing/ena_maps/utils/coordinates.py +1 -1
  26. imap_processing/ena_maps/utils/spatial_utils.py +10 -5
  27. imap_processing/glows/l1a/glows_l1a.py +28 -99
  28. imap_processing/glows/l1a/glows_l1a_data.py +2 -2
  29. imap_processing/glows/l1b/glows_l1b.py +1 -4
  30. imap_processing/glows/l1b/glows_l1b_data.py +1 -3
  31. imap_processing/glows/l2/glows_l2.py +2 -5
  32. imap_processing/hi/l1a/hi_l1a.py +31 -12
  33. imap_processing/hi/l1b/hi_l1b.py +80 -43
  34. imap_processing/hi/l1c/hi_l1c.py +12 -16
  35. imap_processing/hit/ancillary/imap_hit_l1b-to-l2-sector-dt0-factors_20250219_v002.csv +81 -0
  36. imap_processing/hit/hit_utils.py +93 -35
  37. imap_processing/hit/l0/decom_hit.py +3 -1
  38. imap_processing/hit/l1a/hit_l1a.py +30 -25
  39. imap_processing/hit/l1b/constants.py +6 -2
  40. imap_processing/hit/l1b/hit_l1b.py +279 -318
  41. imap_processing/hit/l2/constants.py +37 -0
  42. imap_processing/hit/l2/hit_l2.py +373 -264
  43. imap_processing/ialirt/l0/parse_mag.py +138 -10
  44. imap_processing/ialirt/l0/process_swapi.py +69 -0
  45. imap_processing/ialirt/l0/process_swe.py +318 -22
  46. imap_processing/ialirt/packet_definitions/ialirt.xml +216 -212
  47. imap_processing/ialirt/packet_definitions/ialirt_codicehi.xml +1 -1
  48. imap_processing/ialirt/packet_definitions/ialirt_codicelo.xml +1 -1
  49. imap_processing/ialirt/packet_definitions/ialirt_swapi.xml +14 -14
  50. imap_processing/ialirt/utils/grouping.py +1 -1
  51. imap_processing/idex/idex_constants.py +9 -1
  52. imap_processing/idex/idex_l0.py +22 -8
  53. imap_processing/idex/idex_l1a.py +75 -44
  54. imap_processing/idex/idex_l1b.py +9 -8
  55. imap_processing/idex/idex_l2a.py +79 -45
  56. imap_processing/idex/idex_l2b.py +120 -0
  57. imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +33 -39
  58. imap_processing/idex/packet_definitions/idex_housekeeping_packet_definition.xml +9130 -0
  59. imap_processing/lo/l0/lo_science.py +1 -2
  60. imap_processing/lo/l1a/lo_l1a.py +1 -4
  61. imap_processing/lo/l1b/lo_l1b.py +527 -6
  62. imap_processing/lo/l1b/tof_conversions.py +11 -0
  63. imap_processing/lo/l1c/lo_l1c.py +1 -4
  64. imap_processing/mag/constants.py +43 -0
  65. imap_processing/mag/imap_mag_sdc_configuration_v001.py +8 -0
  66. imap_processing/mag/l1a/mag_l1a.py +2 -9
  67. imap_processing/mag/l1a/mag_l1a_data.py +10 -10
  68. imap_processing/mag/l1b/mag_l1b.py +84 -17
  69. imap_processing/mag/l1c/interpolation_methods.py +180 -3
  70. imap_processing/mag/l1c/mag_l1c.py +236 -70
  71. imap_processing/mag/l2/mag_l2.py +140 -0
  72. imap_processing/mag/l2/mag_l2_data.py +288 -0
  73. imap_processing/spacecraft/quaternions.py +1 -3
  74. imap_processing/spice/geometry.py +3 -3
  75. imap_processing/spice/kernels.py +0 -276
  76. imap_processing/spice/pointing_frame.py +257 -0
  77. imap_processing/spice/repoint.py +48 -19
  78. imap_processing/spice/spin.py +38 -33
  79. imap_processing/spice/time.py +24 -0
  80. imap_processing/swapi/l1/swapi_l1.py +16 -12
  81. imap_processing/swapi/l2/swapi_l2.py +116 -4
  82. imap_processing/swapi/swapi_utils.py +32 -0
  83. imap_processing/swe/l1a/swe_l1a.py +2 -9
  84. imap_processing/swe/l1a/swe_science.py +8 -11
  85. imap_processing/swe/l1b/swe_l1b.py +898 -23
  86. imap_processing/swe/l2/swe_l2.py +21 -77
  87. imap_processing/swe/utils/swe_constants.py +1 -0
  88. imap_processing/tests/ccsds/test_excel_to_xtce.py +1 -1
  89. imap_processing/tests/cdf/test_utils.py +14 -16
  90. imap_processing/tests/codice/conftest.py +44 -33
  91. imap_processing/tests/codice/data/validation/imap_codice_l1a_hi-pha_20241110193700_v0.0.0.cdf +0 -0
  92. imap_processing/tests/codice/data/validation/imap_codice_l1a_lo-pha_20241110193700_v0.0.0.cdf +0 -0
  93. imap_processing/tests/codice/test_codice_l1a.py +20 -11
  94. imap_processing/tests/codice/test_codice_l1b.py +6 -7
  95. imap_processing/tests/conftest.py +78 -22
  96. imap_processing/tests/ena_maps/test_ena_maps.py +462 -33
  97. imap_processing/tests/ena_maps/test_spatial_utils.py +1 -1
  98. imap_processing/tests/glows/conftest.py +10 -14
  99. imap_processing/tests/glows/test_glows_decom.py +4 -4
  100. imap_processing/tests/glows/test_glows_l1a_cdf.py +6 -27
  101. imap_processing/tests/glows/test_glows_l1a_data.py +6 -8
  102. imap_processing/tests/glows/test_glows_l1b.py +11 -11
  103. imap_processing/tests/glows/test_glows_l1b_data.py +5 -5
  104. imap_processing/tests/glows/test_glows_l2.py +2 -8
  105. imap_processing/tests/hi/conftest.py +1 -1
  106. imap_processing/tests/hi/test_hi_l1b.py +10 -12
  107. imap_processing/tests/hi/test_hi_l1c.py +27 -24
  108. imap_processing/tests/hi/test_l1a.py +7 -9
  109. imap_processing/tests/hi/test_science_direct_event.py +2 -2
  110. imap_processing/tests/hit/helpers/l1_validation.py +44 -43
  111. imap_processing/tests/hit/test_decom_hit.py +1 -1
  112. imap_processing/tests/hit/test_hit_l1a.py +9 -9
  113. imap_processing/tests/hit/test_hit_l1b.py +172 -217
  114. imap_processing/tests/hit/test_hit_l2.py +380 -118
  115. imap_processing/tests/hit/test_hit_utils.py +122 -55
  116. imap_processing/tests/hit/validation_data/hit_l1b_standard_sample2_nsrl_v4_3decimals.csv +62 -62
  117. imap_processing/tests/hit/validation_data/sci_sample_raw.csv +1 -1
  118. imap_processing/tests/ialirt/unit/test_decom_ialirt.py +16 -81
  119. imap_processing/tests/ialirt/unit/test_grouping.py +2 -2
  120. imap_processing/tests/ialirt/unit/test_parse_mag.py +71 -16
  121. imap_processing/tests/ialirt/unit/test_process_codicehi.py +3 -3
  122. imap_processing/tests/ialirt/unit/test_process_codicelo.py +3 -10
  123. imap_processing/tests/ialirt/unit/test_process_ephemeris.py +4 -4
  124. imap_processing/tests/ialirt/unit/test_process_hit.py +3 -3
  125. imap_processing/tests/ialirt/unit/test_process_swapi.py +24 -16
  126. imap_processing/tests/ialirt/unit/test_process_swe.py +115 -7
  127. imap_processing/tests/idex/conftest.py +72 -7
  128. imap_processing/tests/idex/test_data/imap_idex_l0_raw_20241206_v001.pkts +0 -0
  129. imap_processing/tests/idex/test_data/imap_idex_l0_raw_20250108_v001.pkts +0 -0
  130. imap_processing/tests/idex/test_idex_l0.py +33 -11
  131. imap_processing/tests/idex/test_idex_l1a.py +50 -23
  132. imap_processing/tests/idex/test_idex_l1b.py +104 -25
  133. imap_processing/tests/idex/test_idex_l2a.py +48 -32
  134. imap_processing/tests/idex/test_idex_l2b.py +93 -0
  135. imap_processing/tests/lo/test_lo_l1a.py +3 -3
  136. imap_processing/tests/lo/test_lo_l1b.py +371 -6
  137. imap_processing/tests/lo/test_lo_l1c.py +1 -1
  138. imap_processing/tests/lo/test_lo_science.py +6 -7
  139. imap_processing/tests/lo/test_star_sensor.py +1 -1
  140. imap_processing/tests/mag/conftest.py +58 -9
  141. imap_processing/tests/mag/test_mag_decom.py +4 -3
  142. imap_processing/tests/mag/test_mag_l1a.py +13 -7
  143. imap_processing/tests/mag/test_mag_l1b.py +9 -9
  144. imap_processing/tests/mag/test_mag_l1c.py +151 -47
  145. imap_processing/tests/mag/test_mag_l2.py +130 -0
  146. imap_processing/tests/mag/test_mag_validation.py +144 -7
  147. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-in.csv +1217 -0
  148. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-magi-normal-out.csv +1857 -0
  149. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-in.csv +1217 -0
  150. imap_processing/tests/mag/validation/L1c/T013/mag-l1b-l1c-t013-mago-normal-out.csv +1857 -0
  151. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-in.csv +1217 -0
  152. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-magi-normal-out.csv +1793 -0
  153. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-in.csv +1217 -0
  154. imap_processing/tests/mag/validation/L1c/T014/mag-l1b-l1c-t014-mago-normal-out.csv +1793 -0
  155. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-burst-in.csv +2561 -0
  156. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-in.csv +961 -0
  157. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-magi-normal-out.csv +1539 -0
  158. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-in.csv +1921 -0
  159. imap_processing/tests/mag/validation/L1c/T015/mag-l1b-l1c-t015-mago-normal-out.csv +2499 -0
  160. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-in.csv +865 -0
  161. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-magi-normal-out.csv +1196 -0
  162. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-in.csv +1729 -0
  163. imap_processing/tests/mag/validation/L1c/T016/mag-l1b-l1c-t016-mago-normal-out.csv +3053 -0
  164. imap_processing/tests/mag/validation/L2/imap_mag_l1b_norm-mago_20251017_v002.cdf +0 -0
  165. imap_processing/tests/mag/validation/calibration/imap_mag_l2-calibration-matrices_20251017_v004.cdf +0 -0
  166. imap_processing/tests/mag/validation/calibration/imap_mag_l2-offsets-norm_20251017_20251017_v001.cdf +0 -0
  167. imap_processing/tests/spacecraft/test_quaternions.py +1 -1
  168. imap_processing/tests/spice/test_data/fake_repoint_data.csv +4 -4
  169. imap_processing/tests/spice/test_data/fake_spin_data.csv +11 -11
  170. imap_processing/tests/spice/test_geometry.py +3 -3
  171. imap_processing/tests/spice/test_kernels.py +1 -200
  172. imap_processing/tests/spice/test_pointing_frame.py +185 -0
  173. imap_processing/tests/spice/test_repoint.py +20 -10
  174. imap_processing/tests/spice/test_spin.py +50 -9
  175. imap_processing/tests/spice/test_time.py +14 -0
  176. imap_processing/tests/swapi/lut/imap_swapi_esa-unit-conversion_20250211_v000.csv +73 -0
  177. imap_processing/tests/swapi/lut/imap_swapi_lut-notes_20250211_v000.csv +1025 -0
  178. imap_processing/tests/swapi/test_swapi_l1.py +7 -9
  179. imap_processing/tests/swapi/test_swapi_l2.py +180 -8
  180. imap_processing/tests/swe/lut/checker-board-indices.csv +24 -0
  181. imap_processing/tests/swe/lut/imap_swe_esa-lut_20250301_v000.csv +385 -0
  182. imap_processing/tests/swe/lut/imap_swe_l1b-in-flight-cal_20240510_20260716_v000.csv +3 -0
  183. imap_processing/tests/swe/test_swe_l1a.py +6 -6
  184. imap_processing/tests/swe/test_swe_l1a_science.py +3 -3
  185. imap_processing/tests/swe/test_swe_l1b.py +162 -24
  186. imap_processing/tests/swe/test_swe_l2.py +82 -102
  187. imap_processing/tests/test_cli.py +171 -88
  188. imap_processing/tests/test_utils.py +2 -1
  189. imap_processing/tests/ultra/data/mock_data.py +49 -21
  190. imap_processing/tests/ultra/unit/conftest.py +53 -70
  191. imap_processing/tests/ultra/unit/test_badtimes.py +2 -4
  192. imap_processing/tests/ultra/unit/test_cullingmask.py +4 -6
  193. imap_processing/tests/ultra/unit/test_de.py +3 -10
  194. imap_processing/tests/ultra/unit/test_decom_apid_880.py +27 -76
  195. imap_processing/tests/ultra/unit/test_decom_apid_881.py +15 -16
  196. imap_processing/tests/ultra/unit/test_decom_apid_883.py +12 -10
  197. imap_processing/tests/ultra/unit/test_decom_apid_896.py +202 -55
  198. imap_processing/tests/ultra/unit/test_lookup_utils.py +23 -1
  199. imap_processing/tests/ultra/unit/test_spacecraft_pset.py +3 -4
  200. imap_processing/tests/ultra/unit/test_ultra_l1a.py +84 -307
  201. imap_processing/tests/ultra/unit/test_ultra_l1b.py +30 -12
  202. imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +2 -2
  203. imap_processing/tests/ultra/unit/test_ultra_l1b_culling.py +4 -1
  204. imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +163 -29
  205. imap_processing/tests/ultra/unit/test_ultra_l1c.py +5 -5
  206. imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +32 -43
  207. imap_processing/tests/ultra/unit/test_ultra_l2.py +230 -0
  208. imap_processing/ultra/constants.py +1 -1
  209. imap_processing/ultra/l0/decom_tools.py +21 -34
  210. imap_processing/ultra/l0/decom_ultra.py +168 -204
  211. imap_processing/ultra/l0/ultra_utils.py +152 -136
  212. imap_processing/ultra/l1a/ultra_l1a.py +55 -243
  213. imap_processing/ultra/l1b/badtimes.py +1 -4
  214. imap_processing/ultra/l1b/cullingmask.py +2 -6
  215. imap_processing/ultra/l1b/de.py +62 -47
  216. imap_processing/ultra/l1b/extendedspin.py +8 -4
  217. imap_processing/ultra/l1b/lookup_utils.py +72 -9
  218. imap_processing/ultra/l1b/ultra_l1b.py +3 -8
  219. imap_processing/ultra/l1b/ultra_l1b_culling.py +4 -4
  220. imap_processing/ultra/l1b/ultra_l1b_extended.py +236 -78
  221. imap_processing/ultra/l1c/histogram.py +2 -6
  222. imap_processing/ultra/l1c/spacecraft_pset.py +2 -4
  223. imap_processing/ultra/l1c/ultra_l1c.py +1 -5
  224. imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +107 -60
  225. imap_processing/ultra/l2/ultra_l2.py +299 -0
  226. imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_LeftSlit.csv +526 -0
  227. imap_processing/ultra/lookup_tables/Angular_Profiles_FM45_RightSlit.csv +526 -0
  228. imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_LeftSlit.csv +526 -0
  229. imap_processing/ultra/lookup_tables/Angular_Profiles_FM90_RightSlit.csv +526 -0
  230. imap_processing/ultra/lookup_tables/FM45_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -2
  231. imap_processing/ultra/lookup_tables/FM90_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -0
  232. imap_processing/ultra/packet_definitions/README.md +38 -0
  233. imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +15302 -482
  234. imap_processing/ultra/utils/ultra_l1_utils.py +13 -12
  235. imap_processing/utils.py +1 -1
  236. {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/METADATA +3 -2
  237. {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/RECORD +264 -225
  238. imap_processing/hi/l1b/hi_eng_unit_convert_table.csv +0 -154
  239. imap_processing/mag/imap_mag_sdc-configuration_v001.yaml +0 -6
  240. imap_processing/mag/l1b/__init__.py +0 -0
  241. imap_processing/swe/l1b/swe_esa_lookup_table.csv +0 -1441
  242. imap_processing/swe/l1b/swe_l1b_science.py +0 -699
  243. imap_processing/tests/swe/test_swe_l1b_science.py +0 -103
  244. imap_processing/ultra/lookup_tables/dps_sensitivity45.cdf +0 -0
  245. imap_processing/ultra/lookup_tables/ultra_90_dps_exposure_compressed.cdf +0 -0
  246. /imap_processing/idex/packet_definitions/{idex_packet_definition.xml → idex_science_packet_definition.xml} +0 -0
  247. /imap_processing/tests/ialirt/{test_data → data}/l0/20240827095047_SWE_IALIRT_packet.bin +0 -0
  248. /imap_processing/tests/ialirt/{test_data → data}/l0/461971383-404.bin +0 -0
  249. /imap_processing/tests/ialirt/{test_data → data}/l0/461971384-405.bin +0 -0
  250. /imap_processing/tests/ialirt/{test_data → data}/l0/461971385-406.bin +0 -0
  251. /imap_processing/tests/ialirt/{test_data → data}/l0/461971386-407.bin +0 -0
  252. /imap_processing/tests/ialirt/{test_data → data}/l0/461971387-408.bin +0 -0
  253. /imap_processing/tests/ialirt/{test_data → data}/l0/461971388-409.bin +0 -0
  254. /imap_processing/tests/ialirt/{test_data → data}/l0/461971389-410.bin +0 -0
  255. /imap_processing/tests/ialirt/{test_data → data}/l0/461971390-411.bin +0 -0
  256. /imap_processing/tests/ialirt/{test_data → data}/l0/461971391-412.bin +0 -0
  257. /imap_processing/tests/ialirt/{test_data → data}/l0/BinLog CCSDS_FRAG_TLM_20240826_152323Z_IALIRT_data_for_SDC.bin +0 -0
  258. /imap_processing/tests/ialirt/{test_data → data}/l0/IALiRT Raw Packet Telemetry.txt +0 -0
  259. /imap_processing/tests/ialirt/{test_data → data}/l0/apid01152.tlm +0 -0
  260. /imap_processing/tests/ialirt/{test_data → data}/l0/eu_SWP_IAL_20240826_152033.csv +0 -0
  261. /imap_processing/tests/ialirt/{test_data → data}/l0/hi_fsw_view_1_ccsds.bin +0 -0
  262. /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.ccsds +0 -0
  263. /imap_processing/tests/ialirt/{test_data → data}/l0/hit_ialirt_sample.csv +0 -0
  264. /imap_processing/tests/ialirt/{test_data → data}/l0/idle_export_eu.SWE_IALIRT_20240827_093852.csv +0 -0
  265. /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_hi-ialirt_20240523200000_v0.0.0.cdf +0 -0
  266. /imap_processing/tests/ialirt/{test_data → data}/l0/imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf +0 -0
  267. /imap_processing/tests/ialirt/{test_data → data}/l0/sample_decoded_i-alirt_data.csv +0 -0
  268. /imap_processing/tests/mag/validation/{imap_calibration_mag_20240229_v01.cdf → calibration/imap_mag_l1b-calibration_20240229_v001.cdf} +0 -0
  269. /imap_processing/{swe/l1b/engineering_unit_convert_table.csv → tests/swe/lut/imap_swe_eu-conversion_20240510_v000.csv} +0 -0
  270. {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/LICENSE +0 -0
  271. {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/WHEEL +0 -0
  272. {imap_processing-0.12.0.dist-info → imap_processing-0.13.0.dist-info}/entry_points.txt +0 -0
@@ -23,33 +23,92 @@ def test_image_raw_events_decom(
23
23
  ):
24
24
  """This function reads validation data and checks that decom data
25
25
  matches validation data for image rate packet"""
26
- decom_ultra, _ = decom_test_data
26
+ decom_ultra = decom_test_data
27
27
 
28
28
  df = pd.read_csv(events_test_path, index_col="MET")
29
- df.replace(-1, np.iinfo(np.int64).min, inplace=True)
30
29
 
31
- np.testing.assert_array_equal(df.SID, decom_ultra["SID"])
32
- np.testing.assert_array_equal(df["Spin"], decom_ultra["SPIN"])
33
- np.testing.assert_array_equal(df["AbortFlag"], decom_ultra["ABORTFLAG"])
34
- np.testing.assert_array_equal(df["StartDelay"], decom_ultra["STARTDELAY"])
35
- np.testing.assert_array_equal(df["Count"], decom_ultra["COUNT"])
36
- np.testing.assert_array_equal(df["CoinType"], decom_ultra["COIN_TYPE"])
37
- np.testing.assert_array_equal(df["StartType"], decom_ultra["START_TYPE"])
38
- np.testing.assert_array_equal(df["StopType"], decom_ultra["STOP_TYPE"])
39
- np.testing.assert_array_equal(df["StartPosTDC"], decom_ultra["START_POS_TDC"])
40
- np.testing.assert_array_equal(df["StopNorthTDC"], decom_ultra["STOP_NORTH_TDC"])
41
- np.testing.assert_array_equal(df["StopEastTDC"], decom_ultra["STOP_EAST_TDC"])
42
- np.testing.assert_array_equal(df["StopSouthTDC"], decom_ultra["STOP_SOUTH_TDC"])
43
- np.testing.assert_array_equal(df["StopWestTDC"], decom_ultra["STOP_WEST_TDC"])
44
- np.testing.assert_array_equal(df["CoinNorthTDC"], decom_ultra["COIN_NORTH_TDC"])
45
- np.testing.assert_array_equal(df["CoinSouthTDC"], decom_ultra["COIN_SOUTH_TDC"])
46
- np.testing.assert_array_equal(
47
- df["CoinDiscreteTDC"], decom_ultra["COIN_DISCRETE_TDC"]
48
- )
49
- np.testing.assert_array_equal(df["EnergyOrPH"], decom_ultra["ENERGY_PH"])
50
- np.testing.assert_array_equal(df["PulseWidth"], decom_ultra["PULSE_WIDTH"])
51
- np.testing.assert_array_equal(df["PhaseAngle"], decom_ultra["PHASE_ANGLE"])
52
- np.testing.assert_array_equal(df["Bin"], decom_ultra["BIN"])
30
+ # # Check all values of each column are as expected,
31
+ # except for those set to fill value
32
+ np.testing.assert_array_equal(
33
+ df["SID"].values[df["SID"].values != -1],
34
+ decom_ultra["sid"].values[df["SID"].values != -1],
35
+ )
36
+ np.testing.assert_array_equal(
37
+ df["Spin"].values[df["Spin"].values != -1],
38
+ decom_ultra["spin"].values[df["Spin"].values != -1],
39
+ )
40
+ np.testing.assert_array_equal(
41
+ df["AbortFlag"].values[df["AbortFlag"].values != -1],
42
+ decom_ultra["abortflag"].values[df["AbortFlag"].values != -1],
43
+ )
44
+ np.testing.assert_array_equal(
45
+ df["StartDelay"].values[df["StartDelay"].values != -1],
46
+ decom_ultra["startdelay"].values[df["StartDelay"].values != -1],
47
+ )
48
+ np.testing.assert_array_equal(
49
+ df["Count"].values[df["Count"].values != -1],
50
+ decom_ultra["count"].values[df["Count"].values != -1],
51
+ )
52
+ np.testing.assert_array_equal(
53
+ df["CoinType"].values[df["CoinType"].values != -1],
54
+ decom_ultra["coin_type"].values[df["CoinType"].values != -1],
55
+ )
56
+ np.testing.assert_array_equal(
57
+ df["StartType"].values[df["StartType"].values != -1],
58
+ decom_ultra["start_type"].values[df["StartType"].values != -1],
59
+ )
60
+ np.testing.assert_array_equal(
61
+ df["StopType"].values[df["StopType"].values != -1],
62
+ decom_ultra["stop_type"].values[df["StopType"].values != -1],
63
+ )
64
+ np.testing.assert_array_equal(
65
+ df["StartPosTDC"].values[df["StartPosTDC"].values != -1],
66
+ decom_ultra["start_pos_tdc"].values[df["StartPosTDC"].values != -1],
67
+ )
68
+ np.testing.assert_array_equal(
69
+ df["StopNorthTDC"].values[df["StopNorthTDC"].values != -1],
70
+ decom_ultra["stop_north_tdc"].values[df["StopNorthTDC"].values != -1],
71
+ )
72
+ np.testing.assert_array_equal(
73
+ df["StopEastTDC"].values[df["StopEastTDC"].values != -1],
74
+ decom_ultra["stop_east_tdc"].values[df["StopEastTDC"].values != -1],
75
+ )
76
+ np.testing.assert_array_equal(
77
+ df["StopSouthTDC"].values[df["StopSouthTDC"].values != -1],
78
+ decom_ultra["stop_south_tdc"].values[df["StopSouthTDC"].values != -1],
79
+ )
80
+ np.testing.assert_array_equal(
81
+ df["StopWestTDC"].values[df["StopWestTDC"].values != -1],
82
+ decom_ultra["stop_west_tdc"].values[df["StopWestTDC"].values != -1],
83
+ )
84
+ np.testing.assert_array_equal(
85
+ df["CoinNorthTDC"].values[df["CoinNorthTDC"].values != -1],
86
+ decom_ultra["coin_north_tdc"].values[df["CoinNorthTDC"].values != -1],
87
+ )
88
+ np.testing.assert_array_equal(
89
+ df["CoinSouthTDC"].values[df["CoinSouthTDC"].values != -1],
90
+ decom_ultra["coin_south_tdc"].values[df["CoinSouthTDC"].values != -1],
91
+ )
92
+ np.testing.assert_array_equal(
93
+ df["CoinDiscreteTDC"].values[df["CoinDiscreteTDC"].values != -1],
94
+ decom_ultra["coin_discrete_tdc"].values[df["CoinDiscreteTDC"].values != -1],
95
+ )
96
+ np.testing.assert_array_equal(
97
+ df["EnergyOrPH"].values[df["EnergyOrPH"].values != -1],
98
+ decom_ultra["energy_ph"].values[df["EnergyOrPH"].values != -1],
99
+ )
100
+ np.testing.assert_array_equal(
101
+ df["PulseWidth"].values[df["PulseWidth"].values != -1],
102
+ decom_ultra["pulse_width"].values[df["PulseWidth"].values != -1],
103
+ )
104
+ np.testing.assert_array_equal(
105
+ df["PhaseAngle"].values[df["PhaseAngle"].values != -1],
106
+ decom_ultra["phase_angle"].values[df["PhaseAngle"].values != -1],
107
+ )
108
+ np.testing.assert_array_equal(
109
+ df["Bin"].values[df["Bin"].values != -1],
110
+ decom_ultra["bin"].values[df["Bin"].values != -1],
111
+ )
53
112
 
54
113
 
55
114
  @pytest.mark.parametrize(
@@ -69,36 +128,124 @@ def test_image_raw_events_decom_flags(decom_test_data, events_test_path):
69
128
  """This function reads validation data and checks that decom data
70
129
  matches validation data for image rate packet"""
71
130
 
72
- decom_ultra, _ = decom_test_data
131
+ # # Check all values of each column are as expected,
132
+ # except for those set to fill value
133
+ decom_ultra = decom_test_data
73
134
  df = pd.read_csv(events_test_path, index_col="MET")
74
- df.replace(-1, np.iinfo(np.int64).min, inplace=True)
75
135
 
76
- np.testing.assert_array_equal(df["CnT"], decom_ultra["EVENT_FLAG_CNT"])
77
- np.testing.assert_array_equal(df["PHCmpSL"], decom_ultra["EVENT_FLAG_PHCMPSL"])
78
- np.testing.assert_array_equal(df["PHCmpSR"], decom_ultra["EVENT_FLAG_PHCMPSR"])
79
- np.testing.assert_array_equal(df["PHCmpCD"], decom_ultra["EVENT_FLAG_PHCMPCD"])
80
- np.testing.assert_array_equal(df["SSDS7"], decom_ultra["SSD_FLAG_7"])
81
- np.testing.assert_array_equal(df["SSDS6"], decom_ultra["SSD_FLAG_6"])
82
- np.testing.assert_array_equal(df["SSDS5"], decom_ultra["SSD_FLAG_5"])
83
- np.testing.assert_array_equal(df["SSDS4"], decom_ultra["SSD_FLAG_4"])
84
- np.testing.assert_array_equal(df["SSDS3"], decom_ultra["SSD_FLAG_3"])
85
- np.testing.assert_array_equal(df["SSDS2"], decom_ultra["SSD_FLAG_2"])
86
- np.testing.assert_array_equal(df["SSDS1"], decom_ultra["SSD_FLAG_1"])
87
- np.testing.assert_array_equal(df["SSDS0"], decom_ultra["SSD_FLAG_0"])
88
- np.testing.assert_array_equal(df["CFDCoinTN"], decom_ultra["CFD_FLAG_COINTN"])
89
- np.testing.assert_array_equal(df["CFDCoinBN"], decom_ultra["CFD_FLAG_COINBN"])
90
- np.testing.assert_array_equal(df["CFDCoinTS"], decom_ultra["CFD_FLAG_COINTS"])
91
- np.testing.assert_array_equal(df["CFDCoinBS"], decom_ultra["CFD_FLAG_COINBS"])
92
- np.testing.assert_array_equal(df["CFDCoinD"], decom_ultra["CFD_FLAG_COIND"])
93
- np.testing.assert_array_equal(df["CFDStartRF"], decom_ultra["CFD_FLAG_STARTRF"])
94
- np.testing.assert_array_equal(df["CFDStartLF"], decom_ultra["CFD_FLAG_STARTLF"])
95
- np.testing.assert_array_equal(df["CFDStartRP"], decom_ultra["CFD_FLAG_STARTRP"])
96
- np.testing.assert_array_equal(df["CFDStartLP"], decom_ultra["CFD_FLAG_STARTLP"])
97
- np.testing.assert_array_equal(df["CFDStopTN"], decom_ultra["CFD_FLAG_STOPTN"])
98
- np.testing.assert_array_equal(df["CFDStopBN"], decom_ultra["CFD_FLAG_STOPBN"])
99
- np.testing.assert_array_equal(df["CFDStopTE"], decom_ultra["CFD_FLAG_STOPTE"])
100
- np.testing.assert_array_equal(df["CFDStopBE"], decom_ultra["CFD_FLAG_STOPBE"])
101
- np.testing.assert_array_equal(df["CFDStopTS"], decom_ultra["CFD_FLAG_STOPTS"])
102
- np.testing.assert_array_equal(df["CFDStopBS"], decom_ultra["CFD_FLAG_STOPBS"])
103
- np.testing.assert_array_equal(df["CFDStopTW"], decom_ultra["CFD_FLAG_STOPTW"])
104
- np.testing.assert_array_equal(df["CFDStopBW"], decom_ultra["CFD_FLAG_STOPBW"])
136
+ np.testing.assert_array_equal(
137
+ df["CnT"].values[df["CnT"].values != -1],
138
+ decom_ultra["event_flag_cnt"].values[df["CnT"].values != -1],
139
+ )
140
+ np.testing.assert_array_equal(
141
+ df["PHCmpSL"].values[df["PHCmpSL"].values != -1],
142
+ decom_ultra["event_flag_phcmpsl"].values[df["PHCmpSL"].values != -1],
143
+ )
144
+ np.testing.assert_array_equal(
145
+ df["PHCmpSR"].values[df["PHCmpSR"].values != -1],
146
+ decom_ultra["event_flag_phcmpsr"].values[df["PHCmpSR"].values != -1],
147
+ )
148
+ np.testing.assert_array_equal(
149
+ df["PHCmpCD"].values[df["PHCmpCD"].values != -1],
150
+ decom_ultra["event_flag_phcmpcd"].values[df["PHCmpCD"].values != -1],
151
+ )
152
+ np.testing.assert_array_equal(
153
+ df["SSDS7"].values[df["SSDS7"].values != -1],
154
+ decom_ultra["ssd_flag_7"].values[df["SSDS7"].values != -1],
155
+ )
156
+ np.testing.assert_array_equal(
157
+ df["SSDS6"].values[df["SSDS6"].values != -1],
158
+ decom_ultra["ssd_flag_6"].values[df["SSDS6"].values != -1],
159
+ )
160
+ np.testing.assert_array_equal(
161
+ df["SSDS5"].values[df["SSDS5"].values != -1],
162
+ decom_ultra["ssd_flag_5"].values[df["SSDS5"].values != -1],
163
+ )
164
+ np.testing.assert_array_equal(
165
+ df["SSDS4"].values[df["SSDS4"].values != -1],
166
+ decom_ultra["ssd_flag_4"].values[df["SSDS4"].values != -1],
167
+ )
168
+ np.testing.assert_array_equal(
169
+ df["SSDS3"].values[df["SSDS3"].values != -1],
170
+ decom_ultra["ssd_flag_3"].values[df["SSDS3"].values != -1],
171
+ )
172
+ np.testing.assert_array_equal(
173
+ df["SSDS2"].values[df["SSDS2"].values != -1],
174
+ decom_ultra["ssd_flag_2"].values[df["SSDS2"].values != -1],
175
+ )
176
+ np.testing.assert_array_equal(
177
+ df["SSDS1"].values[df["SSDS1"].values != -1],
178
+ decom_ultra["ssd_flag_1"].values[df["SSDS1"].values != -1],
179
+ )
180
+ np.testing.assert_array_equal(
181
+ df["SSDS0"].values[df["SSDS0"].values != -1],
182
+ decom_ultra["ssd_flag_0"].values[df["SSDS0"].values != -1],
183
+ )
184
+ np.testing.assert_array_equal(
185
+ df["CFDCoinTN"].values[df["CFDCoinTN"].values != -1],
186
+ decom_ultra["cfd_flag_cointn"].values[df["CFDCoinTN"].values != -1],
187
+ )
188
+ np.testing.assert_array_equal(
189
+ df["CFDCoinBN"].values[df["CFDCoinBN"].values != -1],
190
+ decom_ultra["cfd_flag_coinbn"].values[df["CFDCoinBN"].values != -1],
191
+ )
192
+ np.testing.assert_array_equal(
193
+ df["CFDCoinTS"].values[df["CFDCoinTS"].values != -1],
194
+ decom_ultra["cfd_flag_coints"].values[df["CFDCoinTS"].values != -1],
195
+ )
196
+ np.testing.assert_array_equal(
197
+ df["CFDCoinBS"].values[df["CFDCoinBS"].values != -1],
198
+ decom_ultra["cfd_flag_coinbs"].values[df["CFDCoinBS"].values != -1],
199
+ )
200
+ np.testing.assert_array_equal(
201
+ df["CFDCoinD"].values[df["CFDCoinD"].values != -1],
202
+ decom_ultra["cfd_flag_coind"].values[df["CFDCoinD"].values != -1],
203
+ )
204
+ np.testing.assert_array_equal(
205
+ df["CFDStartRF"].values[df["CFDStartRF"].values != -1],
206
+ decom_ultra["cfd_flag_startrf"].values[df["CFDStartRF"].values != -1],
207
+ )
208
+ np.testing.assert_array_equal(
209
+ df["CFDStartLF"].values[df["CFDStartLF"].values != -1],
210
+ decom_ultra["cfd_flag_startlf"].values[df["CFDStartLF"].values != -1],
211
+ )
212
+ np.testing.assert_array_equal(
213
+ df["CFDStartRP"].values[df["CFDStartRP"].values != -1],
214
+ decom_ultra["cfd_flag_startrp"].values[df["CFDStartRP"].values != -1],
215
+ )
216
+ np.testing.assert_array_equal(
217
+ df["CFDStartLP"].values[df["CFDStartLP"].values != -1],
218
+ decom_ultra["cfd_flag_startlp"].values[df["CFDStartLP"].values != -1],
219
+ )
220
+ np.testing.assert_array_equal(
221
+ df["CFDStopTN"].values[df["CFDStopTN"].values != -1],
222
+ decom_ultra["cfd_flag_stoptn"].values[df["CFDStopTN"].values != -1],
223
+ )
224
+ np.testing.assert_array_equal(
225
+ df["CFDStopBN"].values[df["CFDStopBN"].values != -1],
226
+ decom_ultra["cfd_flag_stopbn"].values[df["CFDStopBN"].values != -1],
227
+ )
228
+ np.testing.assert_array_equal(
229
+ df["CFDStopTE"].values[df["CFDStopTE"].values != -1],
230
+ decom_ultra["cfd_flag_stopte"].values[df["CFDStopTE"].values != -1],
231
+ )
232
+ np.testing.assert_array_equal(
233
+ df["CFDStopBE"].values[df["CFDStopBE"].values != -1],
234
+ decom_ultra["cfd_flag_stopbe"].values[df["CFDStopBE"].values != -1],
235
+ )
236
+ np.testing.assert_array_equal(
237
+ df["CFDStopTS"].values[df["CFDStopTS"].values != -1],
238
+ decom_ultra["cfd_flag_stopts"].values[df["CFDStopTS"].values != -1],
239
+ )
240
+ np.testing.assert_array_equal(
241
+ df["CFDStopBS"].values[df["CFDStopBS"].values != -1],
242
+ decom_ultra["cfd_flag_stopbs"].values[df["CFDStopBS"].values != -1],
243
+ )
244
+ np.testing.assert_array_equal(
245
+ df["CFDStopTW"].values[df["CFDStopTW"].values != -1],
246
+ decom_ultra["cfd_flag_stoptw"].values[df["CFDStopTW"].values != -1],
247
+ )
248
+ np.testing.assert_array_equal(
249
+ df["CFDStopBW"].values[df["CFDStopBW"].values != -1],
250
+ decom_ultra["cfd_flag_stopbw"].values[df["CFDStopBW"].values != -1],
251
+ )
@@ -1,9 +1,12 @@
1
1
  import numpy as np
2
2
  import pandas as pd
3
+ import pytest
3
4
 
4
5
  from imap_processing import imap_module_directory
5
6
  from imap_processing.ultra.l1b.lookup_utils import (
7
+ get_angular_profiles,
6
8
  get_back_position,
9
+ get_energy_efficiencies,
7
10
  get_energy_norm,
8
11
  get_image_params,
9
12
  get_norm,
@@ -63,6 +66,25 @@ def test_get_egy_norm():
63
66
  def test_get_image_params():
64
67
  """Tests function get_image_params."""
65
68
 
66
- image_params = get_image_params("XFTLTOFF")
69
+ image_params = get_image_params("XFTLTOFF", "ultra45")
67
70
 
68
71
  assert image_params == 49.3
72
+
73
+
74
+ def test_get_angular_profiles():
75
+ """Tests function get_image_params."""
76
+
77
+ u45_left = get_angular_profiles("left", "ultra45")
78
+ u45_right = get_angular_profiles("right", "ultra45")
79
+
80
+ assert u45_left.shape == (525, 7)
81
+ assert u45_right.shape == (525, 7)
82
+
83
+
84
+ @pytest.mark.external_test_data
85
+ def test_get_energy_efficiencies():
86
+ """Tests function get_get_energy_efficiencies."""
87
+
88
+ u45_efficiencies = get_energy_efficiencies()
89
+
90
+ assert u45_efficiencies.shape == (58081, 157)
@@ -21,8 +21,8 @@ from imap_processing.ultra.l1c.spacecraft_pset import calculate_spacecraft_pset
21
21
  TEST_PATH = imap_module_directory / "tests" / "ultra" / "data" / "l1"
22
22
 
23
23
 
24
- @pytest.mark.external_test_data()
25
- @pytest.mark.external_kernel()
24
+ @pytest.mark.external_test_data
25
+ @pytest.mark.external_kernel
26
26
  @ensure_spice
27
27
  @pytest.mark.use_test_metakernel("imap_ena_sim_metakernel.template")
28
28
  def test_pset():
@@ -30,7 +30,7 @@ def test_pset():
30
30
  # This is just setting up the data so that it is in the format of l1b_de_dataset.
31
31
  test_path = TEST_PATH / "ultra-90_raw_event_data_shortened.csv"
32
32
  df = pd.read_csv(test_path)
33
- instrument_velocity = get_de_velocity(
33
+ instrument_velocity, _, _ = get_de_velocity(
34
34
  (df["Xf"], df["Yf"]), (df["Xb"], df["Yb"]), df["d"], df["TOF"].values
35
35
  )
36
36
 
@@ -71,7 +71,6 @@ def test_pset():
71
71
  test_l1b_de_dataset, # placeholder for extendedspin_dataset
72
72
  test_l1b_de_dataset, # placeholder for cullingmask_dataset
73
73
  "imap_ultra_l1c_45sensor-spacecraftpset",
74
- "001",
75
74
  )
76
75
  assert "healpix" in spacecraft_pset.coords
77
76
  assert "epoch" in spacecraft_pset.coords