imap-processing 0.16.2__py3-none-any.whl → 0.17.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (45) hide show
  1. imap_processing/_version.py +2 -2
  2. imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +24 -0
  3. imap_processing/cdf/config/imap_codice_l1b_variable_attrs.yaml +24 -0
  4. imap_processing/cdf/config/imap_hi_variable_attrs.yaml +8 -8
  5. imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +1 -1
  6. imap_processing/cdf/config/imap_hit_l2_variable_attrs.yaml +394 -411
  7. imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +9 -9
  8. imap_processing/cdf/config/imap_idex_l2b_variable_attrs.yaml +150 -57
  9. imap_processing/cdf/config/imap_swapi_variable_attrs.yaml +19 -0
  10. imap_processing/cdf/config/imap_swe_l1b_variable_attrs.yaml +20 -0
  11. imap_processing/cdf/config/imap_swe_l2_variable_attrs.yaml +39 -0
  12. imap_processing/cdf/config/imap_ultra_global_cdf_attrs.yaml +108 -0
  13. imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +103 -2
  14. imap_processing/cdf/utils.py +7 -1
  15. imap_processing/cli.py +14 -8
  16. imap_processing/codice/codice_l1a.py +89 -30
  17. imap_processing/hi/hi_l1a.py +4 -4
  18. imap_processing/hi/hi_l1b.py +2 -2
  19. imap_processing/hi/packet_definitions/TLM_HI_COMBINED_SCI.xml +218 -38
  20. imap_processing/hit/hit_utils.py +2 -2
  21. imap_processing/hit/l0/decom_hit.py +2 -1
  22. imap_processing/hit/l2/hit_l2.py +2 -1
  23. imap_processing/idex/idex_constants.py +7 -0
  24. imap_processing/idex/idex_l2b.py +372 -55
  25. imap_processing/lo/l0/lo_star_sensor.py +48 -0
  26. imap_processing/lo/l1a/lo_l1a.py +32 -32
  27. imap_processing/mag/l0/decom_mag.py +9 -6
  28. imap_processing/mag/l0/mag_l0_data.py +46 -0
  29. imap_processing/swapi/l1/swapi_l1.py +12 -2
  30. imap_processing/swapi/l2/swapi_l2.py +7 -6
  31. imap_processing/swe/l1b/swe_l1b.py +9 -0
  32. imap_processing/swe/l2/swe_l2.py +111 -17
  33. imap_processing/ultra/l0/decom_tools.py +13 -6
  34. imap_processing/ultra/l0/decom_ultra.py +190 -4
  35. imap_processing/ultra/l0/ultra_utils.py +184 -3
  36. imap_processing/ultra/l1a/ultra_l1a.py +52 -4
  37. imap_processing/ultra/packet_definitions/ULTRA_SCI_COMBINED.xml +3 -3
  38. imap_processing/utils.py +20 -42
  39. {imap_processing-0.16.2.dist-info → imap_processing-0.17.0.dist-info}/METADATA +1 -1
  40. {imap_processing-0.16.2.dist-info → imap_processing-0.17.0.dist-info}/RECORD +43 -44
  41. imap_processing/lo/l0/data_classes/star_sensor.py +0 -98
  42. imap_processing/lo/l0/utils/lo_base.py +0 -57
  43. {imap_processing-0.16.2.dist-info → imap_processing-0.17.0.dist-info}/LICENSE +0 -0
  44. {imap_processing-0.16.2.dist-info → imap_processing-0.17.0.dist-info}/WHEEL +0 -0
  45. {imap_processing-0.16.2.dist-info → imap_processing-0.17.0.dist-info}/entry_points.txt +0 -0
@@ -54,20 +54,20 @@ imap_idex_l2a_sci:
54
54
  imap_idex_l2b_sci:
55
55
  <<: *instrument_base
56
56
  Data_level: 2B
57
- Data_type: L2B_SCI>Level-2B Science Weekly Data
58
- Logical_source: imap_idex_l2b_sci-1week
59
- Logical_source_description: IMAP Mission IDEX Instrument Level-2B Weekly Data
57
+ Data_type: L2B_SCI-1MO>Level-2B Science Monthly Data
58
+ Logical_source: imap_idex_l2b_sci-1mo
59
+ Logical_source_description: IMAP Mission IDEX Instrument Level-2B Monthly Data
60
60
 
61
61
  imap_idex_l2c_sci-healpix:
62
62
  <<: *instrument_base
63
63
  Data_level: 2C
