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,77 @@
1
+ from pathlib import Path
2
+
3
+ import numpy as np
4
+ import pytest
5
+ import xarray as xr
6
+
7
+ from imap_processing.cdf.utils import load_cdf, write_cdf
8
+ from imap_processing.mag.l1b.mag_l1b import mag_l1b, mag_l1b_processing
9
+
10
+
11
+ @pytest.fixture(scope="module")
12
+ def mag_l1a_dataset():
13
+ epoch = xr.DataArray(np.arange(20), name="epoch", dims=["epoch"])
14
+ direction = xr.DataArray(np.arange(4), name="direction", dims=["direction"])
15
+ vectors = xr.DataArray(
16
+ np.zeros((20, 4)),
17
+ dims=["epoch", "direction"],
18
+ coords={"epoch": epoch, "direction": direction},
19
+ )
20
+
21
+ vectors[0, :] = np.array([1, 1, 1, 0])
22
+
23
+ output_dataset = xr.Dataset(
24
+ coords={"epoch": epoch, "direction": direction},
25
+ )
26
+ output_dataset["vectors"] = vectors
27
+
28
+ return output_dataset
29
+
30
+
31
+ def test_mag_processing(mag_l1a_dataset):
32
+ mag_l1a_dataset.attrs["Logical_source"] = ["imap_mag_l1a_norm-mago"]
33
+
34
+ mag_l1b = mag_l1b_processing(mag_l1a_dataset)
35
+
36
+ np.testing.assert_allclose(
37
+ mag_l1b["vectors"][0].values, [2.29819857, 2.22914442, 2.24950008, 0]
38
+ )
39
+ np.testing.assert_allclose(mag_l1b["vectors"][1].values, [0, 0, 0, 0])
40
+
41
+ assert mag_l1b["vectors"].values.shape == mag_l1a_dataset["vectors"].values.shape
42
+
43
+ mag_l1a_dataset.attrs["Logical_source"] = ["imap_mag_l1a_norm-magi"]
44
+
45
+ mag_l1b = mag_l1b_processing(mag_l1a_dataset)
46
+
47
+ np.testing.assert_allclose(
48
+ mag_l1b["vectors"][0].values, [2.27615106, 2.22638234, 2.24382211, 0]
49
+ )
50
+ np.testing.assert_allclose(mag_l1b["vectors"][1].values, [0, 0, 0, 0])
51
+
52
+ assert mag_l1b["vectors"].values.shape == mag_l1a_dataset["vectors"].values.shape
53
+
54
+
55
+ def test_mag_attributes(mag_l1a_dataset):
56
+ mag_l1a_dataset.attrs["Logical_source"] = ["imap_mag_l1a_norm-mago"]
57
+
58
+ output = mag_l1b(mag_l1a_dataset, "v001")
59
+ assert output.attrs["Logical_source"] == "imap_mag_l1b_norm-mago"
60
+
61
+ mag_l1a_dataset.attrs["Logical_source"] = ["imap_mag_l1a_burst-magi"]
62
+
63
+ output = mag_l1b(mag_l1a_dataset, "v001")
64
+ assert output.attrs["Logical_source"] == "imap_mag_l1b_burst-magi"
65
+
66
+ assert output.attrs["Data_level"] == "L1B"
67
+
68
+
69
+ def test_cdf_output():
70
+ l1a_cdf = load_cdf(
71
+ Path(__file__).parent / "imap_mag_l1a_burst-magi_20231025_v001.cdf"
72
+ )
73
+ l1b_dataset = mag_l1b(l1a_cdf, "v001")
74
+
75
+ output_path = write_cdf(l1b_dataset)
76
+
77
+ assert Path.exists(output_path)
@@ -0,0 +1,40 @@
1
+ import numpy as np
2
+ import pytest
3
+ import xarray as xr
4
+
5
+ from imap_processing.mag.l1c.mag_l1c import mag_l1c
6
+
7
+
8
+ @pytest.fixture(scope="module")
9
+ def mag_l1b_dataset():
10
+ epoch = xr.DataArray(np.arange(20), name="epoch", dims=["epoch"])
11
+ direction = xr.DataArray(np.arange(4), name="direction", dims=["direction"])
12
+ vectors = xr.DataArray(
13
+ np.zeros((20, 4)),
14
+ dims=["epoch", "direction"],
15
+ coords={"epoch": epoch, "direction": direction},
16
+ )
17
+
18
+ vectors[0, :] = np.array([1, 1, 1, 0])
19
+
20
+ output_dataset = xr.Dataset(
21
+ coords={"epoch": epoch, "direction": direction},
22
+ )
23
+ output_dataset["vectors"] = vectors
24
+
25
+ return output_dataset
26
+
27
+
28
+ def test_mag_attributes(mag_l1b_dataset):
29
+ # Fixture from test_mag_l1b.py, since L1A and L1B are very similar
30
+ mag_l1b_dataset.attrs["Logical_source"] = ["imap_mag_l1b_norm-mago"]
31
+
32
+ output = mag_l1c(mag_l1b_dataset, mag_l1b_dataset, "v001")
33
+ assert output.attrs["Logical_source"] == "imap_mag_l1c_norm-mago"
34
+
35
+ mag_l1b_dataset.attrs["Logical_source"] = ["imap_mag_l1b_norm-magi"]
36
+
37
+ output = mag_l1c(mag_l1b_dataset, mag_l1b_dataset, "v001")
38
+ assert output.attrs["Logical_source"] == "imap_mag_l1c_norm-magi"
39
+
40
+ assert output.attrs["Data_level"] == "L1C"
File without changes
@@ -0,0 +1,4 @@
1
+ {SPICE_TEST_DATA_PATH}/imap_sclk_0000.tsc
2
+ {SPICE_TEST_DATA_PATH}/naif0012.tls
3
+ {SPICE_TEST_DATA_PATH}/imap_spk_demo.bsp
4
+ {SPICE_TEST_DATA_PATH}/de440s.bsp
@@ -0,0 +1,171 @@
1
+ KPL/FK
2
+
3
+ Interstellar Mapping and Acceleration Probe Dynamic Frames Kernel
4
+ ========================================================================
5
+
6
+ This kernel contains SPICE frame definitions to support the IMAP mission.
7
+
8
+ To be consistent with conventions prior to the mission name change
9
+ from Solar Probe Plus (SPP) to Parker Solar Probe (PSP) in 2017, frame
10
+ names and other text IDs are prefixed with the legacy acronym, SPP.
11
+
12
+ Version and Date
13
+ ---------------------------------------------------------------
14
+
15
+ The TEXT_KERNEL_ID stores version information of loaded project text
16
+ kernels. Each entry associated with the keyword is a string that
17
+ consists of four parts: the kernel name, version, entry date, and type.
18
+
19
+ SPP Dynamic Frame Kernel Version:
20
+
21
+ \begindata
22
+
23
+ TEXT_KERNEL_ID = 'IMAP_DYNAMIC_FRAMES V1.0.0 2024-XXXX-NN FK'
24
+
25
+ \begintext
26
+
27
+
28
+ Version 1.0.0 -- April 10, 2024 -- Nick Dutton (JHU/APL)
29
+
30
+
31
+ References
32
+ ---------------------------------------------------------------
33
+
34
+ 1. NAIF SPICE `Kernel Pool Required Reading'
35
+
36
+ 2. NAIF SPICE `Frames Required Reading'
37
+
38
+ 3. Email from Scott Turner, received May 2, 2018, containing
39
+ attachment InstrumentFrames.pptx, by Martha Kusterer dated
40
+ Sept. 19, 2017
41
+
42
+ 4. msgr_dyn_v600.tf, in Planetary Data System (PDS)
43
+ data set MESS-E/V/H-SPICE-6-V1.0
44
+
45
+ 5. stereo_rtn.tf, at
46
+ ftp://sohoftp.nascom.nasa.gov/solarsoft/stereo/gen/data/spice
47
+
48
+ 6. heliospheric.tf, at
49
+ ftp://sohoftp.nascom.nasa.gov/solarsoft/stereo/gen/data/spice/gen
50
+
51
+ 7. Email from Scott Turner received May 11, 2018 containing notes
52
+ taken from the science team meeting on the same date.
53
+
54
+ 8. Snodgrass, H.B., Ulrich, R.K., 1990, Rotation of Doppler features
55
+ in the solar photosphere. Astrophys. J. 351, 309. doi:10.1086/168467
56
+
57
+
58
+ Contact Information
59
+ ---------------------------------------------------------------
60
+
61
+ Direct questions, comments, or concerns about the contents of this
62
+ kernel to:
63
+
64
+ Scott Turner, JHUAPL, (443)778-1693, Scott.Turner@jhuapl.edu
65
+
66
+ or
67
+
68
+ Lillian Nguyen, JHUAPL (443)778-5477, Lillian.Nguyen@jhuapl.edu
69
+
70
+ or
71
+
72
+ Douglas Rodgers, JHUAPL (443)778-4228, Douglas.Rodgers@jhuapl.edu
73
+
74
+
75
+ Implementation Notes
76
+ ---------------------------------------------------------------
77
+
78
+ This file is used by the SPICE system as follows: programs that make use
79
+ of this frame kernel must `load' the kernel normally during program
80
+ initialization. Loading the kernel associates the data items with
81
+ their names in a data structure called the `kernel pool'. The SPICELIB
82
+ routine FURNSH loads a kernel into the pool as shown below:
83
+
84
+ FORTRAN: (SPICELIB)
85
+
86
+ CALL FURNSH ( frame_kernel_name )
87
+
88
+ C: (CSPICE)
89
+
90
+ furnsh_c ( frame_kernel_name );
91
+
92
+ IDL: (ICY)
93
+
94
+ cspice_furnsh, frame_kernel_name
95
+
96
+ MATLAB: (MICE)
97
+
98
+ cspice_furnsh ( frame_kernel_name )
99
+
100
+ This file was created and may be updated with a text editor or word
101
+ processor.
102
+
103
+
104
+ IMAP Dynamic Frames
105
+ ---------------------------------------------------------------
106
+
107
+ This frame kernel defines a series of dynamic frames listed in [3]
108
+ that support Parker Solar Probe data reduction and analysis. All
109
+ of the frame names defined by this kernel are prefixed with 'SPP_'
110
+ (the legacy mission name acronym as described in the leading paragraph
111
+ of this file) to avoid conflict with alternative definitions not
112
+ specific to the project. Further, the project-specific ID codes
113
+ -96900 to -96999 have been set aside to support these dynamic frames.
114
+
115
+ The following dynamic frames are defined in this kernel file:
116
+
117
+ Frame Name Relative To Type NAIF ID
118
+ ====================== =================== ======= =======
119
+
120
+ Earth Based Frames:
121
+ ------------------
122
+ EARTH_FIXED IAU_EARTH FIXED
123
+ IMAP_RTN J2000 DYNAMIC -96900
124
+ SPP_GSE J2000 DYNAMIC -96901
125
+
126
+ Mercury Based Frames:
127
+ ------------------
128
+ SPP_MSO J2000 DYNAMIC -96903
129
+
130
+ Venus Based Frames:
131
+ ------------------
132
+ SPP_VSO J2000 DYNAMIC -96904
133
+
134
+ Sun Based Frames:
135
+ ------------------
136
+ SPP_HG J2000 DYNAMIC -96910
137
+ SPP_HCI J2000 DYNAMIC -96911
138
+ SPP_HEE J2000 DYNAMIC -96912
139
+ SPP_HEEQ J2000 DYNAMIC -96913
140
+ SPP_RTN J2000 DYNAMIC -96914
141
+ SPP_HERTN J2000 DYNAMIC -96915
142
+ SPP_HGI J2000 DYNAMIC -96916
143
+ SPP_HGDOPP J2000 DYNAMIC -96917
144
+ SPP_HGMAG J2000 DYNAMIC -96918
145
+ SPP_HGSPEC J2000 DYNAMIC -96919
146
+
147
+
148
+
149
+ \begindata
150
+
151
+ NAIF_BODY_NAME += ( 'IMAP_DPS' )
152
+ NAIF_BODY_CODE += ( -43901 )
153
+
154
+
155
+
156
+ \begintext
157
+
158
+ DPS Frame
159
+
160
+ \begindata
161
+
162
+ FRAME_IMAP_DPS = -43901
163
+ FRAME_-43901_NAME = 'IMAP_DPS'
164
+ FRAME_-43901_CLASS = 3
165
+ FRAME_-43901_CLASS_ID = -43901
166
+ FRAME_-43901_CENTER = -43
167
+ CK_-43901_SCLK = -43
168
+
169
+ \begintext
170
+
171
+ END OF FILE
@@ -0,0 +1,156 @@
1
+ \begintext
2
+
3
+ FILENAME = "imap_0000.tsc"
4
+ CREATION_DATE = "5-January-2021"
5
+
6
+
7
+ IMAP Spacecraft Clock Kernel (SCLK)
8
+ ===========================================================================
9
+
10
+ This file is a SPICE spacecraft clock (SCLK) kernel containing
11
+ information required for time conversions involving the on-board
12
+ IMAP spacecraft clock.
13
+
14
+ Version
15
+ --------------------------------------------------------
16
+
17
+ IMAP SCLK Kernel Version:
18
+
19
+ IMAP version 0.3 - April 22, 2022 -- Mike Ruffolo
20
+ Updated to use NAIF SC ID 43
21
+
22
+ IMAP Version 0.2 - June 2, 2021 -- Caroline Cocca
23
+ Updated to use temporary spacecraft id of 225
24
+
25
+ IMAP Version 0.1 - March 6, 2015 -- Eric Melin
26
+ Updated text to replace references to RBSP with SPP
27
+
28
+ IMAP Version 0.0 - August 7, 2014 -- Eric Melin
29
+ The initial SPP spice kernel.
30
+ This file was created by using RBSPA initial kernel and
31
+ modifying the spacecraft ID.
32
+
33
+
34
+ Usage
35
+ --------------------------------------------------------
36
+
37
+ This file is used by the SPICE system as follows: programs that
38
+ make use of this SCLK kernel must 'load' the kernel, normally
39
+ during program initialization. Loading the kernel associates
40
+ the data items with their names in a data structure called the
41
+ 'kernel pool'. The SPICELIB routine FURNSH loads text kernel
42
+ files, such as this one, into the pool as shown below:
43
+
44
+ FORTRAN:
45
+
46
+ CALL FURNSH ( SCLK_kernel_name )
47
+
48
+ C:
49
+
50
+ furnsh_c ( SCLK_kernel_name );
51
+
52
+ Once loaded, the SCLK time conversion routines will be able to
53
+ access the necessary data located in this kernel for their
54
+ designed purposes.
55
+
56
+ References
57
+ --------------------------------------------------------
58
+
59
+ 1. "SCLK Required Reading"
60
+
61
+ Inquiries
62
+ --------------------------------------------------------
63
+
64
+ If you have any questions regarding this file or its usage,
65
+ contact:
66
+
67
+ Scott Turner
68
+ (443)778-1693
69
+ Scott.Turner@jhuapl.edu
70
+
71
+ Kernel Data
72
+ --------------------------------------------------------
73
+
74
+ The first block of keyword equals value assignments define the
75
+ type, parallel time system, and format of the spacecraft clock.
76
+ These fields are invariant from SCLK kernel update to SCLK
77
+ kernel update.
78
+
79
+ The IMAP spacecraft clock is represented by the SPICE
80
+ type 1 SCLK kernel. It uses TDT, Terrestrial Dynamical Time,
81
+ as its parallel time system.
82
+
83
+ \begindata
84
+
85
+ SCLK_KERNEL_ID = ( @2009-07-09T12:20:32 )
86
+ SCLK_DATA_TYPE_43 = ( 1 )
87
+ SCLK01_TIME_SYSTEM_43 = ( 2 )
88
+
89
+
90
+ \begintext
91
+
92
+ In a particular partition of the IMAP spacecraft clock,
93
+ the clock read-out consists of two separate stages:
94
+
95
+ 1/18424652:24251
96
+
97
+ The first stage, a 32 bit field, represents the spacecraft
98
+ clock seconds count. The second, a 16 bit field, represents
99
+ counts of 20 microsecond increments of the spacecraft clock.
100
+
101
+ The following keywords and their values establish this structure:
102
+
103
+ \begindata
104
+
105
+ SCLK01_N_FIELDS_43 = ( 2 )
106
+ SCLK01_MODULI_43 = ( 4294967296 50000 )
107
+ SCLK01_OFFSETS_43 = ( 0 0 )
108
+ SCLK01_OUTPUT_DELIM_43 = ( 2 )
109
+
110
+
111
+ \begintext
112
+
113
+ This concludes the invariant portion of the SCLK kernel data. The
114
+ remaining sections of the kernel may require updates as the clock
115
+ correlation coefficients evolve in time. The first section below
116
+ establishes the clock partitions. The data in this section consists
117
+ of two parallel arrays, which denote the start and end values in
118
+ ticks of each partition of the spacecraft clock.
119
+
120
+ SPICE utilizes these two arrays to map from spacecraft clock ticks,
121
+ determined with the usual modulo arithmetic, to encoded SCLK--the
122
+ internal, monotonically increasing sequence used to tag various
123
+ data sources with spacecraft clock.
124
+
125
+ \begindata
126
+
127
+ SCLK_PARTITION_START_43 = ( 0.00000000000000e+00 )
128
+
129
+ SCLK_PARTITION_END_43 = ( 2.14748364799999e+14 )
130
+
131
+ \begintext
132
+
133
+ The remaining section of the SCLK kernel defines the clock correlation
134
+ coefficients. Each line contains a 'coefficient triple':
135
+
136
+ Encoded SCLK at which Rate is introduced.
137
+ Corresponding TDT Epoch at which Rate is introduced.
138
+ Rate in TDT (seconds) / most significant clock count (~seconds).
139
+
140
+ SPICE uses linear extrapolation to convert between the parallel time
141
+ system and encoded SCLK. The triples are stored in the array defined
142
+ below.
143
+
144
+ The first time triplet below was entered manually and represents the
145
+ approximate time (in TDT) at which SCLK = zero. The current plan for
146
+ IMAP is that the given epoch will be used for both Observatory I&T
147
+ and launch. Note that the conversion from UTC to TDT used 34 leap
148
+ seconds.
149
+
150
+ \begindata
151
+
152
+ SCLK01_COEFFICIENTS_43 = (
153
+
154
+ 0 @01-JAN-2010-00:01:06.184000 1.00000000000
155
+
156
+ )
@@ -0,0 +1,3 @@
1
+ {SPICE_TEST_DATA_PATH}/imap_sclk_0000.tsc
2
+ {SPICE_TEST_DATA_PATH}/naif0012.tls
3
+ {SPICE_TEST_DATA_PATH}/imap_spk_demo.bsp