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,986 @@
1
+ """
2
+ Contains constants variables to support CoDICE processing.
3
+
4
+ The ``plan_id``, ``plan_step``, and ``view_id`` mentioned in this module are
5
+ derived from the packet data.
6
+
7
+ Notes
8
+ -----
9
+ SW = SunWard
10
+ NSW = Non-SunWard
11
+ PUI = PickUp Ion
12
+ ESA = ElectroStatic Analyzer
13
+ """
14
+
15
+ # TODO: What to do in the case of a value of 255 in LOSSY_A and LOSSY_B
16
+ # compression? (Joey uses 0x100000000)
17
+
18
+ from imap_processing.codice.utils import CODICEAPID, CoDICECompression
19
+
20
+ APIDS_FOR_SCIENCE_PROCESSING = [
21
+ CODICEAPID.COD_HI_INST_COUNTS_AGGREGATED,
22
+ CODICEAPID.COD_HI_INST_COUNTS_SINGLES,
23
+ CODICEAPID.COD_HI_OMNI_SPECIES_COUNTS,
24
+ CODICEAPID.COD_HI_SECT_SPECIES_COUNTS,
25
+ CODICEAPID.COD_LO_INST_COUNTS_AGGREGATED,
26
+ CODICEAPID.COD_LO_INST_COUNTS_SINGLES,
27
+ CODICEAPID.COD_LO_SW_ANGULAR_COUNTS,
28
+ CODICEAPID.COD_LO_NSW_ANGULAR_COUNTS,
29
+ CODICEAPID.COD_LO_SW_PRIORITY_COUNTS,
30
+ CODICEAPID.COD_LO_NSW_PRIORITY_COUNTS,
31
+ CODICEAPID.COD_LO_SW_SPECIES_COUNTS,
32
+ CODICEAPID.COD_LO_NSW_SPECIES_COUNTS,
33
+ ]
34
+
35
+
36
+ # CDF-friendly names for lo data products
37
+ LO_INST_COUNTS_AGGREGATED_VARIABLE_NAMES = ["aggregated"]
38
+ LO_INST_COUNTS_SINGLES_VARIABLE_NAMES = ["apd_singles"]
39
+ LO_SW_ANGULAR_VARIABLE_NAMES = ["hplus", "heplusplus", "oplus6", "fe_loq"]
40
+ LO_NSW_ANGULAR_VARIABLE_NAMES = ["heplusplus"]
41
+ LO_SW_PRIORITY_VARIABLE_NAMES = [
42
+ "p0_tcrs",
43
+ "p1_hplus",
44
+ "p2_heplusplus",
45
+ "p3_heavies",
46
+ "p4_dcrs",
47
+ ]
48
+ LO_NSW_PRIORITY_VARIABLE_NAMES = ["p5_heavies", "p6_hplus_heplusplus"]
49
+ LO_SW_SPECIES_VARIABLE_NAMES = [
50
+ "hplus",
51
+ "heplusplus",
52
+ "cplus4",
53
+ "cplus5",
54
+ "cplus6",
55
+ "oplus5",
56
+ "oplus6",
57
+ "oplus7",
58
+ "oplus8",
59
+ "ne",
60
+ "mg",
61
+ "si",
62
+ "fe_loq",
63
+ "fe_hiq",
64
+ "heplus",
65
+ "cnoplus",
66
+ ]
67
+ LO_NSW_SPECIES_VARIABLE_NAMES = [
68
+ "hplus",
69
+ "heplusplus",
70
+ "c",
71
+ "o",
72
+ "ne_si_mg",
73
+ "fe",
74
+ "heplus",
75
+ "cnoplus",
76
+ ]
77
+
78
+ # CDF-friendly names for hi data products
79
+ HI_INST_COUNTS_AGGREGATED_VARIABLE_NAMES = ["aggregated"]
80
+ HI_INST_COUNTS_SINGLES_VARIABLE_NAMES = ["tcr", "ssdo", "stssd"]
81
+ HI_OMNI_SPECIES_VARIABLE_NAMES = ["h", "he3", "he4", "c", "o", "ne_mg_si", "fe", "uh"]
82
+ HI_SECT_SPECIES_VARIABLE_NAMES = ["h", "he3he4", "cno", "fe"]
83
+
84
+ # TODO: Hi products shape should be energy x ssd index x spin sector (8*12*12)
85
+ DATA_PRODUCT_CONFIGURATIONS = {
86
+ CODICEAPID.COD_HI_INST_COUNTS_AGGREGATED: {
87
+ "coords": [
88
+ "epoch",
89
+ "inst_az",
90
+ "spin_sector",
91
+ "esa_step",
92
+ "energy_label",
93
+ ], # TODO: These will likely change
94
+ "dataset_name": "imap_codice_l1a_hi-counters-aggregated",
95
+ "dims": [
96
+ "epoch",
97
+ "esa_step",
98
+ "inst_az",
99
+ "spin_sector",
100
+ ], # TODO: These will likely change
101
+ "instrument": "hi",
102
+ "num_counters": 1,
103
+ "num_energy_steps": 1, # TODO: Double check with Joey
104
+ "num_positions": 6, # TODO: Double check with Joey
105
+ "num_spin_sectors": 1,
106
+ "support_variables": [], # TODO: Double check with Joey
107
+ "variable_names": HI_INST_COUNTS_AGGREGATED_VARIABLE_NAMES,
108
+ },
109
+ CODICEAPID.COD_HI_INST_COUNTS_SINGLES: {
110
+ "coords": [
111
+ "epoch",
112
+ "inst_az",
113
+ "spin_sector",
114
+ "esa_step",
115
+ "energy_label",
116
+ ], # TODO: These will likely change
117
+ "dataset_name": "imap_codice_l1a_hi-counters-singles",
118
+ "dims": [
119
+ "epoch",
120
+ "esa_step",
121
+ "inst_az",
122
+ "spin_sector",
123
+ ], # TODO: These will likely change
124
+ "instrument": "hi",
125
+ "num_counters": 3,
126
+ "num_energy_steps": 1, # TODO: Double check with Joey
127
+ "num_positions": 16, # TODO: Double check with Joey
128
+ "num_spin_sectors": 1,
129
+ "support_variables": [], # No support variables for this one
130
+ "variable_names": HI_INST_COUNTS_SINGLES_VARIABLE_NAMES,
131
+ },
132
+ CODICEAPID.COD_HI_OMNI_SPECIES_COUNTS: {
133
+ "coords": [
134
+ "epoch",
135
+ "inst_az",
136
+ "spin_sector",
137
+ "esa_step",
138
+ "energy_label",
139
+ ], # TODO: These will likely change
140
+ "dataset_name": "imap_codice_l1a_hi-omni",
141
+ "dims": [
142
+ "epoch",
143
+ "esa_step",
144
+ "inst_az",
145
+ "spin_sector",
146
+ ], # TODO: These will likely change
147
+ "instrument": "hi",
148
+ "num_counters": 8,
149
+ "num_energy_steps": 15, # TODO: Double check with Joey
150
+ "num_positions": 4, # TODO: Double check with Joey
151
+ "num_spin_sectors": 1,
152
+ "support_variables": ["data_quality", "spin_period"],
153
+ "variable_names": HI_OMNI_SPECIES_VARIABLE_NAMES,
154
+ },
155
+ CODICEAPID.COD_HI_SECT_SPECIES_COUNTS: {
156
+ "coords": [
157
+ "epoch",
158
+ "inst_az",
159
+ "spin_sector",
160
+ "esa_step",
161
+ "energy_label",
162
+ ], # TODO: These will likely change
163
+ "dataset_name": "imap_codice_l1a_hi-sectored",
164
+ "dims": [
165
+ "epoch",
166
+ "esa_step",
167
+ "inst_az",
168
+ "spin_sector",
169
+ ], # TODO: These will likely change
170
+ "instrument": "hi",
171
+ "num_counters": 4,
172
+ "num_energy_steps": 8,
173
+ "num_positions": 12,
174
+ "num_spin_sectors": 12,
175
+ "support_variables": ["data_quality", "spin_period"],
176
+ "variable_names": HI_SECT_SPECIES_VARIABLE_NAMES,
177
+ },
178
+ CODICEAPID.COD_LO_INST_COUNTS_AGGREGATED: {
179
+ "coords": [
180
+ "epoch",
181
+ "inst_az",
182
+ "spin_sector",
183
+ "esa_step",
184
+ "energy_label",
185
+ ], # TODO: These will likely change
186
+ "dataset_name": "imap_codice_l1a_lo-counters-aggregated",
187
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
188
+ "instrument": "lo",
189
+ "num_counters": 1,
190
+ "num_energy_steps": 128,
191
+ "num_positions": 6,
192
+ "num_spin_sectors": 6,
193
+ "support_variables": [
194
+ "energy_table",
195
+ "acquisition_time_per_step",
196
+ ], # TODO: Double check with Joey
197
+ "variable_names": LO_INST_COUNTS_AGGREGATED_VARIABLE_NAMES,
198
+ },
199
+ CODICEAPID.COD_LO_INST_COUNTS_SINGLES: {
200
+ "coords": [
201
+ "epoch",
202
+ "inst_az",
203
+ "spin_sector",
204
+ "esa_step",
205
+ "energy_label",
206
+ ], # TODO: These will likely change
207
+ "dataset_name": "imap_codice_l1a_lo-counters-singles",
208
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
209
+ "instrument": "lo",
210
+ "num_counters": 1,
211
+ "num_energy_steps": 128,
212
+ "num_positions": 24,
213
+ "num_spin_sectors": 6,
214
+ "support_variables": [
215
+ "spin_sector_pairs",
216
+ "energy_table",
217
+ "acquisition_time_per_step",
218
+ "RGFO_half_spin",
219
+ "NGO_half_spin",
220
+ "SW_bias_gain_mode",
221
+ "ST_bias_gain_mode",
222
+ "data_quality",
223
+ "spin_period",
224
+ ],
225
+ "variable_names": LO_INST_COUNTS_SINGLES_VARIABLE_NAMES,
226
+ },
227
+ CODICEAPID.COD_LO_SW_ANGULAR_COUNTS: {
228
+ "coords": ["epoch", "inst_az", "spin_sector", "esa_step", "energy_label"],
229
+ "dataset_name": "imap_codice_l1a_lo-sw-angular",
230
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
231
+ "instrument": "lo",
232
+ "num_counters": 4,
233
+ "num_energy_steps": 128,
234
+ "num_positions": 5,
235
+ "num_spin_sectors": 12,
236
+ "support_variables": [
237
+ "energy_table",
238
+ "acquisition_time_per_step",
239
+ "RGFO_half_spin",
240
+ "NGO_half_spin",
241
+ "SW_bias_gain_mode",
242
+ "ST_bias_gain_mode",
243
+ "data_quality",
244
+ "spin_period",
245
+ ],
246
+ "variable_names": LO_SW_ANGULAR_VARIABLE_NAMES,
247
+ },
248
+ CODICEAPID.COD_LO_NSW_ANGULAR_COUNTS: {
249
+ "coords": ["epoch", "inst_az", "spin_sector", "esa_step", "energy_label"],
250
+ "dataset_name": "imap_codice_l1a_lo-nsw-angular",
251
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
252
+ "instrument": "lo",
253
+ "num_counters": 1,
254
+ "num_energy_steps": 128,
255
+ "num_positions": 19,
256
+ "num_spin_sectors": 12,
257
+ "support_variables": [
258
+ "energy_table",
259
+ "acquisition_time_per_step",
260
+ "RGFO_half_spin",
261
+ "NGO_half_spin",
262
+ "SW_bias_gain_mode",
263
+ "ST_bias_gain_mode",
264
+ "data_quality",
265
+ "spin_period",
266
+ ],
267
+ "variable_names": LO_NSW_ANGULAR_VARIABLE_NAMES,
268
+ },
269
+ CODICEAPID.COD_LO_SW_PRIORITY_COUNTS: {
270
+ "coords": ["epoch", "inst_az", "spin_sector", "esa_step", "energy_label"],
271
+ "dataset_name": "imap_codice_l1a_lo-sw-priority",
272
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
273
+ "instrument": "lo",
274
+ "num_counters": 5,
275
+ "num_energy_steps": 128,
276
+ "num_positions": 1,
277
+ "num_spin_sectors": 12,
278
+ "support_variables": [
279
+ "energy_table",
280
+ "acquisition_time_per_step",
281
+ "RGFO_half_spin",
282
+ "NGO_half_spin",
283
+ "SW_bias_gain_mode",
284
+ "ST_bias_gain_mode",
285
+ "data_quality",
286
+ "spin_period",
287
+ ],
288
+ "variable_names": LO_SW_PRIORITY_VARIABLE_NAMES,
289
+ },
290
+ CODICEAPID.COD_LO_NSW_PRIORITY_COUNTS: {
291
+ "coords": ["epoch", "inst_az", "spin_sector", "esa_step", "energy_label"],
292
+ "dataset_name": "imap_codice_l1a_lo-nsw-priority",
293
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
294
+ "instrument": "lo",
295
+ "num_counters": 2,
296
+ "num_energy_steps": 128,
297
+ "num_positions": 1,
298
+ "num_spin_sectors": 12,
299
+ "support_variables": [
300
+ "energy_table",
301
+ "acquisition_time_per_step",
302
+ "RGFO_half_spin",
303
+ "NGO_half_spin",
304
+ "SW_bias_gain_mode",
305
+ "ST_bias_gain_mode",
306
+ "data_quality",
307
+ "spin_period",
308
+ ],
309
+ "variable_names": LO_NSW_PRIORITY_VARIABLE_NAMES,
310
+ },
311
+ CODICEAPID.COD_LO_SW_SPECIES_COUNTS: {
312
+ "coords": ["epoch", "inst_az", "spin_sector", "esa_step", "energy_label"],
313
+ "dataset_name": "imap_codice_l1a_lo-sw-species",
314
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
315
+ "instrument": "lo",
316
+ "num_counters": 16,
317
+ "num_energy_steps": 128,
318
+ "num_positions": 1,
319
+ "num_spin_sectors": 1,
320
+ "support_variables": [
321
+ "energy_table",
322
+ "acquisition_time_per_step",
323
+ "RGFO_half_spin",
324
+ "NGO_half_spin",
325
+ "SW_bias_gain_mode",
326
+ "ST_bias_gain_mode",
327
+ "data_quality",
328
+ "spin_period",
329
+ ],
330
+ "variable_names": LO_SW_SPECIES_VARIABLE_NAMES,
331
+ },
332
+ CODICEAPID.COD_LO_NSW_SPECIES_COUNTS: {
333
+ "coords": ["epoch", "inst_az", "spin_sector", "esa_step", "energy_label"],
334
+ "dataset_name": "imap_codice_l1a_lo-nsw-species",
335
+ "dims": ["epoch", "inst_az", "spin_sector", "esa_step"],
336
+ "instrument": "lo",
337
+ "num_counters": 8,
338
+ "num_energy_steps": 128,
339
+ "num_positions": 1,
340
+ "num_spin_sectors": 1,
341
+ "support_variables": [
342
+ "energy_table",
343
+ "acquisition_time_per_step",
344
+ "RGFO_half_spin",
345
+ "NGO_half_spin",
346
+ "SW_bias_gain_mode",
347
+ "ST_bias_gain_mode",
348
+ "data_quality",
349
+ "spin_period",
350
+ ],
351
+ "variable_names": LO_NSW_SPECIES_VARIABLE_NAMES,
352
+ },
353
+ }
354
+
355
+ # Compression ID lookup table for Lo data products
356
+ # The key is the view_id and the value is the ID for the compression algorithm
357
+ # (see utils.CoDICECompression to see how the values correspond)
358
+ LO_COMPRESSION_ID_LOOKUP = {
359
+ 0: CoDICECompression.LOSSY_A_LOSSLESS,
360
+ 1: CoDICECompression.LOSSY_B_LOSSLESS,
361
+ 2: CoDICECompression.LOSSY_B_LOSSLESS,
362
+ 3: CoDICECompression.LOSSY_A_LOSSLESS,
363
+ 4: CoDICECompression.LOSSY_A_LOSSLESS,
364
+ 5: CoDICECompression.LOSSY_A_LOSSLESS,
365
+ 6: CoDICECompression.LOSSY_A_LOSSLESS,
366
+ 7: CoDICECompression.LOSSY_A_LOSSLESS,
367
+ 8: CoDICECompression.LOSSY_A_LOSSLESS,
368
+ }
369
+
370
+ # Compression ID lookup table for Hi data products
371
+ # The key is the view_id and the value is the ID for the compression algorithm
372
+ # (see utils.CoDICECompression to see how the values correspond)
373
+ HI_COMPRESSION_ID_LOOKUP = {
374
+ 0: CoDICECompression.LOSSY_A,
375
+ 1: CoDICECompression.LOSSY_A,
376
+ 2: CoDICECompression.LOSSY_A,
377
+ 3: CoDICECompression.LOSSY_B_LOSSLESS,
378
+ 4: CoDICECompression.LOSSY_B_LOSSLESS,
379
+ 5: CoDICECompression.LOSSY_A_LOSSLESS,
380
+ 6: CoDICECompression.LOSSY_A_LOSSLESS,
381
+ 7: CoDICECompression.LOSSY_A_LOSSLESS,
382
+ 8: CoDICECompression.LOSSY_A_LOSSLESS,
383
+ 9: CoDICECompression.LOSSY_A_LOSSLESS,
384
+ }
385
+
386
+ # ESA Sweep table ID lookup table
387
+ # The combination of plan_id and plan_step determine the ESA sweep Table to use
388
+ # Currently, ESA sweep table 0 is used for every plan_id/plan_step combination,
389
+ # but may change in the future. These values are provided in the SCI-LUT excel
390
+ # spreadsheet
391
+ ESA_SWEEP_TABLE_ID_LOOKUP = {
392
+ (0, 0): 0,
393
+ (0, 1): 0,
394
+ (0, 2): 0,
395
+ (0, 3): 0,
396
+ (1, 0): 0,
397
+ (1, 1): 0,
398
+ (1, 2): 0,
399
+ (1, 3): 0,
400
+ (2, 0): 0,
401
+ (2, 1): 0,
402
+ (2, 2): 0,
403
+ (2, 3): 0,
404
+ (3, 0): 0,
405
+ (3, 1): 0,
406
+ (3, 2): 0,
407
+ (3, 3): 0,
408
+ (4, 0): 0,
409
+ (4, 1): 0,
410
+ (4, 2): 0,
411
+ (4, 3): 0,
412
+ (5, 0): 0,
413
+ (5, 1): 0,
414
+ (5, 2): 0,
415
+ (5, 3): 0,
416
+ (6, 0): 0,
417
+ (6, 1): 0,
418
+ (6, 2): 0,
419
+ (6, 3): 0,
420
+ (7, 0): 0,
421
+ (7, 1): 0,
422
+ (7, 2): 0,
423
+ (7, 3): 0,
424
+ }
425
+
426
+ # Lo Stepping table ID lookup table
427
+ # The combination of plan_id and plan_step determine the Lo Stepping Table to
428
+ # use. Currently, LO Stepping table 0 is used for every plan_id/plan_step
429
+ # combination, but may change in the future. These values are provided in the
430
+ # SCI-LUT excel spreadsheet
431
+ LO_STEPPING_TABLE_ID_LOOKUP = {
432
+ (0, 0): 0,
433
+ (0, 1): 0,
434
+ (0, 2): 0,
435
+ (0, 3): 0,
436
+ (1, 0): 0,
437
+ (1, 1): 0,
438
+ (1, 2): 0,
439
+ (1, 3): 0,
440
+ (2, 0): 0,
441
+ (2, 1): 0,
442
+ (2, 2): 0,
443
+ (2, 3): 0,
444
+ (3, 0): 0,
445
+ (3, 1): 0,
446
+ (3, 2): 0,
447
+ (3, 3): 0,
448
+ (4, 0): 0,
449
+ (4, 1): 0,
450
+ (4, 2): 0,
451
+ (4, 3): 0,
452
+ (5, 0): 0,
453
+ (5, 1): 0,
454
+ (5, 2): 0,
455
+ (5, 3): 0,
456
+ (6, 0): 0,
457
+ (6, 1): 0,
458
+ (6, 2): 0,
459
+ (6, 3): 0,
460
+ (7, 0): 0,
461
+ (7, 1): 0,
462
+ (7, 2): 0,
463
+ (7, 3): 0,
464
+ }
465
+
466
+ # Lookup tables for Lossy decompression algorithms "A" and "B"
467
+ # These were provided by Greg Dunn via his sohis_cdh_utils.v script and then
468
+ # transformed into python dictionaries. The values in these tables are subject
469
+ # to change, but the format is expected to stay the same.
470
+ LOSSY_A_TABLE = {
471
+ 0: 1,
472
+ 1: 2,
473
+ 2: 3,
474
+ 3: 4,
475
+ 4: 5,
476
+ 5: 6,
477
+ 6: 7,
478
+ 7: 8,
479
+ 8: 9,
480
+ 9: 10,
481
+ 10: 11,
482
+ 11: 12,
483
+ 12: 13,
484
+ 13: 14,
485
+ 14: 15,
486
+ 15: 16,
487
+ 16: 17,
488
+ 17: 18,
489
+ 18: 19,
490
+ 19: 20,
491
+ 20: 21,
492
+ 21: 22,
493
+ 22: 23,
494
+ 23: 24,
495
+ 24: 25,
496
+ 25: 26,
497
+ 26: 27,
498
+ 27: 28,
499
+ 28: 29,
500
+ 29: 30,
501
+ 30: 31,
502
+ 31: 32,
503
+ 32: 34,
504
+ 33: 36,
505
+ 34: 38,
506
+ 35: 40,
507
+ 36: 42,
508
+ 37: 44,
509
+ 38: 46,
510
+ 39: 48,
511
+ 40: 50,
512
+ 41: 52,
513
+ 42: 54,
514
+ 43: 56,
515
+ 44: 58,
516
+ 45: 60,
517
+ 46: 62,
518
+ 47: 64,
519
+ 48: 68,
520
+ 49: 72,
521
+ 50: 76,
522
+ 51: 80,
523
+ 52: 84,
524
+ 53: 88,
525
+ 54: 92,
526
+ 55: 96,
527
+ 56: 100,
528
+ 57: 104,
529
+ 58: 108,
530
+ 59: 112,
531
+ 60: 116,
532
+ 61: 120,
533
+ 62: 124,
534
+ 63: 128,
535
+ 64: 136,
536
+ 65: 144,
537
+ 66: 152,
538
+ 67: 160,
539
+ 68: 168,
540
+ 69: 176,
541
+ 70: 184,
542
+ 71: 192,
543
+ 72: 200,
544
+ 73: 208,
545
+ 74: 216,
546
+ 75: 224,
547
+ 76: 232,
548
+ 77: 240,
549
+ 78: 248,
550
+ 79: 256,
551
+ 80: 272,
552
+ 81: 288,
553
+ 82: 304,
554
+ 83: 320,
555
+ 84: 336,
556
+ 85: 352,
557
+ 86: 368,
558
+ 87: 384,
559
+ 88: 400,
560
+ 89: 416,
561
+ 90: 432,
562
+ 91: 448,
563
+ 92: 464,
564
+ 93: 480,
565
+ 94: 496,
566
+ 95: 512,
567
+ 96: 544,
568
+ 97: 576,
569
+ 98: 608,
570
+ 99: 640,
571
+ 100: 672,
572
+ 101: 704,
573
+ 102: 736,
574
+ 103: 768,
575
+ 104: 800,
576
+ 105: 832,
577
+ 106: 864,
578
+ 107: 896,
579
+ 108: 928,
580
+ 109: 960,
581
+ 110: 992,
582
+ 111: 1024,
583
+ 112: 1088,
584
+ 113: 1152,
585
+ 114: 1216,
586
+ 115: 1280,
587
+ 116: 1344,
588
+ 117: 1408,
589
+ 118: 1472,
590
+ 119: 1536,
591
+ 120: 1600,
592
+ 121: 1664,
593
+ 122: 1728,
594
+ 123: 1792,
595
+ 124: 1856,
596
+ 125: 1920,
597
+ 126: 1984,
598
+ 127: 2048,
599
+ 128: 2176,
600
+ 129: 2304,
601
+ 130: 2432,
602
+ 131: 2560,
603
+ 132: 2688,
604
+ 133: 2816,
605
+ 134: 2944,
606
+ 135: 3072,
607
+ 136: 3200,
608
+ 137: 3328,
609
+ 138: 3456,
610
+ 139: 3584,
611
+ 140: 3712,
612
+ 141: 3840,
613
+ 142: 3968,
614
+ 143: 4096,
615
+ 144: 4352,
616
+ 145: 4608,
617
+ 146: 4864,
618
+ 147: 5120,
619
+ 148: 5376,
620
+ 149: 5632,
621
+ 150: 5888,
622
+ 151: 6144,
623
+ 152: 6400,
624
+ 153: 6656,
625
+ 154: 6912,
626
+ 155: 7168,
627
+ 156: 7424,
628
+ 157: 7680,
629
+ 158: 7936,
630
+ 159: 8192,
631
+ 160: 8704,
632
+ 161: 9216,
633
+ 162: 9728,
634
+ 163: 10240,
635
+ 164: 10752,
636
+ 165: 11264,
637
+ 166: 11776,
638
+ 167: 12288,
639
+ 168: 12800,
640
+ 169: 13312,
641
+ 170: 13824,
642
+ 171: 14336,
643
+ 172: 14848,
644
+ 173: 15360,
645
+ 174: 15872,
646
+ 175: 16384,
647
+ 176: 17408,
648
+ 177: 18432,
649
+ 178: 19456,
650
+ 179: 20480,
651
+ 180: 21504,
652
+ 181: 22528,
653
+ 182: 23552,
654
+ 183: 24576,
655
+ 184: 25600,
656
+ 185: 26624,
657
+ 186: 27648,
658
+ 187: 28672,
659
+ 188: 29696,
660
+ 189: 30720,
661
+ 190: 31744,
662
+ 191: 32768,
663
+ 192: 34816,
664
+ 193: 36864,
665
+ 194: 38912,
666
+ 195: 40960,
667
+ 196: 43008,
668
+ 197: 45056,
669
+ 198: 47104,
670
+ 199: 49152,
671
+ 200: 51200,
672
+ 201: 53248,
673
+ 202: 55296,
674
+ 203: 57344,
675
+ 204: 59392,
676
+ 205: 61440,
677
+ 206: 63488,
678
+ 207: 65536,
679
+ 208: 69632,
680
+ 209: 73728,
681
+ 210: 77824,
682
+ 211: 81920,
683
+ 212: 86016,
684
+ 213: 90112,
685
+ 214: 94208,
686
+ 215: 98304,
687
+ 216: 102400,
688
+ 217: 106496,
689
+ 218: 110592,
690
+ 219: 114688,
691
+ 220: 118784,
692
+ 221: 122880,
693
+ 222: 126976,
694
+ 223: 131072,
695
+ 224: 139264,
696
+ 225: 147456,
697
+ 226: 155648,
698
+ 227: 163840,
699
+ 228: 172032,
700
+ 229: 180224,
701
+ 230: 188416,
702
+ 231: 196608,
703
+ 232: 204800,
704
+ 233: 212992,
705
+ 234: 221184,
706
+ 235: 229376,
707
+ 236: 237568,
708
+ 237: 245760,
709
+ 238: 253952,
710
+ 239: 262144,
711
+ 240: 278528,
712
+ 241: 294912,
713
+ 242: 311296,
714
+ 243: 327680,
715
+ 244: 344064,
716
+ 245: 360448,
717
+ 246: 376832,
718
+ 247: 393216,
719
+ 248: 409600,
720
+ 249: 425984,
721
+ 250: 442368,
722
+ 251: 458752,
723
+ 252: 475136,
724
+ 253: 491520,
725
+ 254: 507904,
726
+ 255: 999999,
727
+ }
728
+
729
+ LOSSY_B_TABLE = {
730
+ 0: 1,
731
+ 1: 2,
732
+ 2: 3,
733
+ 3: 4,
734
+ 4: 5,
735
+ 5: 6,
736
+ 6: 7,
737
+ 7: 8,
738
+ 8: 9,
739
+ 9: 10,
740
+ 10: 11,
741
+ 11: 12,
742
+ 12: 13,
743
+ 13: 14,
744
+ 14: 15,
745
+ 15: 16,
746
+ 16: 17,
747
+ 17: 18,
748
+ 18: 19,
749
+ 19: 20,
750
+ 20: 21,
751
+ 21: 22,
752
+ 22: 23,
753
+ 23: 24,
754
+ 24: 25,
755
+ 25: 26,
756
+ 26: 27,
757
+ 27: 28,
758
+ 28: 29,
759
+ 29: 30,
760
+ 30: 31,
761
+ 31: 32,
762
+ 32: 34,
763
+ 33: 36,
764
+ 34: 38,
765
+ 35: 40,
766
+ 36: 42,
767
+ 37: 44,
768
+ 38: 46,
769
+ 39: 48,
770
+ 40: 50,
771
+ 41: 52,
772
+ 42: 54,
773
+ 43: 56,
774
+ 44: 58,
775
+ 45: 60,
776
+ 46: 62,
777
+ 47: 64,
778
+ 48: 68,
779
+ 49: 72,
780
+ 50: 76,
781
+ 51: 80,
782
+ 52: 84,
783
+ 53: 88,
784
+ 54: 92,
785
+ 55: 96,
786
+ 56: 100,
787
+ 57: 104,
788
+ 58: 108,
789
+ 59: 112,
790
+ 60: 116,
791
+ 61: 120,
792
+ 62: 124,
793
+ 63: 128,
794
+ 64: 136,
795
+ 65: 144,
796
+ 66: 152,
797
+ 67: 160,
798
+ 68: 168,
799
+ 69: 176,
800
+ 70: 184,
801
+ 71: 192,
802
+ 72: 200,
803
+ 73: 208,
804
+ 74: 216,
805
+ 75: 224,
806
+ 76: 232,
807
+ 77: 240,
808
+ 78: 248,
809
+ 79: 256,
810
+ 80: 272,
811
+ 81: 288,
812
+ 82: 304,
813
+ 83: 320,
814
+ 84: 336,
815
+ 85: 352,
816
+ 86: 368,
817
+ 87: 384,
818
+ 88: 400,
819
+ 89: 416,
820
+ 90: 432,
821
+ 91: 448,
822
+ 92: 464,
823
+ 93: 480,
824
+ 94: 496,
825
+ 95: 512,
826
+ 96: 544,
827
+ 97: 576,
828
+ 98: 608,
829
+ 99: 640,
830
+ 100: 672,
831
+ 101: 704,
832
+ 102: 736,
833
+ 103: 768,
834
+ 104: 800,
835
+ 105: 832,
836
+ 106: 864,
837
+ 107: 896,
838
+ 108: 928,
839
+ 109: 960,
840
+ 110: 992,
841
+ 111: 1024,
842
+ 112: 1088,
843
+ 113: 1152,
844
+ 114: 1216,
845
+ 115: 1280,
846
+ 116: 1344,
847
+ 117: 1408,
848
+ 118: 1472,
849
+ 119: 1536,
850
+ 120: 1600,
851
+ 121: 1664,
852
+ 122: 1728,
853
+ 123: 1792,
854
+ 124: 1856,
855
+ 125: 1920,
856
+ 126: 1984,
857
+ 127: 2048,
858
+ 128: 2176,
859
+ 129: 2304,
860
+ 130: 2432,
861
+ 131: 2560,
862
+ 132: 2688,
863
+ 133: 2816,
864
+ 134: 2944,
865
+ 135: 3072,
866
+ 136: 3200,
867
+ 137: 3328,
868
+ 138: 3456,
869
+ 139: 3584,
870
+ 140: 3712,
871
+ 141: 3840,
872
+ 142: 3968,
873
+ 143: 4096,
874
+ 144: 4352,
875
+ 145: 4608,
876
+ 146: 4864,
877
+ 147: 5120,
878
+ 148: 5376,
879
+ 149: 5632,
880
+ 150: 5888,
881
+ 151: 6144,
882
+ 152: 6400,
883
+ 153: 6656,
884
+ 154: 6912,
885
+ 155: 7168,
886
+ 156: 7424,
887
+ 157: 7680,
888
+ 158: 7936,
889
+ 159: 8192,
890
+ 160: 8704,
891
+ 161: 9216,
892
+ 162: 9728,
893
+ 163: 10240,
894
+ 164: 10752,
895
+ 165: 11264,
896
+ 166: 11776,
897
+ 167: 12288,
898
+ 168: 12800,
899
+ 169: 13312,
900
+ 170: 13824,
901
+ 171: 14336,
902
+ 172: 14848,
903
+ 173: 15360,
904
+ 174: 15872,
905
+ 175: 16384,
906
+ 176: 17408,
907
+ 177: 18432,
908
+ 178: 19456,
909
+ 179: 20480,
910
+ 180: 21504,
911
+ 181: 22528,
912
+ 182: 23552,
913
+ 183: 24576,
914
+ 184: 25600,
915
+ 185: 26624,
916
+ 186: 27648,
917
+ 187: 28672,
918
+ 188: 29696,
919
+ 189: 30720,
920
+ 190: 31744,
921
+ 191: 32768,
922
+ 192: 36864,
923
+ 193: 40960,
924
+ 194: 45056,
925
+ 195: 49152,
926
+ 196: 53248,
927
+ 197: 57344,
928
+ 198: 61440,
929
+ 199: 65536,
930
+ 200: 73728,
931
+ 201: 81920,
932
+ 202: 90112,
933
+ 203: 98304,
934
+ 204: 106496,
935
+ 205: 114688,
936
+ 206: 122880,
937
+ 207: 131072,
938
+ 208: 147456,
939
+ 209: 163840,
940
+ 210: 180224,
941
+ 211: 196608,
942
+ 212: 212992,
943
+ 213: 229376,
944
+ 214: 245760,
945
+ 215: 262144,
946
+ 216: 294912,
947
+ 217: 327680,
948
+ 218: 360448,
949
+ 219: 393216,
950
+ 220: 425984,
951
+ 221: 458752,
952
+ 222: 491520,
953
+ 223: 524288,
954
+ 224: 589824,
955
+ 225: 655360,
956
+ 226: 720896,
957
+ 227: 786432,
958
+ 228: 851968,
959
+ 229: 917504,
960
+ 230: 983040,
961
+ 231: 1048576,
962
+ 232: 1179648,
963
+ 233: 1310720,
964
+ 234: 1441792,
965
+ 235: 1572864,
966
+ 236: 1703936,
967
+ 237: 1835008,
968
+ 238: 1966080,
969
+ 239: 2097152,
970
+ 240: 2359296,
971
+ 241: 2621440,
972
+ 242: 2883584,
973
+ 243: 3145728,
974
+ 244: 3407872,
975
+ 245: 3670016,
976
+ 246: 3932160,
977
+ 247: 4194304,
978
+ 248: 4718592,
979
+ 249: 5242880,
980
+ 250: 5767168,
981
+ 251: 6291456,
982
+ 252: 6815744,
983
+ 253: 7340032,
984
+ 254: 7864320,
985
+ 255: 9999999,
986
+ }