64
- Data_type: L2C_HEALPIX-MAP-1WEEK>Level-2C HEALPIX Map Weekly Data
65
- Logical_source: imap_idex_l2c_healpix-map-1week
66
- Logical_source_description: IMAP Mission IDEX Instrument Level-2C Weekly Data Healpix
64
+ Data_type: L2C_HEALPIX-MAP-1MO>Level-2C HEALPIX Map Monthly Data
65
+ Logical_source: imap_idex_l2c_healpix-map-1mo
66
+ Logical_source_description: IMAP Mission IDEX Instrument Level-2C Monthly Data Healpix
67
67
 
68
68
  imap_idex_l2c_sci-rectangular:
69
69
  <<: *instrument_base
70
70
  Data_level: 2C
71
- Data_type: L2C_RECTANGULAR-MAP-1WEEK>Level-2C Rectangular Map Weekly Data
72
- Logical_source: imap_idex_l2c_rectangular-map-1week
73
- Logical_source_description: IMAP Mission IDEX Instrument Level-2C Weekly Data Rectangular
71
+ Data_type: L2C_RECTANGULAR-MAP-1MO>Level-2C Rectangular Map Monthly Data
72
+ Logical_source: imap_idex_l2c_rectangular-map-1mo
73
+ Logical_source_description: IMAP Mission IDEX Instrument Level-2C Monthly Data Rectangular
@@ -1,71 +1,164 @@
1
1
  int_fillval: &int_fillval -9223372036854775808
2
+ int_maxval: &int_maxval 9223372036854775807
3
+ double_fillval: &double_fillval -1.0E31
2
4
 
3
- impact_day_of_year:
4
- CATDESC: The day of the year when the impact occurred.
5
- FIELDNAM: Impact Day of Year
6
- LABLAXIS: Impact DOY
7
- DEPEND_0: epoch
8
- DISPLAY_TYPE: time_series
9
- FILLVAL: *int_fillval
10
- FORMAT: I3
11
- VALIDMIN: 1
12
- VALIDMAX: 366
13
- VAR_TYPE: data
14
- UNITS: days
15
- DICT_KEY: SPASE>SupportQuantity:Temporal,Qualifier:Array # TODO: review this
5
+ # Label attributes
6
+ mass_labels:
7
+ CATDESC: Labels for mass bins
8
+ FIELDNAM: Mass Bin Labels
9
+ VAR_TYPE: metadata
10
+ FORMAT: A8
11
+ DEPEND_1: mass_bins
12
+ DICT_KEY: SPASE>Support>SupportQuantity:Other
16
13
 
17
- spin_phase_quadrants:
18
- CATDESC: The spacecraft spin phase at the time of detection.
19
- VAR_NOTES: This is given in quadrants (0, 90, 180, 270).
20
- FIELDNAM: Spin Phase Quadrants
21
- LABLAXIS: Spin Phase Quadrants
22
- DEPEND_0: epoch
23
- DISPLAY_TYPE: time_series
24
- FILLVAL: *int_fillval
25
- FORMAT: I3
26
- VALIDMIN: 0
27
- VALIDMAX: 270
28
- VAR_TYPE: data
29
- UNITS: degrees
30
- DICT_KEY: SPASE>SupportQuantity:SpinPhase,Qualifier:Array # TODO: review this
14
+ charge_labels:
15
+ CATDESC: Labels for impact charge bins
16
+ FIELDNAM: Impact Charge Bin Labels
17
+ VAR_TYPE: metadata
18
+ FORMAT: A8
19
+ DEPEND_1: impact_charge_bins
20
+ DICT_KEY: SPASE>Support>SupportQuantity:Other
31
21
 
32
- science_acquisition_messages:
33
- CATDESC: The IDEX science acquisition start and stop messages.
34
- FIELDNAM: Science Acquisition Messages
35
- DEPEND_0: epoch_science_acquisition
36
- FORMAT: A30
37
- FILLVAL: " "
22
+ spin_phase_labels:
23
+ CATDESC: Labels for spin phase bins
24
+ FIELDNAM: Spin Phase Bin Labels
38
25
  VAR_TYPE: metadata
39
- DICT_KEY: SPASE>SupportQuantity:Housekeeping,Qualifier:Array
26
+ FORMAT: A8
27
+ DEPEND_1: spin_phase_bins
28
+ DICT_KEY: SPASE>Support>SupportQuantity:Other
29
+
30
+ # Index attributes
31
+ mass_bins:
32
+ CATDESC: Log-spaced mass bins
33
+ FIELDNAM: Mass Bins
34
+ UNITS: " "
35
+ FORMAT: I4
36
+ VAR_TYPE: support_data
37
+ SCALETYP: linear
38
+ LABLAXIS: Mass Bins
39
+ VALIDMIN: 0
40
+ VALIDMAX: 10
41
+ FILLVAL: *int_fillval
42
+ LABL_PTR_1: mass_labels
43
+ DICT_KEY: SPASE>Support>SupportQuantity:Other
40
44
 
