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,322 @@
1
+ """
2
+ Class for creating and managing CDF attrs.
3
+
4
+ Developed based of HermesDataSchema from HERMES-SOC/hermes_core.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import logging
10
+ from pathlib import Path
11
+
12
+ import yaml
13
+
14
+ DEFAULT_GLOBAL_CDF_ATTRS_FILE = "imap_default_global_cdf_attrs.yaml"
15
+ DEFAULT_GLOBAL_CDF_ATTRS_SCHEMA_FILE = "default_global_cdf_attrs_schema.yaml"
16
+ DEFAULT_VARIABLE_CDF_ATTRS_SCHEMA_FILE = "default_variable_cdf_attrs_schema.yaml"
17
+
18
+
19
+ class CdfAttributeManager:
20
+ """
21
+ Class for creating and managing CDF attributes based out of yaml files.
22
+
23
+ This class is based on the HERMES SWxSOC project for managing CDF attributes, but
24
+ is intended to be a flexible and very lightweight way of managing CDF attribute
25
+ creation and validation.
26
+
27
+ To use, you can load one or many global and variable attribute files:
28
+
29
+ .. code::
30
+
31
+ cdf_attr_manager = CdfAttributeManager(data_dir)
32
+ cdf_attr_manager.load_global_attributes("global_attrs.yaml")
33
+ cdf_attr_manager.load_global_attributes("instrument_global_attrs.yaml")
34
+ cdf_attr_manager.load_variable_attributes("variable_attrs.yaml")
35
+
36
+ Later files will overwrite earlier files if the same attribute is defined.
37
+
38
+ You can then get the global and variable attributes:
39
+
40
+ If you provide an instrument_id, it will also add the attributes defined under
41
+ instrument_id. If this is not included, then only the attributes defined in the top
42
+ level of the file are used.
43
+
44
+ .. code::
45
+
46
+ # Instrument ID is optional for refining the attributes used from the file
47
+ global_attrs = cdf_attr_manager.get_global_attributes(instrument_id)
48
+ variable_attrs = cdf_attr_manager.get_variable_attributes(variable_name)
49
+
50
+ The variable and global attributes are validated against the schemas upon calling
51
+ ``get_global_attributes`` and ``get_variable_attributes``.
52
+
53
+ Parameters
54
+ ----------
55
+ data_dir : pathlib.Path
56
+ The directory containing the schema and variable files (nominally config/).
57
+
58
+ Attributes
59
+ ----------
60
+ source_dir : pathlib.Path
61
+ The directory containing the schema and variable files - nominally config/
62
+ """
63
+
64
+ def __init__(self, data_dir: Path):
65
+ """Initialize the CdfAttributeManager and read schemas from data_dir."""
66
+ # TODO: Split up schema source and data source?
67
+ self.source_dir = data_dir
68
+
69
+ # TODO: copied from hermes_core. Currently we can use default schema, but
70
+ # We should add some way of extending the schema and remove all the HERMES
71
+ # specific stuff
72
+ # Data Validation, Complaiance,
73
+ self.global_attribute_schema = self._load_default_global_attr_schema()
74
+
75
+ # Data Validation and Compliance for Variable Data
76
+ self.variable_attribute_schema = self._load_default_variable_attr_schema()
77
+
78
+ # Load Default IMAP Global Attributes
79
+ self._global_attributes = CdfAttributeManager._load_yaml_data(
80
+ self.source_dir / DEFAULT_GLOBAL_CDF_ATTRS_FILE
81
+ )
82
+ self._variable_attributes: dict = {}
83
+
84
+ def _load_default_global_attr_schema(self) -> yaml:
85
+ """
86
+ Load the default global schema from the source directory.
87
+
88
+ Returns
89
+ -------
90
+ dict
91
+ The dict representing the global schema.
92
+ """
93
+ default_schema_path = (
94
+ self.source_dir / "shared" / DEFAULT_GLOBAL_CDF_ATTRS_SCHEMA_FILE
95
+ )
96
+ # Load the Schema
97
+ return CdfAttributeManager._load_yaml_data(default_schema_path)
98
+
99
+ def _load_default_variable_attr_schema(self) -> yaml:
100
+ """
101
+ Load the default variable schema from the source directory.
102
+
103
+ Returns
104
+ -------
105
+ dict
106
+ The dict representing the variable schema.
107
+ """
108
+ default_schema_path = (
109
+ self.source_dir / "shared" / DEFAULT_VARIABLE_CDF_ATTRS_SCHEMA_FILE
110
+ )
111
+ # Load the Schema
112
+ return CdfAttributeManager._load_yaml_data(default_schema_path)
113
+
114
+ # TODO Change Returning Any from function declared to return "dict[Any, Any]"
115
+
116
+ def load_global_attributes(self, file_path: str) -> None:
117
+ """
118
+ Update the global attributes property with the attributes from the file.
119
+
120
+ Calling this method multiple times on different files will add all the
121
+ attributes from the files, overwriting existing attributes if they are
122
+ duplicated.
123
+
124
+ Parameters
125
+ ----------
126
+ file_path : str
127
+ File path to load, under self.source_dir.
128
+ """
129
+ self._global_attributes.update(
130
+ CdfAttributeManager._load_yaml_data(self.source_dir / file_path)
131
+ )
132
+
133
+ def add_global_attribute(self, attribute_name: str, attribute_value: str) -> None:
134
+ """
135
+ Add a single global attribute to the global attributes.
136
+
137
+ This is intended only for dynamic global attributes which change per-file, such
138
+ as Data_version. It is not intended to be used for static attributes, which
139
+ should all be included in the YAML files.
140
+
141
+ This will overwrite any existing value in attribute_name if it exists. The
142
+ attribute must be in the global schema, or it will not be included as output.
143
+
144
+ Parameters
145
+ ----------
146
+ attribute_name : str
147
+ The name of the attribute to add.
148
+ attribute_value : str
149
+ The value of the attribute to add.
150
+ """
151
+ self._global_attributes[attribute_name] = attribute_value
152
+
153
+ @staticmethod
154
+ def _load_yaml_data(file_path: str | Path) -> yaml:
155
+ """
156
+ Load a yaml file from the provided path.
157
+
158
+ Parameters
159
+ ----------
160
+ file_path : str | Path
161
+ Path to the yaml file to load.
162
+
163
+ Returns
164
+ -------
165
+ yaml
166
+ Loaded yaml.
167
+ """
168
+ with open(file_path) as file:
169
+ return yaml.safe_load(file)
170
+
171
+ def get_global_attributes(self, instrument_id: str | None = None) -> dict:
172
+ """
173
+ Generate a dictionary global attributes based off the loaded schema and attrs.
174
+
175
+ Validates against the global schema to ensure all required variables are
176
+ present. It can also include instrument specific global attributes if
177
+ instrumet_id is set.
178
+
179
+ If an instrument_id is provided, the level and instrument specific
180
+ attributes that were previously loaded using add_instrument_global_attrs will
181
+ be included.
182
+
183
+ Parameters
184
+ ----------
185
+ instrument_id : str
186
+ The id of the CDF file, used to retrieve instrument and level
187
+ specific global attributes. Suggested value is the logical_source_id.
188
+
189
+ Returns
190
+ -------
191
+ output : dict
192
+ The global attribute values created from the input global attribute files
193
+ and schemas.
194
+ """
195
+ output = dict()
196
+ for attr_name, attr_schema in self.global_attribute_schema.items():
197
+ if attr_name in self._global_attributes:
198
+ output[attr_name] = self._global_attributes[attr_name]
199
+ # Retrieve instrument specific global attributes from the variable file
200
+ elif (
201
+ instrument_id is not None
202
+ and attr_name in self._global_attributes[instrument_id]
203
+ ):
204
+ output[attr_name] = self._global_attributes[instrument_id][attr_name]
205
+ elif attr_schema["required"] and attr_name not in self._global_attributes:
206
+ # TODO throw an error
207
+ output[attr_name] = None
208
+
209
+ return output
210
+
211
+ def load_variable_attributes(self, file_name: str) -> None:
212
+ """
213
+ Add variable attributes for a given filename.
214
+
215
+ Parameters
216
+ ----------
217
+ file_name : str
218
+ The name of the file to load from self.source_dir.
219
+ """
220
+ # Add variable attributes from file_name. Each variable name should have the
221
+ # Required subfields as defined in the variable schema.
222
+ raw_var_attrs = CdfAttributeManager._load_yaml_data(self.source_dir / file_name)
223
+ var_attrs = raw_var_attrs.copy()
224
+
225
+ self._variable_attributes.update(var_attrs)
226
+
227
+ def get_variable_attributes(
228
+ self, variable_name: str, check_schema: bool = True
229
+ ) -> dict:
230
+ """
231
+ Get the attributes for a given variable name.
232
+
233
+ It retrieves the variable from previously loaded variable definition files and
234
+ validates against the defined variable schemas.
235
+
236
+ Parameters
237
+ ----------
238
+ variable_name : str
239
+ The name of the variable to retrieve attributes for.
240
+
241
+ check_schema : bool
242
+ Flag to bypass schema validation.
243
+
244
+ Returns
245
+ -------
246
+ dict
247
+ Information containing specific variable attributes
248
+ associated with "variable_name".
249
+ """
250
+ # Case to handle attributes not in schema
251
+ if check_schema is False:
252
+ if variable_name in self._variable_attributes:
253
+ return_dict: dict = self._variable_attributes[variable_name]
254
+ return return_dict
255
+ # TODO: throw an error?
256
+ return {}
257
+
258
+ output = dict()
259
+ for attr_name in self.variable_attribute_schema["attribute_key"]:
260
+ # Standard case
261
+ if attr_name in self._variable_attributes[variable_name]:
262
+ output[attr_name] = self._variable_attributes[variable_name][attr_name]
263
+ # Case to handle DEPEND_i schema issues
264
+ elif attr_name == "DEPEND_i":
265
+ # DEFAULT_0 is not required, UNLESS we are dealing with
266
+ # variable_name = epoch
267
+ # Find all the attributes of variable_name that contain "DEPEND"
268
+ variable_depend_attrs = [
269
+ key
270
+ for key in self._variable_attributes[variable_name].keys()
271
+ if "DEPEND" in key
272
+ ]
273
+ # Confirm that each DEPEND_i attribute is unique
274
+ if len(set(variable_depend_attrs)) != len(variable_depend_attrs):
275
+ logging.warning(
276
+ f"Found duplicate DEPEND_i attribute in variable "
277
+ f"{variable_name}: {variable_depend_attrs}"
278
+ )
279
+ for variable_depend_attr in variable_depend_attrs:
280
+ output[variable_depend_attr] = self._variable_attributes[
281
+ variable_name
282
+ ][variable_depend_attr]
283
+ # TODO: Add more DEPEND_0 variable checks!
284
+ # Case to handle LABL_PTR_i schema issues
285
+ elif attr_name == "LABL_PTR_i":
286
+ # Find all the attributes of variable_name that contain "LABL_PTR"
287
+ variable_labl_attrs = [
288
+ key
289
+ for key in self._variable_attributes[variable_name].keys()
290
+ if "LABL_PTR" in key
291
+ ]
292
+ for variable_labl_attr in variable_labl_attrs:
293
+ output[variable_labl_attr] = self._variable_attributes[
294
+ variable_name
295
+ ][variable_labl_attr]
296
+ # Case to handle REPRESENTATION_i schema issues
297
+ elif attr_name == "REPRESENTATION_i":
298
+ # Find all the attributes of variable_name that contain
299
+ # "REPRESENTATION_i"
300
+ variable_rep_attrs = [
301
+ key
302
+ for key in self._variable_attributes[variable_name].keys()
303
+ if "REPRESENTATION" in key
304
+ ]
305
+ for variable_rep_attr in variable_rep_attrs:
306
+ output[variable_rep_attr] = self._variable_attributes[
307
+ variable_name
308
+ ][variable_rep_attr]
309
+ # Validating required schema
310
+ elif (
311
+ self.variable_attribute_schema["attribute_key"][attr_name]["required"]
312
+ and attr_name not in self._variable_attributes[variable_name]
313
+ ):
314
+ logging.warning(
315
+ "Required schema '"
316
+ + attr_name
317
+ + "' attribute not present for "
318
+ + variable_name
319
+ )
320
+ output[attr_name] = ""
321
+
322
+ return output
@@ -0,0 +1,212 @@
1
+ instrument_base: &instrument_base
2
+ Descriptor: &desc
3
+ CoDICE>Compact Dual Ion Composition Experiment
4
+ TEXT: &txt >
5
+ The Compact Dual Ion Composition Experiment (CoDICE) will measure the distributions and composition of interstellar
6
+ pickup ions (PUIs), particles that make it through the heliosheath into the heliosphere. CoDICE also collects and
7
+ characterizes solar wind ions including the mass and composition of highly energized particles (called suprathermal)
8
+ from the Sun. CoDICE combines an electrostatic analyzer (ESA) with a Time-Of-Flight versus Energy (TOF / E)
9
+ subsystem to simultaneously measure the velocity, arrival direction, ionic charge state, and mass of specific
10
+ species of ions in the LISM. CoDICE also has a path for higher energy particles to skip the ESA but still get
11
+ measured by the common TOF / E system. These measurements are critical in determining the Local Interstellar Medium
12
+ (LISM) composition and flow properties, the origin of the enigmatic suprathermal tails on the solar wind
13
+ distributions and advance understanding of the acceleration of particles in the heliosphere.
14
+ Instrument_type: Particles (space)
15
+
16
+ # L1a
17
+ imap_codice_l1a_hskp:
18
+ <<: *instrument_base
19
+ Data_level: 1A
20
+ Data_type: L1A_hskp->Level-1A Housekeeping Data
21
+ Logical_source: imap_codice_l1a_hskp
22
+ Logical_source_description: IMAP Mission CoDICE Instrument Level-1A Housekeeping Data.
23
+
24
+ imap_codice_l1a_hi-counters-aggregated:
25
+ <<: *instrument_base
26
+ Data_level: 1A
27
+ Data_type: L1A_hi-counters-aggregated->Level-1A Hi Aggregated Instrument Counts Data
28
+ Logical_source: imap_codice_l1a_hi-counters-aggregated
29
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1A Aggregated Instrument Counts Data.
30
+
31
+ imap_codice_l1a_hi-counters-singles:
32
+ <<: *instrument_base
33
+ Data_level: 1A
34
+ Data_type: L1A_hi-counters-singles->Level-1A Hi Single Instrument Counts Data
35
+ Logical_source: imap_codice_l1a_hi-counters-singles
36
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1A Single Instrument Counts Data.
37
+
38
+ imap_codice_l1a_hi-omni:
39
+ <<: *instrument_base
40
+ Data_level: 1A
41
+ Data_type: L1A_hi-omni->Level-1A Hi Omnidirectional Data
42
+ Logical_source: imap_codice_l1a_hi-omni
43
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1A Omnidirectional Data.
44
+
45
+ imap_codice_l1a_hi-sectored:
46
+ <<: *instrument_base
47
+ Data_level: 1A
48
+ Data_type: L1A_hi-sectored->Level-1A Hi Sectored Data
49
+ Logical_source: imap_codice_l1a_hi-sectored
50
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1A Sectored Data.
51
+
52
+ imap_codice_l1a_hi-pha:
53
+ <<: *instrument_base
54
+ Data_level: 1A
55
+ Data_type: L1A_hi-pha->Level-1A Hi Event Data
56
+ Logical_source: imap_codice_l1a_hi-pha
57
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1A Event Data.
58
+
59
+ imap_codice_l1a_lo-counters-aggregated:
60
+ <<: *instrument_base
61
+ Data_level: 1A
62
+ Data_type: L1A_lo-counters-aggregated->Level-1A Lo Aggregated Instrument Counts Data
63
+ Logical_source: imap_codice_l1a_lo-counters-aggregated
64
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Aggregated Instrument Counts Data.
65
+
66
+ imap_codice_l1a_lo-counters-singles:
67
+ <<: *instrument_base
68
+ Data_level: 1A
69
+ Data_type: L1A_lo-counters-aggregated->Level-1A Lo Single Instrument Counts Data
70
+ Logical_source: imap_codice_l1a_lo-counters-singles
71
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Single Instrument Counts Data.
72
+
73
+ imap_codice_l1a_lo-sw-angular:
74
+ <<: *instrument_base
75
+ Data_level: 1A
76
+ Data_type: L1A_lo-sw-angular->Level-1A Lo Sunward Angular Counts Data
77
+ Logical_source: imap_codice_l1a_lo-sw-angular
78
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Sunward Angular Counts Data.
79
+
80
+ imap_codice_l1a_lo-nsw-angular:
81
+ <<: *instrument_base
82
+ Data_level: 1A
83
+ Data_type: L1A_lo-nsw-angular->Level-1A Lo Non-Sunward Angular Counts Data
84
+ Logical_source: imap_codice_l1a_lo-nsw-angular
85
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Non-Sunward Angular Counts Data.
86
+
87
+ imap_codice_l1a_lo-sw-priority:
88
+ <<: *instrument_base
89
+ Data_level: 1A
90
+ Data_type: L1A_lo-sw-priority->Level-1A Lo Sunward Priority Counts Data
91
+ Logical_source: imap_codice_l1a_lo-sw-priority
92
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Sunward Priority Counts Data.
93
+
94
+ imap_codice_l1a_lo-nsw-priority:
95
+ <<: *instrument_base
96
+ Data_level: 1A
97
+ Data_type: L1A_lo-nsw-priority->Level-1A Lo Non-Sunward Priority Counts Data
98
+ Logical_source: imap_codice_l1a_lo-nsw-priority
99
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Non-Sunward Priority Counts Data.
100
+
101
+ imap_codice_l1a_lo-sw-species:
102
+ <<: *instrument_base
103
+ Data_level: 1A
104
+ Data_type: L1A_lo-sw-species->Level-1A Lo Sunward Species Counts Data
105
+ Logical_source: imap_codice_l1a_lo-sw-species
106
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Sunward Species Counts Data.
107
+
108
+ imap_codice_l1a_lo-nsw-species:
109
+ <<: *instrument_base
110
+ Data_level: 1A
111
+ Data_type: L1A_lo-nsw-species->Level-1A Lo Non-Sunward Species Counts Data
112
+ Logical_source: imap_codice_l1a_lo-nsw-species
113
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Non-Sunward Species Counts Data.
114
+
115
+ imap_codice_l1a_lo-pha:
116
+ <<: *instrument_base
117
+ Data_level: 1A
118
+ Data_type: L1A_lo-pha->Level-1A Lo Event Data
119
+ Logical_source: imap_codice_l1a_lo-pha
120
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1A Event Data.
121
+
122
+ # L1b
123
+ imap_codice_l1b_hskp:
124
+ <<: *instrument_base
125
+ Data_level: 1B
126
+ Data_type: L1B_hskp->Level-1B Housekeeping Data
127
+ Logical_source: imap_codice_l1b_hskp
128
+ Logical_source_description: IMAP Mission CoDICE Instrument Level-1B Housekeeping Data.
129
+
130
+ imap_codice_l1b_hi_counters_aggregated:
131
+ <<: *instrument_base
132
+ Data_level: 1B
133
+ Data_type: L1B_hi-counters-aggregated->Level-1B Hi Aggregated Instrument Rates Data
134
+ Logical_source: imap_codice_l1b_hi-counters-aggregated
135
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1B Aggregated Instrument Rates Data.
136
+
137
+ imap_codice_l1b_hi_counters_singles:
138
+ <<: *instrument_base
139
+ Data_level: 1B
140
+ Data_type: L1B_hi-counters-singles->Level-1B Hi Single Instrument Rates Data
141
+ Logical_source: imap_codice_l1b_hi-counters-singles
142
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1B Single Instrument Rates Data.
143
+
144
+ imap_codice_l1b_hi_omni:
145
+ <<: *instrument_base
146
+ Data_level: 1B
147
+ Data_type: L1B_hi-omni->Level-1B Hi Omnidirectional Data
148
+ Logical_source: imap_codice_l1b_hi-omni
149
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1B Omnidirectional Data.
150
+
151
+ imap_codice_l1b_hi_sectored:
152
+ <<: *instrument_base
153
+ Data_level: 1B
154
+ Data_type: L1B_hi-sectored->Level-1B Hi Sectored Data
155
+ Logical_source: imap_codice_l1b_hi-sectored
156
+ Logical_source_description: IMAP Mission CoDICE Hi Level-1B Sectored Data.
157
+
158
+ imap_codice_l1b_lo_counters_aggregated:
159
+ <<: *instrument_base
160
+ Data_level: 1B
161
+ Data_type: L1B_lo-counters-aggregated->Level-1B Lo Aggregated Instrument Rates Data
162
+ Logical_source: imap_codice_l1b_lo-counters-aggregated
163
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Aggregated Instrument Rates Data.
164
+
165
+ imap_codice_l1b_lo_counters_singles:
166
+ <<: *instrument_base
167
+ Data_level: 1B
168
+ Data_type: L1B_lo-counters-aggregated->Level-1B Lo Single Instrument Rates Data
169
+ Logical_source: imap_codice_l1b_lo-counters-singles
170
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Single Instrument Rates Data.
171
+
172
+ imap_codice_l1b_lo_sw_angular:
173
+ <<: *instrument_base
174
+ Data_level: 1B
175
+ Data_type: L1B_lo-sw-angular->Level-1B Lo Sunward Angular Rates Data
176
+ Logical_source: imap_codice_l1b_lo-sw-angular
177
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Sunward Angular Rates Data.
178
+
179
+ imap_codice_l1b_lo_nsw_angular:
180
+ <<: *instrument_base
181
+ Data_level: 1B
182
+ Data_type: L1B_lo-nsw-angular->Level-1B Lo Non-Sunward Angular Rates Data
183
+ Logical_source: imap_codice_l1b_lo-nsw-angular
184
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Non-Sunward Angular Rates Data.
185
+
186
+ imap_codice_l1b_lo_sw_priority:
187
+ <<: *instrument_base
188
+ Data_level: 1B
189
+ Data_type: L1B_lo-sw-priority->Level-1B Lo Sunward Priority Rates Data
190
+ Logical_source: imap_codice_l1b_lo-sw-priority
191
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Sunward Priority Rates Data.
192
+
193
+ imap_codice_l1b_lo_nsw_priority:
194
+ <<: *instrument_base
195
+ Data_level: 1B
196
+ Data_type: L1B_lo-nsw-priority->Level-1B Lo Non-Sunward Priority Rates Data
197
+ Logical_source: imap_codice_l1b_lo-nsw-priority
198
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Non-Sunward Priority Rates Data.
199
+
200
+ imap_codice_l1b_lo_sw_species:
201
+ <<: *instrument_base
202
+ Data_level: 1B
203
+ Data_type: L1B_lo-sw-species->Level-1B Lo Sunward Species Rates Data
204
+ Logical_source: imap_codice_l1b_lo-sw-species
205
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Sunward Species Rates Data.
206
+
207
+ imap_codice_l1b_lo_nsw_species:
208
+ <<: *instrument_base
209
+ Data_level: 1B
210
+ Data_type: L1B_lo-nsw-species->Level-1B Lo Non-Sunward Species Rates Data
211
+ Logical_source: imap_codice_l1b_lo-nsw-species
212
+ Logical_source_description: IMAP Mission CoDICE Lo Level-1B Non-Sunward Species Rates Data.