imap-processing 0.6.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.
Files changed (398) hide show
  1. imap_processing/__init__.py +34 -0
  2. imap_processing/_version.py +3 -0
  3. imap_processing/ccsds/__init__.py +0 -0
  4. imap_processing/ccsds/ccsds_data.py +55 -0
  5. imap_processing/ccsds/excel_to_xtce.py +477 -0
  6. imap_processing/cdf/__init__.py +0 -0
  7. imap_processing/cdf/cdf_attribute_manager.py +322 -0
  8. imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +212 -0
  9. imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +1358 -0
  10. imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +391 -0
  11. imap_processing/cdf/config/imap_constant_attrs.yaml +33 -0
  12. imap_processing/cdf/config/imap_default_global_cdf_attrs.yaml +17 -0
  13. imap_processing/cdf/config/imap_glows_global_cdf_attrs.yaml +41 -0
  14. imap_processing/cdf/config/imap_glows_l1a_variable_attrs.yaml +499 -0
  15. imap_processing/cdf/config/imap_glows_l1b_variable_attrs.yaml +334 -0
  16. imap_processing/cdf/config/imap_hi_global_cdf_attrs.yaml +51 -0
  17. imap_processing/cdf/config/imap_hi_variable_attrs.yaml +435 -0
  18. imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +27 -0
  19. imap_processing/cdf/config/imap_hit_l1a_variable_attrs.yaml +493 -0
  20. imap_processing/cdf/config/imap_hit_l1b_variable_attrs.yaml +564 -0
  21. imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +24 -0
  22. imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +426 -0
  23. imap_processing/cdf/config/imap_lo_global_cdf_attrs.yaml +90 -0
  24. imap_processing/cdf/config/imap_lo_l1a_variable_attrs.yaml +487 -0
  25. imap_processing/cdf/config/imap_lo_l1b_variable_attrs.yaml +121 -0
  26. imap_processing/cdf/config/imap_lo_l1c_variable_attrs.yaml +179 -0
  27. imap_processing/cdf/config/imap_mag_global_cdf_attrs.yaml +97 -0
  28. imap_processing/cdf/config/imap_mag_l1_variable_attrs.yaml +201 -0
  29. imap_processing/cdf/config/imap_swapi_global_cdf_attrs.yaml +33 -0
  30. imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +137 -0
  31. imap_processing/cdf/config/imap_swe_global_cdf_attrs.yaml +24 -0
  32. imap_processing/cdf/config/imap_swe_l1a_variable_attrs.yaml +234 -0
  33. imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +273 -0
  34. imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +100 -0
  35. imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +52 -0
  36. imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +297 -0
  37. imap_processing/cdf/config/imap_ultra_l1c_variable_attrs.yaml +121 -0
  38. imap_processing/cdf/config/shared/default_global_cdf_attrs_schema.yaml +246 -0
  39. imap_processing/cdf/config/shared/default_variable_cdf_attrs_schema.yaml +466 -0
  40. imap_processing/cdf/imap_cdf_manager.py +64 -0
  41. imap_processing/cdf/utils.py +147 -0
  42. imap_processing/cli.py +863 -0
  43. imap_processing/codice/__init__.py +1 -0
  44. imap_processing/codice/codice_l0.py +54 -0
  45. imap_processing/codice/codice_l1a.py +558 -0
  46. imap_processing/codice/codice_l1b.py +194 -0
  47. imap_processing/codice/constants.py +986 -0
  48. imap_processing/codice/data/esa_sweep_values.csv +257 -0
  49. imap_processing/codice/data/lo_stepping_values.csv +129 -0
  50. imap_processing/codice/decompress.py +142 -0
  51. imap_processing/codice/packet_definitions/P_COD_NHK.xml +618 -0
  52. imap_processing/codice/packet_definitions/codice_packet_definition.xml +5073 -0
  53. imap_processing/codice/utils.py +95 -0
  54. imap_processing/decom.py +40 -0
  55. imap_processing/glows/__init__.py +1 -0
  56. imap_processing/glows/ancillary/l1b_conversion_table_v001.json +42 -0
  57. imap_processing/glows/l0/__init__.py +0 -0
  58. imap_processing/glows/l0/decom_glows.py +91 -0
  59. imap_processing/glows/l0/glows_l0_data.py +194 -0
  60. imap_processing/glows/l1a/glows_l1a.py +424 -0
  61. imap_processing/glows/l1a/glows_l1a_data.py +555 -0
  62. imap_processing/glows/l1b/glows_l1b.py +270 -0
  63. imap_processing/glows/l1b/glows_l1b_data.py +583 -0
  64. imap_processing/glows/packet_definitions/GLX_COMBINED.xml +254 -0
  65. imap_processing/glows/packet_definitions/P_GLX_TMSCDE.xml +97 -0
  66. imap_processing/glows/packet_definitions/P_GLX_TMSCHIST.xml +215 -0
  67. imap_processing/glows/utils/__init__.py +0 -0
  68. imap_processing/glows/utils/constants.py +105 -0
  69. imap_processing/hi/__init__.py +1 -0
  70. imap_processing/hi/l0/__init__.py +0 -0
  71. imap_processing/hi/l0/decom_hi.py +24 -0
  72. imap_processing/hi/l1a/__init__.py +0 -0
  73. imap_processing/hi/l1a/hi_l1a.py +73 -0
  74. imap_processing/hi/l1a/histogram.py +142 -0
  75. imap_processing/hi/l1a/housekeeping.py +27 -0
  76. imap_processing/hi/l1a/science_direct_event.py +341 -0
  77. imap_processing/hi/l1b/__init__.py +0 -0
  78. imap_processing/hi/l1b/hi_eng_unit_convert_table.csv +154 -0
  79. imap_processing/hi/l1b/hi_l1b.py +127 -0
  80. imap_processing/hi/l1c/__init__.py +0 -0
  81. imap_processing/hi/l1c/hi_l1c.py +228 -0
  82. imap_processing/hi/packet_definitions/__init__.py +0 -0
  83. imap_processing/hi/packet_definitions/hi_packet_definition.xml +482 -0
  84. imap_processing/hi/utils.py +27 -0
  85. imap_processing/hit/__init__.py +1 -0
  86. imap_processing/hit/l0/__init__.py +0 -0
  87. imap_processing/hit/l0/data_classes/housekeeping.py +240 -0
  88. imap_processing/hit/l0/data_classes/science_packet.py +259 -0
  89. imap_processing/hit/l0/decom_hit.py +467 -0
  90. imap_processing/hit/l0/utils/hit_base.py +57 -0
  91. imap_processing/hit/l1a/__init__.py +0 -0
  92. imap_processing/hit/l1a/hit_l1a.py +254 -0
  93. imap_processing/hit/l1b/hit_l1b.py +179 -0
  94. imap_processing/hit/packet_definitions/hit_packet_definitions.xml +1276 -0
  95. imap_processing/ialirt/__init__.py +0 -0
  96. imap_processing/ialirt/l0/__init__.py +0 -0
  97. imap_processing/ialirt/l0/process_hit.py +220 -0
  98. imap_processing/ialirt/packet_definitions/__init__.py +0 -0
  99. imap_processing/ialirt/packet_definitions/ialirt.xml +778 -0
  100. imap_processing/ialirt/packet_definitions/ialirt_hit.xml +186 -0
  101. imap_processing/idex/__init__.py +2 -0
  102. imap_processing/idex/idex_constants.py +27 -0
  103. imap_processing/idex/idex_l0.py +31 -0
  104. imap_processing/idex/idex_l1a.py +631 -0
  105. imap_processing/idex/packet_definitions/idex_packet_definition.xml +3162 -0
  106. imap_processing/lo/__init__.py +1 -0
  107. imap_processing/lo/l0/__init__.py +0 -0
  108. imap_processing/lo/l0/data_classes/science_direct_events.py +215 -0
  109. imap_processing/lo/l0/data_classes/star_sensor.py +98 -0
  110. imap_processing/lo/l0/decompression_tables/12_to_16_bit.csv +4097 -0
  111. imap_processing/lo/l0/decompression_tables/8_to_12_bit.csv +257 -0
  112. imap_processing/lo/l0/decompression_tables/8_to_16_bit.csv +257 -0
  113. imap_processing/lo/l0/decompression_tables/decompression_tables.py +75 -0
  114. imap_processing/lo/l0/lo_apid.py +15 -0
  115. imap_processing/lo/l0/lo_science.py +150 -0
  116. imap_processing/lo/l0/utils/binary_string.py +59 -0
  117. imap_processing/lo/l0/utils/bit_decompression.py +62 -0
  118. imap_processing/lo/l0/utils/lo_base.py +57 -0
  119. imap_processing/lo/l1a/__init__.py +0 -0
  120. imap_processing/lo/l1a/lo_l1a.py +157 -0
  121. imap_processing/lo/l1b/lo_l1b.py +160 -0
  122. imap_processing/lo/l1c/lo_l1c.py +180 -0
  123. imap_processing/lo/packet_definitions/lo_xtce.xml +3541 -0
  124. imap_processing/mag/__init__.py +2 -0
  125. imap_processing/mag/constants.py +108 -0
  126. imap_processing/mag/l0/decom_mag.py +170 -0
  127. imap_processing/mag/l0/mag_l0_data.py +118 -0
  128. imap_processing/mag/l1a/mag_l1a.py +317 -0
  129. imap_processing/mag/l1a/mag_l1a_data.py +1007 -0
  130. imap_processing/mag/l1b/__init__.py +0 -0
  131. imap_processing/mag/l1b/imap_calibration_mag_20240229_v01.cdf +0 -0
  132. imap_processing/mag/l1b/mag_l1b.py +125 -0
  133. imap_processing/mag/l1c/mag_l1c.py +57 -0
  134. imap_processing/mag/packet_definitions/MAG_SCI_COMBINED.xml +235 -0
  135. imap_processing/quality_flags.py +91 -0
  136. imap_processing/spice/__init__.py +1 -0
  137. imap_processing/spice/geometry.py +322 -0
  138. imap_processing/spice/kernels.py +459 -0
  139. imap_processing/spice/time.py +72 -0
  140. imap_processing/swapi/__init__.py +1 -0
  141. imap_processing/swapi/l1/__init__.py +0 -0
  142. imap_processing/swapi/l1/swapi_l1.py +685 -0
  143. imap_processing/swapi/l2/__init__.py +0 -0
  144. imap_processing/swapi/l2/swapi_l2.py +107 -0
  145. imap_processing/swapi/packet_definitions/__init__.py +0 -0
  146. imap_processing/swapi/packet_definitions/swapi_packet_definition.xml +708 -0
  147. imap_processing/swapi/swapi_utils.py +25 -0
  148. imap_processing/swe/__init__.py +1 -0
  149. imap_processing/swe/l1a/__init__.py +0 -0
  150. imap_processing/swe/l1a/swe_l1a.py +48 -0
  151. imap_processing/swe/l1a/swe_science.py +223 -0
  152. imap_processing/swe/l1b/engineering_unit_convert_table.csv +65 -0
  153. imap_processing/swe/l1b/swe_esa_lookup_table.csv +1441 -0
  154. imap_processing/swe/l1b/swe_l1b.py +49 -0
  155. imap_processing/swe/l1b/swe_l1b_science.py +557 -0
  156. imap_processing/swe/packet_definitions/__init__.py +0 -0
  157. imap_processing/swe/packet_definitions/swe_packet_definition.xml +303 -0
  158. imap_processing/swe/utils/__init__.py +0 -0
  159. imap_processing/swe/utils/swe_utils.py +9 -0
  160. imap_processing/tests/__init__.py +0 -0
  161. imap_processing/tests/ccsds/test_data/expected_output.xml +171 -0
  162. imap_processing/tests/ccsds/test_excel_to_xtce.py +285 -0
  163. imap_processing/tests/cdf/__init__.py +0 -0
  164. imap_processing/tests/cdf/imap_default_global_cdf_attrs.yaml +8 -0
  165. imap_processing/tests/cdf/shared/default_global_cdf_attrs_schema.yaml +246 -0
  166. imap_processing/tests/cdf/shared/default_variable_cdf_attrs_schema.yaml +466 -0
  167. imap_processing/tests/cdf/test_cdf_attribute_manager.py +353 -0
  168. imap_processing/tests/cdf/test_data/imap_default_global_test_cdf_attrs.yaml +7 -0
  169. imap_processing/tests/cdf/test_data/imap_instrument1_global_cdf_attrs.yaml +14 -0
  170. imap_processing/tests/cdf/test_data/imap_instrument1_level1_variable_attrs.yaml +23 -0
  171. imap_processing/tests/cdf/test_data/imap_instrument2_global_cdf_attrs.yaml +23 -0
  172. imap_processing/tests/cdf/test_data/imap_instrument2_level2_variable_attrs.yaml +30 -0
  173. imap_processing/tests/cdf/test_data/imap_test_global.yaml +26 -0
  174. imap_processing/tests/cdf/test_data/imap_test_variable.yaml +41 -0
  175. imap_processing/tests/cdf/test_imap_cdf_manager.py +62 -0
  176. imap_processing/tests/cdf/test_utils.py +109 -0
  177. imap_processing/tests/codice/__init__.py +0 -0
  178. imap_processing/tests/codice/conftest.py +56 -0
  179. imap_processing/tests/codice/data/eu_unit_lookup_table.csv +101 -0
  180. imap_processing/tests/codice/data/idle_export_eu.COD_NHK_20230822_122700 2.csv +100 -0
  181. imap_processing/tests/codice/data/idle_export_raw.COD_NHK_20230822_122700.csv +100 -0
  182. imap_processing/tests/codice/data/imap_codice_l0_hi-counters-aggregated_20240429_v001.pkts +0 -0
  183. imap_processing/tests/codice/data/imap_codice_l0_hi-counters-singles_20240429_v001.pkts +0 -0
  184. imap_processing/tests/codice/data/imap_codice_l0_hi-omni_20240429_v001.pkts +0 -0
  185. imap_processing/tests/codice/data/imap_codice_l0_hi-pha_20240429_v001.pkts +0 -0
  186. imap_processing/tests/codice/data/imap_codice_l0_hi-sectored_20240429_v001.pkts +0 -0
  187. imap_processing/tests/codice/data/imap_codice_l0_hskp_20100101_v001.pkts +0 -0
  188. imap_processing/tests/codice/data/imap_codice_l0_lo-counters-aggregated_20240429_v001.pkts +0 -0
  189. imap_processing/tests/codice/data/imap_codice_l0_lo-counters-singles_20240429_v001.pkts +0 -0
  190. imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-angular_20240429_v001.pkts +0 -0
  191. imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-priority_20240429_v001.pkts +0 -0
  192. imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-species_20240429_v001.pkts +0 -0
  193. imap_processing/tests/codice/data/imap_codice_l0_lo-pha_20240429_v001.pkts +0 -0
  194. imap_processing/tests/codice/data/imap_codice_l0_lo-sw-angular_20240429_v001.pkts +0 -0
  195. imap_processing/tests/codice/data/imap_codice_l0_lo-sw-priority_20240429_v001.pkts +0 -0
  196. imap_processing/tests/codice/data/imap_codice_l0_lo-sw-species_20240429_v001.pkts +0 -0
  197. imap_processing/tests/codice/data/imap_codice_l1a_hi-counters-aggregated_20240429_v001.cdf +0 -0
  198. imap_processing/tests/codice/data/imap_codice_l1a_hi-counters-singles_20240429_v001.cdf +0 -0
  199. imap_processing/tests/codice/data/imap_codice_l1a_hi-omni_20240429_v001.cdf +0 -0
  200. imap_processing/tests/codice/data/imap_codice_l1a_hi-sectored_20240429_v001.cdf +0 -0
  201. imap_processing/tests/codice/data/imap_codice_l1a_hskp_20100101_v001.cdf +0 -0
  202. imap_processing/tests/codice/data/imap_codice_l1a_lo-counters-aggregated_20240429_v001.cdf +0 -0
  203. imap_processing/tests/codice/data/imap_codice_l1a_lo-counters-singles_20240429_v001.cdf +0 -0
  204. imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-angular_20240429_v001.cdf +0 -0
  205. imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-priority_20240429_v001.cdf +0 -0
  206. imap_processing/tests/codice/data/imap_codice_l1a_lo-nsw-species_20240429_v001.cdf +0 -0
  207. imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-angular_20240429_v001.cdf +0 -0
  208. imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-priority_20240429_v001.cdf +0 -0
  209. imap_processing/tests/codice/data/imap_codice_l1a_lo-sw-species_20240429_v001.cdf +0 -0
  210. imap_processing/tests/codice/data/imap_codice_l1b_hi-counters-aggregated_20240429_v001.cdf +0 -0
  211. imap_processing/tests/codice/data/imap_codice_l1b_hi-counters-singles_20240429_v001.cdf +0 -0
  212. imap_processing/tests/codice/data/imap_codice_l1b_hi-omni_20240429_v001.cdf +0 -0
  213. imap_processing/tests/codice/data/imap_codice_l1b_hi-sectored_20240429_v001.cdf +0 -0
  214. imap_processing/tests/codice/data/imap_codice_l1b_hskp_20100101_v001.cdf +0 -0
  215. imap_processing/tests/codice/data/imap_codice_l1b_lo-counters-aggregated_20240429_v001.cdf +0 -0
  216. imap_processing/tests/codice/data/imap_codice_l1b_lo-counters-singles_20240429_v001.cdf +0 -0
  217. imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-angular_20240429_v001.cdf +0 -0
  218. imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-priority_20240429_v001.cdf +0 -0
  219. imap_processing/tests/codice/data/imap_codice_l1b_lo-nsw-species_20240429_v001.cdf +0 -0
  220. imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-angular_20240429_v001.cdf +0 -0
  221. imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-priority_20240429_v001.cdf +0 -0
  222. imap_processing/tests/codice/data/imap_codice_l1b_lo-sw-species_20240429_v001.cdf +0 -0
  223. imap_processing/tests/codice/test_codice_l0.py +144 -0
  224. imap_processing/tests/codice/test_codice_l1a.py +187 -0
  225. imap_processing/tests/codice/test_codice_l1b.py +60 -0
  226. imap_processing/tests/codice/test_decompress.py +50 -0
  227. imap_processing/tests/conftest.py +372 -0
  228. imap_processing/tests/glows/direct_events_validation_data_l1a.csv +5704 -0
  229. imap_processing/tests/glows/glows_test_packet_20110921_v01.pkts +0 -0
  230. imap_processing/tests/glows/test_glows_decom.py +133 -0
  231. imap_processing/tests/glows/test_glows_l1a_cdf.py +85 -0
  232. imap_processing/tests/glows/test_glows_l1a_data.py +510 -0
  233. imap_processing/tests/glows/test_glows_l1b.py +348 -0
  234. imap_processing/tests/glows/test_glows_l1b_data.py +70 -0
  235. imap_processing/tests/hi/__init__.py +0 -0
  236. imap_processing/tests/hi/conftest.py +133 -0
  237. imap_processing/tests/hi/test_data/l0/20231030_H45_APP_NHK.bin +0 -0
  238. imap_processing/tests/hi/test_data/l0/20231030_H45_APP_NHK.csv +201 -0
  239. imap_processing/tests/hi/test_data/l0/20231030_H45_SCI_CNT.bin +0 -0
  240. imap_processing/tests/hi/test_data/l0/20231030_H45_SCI_DE.bin +0 -0
  241. imap_processing/tests/hi/test_data/l0/README.txt +54 -0
  242. imap_processing/tests/hi/test_decom.py +55 -0
  243. imap_processing/tests/hi/test_hi_l1b.py +31 -0
  244. imap_processing/tests/hi/test_hi_l1c.py +69 -0
  245. imap_processing/tests/hi/test_l1a.py +96 -0
  246. imap_processing/tests/hi/test_l1a_sci_de.py +72 -0
  247. imap_processing/tests/hi/test_utils.py +15 -0
  248. imap_processing/tests/hit/PREFLIGHT_raw_record_2023_256_15_59_04_apid1251.pkts +0 -0
  249. imap_processing/tests/hit/PREFLIGHT_raw_record_2023_256_15_59_04_apid1252.pkts +0 -0
  250. imap_processing/tests/hit/__init__.py +0 -0
  251. imap_processing/tests/hit/test_data/imap_hit_l0_hk_20100105_v001.pkts +0 -0
  252. imap_processing/tests/hit/test_data/sci_sample.ccsds +0 -0
  253. imap_processing/tests/hit/test_hit_decom.py +230 -0
  254. imap_processing/tests/hit/test_hit_l1a.py +224 -0
  255. imap_processing/tests/hit/test_hit_l1b.py +52 -0
  256. imap_processing/tests/hit/validation_data/hskp_sample_raw.csv +88 -0
  257. imap_processing/tests/ialirt/__init__.py +0 -0
  258. imap_processing/tests/ialirt/test_data/l0/IALiRT Raw Packet Telemetry.txt +33 -0
  259. imap_processing/tests/ialirt/test_data/l0/hit_ialirt_sample.ccsds +0 -0
  260. imap_processing/tests/ialirt/test_data/l0/hit_ialirt_sample.csv +1001 -0
  261. imap_processing/tests/ialirt/unit/__init__.py +0 -0
  262. imap_processing/tests/ialirt/unit/test_decom_ialirt.py +94 -0
  263. imap_processing/tests/ialirt/unit/test_process_hit.py +226 -0
  264. imap_processing/tests/idex/__init__.py +0 -0
  265. imap_processing/tests/idex/conftest.py +22 -0
  266. imap_processing/tests/idex/imap_idex_l0_raw_20230725_v001.pkts +0 -0
  267. imap_processing/tests/idex/impact_14_tof_high_data.txt +8189 -0
  268. imap_processing/tests/idex/test_idex_l0.py +45 -0
  269. imap_processing/tests/idex/test_idex_l1a.py +91 -0
  270. imap_processing/tests/lo/__init__.py +0 -0
  271. imap_processing/tests/lo/test_binary_string.py +21 -0
  272. imap_processing/tests/lo/test_bit_decompression.py +39 -0
  273. imap_processing/tests/lo/test_cdfs/imap_lo_l0_raw_20240627_v001.pkts +0 -0
  274. imap_processing/tests/lo/test_cdfs/imap_lo_l1a_de_20100101_v001.cdf +0 -0
  275. imap_processing/tests/lo/test_cdfs/imap_lo_l1a_spin_20100101_v001.cdf +0 -0
  276. imap_processing/tests/lo/test_cdfs/imap_lo_l1b_de_20100101_v001.cdf +0 -0
  277. imap_processing/tests/lo/test_lo_l1a.py +66 -0
  278. imap_processing/tests/lo/test_lo_l1b.py +74 -0
  279. imap_processing/tests/lo/test_lo_l1c.py +66 -0
  280. imap_processing/tests/lo/test_science_counts.py +41 -0
  281. imap_processing/tests/lo/test_science_direct_events.py +209 -0
  282. imap_processing/tests/lo/test_star_sensor.py +35 -0
  283. imap_processing/tests/mag/imap_mag_l1a_burst-magi_20231025_v001.cdf +0 -0
  284. imap_processing/tests/mag/mag_l0_test_data.pkts +0 -0
  285. imap_processing/tests/mag/mag_l0_test_output.csv +37 -0
  286. imap_processing/tests/mag/mag_l1_test_data.pkts +0 -0
  287. imap_processing/tests/mag/mag_l1a_test_output.csv +97 -0
  288. imap_processing/tests/mag/test_mag_decom.py +117 -0
  289. imap_processing/tests/mag/test_mag_l1a.py +856 -0
  290. imap_processing/tests/mag/test_mag_l1b.py +77 -0
  291. imap_processing/tests/mag/test_mag_l1c.py +40 -0
  292. imap_processing/tests/spice/__init__.py +0 -0
  293. imap_processing/tests/spice/test_data/imap_ena_sim_metakernel.template +4 -0
  294. imap_processing/tests/spice/test_data/imap_science_0001.tf +171 -0
  295. imap_processing/tests/spice/test_data/imap_sclk_0000.tsc +156 -0
  296. imap_processing/tests/spice/test_data/imap_sim_ck_2hr_2secsampling_with_nutation.bc +0 -0
  297. imap_processing/tests/spice/test_data/imap_simple_metakernel.template +3 -0
  298. imap_processing/tests/spice/test_data/imap_spk_demo.bsp +0 -0
  299. imap_processing/tests/spice/test_data/imap_wkcp.tf +1806 -0
  300. imap_processing/tests/spice/test_data/naif0012.tls +150 -0
  301. imap_processing/tests/spice/test_data/sim_1yr_imap_attitude.bc +0 -0
  302. imap_processing/tests/spice/test_data/sim_1yr_imap_pointing_frame.bc +0 -0
  303. imap_processing/tests/spice/test_geometry.py +214 -0
  304. imap_processing/tests/spice/test_kernels.py +272 -0
  305. imap_processing/tests/spice/test_time.py +35 -0
  306. imap_processing/tests/swapi/__init__.py +0 -0
  307. imap_processing/tests/swapi/conftest.py +16 -0
  308. imap_processing/tests/swapi/l0_data/__init__.py +0 -0
  309. imap_processing/tests/swapi/l0_data/imap_swapi_l0_raw_20231012_v001.pkts +0 -0
  310. imap_processing/tests/swapi/l0_validation_data/__init__.py +0 -0
  311. imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_AUT_20231012_125245.csv +124 -0
  312. imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_HK_20231012_125245.csv +98 -0
  313. imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_MG_20231012_125245.csv +9 -0
  314. imap_processing/tests/swapi/l0_validation_data/idle_export_eu.SWP_SCI_20231012_125245.csv +72 -0
  315. imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_AUT_20231012_125245.csv +124 -0
  316. imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_HK_20231012_125245.csv +98 -0
  317. imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_MG_20231012_125245.csv +9 -0
  318. imap_processing/tests/swapi/l0_validation_data/idle_export_raw.SWP_SCI_20231012_125245.csv +72 -0
  319. imap_processing/tests/swapi/test_swapi_decom.py +135 -0
  320. imap_processing/tests/swapi/test_swapi_l1.py +354 -0
  321. imap_processing/tests/swapi/test_swapi_l2.py +21 -0
  322. imap_processing/tests/swe/__init__.py +0 -0
  323. imap_processing/tests/swe/conftest.py +35 -0
  324. imap_processing/tests/swe/decompressed/20230927173238_4th_quarter_decompressed.csv +181 -0
  325. imap_processing/tests/swe/decompressed/20230927173253_1st_quarter_decompressed.csv +181 -0
  326. imap_processing/tests/swe/decompressed/20230927173308_2nd_quarter_decompressed.csv +181 -0
  327. imap_processing/tests/swe/decompressed/20230927173323_3rd_quarter_decompressed.csv +181 -0
  328. imap_processing/tests/swe/l0_data/2024051010_SWE_SCIENCE_packet.bin +0 -0
  329. imap_processing/tests/swe/l0_validation_data/idle_export_eu.SWE_SCIENCE_20240510_092742.csv +544 -0
  330. imap_processing/tests/swe/l0_validation_data/idle_export_raw.SWE_SCIENCE_20240510_092742.csv +363 -0
  331. imap_processing/tests/swe/test_swe_l1a.py +12 -0
  332. imap_processing/tests/swe/test_swe_l1a_science.py +129 -0
  333. imap_processing/tests/swe/test_swe_l1b.py +61 -0
  334. imap_processing/tests/swe/test_swe_l1b_science.py +65 -0
  335. imap_processing/tests/test_cli.py +229 -0
  336. imap_processing/tests/test_decom.py +66 -0
  337. imap_processing/tests/test_quality_flags.py +71 -0
  338. imap_processing/tests/test_utils.py +107 -0
  339. imap_processing/tests/ultra/__init__.py +0 -0
  340. imap_processing/tests/ultra/test_data/l0/FM45_40P_Phi28p5_BeamCal_LinearScan_phi28.50_theta-0.00_20240207T102740.CCSDS +0 -0
  341. imap_processing/tests/ultra/test_data/l0/FM45_7P_Phi0.0_BeamCal_LinearScan_phi0.04_theta-0.01_20230821T121304.CCSDS +0 -0
  342. imap_processing/tests/ultra/test_data/l0/FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.CCSDS +0 -0
  343. imap_processing/tests/ultra/test_data/l0/Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.CCSDS +0 -0
  344. imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_auxdata_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +24 -0
  345. imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_enaphxtofhangimg_FM45_TV_Cycle6_Hot_Ops_Front212_20240124T063837.csv +105 -0
  346. imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_ultraimgrates_Ultra45_EM_SwRI_Cal_Run7_ThetaScan_20220530T225054.csv +24 -0
  347. imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_ultrarawimg_withFSWcalcs_FM45_40P_Phi28p5_BeamCal_LinearScan_phi2850_theta-000_20240207T102740.csv +3314 -0
  348. imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_ultrarawimgevent_FM45_7P_Phi00_BeamCal_LinearScan_phi004_theta-001_20230821T121304.csv +702 -0
  349. imap_processing/tests/ultra/unit/__init__.py +0 -0
  350. imap_processing/tests/ultra/unit/conftest.py +210 -0
  351. imap_processing/tests/ultra/unit/test_decom_apid_880.py +98 -0
  352. imap_processing/tests/ultra/unit/test_decom_apid_881.py +50 -0
  353. imap_processing/tests/ultra/unit/test_decom_apid_883.py +44 -0
  354. imap_processing/tests/ultra/unit/test_decom_apid_896.py +104 -0
  355. imap_processing/tests/ultra/unit/test_lookup_utils.py +68 -0
  356. imap_processing/tests/ultra/unit/test_ultra_l1a.py +338 -0
  357. imap_processing/tests/ultra/unit/test_ultra_l1b.py +122 -0
  358. imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +57 -0
  359. imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +342 -0
  360. imap_processing/tests/ultra/unit/test_ultra_l1c.py +104 -0
  361. imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +35 -0
  362. imap_processing/ultra/__init__.py +1 -0
  363. imap_processing/ultra/constants.py +60 -0
  364. imap_processing/ultra/l0/__init__.py +0 -0
  365. imap_processing/ultra/l0/decom_tools.py +281 -0
  366. imap_processing/ultra/l0/decom_ultra.py +278 -0
  367. imap_processing/ultra/l0/ultra_utils.py +326 -0
  368. imap_processing/ultra/l1a/__init__.py +0 -0
  369. imap_processing/ultra/l1a/ultra_l1a.py +319 -0
  370. imap_processing/ultra/l1b/badtimes.py +26 -0
  371. imap_processing/ultra/l1b/cullingmask.py +26 -0
  372. imap_processing/ultra/l1b/de.py +59 -0
  373. imap_processing/ultra/l1b/extendedspin.py +45 -0
  374. imap_processing/ultra/l1b/lookup_utils.py +165 -0
  375. imap_processing/ultra/l1b/ultra_l1b.py +65 -0
  376. imap_processing/ultra/l1b/ultra_l1b_annotated.py +54 -0
  377. imap_processing/ultra/l1b/ultra_l1b_extended.py +764 -0
  378. imap_processing/ultra/l1c/histogram.py +36 -0
  379. imap_processing/ultra/l1c/pset.py +36 -0
  380. imap_processing/ultra/l1c/ultra_l1c.py +52 -0
  381. imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +54 -0
  382. imap_processing/ultra/lookup_tables/EgyNorm.mem.csv +32769 -0
  383. imap_processing/ultra/lookup_tables/FM45_Startup1_ULTRA_IMGPARAMS_20240719.csv +2 -0
  384. imap_processing/ultra/lookup_tables/ultra45_back-pos-luts.csv +4097 -0
  385. imap_processing/ultra/lookup_tables/ultra45_tdc_norm.csv +2050 -0
  386. imap_processing/ultra/lookup_tables/ultra90_back-pos-luts.csv +4097 -0
  387. imap_processing/ultra/lookup_tables/ultra90_tdc_norm.csv +2050 -0
  388. imap_processing/ultra/lookup_tables/yadjust.csv +257 -0
  389. imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +547 -0
  390. imap_processing/ultra/packet_definitions/__init__.py +0 -0
  391. imap_processing/ultra/utils/__init__.py +0 -0
  392. imap_processing/ultra/utils/ultra_l1_utils.py +50 -0
  393. imap_processing/utils.py +413 -0
  394. imap_processing-0.6.0.dist-info/LICENSE +21 -0
  395. imap_processing-0.6.0.dist-info/METADATA +107 -0
  396. imap_processing-0.6.0.dist-info/RECORD +398 -0
  397. imap_processing-0.6.0.dist-info/WHEEL +4 -0
  398. imap_processing-0.6.0.dist-info/entry_points.txt +4 -0