41
- science_acquisition_values:
42
- CATDESC: Values indicating if the event is a science start (1) or stop (0).
43
- FIELDNAM: Science Acquisition Value
44
- DEPEND_0: epoch_science_acquisition
45
+ spin_phase_bins:
46
+ CATDESC: The spacecraft spin phase at the time of detection
47
+ VAR_NOTES: This is given in 4 bins [315-45, 45-135, 135-225, 225-315] degrees.
48
+ FIELDNAM: Spin Phase Bins
49
+ LABLAXIS: Spin Phase Bins
50
+ VAR_TYPE: support_data
51
+ SCALETYP: linear
45
52
  FILLVAL: *int_fillval
46
- FORMAT: I1
53
+ FORMAT: I4
47
54
  VALIDMIN: 0
48
- VALIDMAX: 1
55
+ VALIDMAX: 3
56
+ LABL_PTR_1: spin_phase_labels
49
57
  UNITS: " "
50
- VAR_TYPE: support_data
51
- DICT_KEY: SPASE>SupportQuantity:Housekeeping,Qualifier:Array
58
+ DICT_KEY: SPASE>SupportQuantity:SpinPhase,Qualifier:Array
52
59
 
53
- epoch_science_acquisition:
54
- CATDESC: Time, number of nanoseconds since J2000 with leap seconds included
55
- FIELDNAM: Epoch Science Acquisition Time
56
- LABLAXIS: Epoch Science Acquisition Time
57
- FILLVAL: -9223372036854775808
58
- FORMAT: " " # Supposedly not required, fails in xarray_to_cdf
59
- VALIDMIN: -9223372036854775808
60
- VALIDMAX: 9223372036854775807
61
- UNITS: ns
60
+ impact_charge_bins:
61
+ CATDESC: Log-spaced impact charge bins
62
+ VAR_NOTES: Impact Charge Bins
63
+ FIELDNAM: Impact Charge Bins
64
+ LABLAXIS: Impact Charge Bins
62
65
  VAR_TYPE: support_data
63
66
  SCALETYP: linear
64
- MONOTON: INCREASE
65
- TIME_BASE: J2000
66
- TIME_SCALE: Terrestrial Time
67
- CDF_DATA_TYPE: CDF_TIME_TT2000
68
- REFERENCE_POSITION: Rotating Earth Geoid
69
- RESOLUTION: ' '
67
+ FILLVAL: *int_fillval
68
+ FORMAT: I4
69
+ VALIDMIN: 0
70
+ VALIDMAX: 10
71
+ LABL_PTR_1: spin_phase_labels
72
+ UNITS: " "
73
+ DICT_KEY: SPASE>Support>SupportQuantity:Other
74
+
75
+ # Base attributes for charge and mass variables
76
+ base_charge: &base_charge
77
+ CATDESC: " "
78
+ FIELDNAM: " "
79
+ DEPEND_0: epoch
80
+ DEPEND_1: impact_charge_bins
81
+ DEPEND_2: spin_phase_bins
82
+ LABL_PTR_1: charge_labels
83
+ LABL_PTR_2: spin_phase_labels
84
+ DISPLAY_TYPE: spectrogram
85
+ VAR_TYPE: data
86
+ FILLVAL: *int_fillval
87
+ FORMAT: E10.3
88
+ VALIDMIN: -1
89
+ VALIDMAX: *int_maxval
90
+
91
+ base_mass: &base_mass
92
+ CATDESC: " "
93
+ FIELDNAM: " "
94
+ DEPEND_0: epoch
95
+ DEPEND_1: mass_bins
96
+ DEPEND_2: spin_phase_bins
97
+ LABL_PTR_1: mass_labels
98
+ LABL_PTR_2: spin_phase_labels
99
+ DISPLAY_TYPE: spectrogram
100
+ VAR_TYPE: data
101
+ FILLVAL: *int_fillval
102
+ FORMAT: E10.3
103
+ VALIDMIN: 0.0
104
+ VALIDMAX: *int_maxval
105
+
106
+ rate_by_charge:
107
+ <<: *base_charge
108
+ CATDESC: Count rate per day by impact charge and spin phase.
109
+ FIELDNAM: Rate by Charge
110
+ UNITS: day^-1
111
+ FILLVAL: *double_fillval
112
+ DICT_KEY: SPASE>SupportQuantity:CountRate,Qualifier:Array
113
+
114
+ rate_by_mass:
115
+ <<: *base_mass
116
+ CATDESC: Count rate per day by mass and spin phase.
117
+ FIELDNAM: Rate by Mass
118
+ UNITS: day^-1
119
+ FILLVAL: *double_fillval
120
+ DICT_KEY: SPASE>SupportQuantity:CountRate,Qualifier:Array
121
+
122
+ counts_by_charge:
123
+ <<: *base_charge
124
+ CATDESC: Count by impact charge and spin phase.
125
+ FIELDNAM: Counts by Charge
126
+ FORMAT: I8
127
+ UNITS: counts
128
+ DICT_KEY: SPASE>Particle>ParticleType:Dust,ParticleQuantity:Counts,Qualifier:Array
129
+
130
+ counts_by_mass:
131
+ <<: *base_mass
132
+ CATDESC: Count by mass and spin phase.
133
+ FIELDNAM: Counts by Mass
134
+ FORMAT: I8
135
+ UNITS: counts
136
+ DICT_KEY: SPASE>Particle>ParticleType:Dust,ParticleQuantity:Counts,Qualifier:Array
137
+
138
+ impact_day_of_year:
139
+ CATDESC: The unique day of the years when dust impacts occurred.
140
+ FIELDNAM: Impact Day of Year
141
+ LABLAXIS: Impact DOY
142
+ DEPEND_0: epoch
70
143
  DISPLAY_TYPE: time_series
144
+ FILLVAL: *int_fillval
145
+ FORMAT: I3
146
+ VALIDMIN: 1
147
+ VALIDMAX: 366
148
+ VAR_TYPE: data
149
+ UNITS: days
71
150
  DICT_KEY: SPASE>SupportQuantity:Temporal,Qualifier:Array
151
+
152
+ rate_calculation_quality_flags:
153
+ CATDESC: Quality flag for rate calculation (1 = good, 0 = insufficient IDEX uptime data)
154
+ FIELDNAM: Rate Quality Flag
155
+ LABLAXIS: Quality Flag
156
+ DEPEND_0: epoch
157
+ DISPLAY_TYPE: time_series
158
+ FILLVAL: 255
159
+ FORMAT: I1
160
+ VALIDMIN: 0
161
+ VALIDMAX: 1
162
+ VAR_TYPE: data
163
+ UNITS: " "
164
+ DICT_KEY: SPASE>SupportQuantity:QualityFlag,Qualifier:Array
@@ -128,6 +128,25 @@ metadata_default: &metadata_default
128
128
  SCALETYP: linear
129
129
  DICT_KEY: SPASE>Support>SupportQuantity:Other
130
130
 
131
+ sci_start_time:
132
+ CATDESC: Start time of sweep
133
+ DEPEND_0: epoch
134
+ FIELDNAM: Science Start time
135
+ LABLAXIS: sci_start_time
136
+ FILLVAL: -9223372036854775808
137
+ FORMAT: " " # Supposedly not required, fails in xarray_to_cdf
138
+ VALIDMIN: -9223372036854775808
139
+ VALIDMAX: 9223372036854775807
140
+ UNITS: ns
141
+ VAR_TYPE: support_data
142
+ SCALETYP: linear
143
+ MONOTON: INCREASE
144
+ TIME_BASE: J2000
145
+ TIME_SCALE: Terrestrial Time
146
+ REFERENCE_POSITION: Rotating Earth Geoid
147
+ RESOLUTION: ' '
148
+ DICT_KEY: "SPASE>Support>SupportQantity:Temporal"
149
+
131
150
  # Minimum attrs setting for HK data
132
151
  hk_attrs: &hk_attrs
133
152
  CATDESC: Housekeeping data
@@ -110,6 +110,26 @@ science_data:
110
110
  Metadata field acq_duration is 17 uint. Max value of uint17 is 131071.
111
111
  Dividing max counts by acq_duration gave validmax
112
112
 