@@ -0,0 +1,257 @@
1
+ table_idx,e_step,esa_v,esa_v_raw
2
+ 0,0,14100,4095
3
+ 0,1,13546,3934
4
+ 0,2,13015,3780
5
+ 0,3,12506,3632
6
+ 0,4,12017,3490
7
+ 0,5,11545,3353
8
+ 0,6,11091,3221
9
+ 0,7,10657,3095
10
+ 0,8,10240,2974
11
+ 0,9,9837,2857
12
+ 0,10,9455,2746
13
+ 0,11,9083,2638
14
+ 0,12,8729,2535
15
+ 0,13,8384,2435
16
+ 0,14,8057,2340
17
+ 0,15,7740,2248
18
+ 0,16,7437,2160
19
+ 0,17,7145,2075
20
+ 0,18,6866,1994
21
+ 0,19,6597,1916
22
+ 0,20,6339,1841
23
+ 0,21,6091,1769
24
+ 0,22,5850,1699
25
+ 0,23,5623,1633
26
+ 0,24,5402,1569
27
+ 0,25,5189,1507
28
+ 0,26,4986,1448
29
+ 0,27,4793,1392
30
+ 0,28,4604,1337
31
+ 0,29,4425,1285
32
+ 0,30,4249,1234
33
+ 0,31,4084,1186
34
+ 0,32,3922,1139
35
+ 0,33,3770,1095
36
+ 0,34,3622,1052
37
+ 0,35,3481,1011
38
+ 0,36,3343,971
39
+ 0,37,3213,933
40
+ 0,38,3085,896
41
+ 0,39,2965,861
42
+ 0,40,2851,828
43
+ 0,41,2737,795
44
+ 0,42,2631,764
45
+ 0,43,2527,734
46
+ 0,44,2427,705
47
+ 0,45,2335,678
48
+ 0,46,2242,651
49
+ 0,47,2152,625
50
+ 0,48,2069,601
51
+ 0,49,1987,577
52
+ 0,50,1911,555
53
+ 0,51,1835,533
54
+ 0,52,1763,512
55
+ 0,53,1694,492
56
+ 0,54,1629,473
57
+ 0,55,1563,454
58
+ 0,56,1501,436
59
+ 0,57,1443,419
60
+ 0,58,1388,403
61
+ 0,59,1333,387
62
+ 0,60,1281,372
63
+ 0,61,1229,357
64
+ 0,62,1181,343
65
+ 0,63,1136,330
66
+ 0,64,1092,317
67
+ 0,65,1047,304
68
+ 0,66,1005,292
69
+ 0,67,968,281
70
+ 0,68,930,270
71
+ 0,69,892,259
72
+ 0,70,857,249
73
+ 0,71,823,239
74
+ 0,72,792,230
75
+ 0,73,763,221
76
+ 0,74,733,213
77
+ 0,75,704,204
78
+ 0,76,676,196
79
+ 0,77,650,189
80
+ 0,78,624,181
81
+ 0,79,600,174
82
+ 0,80,576,167
83
+ 0,81,554,161
84
+ 0,82,532,155
85
+ 0,83,511,149
86
+ 0,84,491,143
87
+ 0,85,472,137
88
+ 0,86,453,132
89
+ 0,87,436,127
90
+ 0,88,419,122
91
+ 0,89,402,117
92
+ 0,90,386,112
93
+ 0,91,371,108
94
+ 0,92,357,104
95
+ 0,93,343,100
96
+ 0,94,329,96
97
+ 0,95,316,92
98
+ 0,96,304,88
99
+ 0,97,292,85
100
+ 0,98,281,82
101
+ 0,99,270,78
102
+ 0,100,259,75
103
+ 0,101,249,72
104
+ 0,102,239,69
105
+ 0,103,230,67
106
+ 0,104,221,64
107
+ 0,105,212,62
108
+ 0,106,204,59
109
+ 0,107,196,57
110
+ 0,108,188,55
111
+ 0,109,181,53
112
+ 0,110,174,50
113
+ 0,111,167,48
114
+ 0,112,160,47
115
+ 0,113,154,45
116
+ 0,114,148,43
117
+ 0,115,142,41
118
+ 0,116,137,40
119
+ 0,117,131,38
120
+ 0,118,126,37
121
+ 0,119,121,35
122
+ 0,120,116,34
123
+ 0,121,112,33
124
+ 0,122,107,31
125
+ 0,123,103,30
126
+ 0,124,99,29
127
+ 0,125,95,28
128
+ 0,126,92,27
129
+ 0,127,88,26
130
+ 1,0,88,26
131
+ 1,1,92,27
132
+ 1,2,95,28
133
+ 1,3,99,29
134
+ 1,4,103,30
135
+ 1,5,108,31
136
+ 1,6,112,33
137
+ 1,7,117,34
138
+ 1,8,121,35
139
+ 1,9,126,37
140
+ 1,10,131,38
141
+ 1,11,137,40
142
+ 1,12,142,41
143
+ 1,13,148,43
144
+ 1,14,154,45
145
+ 1,15,160,46
146
+ 1,16,167,49
147
+ 1,17,174,51
148
+ 1,18,181,53
149
+ 1,19,188,55
150
+ 1,20,196,57
151
+ 1,21,204,59
152
+ 1,22,212,62
153
+ 1,23,221,64
154
+ 1,24,230,67
155
+ 1,25,239,69
156
+ 1,26,249,72
157
+ 1,27,259,75
158
+ 1,28,270,78
159
+ 1,29,281,82
160
+ 1,30,292,85
161
+ 1,31,304,88
162
+ 1,32,317,92
163
+ 1,33,329,96
164
+ 1,34,343,100
165
+ 1,35,357,104
166
+ 1,36,371,108
167
+ 1,37,387,112
168
+ 1,38,402,117
169
+ 1,39,419,122
170
+ 1,40,436,127
171
+ 1,41,454,132
172
+ 1,42,472,137
173
+ 1,43,491,143
174
+ 1,44,511,148
175
+ 1,45,532,155
176
+ 1,46,554,161
177
+ 1,47,576,167
178
+ 1,48,600,174
179
+ 1,49,624,181
180
+ 1,50,650,189
181
+ 1,51,676,196
182
+ 1,52,704,204
183
+ 1,53,733,213
184
+ 1,54,763,222
185
+ 1,55,794,231
186
+ 1,56,826,240
187
+ 1,57,860,250
188
+ 1,58,895,260
189
+ 1,59,931,270
190
+ 1,60,969,281
191
+ 1,61,1009,293
192
+ 1,62,1050,305
193
+ 1,63,1093,317
194
+ 1,64,1137,330
195
+ 1,65,1184,344
196
+ 1,66,1232,358
197
+ 1,67,1282,372
198
+ 1,68,1334,387
199
+ 1,69,1389,403
200
+ 1,70,1445,420
201
+ 1,71,1504,437
202
+ 1,72,1566,455
203
+ 1,73,1629,473
204
+ 1,74,1696,493
205
+ 1,75,1765,513
206
+ 1,76,1837,534
207
+ 1,77,1912,555
208
+ 1,78,1990,578
209
+ 1,79,2071,601
210
+ 1,80,2155,626
211
+ 1,81,2243,651
212
+ 1,82,2335,678
213
+ 1,83,2430,706
214
+ 1,84,2529,734
215
+ 1,85,2632,764
216
+ 1,86,2739,795
217
+ 1,87,2851,828
218
+ 1,88,2967,862
219
+ 1,89,3088,897
220
+ 1,90,3214,933
221
+ 1,91,3345,971
222
+ 1,92,3482,1011
223
+ 1,93,3624,1053
224
+ 1,94,3771,1095
225
+ 1,95,3925,1140
226
+ 1,96,4085,1186
227
+ 1,97,4252,1235
228
+ 1,98,4425,1285
229
+ 1,99,4605,1337
230
+ 1,10,4793,1392
231
+ 1,10,4989,1449
232
+ 1,10,5192,1508
233
+ 1,10,5404,1569
234
+ 1,10,5624,1633
235
+ 1,10,5853,1700
236
+ 1,10,6092,1769
237
+ 1,10,6340,1841
238
+ 1,10,6599,1917
239
+ 1,10,6868,1995
240
+ 1,11,7148,2076
241
+ 1,11,7439,2160
242
+ 1,11,7743,2249
243
+ 1,11,8058,2340
244
+ 1,11,8387,2436
245
+ 1,11,8729,2535
246
+ 1,11,9085,2639
247
+ 1,11,9455,2746
248
+ 1,11,9841,2858
249
+ 1,11,10242,2975
250
+ 1,12,10659,3096
251
+ 1,12,11094,3222
252
+ 1,12,11546,3353
253
+ 1,12,12017,3490
254
+ 1,12,12507,3632
255
+ 1,12,13017,3780
256
+ 1,12,13548,3935
257
+ 1,12,14100,4095
@@ -0,0 +1,129 @@
1
+ table_num,row_num,num_reps,store_data,e1,e2,e3,e4,e5,e6,e7,e8,acq_time
2
+ 0,0,1,12,0,-,-,-,-,-,-,-,578.708
3
+ 0,1,1,12,1,-,-,-,-,-,-,-,578.708
4
+ 0,2,1,12,2,-,-,-,-,-,-,-,578.708
5
+ 0,3,1,12,3,-,-,-,-,-,-,-,578.708
6
+ 0,4,1,12,4,5,-,-,-,-,-,-,289.354
7
+ 0,5,1,12,6,7,-,-,-,-,-,-,289.354
8
+ 0,6,1,12,8,9,-,-,-,-,-,-,289.354
9
+ 0,7,1,12,10,11,-,-,-,-,-,-,289.354
10
+ 0,8,1,12,12,13,14,-,-,-,-,-,192.903
11
+ 0,9,1,12,15,16,17,-,-,-,-,-,192.903
12
+ 0,10,1,12,18,19,20,-,-,-,-,-,192.903
13
+ 0,11,1,12,21,22,23,-,-,-,-,-,192.903
14
+ 0,12,1,12,24,25,26,27,-,-,-,-,144.677
15
+ 0,13,1,12,28,29,30,31,-,-,-,-,144.677
16
+ 0,14,1,12,32,33,34,35,-,-,-,-,144.677
17
+ 0,15,1,12,36,37,38,39,-,-,-,-,144.677
18
+ 0,16,1,12,40,41,42,43,44,-,-,-,115.742
19
+ 0,17,1,12,45,46,47,48,49,-,-,-,115.742
20
+ 0,18,1,12,50,51,52,53,54,-,-,-,115.742
21
+ 0,19,1,12,55,56,57,58,59,-,-,-,115.742
22
+ 0,20,1,12,60,61,62,63,64,-,-,-,115.742
23
+ 0,21,1,12,65,66,67,68,69,-,-,-,115.742
24
+ 0,22,1,12,70,71,72,73,74,-,-,-,115.742
25
+ 0,23,1,12,75,76,77,78,79,-,-,-,115.742
26
+ 0,24,1,12,80,81,82,83,84,85,-,-,95.694
27
+ 0,25,1,12,86,87,88,89,90,91,-,-,95.694
28
+ 0,26,1,12,92,93,94,95,96,97,-,-,95.694
29
+ 0,27,1,12,98,99,100,101,102,103,-,-,95.694
30
+ 0,28,1,12,104,105,106,107,108,109,-,-,95.694
31
+ 0,29,1,12,110,111,112,113,114,115,-,-,95.694
32
+ 0,30,1,12,116,117,118,119,120,121,-,-,95.694
33
+ 0,31,1,11,122,123,124,125,126,127,-,-,95.694
34
+ 1,0,1,12,0,-,-,-,-,-,-,-,578.708
35
+ 1,1,1,12,1,-,-,-,-,-,-,-,578.708
36
+ 1,2,1,12,2,-,-,-,-,-,-,-,578.708
37
+ 1,3,1,12,3,-,-,-,-,-,-,-,578.708
38
+ 1,4,1,12,4,5,-,-,-,-,-,-,289.354
39
+ 1,5,1,12,6,7,-,-,-,-,-,-,289.354
40
+ 1,6,1,12,8,9,-,-,-,-,-,-,289.354
41
+ 1,7,1,12,10,11,-,-,-,-,-,-,289.354
42
+ 1,8,1,12,12,13,14,-,-,-,-,-,192.903
43
+ 1,9,1,12,15,16,17,-,-,-,-,-,192.903
44
+ 1,10,1,12,18,19,20,-,-,-,-,-,192.903
45
+ 1,11,1,12,21,22,23,-,-,-,-,-,192.903
46
+ 1,12,1,12,24,25,26,27,-,-,-,-,144.677
47
+ 1,13,1,12,28,29,30,31,-,-,-,-,144.677
48
+ 1,14,1,12,32,33,34,35,-,-,-,-,144.677
49
+ 1,15,1,12,36,37,38,39,-,-,-,-,144.677
50
+ 1,16,1,12,40,41,42,43,44,-,-,-,115.742
51
+ 1,17,1,12,45,46,47,48,49,-,-,-,115.742
52
+ 1,18,1,12,50,51,52,53,54,-,-,-,115.742
53
+ 1,19,1,12,55,56,57,58,59,-,-,-,115.742
54
+ 1,20,1,12,60,61,62,63,64,-,-,-,115.742
55
+ 1,21,1,12,65,66,67,68,69,-,-,-,115.742
56
+ 1,22,1,12,70,71,72,73,74,-,-,-,115.742
57
+ 1,23,1,12,75,76,77,78,79,-,-,-,115.742
58
+ 1,24,1,12,80,81,82,83,84,85,-,-,95.694
59
+ 1,25,1,12,86,87,88,89,90,91,-,-,95.694
60
+ 1,26,1,12,92,93,94,95,96,97,-,-,95.694
61
+ 1,27,1,12,98,99,100,101,102,103,-,-,95.694
62
+ 1,28,1,12,104,105,106,107,108,109,-,-,95.694
63
+ 1,29,1,12,110,111,112,113,114,115,-,-,95.694
64
+ 1,30,1,12,116,117,118,119,120,121,-,-,95.694
65
+ 1,31,1,11,122,123,124,125,126,127,-,-,95.694
66
+ 2,0,1,12,0,-,-,-,-,-,-,-,578.708
67
+ 2,1,1,12,1,-,-,-,-,-,-,-,578.708
68
+ 2,2,1,12,2,-,-,-,-,-,-,-,578.708
69
+ 2,3,1,12,3,-,-,-,-,-,-,-,578.708
70
+ 2,4,1,12,4,5,-,-,-,-,-,-,289.354
71
+ 2,5,1,12,6,7,-,-,-,-,-,-,289.354
72
+ 2,6,1,12,8,9,-,-,-,-,-,-,289.354
73
+ 2,7,1,12,10,11,-,-,-,-,-,-,289.354
74
+ 2,8,1,12,12,13,14,-,-,-,-,-,192.903
75
+ 2,9,1,12,15,16,17,-,-,-,-,-,192.903
76
+ 2,10,1,12,18,19,20,-,-,-,-,-,192.903
77
+ 2,11,1,12,21,22,23,-,-,-,-,-,192.903
78
+ 2,12,1,12,24,25,26,27,-,-,-,-,144.677
79
+ 2,13,1,12,28,29,30,31,-,-,-,-,144.677
80
+ 2,14,1,12,32,33,34,35,-,-,-,-,144.677
81
+ 2,15,1,12,36,37,38,39,-,-,-,-,144.677
82
+ 2,16,1,12,40,41,42,43,44,-,-,-,115.742
83
+ 2,17,1,12,45,46,47,48,49,-,-,-,115.742
84
+ 2,18,1,12,50,51,52,53,54,-,-,-,115.742
85
+ 2,19,1,12,55,56,57,58,59,-,-,-,115.742
86
+ 2,20,1,12,60,61,62,63,64,-,-,-,115.742
87
+ 2,21,1,12,65,66,67,68,69,-,-,-,115.742
88
+ 2,22,1,12,70,71,72,73,74,-,-,-,115.742
89
+ 2,23,1,12,75,76,77,78,79,-,-,-,115.742
90
+ 2,24,1,12,80,81,82,83,84,85,-,-,95.694
91
+ 2,25,1,12,86,87,88,89,90,91,-,-,95.694
92
+ 2,26,1,12,92,93,94,95,96,97,-,-,95.694
93
+ 2,27,1,12,98,99,100,101,102,103,-,-,95.694
94
+ 2,28,1,12,104,105,106,107,108,109,-,-,95.694
95
+ 2,29,1,12,110,111,112,113,114,115,-,-,95.694
96
+ 2,30,1,12,116,117,118,119,120,121,-,-,95.694
97
+ 2,31,1,11,122,123,124,125,126,127,-,-,95.694
98
+ 3,0,1,12,0,-,-,-,-,-,-,-,578.708
99
+ 3,1,1,12,1,-,-,-,-,-,-,-,578.708
100
+ 3,2,1,12,2,-,-,-,-,-,-,-,578.708
101
+ 3,3,1,12,3,-,-,-,-,-,-,-,578.708
102
+ 3,4,1,12,4,5,-,-,-,-,-,-,289.354
103
+ 3,5,1,12,6,7,-,-,-,-,-,-,289.354
104
+ 3,6,1,12,8,9,-,-,-,-,-,-,289.354
105
+ 3,7,1,12,10,11,-,-,-,-,-,-,289.354
106
+ 3,8,1,12,12,13,14,-,-,-,-,-,192.903
107
+ 3,9,1,12,15,16,17,-,-,-,-,-,192.903
108
+ 3,10,1,12,18,19,20,-,-,-,-,-,192.903
109
+ 3,11,1,12,21,22,23,-,-,-,-,-,192.903
110
+ 3,12,1,12,24,25,26,27,-,-,-,-,144.677
111
+ 3,13,1,12,28,29,30,31,-,-,-,-,144.677
112
+ 3,14,1,12,32,33,34,35,-,-,-,-,144.677
113
+ 3,15,1,12,36,37,38,39,-,-,-,-,144.677
114
+ 3,16,1,12,40,41,42,43,44,-,-,-,115.742
115
+ 3,17,1,12,45,46,47,48,49,-,-,-,115.742
116
+ 3,18,1,12,50,51,52,53,54,-,-,-,115.742
117
+ 3,19,1,12,55,56,57,58,59,-,-,-,115.742
118
+ 3,20,1,12,60,61,62,63,64,-,-,-,115.742
119
+ 3,21,1,12,65,66,67,68,69,-,-,-,115.742
120
+ 3,22,1,12,70,71,72,73,74,-,-,-,115.742
121
+ 3,23,1,12,75,76,77,78,79,-,-,-,115.742
122
+ 3,24,1,12,80,81,82,83,84,85,-,-,95.694
123
+ 3,25,1,12,86,87,88,89,90,91,-,-,95.694
124
+ 3,26,1,12,92,93,94,95,96,97,-,-,95.694
125
+ 3,27,1,12,98,99,100,101,102,103,-,-,95.694
126
+ 3,28,1,12,104,105,106,107,108,109,-,-,95.694
127
+ 3,29,1,12,110,111,112,113,114,115,-,-,95.694
128
+ 3,30,1,12,116,117,118,119,120,121,-,-,95.694
129
+ 3,31,1,11,122,123,124,125,126,127,-,-,95.694
@@ -0,0 +1,142 @@
1
+ """
2
+ Will decompress CoDICE science data.
3
+
4
+ For CoDICE, there are 3 forms of compression:
5
+
6
+ | 1. Table-based lossy compression A (24- or 32-bit -> 8-bit)
7
+ | 2. Table-based lossy compression B (24- or 32-bit -> 8 bit)
8
+ | 3. LZMA lossless compression
9
+
10
+ Only one lossy option can be selected in cases of lossy + lossless compression.
11
+ Thus, there are 6 possibly compression algorithms:
12
+
13
+ | 1. No compression
14
+ | 2. Lossy A only
15
+ | 3. Lossy B only
16
+ | 4. Lossless only
17
+ | 5. Lossy A + lossless
18
+ | 6. Lossy B + lossless
19
+
20
+ In the case of (5) and (6), the data is first run through lossy compression, and
21
+ then the result is run through lossless compression. Thus, to decompress, one
22
+ must apply lossless decompression first, then lossy decompression
23
+
24
+ References
25
+ ----------
26
+ This information was provided via email from Greg Dunn on Oct 23, 2023
27
+ """
28
+
29
+ import lzma
30
+ from enum import IntEnum
31
+
32
+ from imap_processing.codice.constants import LOSSY_A_TABLE, LOSSY_B_TABLE
33
+ from imap_processing.codice.utils import CoDICECompression
34
+
35
+
36
+ def _apply_lossy_a(compressed_bytes: bytes) -> list[int]:
37
+ """
38
+ Apply 8-bit to 32-bit Lossy A decompression algorithm.
39
+
40
+ The Lossy A algorithm uses a lookup table imported into this module.
41
+
42
+ Parameters
43
+ ----------
44
+ compressed_bytes : bytes
45
+ The compressed byte stream.
46
+
47
+ Returns
48
+ -------
49
+ decompressed_values : list[int]
50
+ The 24- or 32-bit decompressed values.
51
+ """
52
+ compressed_values = list(compressed_bytes)
53
+ decompressed_values = [LOSSY_A_TABLE[item] for item in compressed_values]
54
+ return decompressed_values
55
+
56
+
57
+ def _apply_lossy_b(compressed_bytes: bytes) -> list[int]:
58
+ """
59
+ Apply 8-bit to 32-bit Lossy B decompression algorithm.
60
+
61
+ The Lossy B algorithm uses a lookup table imported into this module.
62
+
63
+ Parameters
64
+ ----------
65
+ compressed_bytes : bytes
66
+ The compressed byte stream.
67
+
68
+ Returns
69
+ -------
70
+ decompressed_values : list[int]
71
+ The 24- or 32-bit decompressed values.
72
+ """
73
+ compressed_values = list(compressed_bytes)
74
+ decompressed_values = [LOSSY_B_TABLE[item] for item in compressed_values]
75
+ return decompressed_values
76
+
77
+
78
+ def _apply_lzma_lossless(compressed_bytes: bytes) -> bytes:
79
+ """
80
+ Apply LZMA lossless decompression algorithm.
81
+
82
+ Parameters
83
+ ----------
84
+ compressed_bytes : bytes
85
+ The compressed byte stream.
86
+
87
+ Returns
88
+ -------
89
+ lzma_decompressed_values : bytes
90
+ The 24- or 32-bit lzma decompressed values.
91
+ """
92
+ lzma_decompressed_values = lzma.decompress(compressed_bytes)
93
+
94
+ return lzma_decompressed_values
95
+
96
+
97
+ def decompress(compressed_binary: str, algorithm: IntEnum) -> list[int]:
98
+ """
99
+ Perform decompression on a binary string into a list of integers.
100
+
101
+ Apply the appropriate decompression algorithm(s) based on the value
102
+ of the ``algorithm`` attribute. One or more individual algorithms may be
103
+ applied to a given compressed value.
104
+
105
+ Parameters
106
+ ----------
107
+ compressed_binary : str
108
+ The compressed binary string.
109
+ algorithm : int
110
+ The algorithm to apply. Supported algorithms are provided in the
111
+ ``codice_utils.CoDICECompression`` class.
112
+
113
+ Returns
114
+ -------
115
+ decompressed_values : list[int]
116
+ The 24- or 32-bit decompressed values.
117
+ """
118
+ # Convert the binary string to a byte stream
119
+ compressed_bytes = int(compressed_binary, 2).to_bytes(
120
+ (len(compressed_binary) + 7) // 8, byteorder="big"
121
+ )
122
+
123
+ # Apply the appropriate decompression algorithm
124
+ if algorithm == CoDICECompression.NO_COMPRESSION:
125
+ decompressed_values = list(compressed_bytes)
126
+ elif algorithm == CoDICECompression.LOSSY_A:
127
+ decompressed_values = _apply_lossy_a(compressed_bytes)
128
+ elif algorithm == CoDICECompression.LOSSY_B:
129
+ decompressed_values = _apply_lossy_b(compressed_bytes)
130
+ elif algorithm == CoDICECompression.LOSSLESS:
131
+ decompressed_bytes = _apply_lzma_lossless(compressed_bytes)
132
+ decompressed_values = list(decompressed_bytes)
133
+ elif algorithm == CoDICECompression.LOSSY_A_LOSSLESS:
134
+ decompressed_bytes = _apply_lzma_lossless(compressed_bytes)
135
+ decompressed_values = _apply_lossy_a(decompressed_bytes)
136
+ elif algorithm == CoDICECompression.LOSSY_B_LOSSLESS:
137
+ decompressed_bytes = _apply_lzma_lossless(compressed_bytes)
138
+ decompressed_values = _apply_lossy_b(decompressed_bytes)
139
+ else:
140
+ raise ValueError(f"{algorithm} is not supported")
141
+
142
+ return decompressed_values