113
+ counts_stat_uncert:
114
+ CATDESC: Counts statistical uncertainty
115
+ FIELDNAM: Counts Stats Uncertainty
116
+ DEPEND_0: epoch
117
+ DEPEND_1: esa_step
118
+ DEPEND_2: spin_sector
119
+ DEPEND_3: cem_id
120
+ LABL_PTR_1: esa_step_label
121
+ LABL_PTR_2: spin_sector_label
122
+ LABL_PTR_3: cem_id_label
123
+ DISPLAY_TYPE: spectrogram
124
+ FILLVAL: -1.0000000E+31
125
+ FORMAT: E19.5
126
+ UNITS: counts
127
+ VALIDMIN: 0.0
128
+ VALIDMAX: 1.7976931348623157e+308 # TODO: find actual value
129
+ VAR_TYPE: data
130
+ SCALETYP: linear
131
+ DICT_KEY: SPASE>Particle>ParticleType:Electron,ParticleQuantity:Counts,Qualifier:Uncertainty
132
+
113
133
  acquisition_time:
114
134
  CATDESC: Acquisition time organized by voltage step and spin sector
115
135
  DEPEND_0: epoch
@@ -221,6 +221,45 @@ flux:
221
221
  VAR_TYPE: data
222
222
  DICT_KEY: SPASE>Particle>ParticleType:Electron,ParticleQuantity:NumberFlux,Qualifier:Array
223
223
 
224
+ psd_stat_uncert:
225
+ CATDESC: Phase space density statistical uncertainty
226
+ FIELDNAM: Phase Space Density Stats Uncertainty
227
+ DEPEND_0: epoch
228
+ DEPEND_1: esa_step
229
+ DEPEND_2: spin_sector
230
+ DEPEND_3: cem_id
231
+ LABL_PTR_1: esa_step_label
232
+ LABL_PTR_2: spin_sector_label
233
+ LABL_PTR_3: cem_id_label
234
+ DISPLAY_TYPE: spectrogram
235
+ FILLVAL: -1.0000000E+31
236
+ FORMAT: E19.5
237
+ UNITS: counts
238
+ VALIDMIN: 0.0
239
+ VALIDMAX: 1.7976931348623157e+308 # TODO: find actual value
240
+ VAR_TYPE: data
241
+ SCALETYP: linear
242
+ DICT_KEY: SPASE>Particle>ParticleType:Electron,ParticleQuantity:Counts,Qualifier:Uncertainty
243
+
244
+ flux_stat_uncert:
245
+ CATDESC: Flux statistical uncertainty
246
+ FIELDNAM: Flux Stats Uncertainty
247
+ DEPEND_0: epoch
248
+ DEPEND_1: esa_step
249
+ DEPEND_2: spin_sector
250
+ DEPEND_3: cem_id
251
+ LABL_PTR_1: esa_step_label
252
+ LABL_PTR_2: spin_sector_label
253
+ LABL_PTR_3: cem_id_label
254
+ DISPLAY_TYPE: spectrogram
255
+ FILLVAL: -1.0000000E+31
256
+ FORMAT: E19.5
257
+ UNITS: counts
258
+ VALIDMIN: 0.0
259
+ VALIDMAX: 1.7976931348623157e+308 # TODO: find actual value
260
+ VAR_TYPE: data
261
+ SCALETYP: linear
262
+ DICT_KEY: SPASE>Particle>ParticleType:Electron,ParticleQuantity:Counts,Qualifier:Uncertainty
224
263
 
225
264
  acquisition_time:
226
265
  CATDESC: Acquisition time organized by ESA step and spin sector
@@ -44,6 +44,30 @@ imap_ultra_l1a_90sensor-rates:
44
44
  Logical_source: imap_ultra_l1a_90sensor-rates
45
45
  Logical_source_description: IMAP-Ultra Instrument Level-1A Rates Data.
46
46
 
47
+ imap_ultra_l1a_45sensor-energy-rates:
48
+ <<: *instrument_base
49
+ Data_type: L1A_Energy_Rates>Level-1A Energy Rates
50
+ Logical_source: imap_ultra_l1a_45sensor-energy-rates
51
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Energy Rates Data.
52
+
53
+ imap_ultra_l1a_90sensor-energy-rates:
54
+ <<: *instrument_base
55
+ Data_type: L1A_Energy_Rates>Level-1A Energy Rates
56
+ Logical_source: imap_ultra_l1a_90sensor-energy-rates
57
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Energy Rates Data.
58
+
59
+ imap_ultra_l1a_45sensor-energy-spectra:
60
+ <<: *instrument_base
61
+ Data_type: L1A_Energy_Spectra>Level-1A Energy Spectra
62
+ Logical_source: imap_ultra_l1a_45sensor-energy-spectra
63
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Energy Spectra Data.
64
+
65
+ imap_ultra_l1a_90sensor-energy-spectra:
66
+ <<: *instrument_base
67
+ Data_type: L1A_Energy_Spectra>Level-1A Energy Spectra
68
+ Logical_source: imap_ultra_l1a_90sensor-energy-spectra
69
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Energy Spectra Data.
70
+
47
71
  imap_ultra_l1a_45sensor-de:
48
72
  <<: *instrument_base
49
73
  Data_type: L1A_DE>Level-1A Direct Event
@@ -56,6 +80,66 @@ imap_ultra_l1a_90sensor-de:
56
80
  Logical_source: imap_ultra_l1a_90sensor-de
57
81
  Logical_source_description: IMAP-Ultra Instrument Level-1A Direct Event Data.
58
82
 
83
+ imap_ultra_l1a_45sensor-energy-de:
84
+ <<: *instrument_base
85
+ Data_type: L1A_ENERGY_DE>Level-1A Energy Direct Event
86
+ Logical_source: imap_ultra_l1a_45sensor-energy-de
87
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Energy Direct Event Data.
88
+
89
+ imap_ultra_l1a_90sensor-energy-de:
90
+ <<: *instrument_base
91
+ Data_type: L1A_ENERGY_DE>Level-1A EnergyDirect Event
92
+ Logical_source: imap_ultra_l1a_90sensor-energy-de
93
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Energy Direct Event Data.
94
+
95
+ imap_ultra_l1a_45sensor-priority-1-de:
96
+ <<: *instrument_base
97
+ Data_type: L1A_PRIORITY_1_DE>Level-1A Priority 1 Direct Event
98
+ Logical_source: imap_ultra_l1a_45sensor-priority-1-de
99
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 1 Direct Event Data.
100
+
101
+ imap_ultra_l1a_90sensor-priority-1-de:
102
+ <<: *instrument_base
103
+ Data_type: L1A_PRIORITY_1_DE>Level-1A Priority 1 Direct Event
104
+ Logical_source: imap_ultra_l1a_90sensor-priority-1-de
105
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 1 Direct Event Data.
106
+
107
+ imap_ultra_l1a_45sensor-priority-2-de:
108
+ <<: *instrument_base
109
+ Data_type: L1A_PRIORITY_2_DE>Level-1A Priority 2 Direct Event
110
+ Logical_source: imap_ultra_l1a_45sensor-priority-2-de
111
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 2 Direct Event Data.
112
+
113
+ imap_ultra_l1a_90sensor-priority-2-de:
114
+ <<: *instrument_base
115
+ Data_type: L1A_PRIORITY_2_DE>Level-1A Priority 2 Direct Event
116
+ Logical_source: imap_ultra_l1a_90sensor-priority-2-de
117
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 2 Direct Event Data.
118
+
119
+ imap_ultra_l1a_45sensor-priority-3-de:
120
+ <<: *instrument_base
121
+ Data_type: L1A_PRIORITY_3_DE>Level-1A Priority 3 Direct Event
122
+ Logical_source: imap_ultra_l1a_45sensor-priority-3-de
123
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 3 Direct Event Data.
124
+
125
+ imap_ultra_l1a_90sensor-priority-3-de:
126
+ <<: *instrument_base
127
+ Data_type: L1A_PRIORITY_3_DE>Level-1A Priority 3 Direct Event
128
+ Logical_source: imap_ultra_l1a_90sensor-priority-3-de
129
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 3 Direct Event Data.
130
+
131
+ imap_ultra_l1a_45sensor-priority-4-de:
132
+ <<: *instrument_base
133
+ Data_type: L1A_PRIORITY_4_DE>Level-1A Priority 4 Direct Event
134
+ Logical_source: imap_ultra_l1a_45sensor-priority-4-de
135
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 4 Direct Event Data.
136
+
137
+ imap_ultra_l1a_90sensor-priority-4-de:
138
+ <<: *instrument_base
139
+ Data_type: L1A_PRIORITY_4_DE>Level-1A Priority 4 Direct Event
140
+ Logical_source: imap_ultra_l1a_90sensor-priority-4-de
141
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Priority 4 Direct Event Data.
142
+
59
143
  imap_ultra_l1b_45sensor-de:
60
144
  <<: *instrument_base
61
145
  Data_type: L1B_45Sensor-DE>Level-1B Direct Events for Ultra45
@@ -152,6 +236,18 @@ imap_ultra_l1a_90sensor-alarm:
152
236
  Logical_source: imap_ultra_l1a_90sensor-alarm
153
237
  Logical_source_description: IMAP-Ultra Instrument Level-1A Alarm Data for Ultra90.
154
238
 
239
+ imap_ultra_l1a_45sensor-cmdecho:
240
+ <<: *instrument_base
241
+ Data_type: L1A_CMDECHO>Level-1A Command Echo
242
+ Logical_source: imap_ultra_l1a_45sensor-cmdecho
243
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Command Echo Data.
244
+
245
+ imap_ultra_l1a_90sensor-cmdecho:
246
+ <<: *instrument_base
247
+ Data_type: L1A_CMDECHO>Level-1A Command Echo
248
+ Logical_source: imap_ultra_l1a_90sensor-cmdecho
249
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Command Echo Data.
250
+
155
251
  imap_ultra_l1a_45sensor-memchecksum:
156
252
  <<: *instrument_base
157
253
  Data_type: L1A_45Sensor-MemChecksum>Level-1A Memory Checksum for Ultra45
@@ -200,6 +296,18 @@ imap_ultra_l1a_90sensor-bootstatus:
200
296
  Logical_source: imap_ultra_l1a_90sensor-bootstatus
201
297
  Logical_source_description: IMAP-Ultra Instrument Level-1A Boot Status Data for Ultra90.
202
298
 
299
+ imap_ultra_l1a_45sensor-macroschecksum:
300
+ <<: *instrument_base
301
+ Data_type: L1A_45Sensor-MacroChecksum>Level-1A Macro Checksum for Ultra45
302
+ Logical_source: imap_ultra_l1a_45sensor-macroschecksum
303
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Macro Checksum Data for Ultra45.
304
+
305
+ imap_ultra_l1a_90sensor-macroschecksum:
306
+ <<: *instrument_base
307
+ Data_type: L1A_90Sensor-MacroChecksum>Level-1A Macro Checksum for Ultra90
308
+ Logical_source: imap_ultra_l1a_90sensor-macroschecksum
309
+ Logical_source_description: IMAP-Ultra Instrument Level-1A Macro Checksum Data for Ultra90.
310
+
203
311
  imap_ultra_l1a_45sensor-macrodump:
204
312
  <<: *instrument_base
205
313
  Data_type: L1A_45Sensor-MacroDump>Level-1A Macro Dump for Ultra45
@@ -83,6 +83,86 @@ sid:
83
83
  UNITS: " "
84
84
  DEPEND_0: epoch
85
85
 
86
+ ssd_sum:
87
+ <<: *default_uint32
88
+ CATDESC: SSD Energy Sum.
89
+ FIELDNAM: ssd_sum
90
+ LABLAXIS: ssd energy sum
91
+ UNITS: " "
92
+ DEPEND_0: epoch
93
+
94
+ ssd0_energy_led:
95
+ <<: *default_uint32
96
+ CATDESC: SSD0 Energy LED.
97
+ FIELDNAM: ssd0_energy_led
98
+ LABLAXIS: ssd0 energy led
99
+ UNITS: " "
100
+ DEPEND_0: epoch
101
+
102
+ ssd1_energy_led:
103
+ <<: *default_uint32
104
+ CATDESC: SSD1 Energy LED.
105
+ FIELDNAM: ssd1_energy_led
106
+ LABLAXIS: ssd1 energy led
107
+ UNITS: " "
108
+ DEPEND_0: epoch
109
+
110
+ ssd2_energy_led:
111
+ <<: *default_uint32
112
+ CATDESC: SSD2 Energy LED.
113
+ FIELDNAM: ssd2_energy_led
114
+ LABLAXIS: ssd2 energy led
115
+ UNITS: " "
116
+ DEPEND_0: epoch
117
+
118
+ ssd3_energy_led:
119
+ <<: *default_uint32
120
+ CATDESC: SSD3 Energy LED.
121
+ FIELDNAM: ssd3_energy_led
122
+ LABLAXIS: ssd3 energy led
123
+ UNITS: " "
124
+ DEPEND_0: epoch
125
+
126
+ ssd4_energy_led:
127
+ <<: *default_uint32
128
+ CATDESC: SSD4 Energy LED.
129
+ FIELDNAM: ssd4_energy_led
130
+ LABLAXIS: ssd4 energy led
131
+ UNITS: " "
132
+ DEPEND_0: epoch
133
+
134
+ ssd5_energy_led:
135
+ <<: *default_uint32
136
+ CATDESC: SSD5 Energy LED.
137
+ FIELDNAM: ssd5_energy_led
138
+ LABLAXIS: ssd5 energy led
139
+ UNITS: " "
140
+ DEPEND_0: epoch
141
+
142
+ ssd6_energy_led:
143
+ <<: *default_uint32
144
+ CATDESC: SSD6 Energy LED.
145
+ FIELDNAM: ssd6_energy_led
146
+ LABLAXIS: ssd6 energy led
147
+ UNITS: " "
148
+ DEPEND_0: epoch
149
+
150
+ ssd7_energy_led:
151
+ <<: *default_uint32
152
+ CATDESC: SSD7 Energy LED.
153
+ FIELDNAM: ssd7_energy_led
154
+ LABLAXIS: ssd7 energy led
155
+ UNITS: " "
156
+ DEPEND_0: epoch
157
+
158
+ processed_events:
159
+ <<: *default_uint32
160
+ CATDESC: Processed Events.
161
+ FIELDNAM: processed_events
162
+ LABLAXIS: processed events
163
+ UNITS: " "
164
+ DEPEND_0: epoch
165
+
86
166
  spin:
87
167
  <<: *default_uint32
88
168
  CATDESC: Spin number.
@@ -1131,6 +1211,14 @@ alarmid:
1131
1211
  UNITS: ' '
1132
1212
  DEPEND_0: epoch
1133
1213
 
1214
+ arguments:
1215
+ <<: *default_uint8
1216
+ CATDESC: Arguments
1217
+ FIELDNAM: arguments
1218
+ LABLAXIS: arguments
1219
+ UNITS: ' '
1220
+ DEPEND_0: epoch
1221
+
1134
1222
  aux:
1135
1223
  <<: *default_float32
1136
1224
  CATDESC: Aux
@@ -1283,6 +1371,14 @@ cause:
1283
1371
  UNITS: ' '
1284
1372
  DEPEND_0: epoch
1285
1373
 
1374
+ checksum:
1375
+ <<: *default_uint16
1376
+ CATDESC: Checksums
1377
+ FIELDNAM: checksums
1378
+ LABLAXIS: checksums
1379
+ UNITS: ' '
1380
+ DEPEND_0: epoch
1381
+
1286
1382
  checksums:
1287
1383
  <<: *default_float32
1288
1384
  CATDESC: Checksums
@@ -1484,7 +1580,6 @@ diagnosticmode:
1484
1580
  DEPEND_0: epoch
1485
1581
 
1486
1582
  dumpdata:
1487
- <<: *default_float32
1488
1583
  CATDESC: Dumpdata
1489
1584
  FIELDNAM: dumpdata
1490
1585
  LABLAXIS: dumpdata
@@ -2707,7 +2802,6 @@ macroblocks:
2707
2802
  DEPEND_0: epoch
2708
2803
 
2709
2804
  macrodata:
2710
- <<: *default_float32
2711
2805
  CATDESC: Macrodata
2712
2806
  FIELDNAM: macrodata
2713
2807
  LABLAXIS: macrodata
@@ -2946,6 +3040,13 @@ result:
2946
3040
  UNITS: ' '
2947
3041
  DEPEND_0: epoch
2948
3042
 
3043
+ result_description:
3044
+ CATDESC: Result description
3045
+ FIELDNAM: result_description
3046
+ LABLAXIS: result description
3047
+ UNITS: ' '
3048
+ DEPEND_0: epoch
3049
+
2949
3050
  rightdeflection_v:
2950
3051
  <<: *default_float32
2951
3052
  CATDESC: Rightdeflection v
@@ -44,7 +44,11 @@ def load_cdf(
44
44
  if isinstance(file_path, imap_data_access.ImapFilePath):
45
45
  file_path = file_path.construct_path()
46
46
 
47
- dataset = cdf_to_xarray(file_path, kwargs)
47
+ # By default, do not convert epoch to datetime64. This ensures that the
48
+ # round-trip of writing and then loading a cdf keeps the dataset the same.
49
+ if "to_datetime" not in kwargs:
50
+ kwargs["to_datetime"] = False # type: ignore
51
+ dataset = cdf_to_xarray(file_path, **kwargs)
48
52
 
49
53
  # cdf_to_xarray converts single-value attributes to lists
50
54
  # convert these back to single values where applicable
@@ -154,6 +158,8 @@ def write_cdf(
154
158
  extra_cdf_kwargs["terminate_on_warning"] = True # type: ignore
155
159
  if "istp" not in extra_cdf_kwargs:
156
160
  extra_cdf_kwargs["istp"] = True # type: ignore
161
+ if "compression" not in extra_cdf_kwargs:
162
+ extra_cdf_kwargs["compression"] = 6 # type: ignore
157
163
 
158
164
  xarray_to_cdf(dataset, str(file_path), **extra_cdf_kwargs)
159
165
  return file_path