cloudnetpy 1.80.6__py3-none-any.whl → 1.80.8__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 (33) hide show
  1. cloudnetpy/categorize/categorize.py +60 -6
  2. cloudnetpy/cloudnetarray.py +1 -1
  3. cloudnetpy/instruments/basta.py +3 -0
  4. cloudnetpy/instruments/bowtie.py +4 -1
  5. cloudnetpy/instruments/ceilo.py +6 -79
  6. cloudnetpy/instruments/copernicus.py +11 -3
  7. cloudnetpy/instruments/disdrometer/common.py +70 -31
  8. cloudnetpy/instruments/fd12p.py +7 -1
  9. cloudnetpy/instruments/galileo.py +9 -3
  10. cloudnetpy/instruments/mira.py +8 -7
  11. cloudnetpy/instruments/mrr.py +14 -2
  12. cloudnetpy/instruments/nc_radar.py +2 -1
  13. cloudnetpy/instruments/pollyxt.py +5 -1
  14. cloudnetpy/instruments/radiometrics.py +10 -0
  15. cloudnetpy/instruments/rpg.py +73 -54
  16. cloudnetpy/metadata.py +48 -22
  17. cloudnetpy/model_evaluation/metadata.py +46 -19
  18. cloudnetpy/output.py +9 -28
  19. cloudnetpy/plotting/plotting.py +1 -1
  20. cloudnetpy/products/classification.py +6 -0
  21. cloudnetpy/products/der.py +6 -0
  22. cloudnetpy/products/drizzle.py +27 -1
  23. cloudnetpy/products/ier.py +3 -0
  24. cloudnetpy/products/iwc.py +5 -0
  25. cloudnetpy/products/lwc.py +3 -0
  26. cloudnetpy/utils.py +6 -1
  27. cloudnetpy/version.py +1 -1
  28. {cloudnetpy-1.80.6.dist-info → cloudnetpy-1.80.8.dist-info}/METADATA +1 -1
  29. {cloudnetpy-1.80.6.dist-info → cloudnetpy-1.80.8.dist-info}/RECORD +33 -33
  30. {cloudnetpy-1.80.6.dist-info → cloudnetpy-1.80.8.dist-info}/WHEEL +0 -0
  31. {cloudnetpy-1.80.6.dist-info → cloudnetpy-1.80.8.dist-info}/entry_points.txt +0 -0
  32. {cloudnetpy-1.80.6.dist-info → cloudnetpy-1.80.8.dist-info}/licenses/LICENSE +0 -0
  33. {cloudnetpy-1.80.6.dist-info → cloudnetpy-1.80.8.dist-info}/top_level.txt +0 -0
@@ -17,7 +17,8 @@ from cloudnetpy.categorize.mwr import Mwr
17
17
  from cloudnetpy.categorize.radar import Radar
18
18
  from cloudnetpy.datasource import DataSource
19
19
  from cloudnetpy.exceptions import DisdrometerDataError, ValidTimeStampError
20
- from cloudnetpy.metadata import MetaData
20
+ from cloudnetpy.instruments.rpg import RPG_ATTRIBUTES
21
+ from cloudnetpy.metadata import COMMON_ATTRIBUTES, MetaData
21
22
  from cloudnetpy.products.product_tools import CategoryBits, QualityBits
22
23
 
23
24
 
@@ -385,31 +386,45 @@ DEFINITIONS = {
385
386
  }
386
387
 
387
388
  CATEGORIZE_ATTRIBUTES = {
389
+ "height": COMMON_ATTRIBUTES["height"]._replace(dimensions=("height",)),
388
390
  # Radar variables
389
391
  "Z": MetaData(
390
392
  long_name="Radar reflectivity factor",
391
393
  units="dBZ",
392
394
  comment=COMMENTS["Z"],
393
395
  ancillary_variables="Z_error Z_bias Z_sensitivity",
396
+ dimensions=("time", "height"),
394
397
  ),
395
398
  "Z_error": MetaData(
396
399
  long_name="Error in radar reflectivity factor",
397
400
  units="dB",
398
401
  comment=COMMENTS["Z_error"],
402
+ dimensions=("time", "height"),
399
403
  ),
400
404
  "Z_bias": MetaData(
401
405
  long_name="Bias in radar reflectivity factor",
402
406
  units="dB",
403
407
  comment=COMMENTS["bias"],
408
+ dimensions=None,
404
409
  ),
405
410
  "Z_sensitivity": MetaData(
406
411
  long_name="Minimum detectable radar reflectivity",
407
412
  units="dBZ",
408
413
  comment=COMMENTS["Z_sensitivity"],
414
+ dimensions=("time", "height"),
409
415
  ),
416
+ "v": COMMON_ATTRIBUTES["v"]._replace(dimensions=("time", "height")),
417
+ "width": COMMON_ATTRIBUTES["width"]._replace(dimensions=("time", "height")),
418
+ "ldr": COMMON_ATTRIBUTES["ldr"]._replace(dimensions=("time", "height")),
419
+ "sldr": COMMON_ATTRIBUTES["sldr"]._replace(dimensions=("time", "height")),
410
420
  "v_sigma": MetaData(
411
421
  long_name="Standard deviation of mean Doppler velocity",
412
422
  units="m s-1",
423
+ dimensions=("time", "height"),
424
+ ),
425
+ "zdr": RPG_ATTRIBUTES["zdr"]._replace(dimensions=("time", "height")),
426
+ "nyquist_velocity": COMMON_ATTRIBUTES["nyquist_velocity"]._replace(
427
+ dimensions=("time", "height")
413
428
  ),
414
429
  # Lidar variables
415
430
  "beta": MetaData(
@@ -417,89 +432,128 @@ CATEGORIZE_ATTRIBUTES = {
417
432
  units="sr-1 m-1",
418
433
  comment="SNR-screened attenuated backscatter coefficient.",
419
434
  ancillary_variables="beta_error beta_bias",
435
+ dimensions=("time", "height"),
420
436
  ),
421
437
  "beta_error": MetaData(
422
438
  long_name="Error in attenuated backscatter coefficient",
423
439
  units="dB",
440
+ dimensions=None,
424
441
  ),
425
442
  "beta_bias": MetaData(
426
443
  long_name="Bias in attenuated backscatter coefficient",
427
444
  units="dB",
445
+ dimensions=None,
446
+ ),
447
+ "lidar_wavelength": MetaData(
448
+ long_name="Laser wavelength", units="nm", dimensions=None
428
449
  ),
429
- "lidar_wavelength": MetaData(long_name="Laser wavelength", units="nm"),
430
450
  # MWR variables
431
451
  "lwp_error": MetaData(
432
452
  long_name="Error in liquid water path",
433
453
  units="kg m-2",
454
+ dimensions=("time",),
455
+ ),
456
+ "lwp": COMMON_ATTRIBUTES["lwp"]._replace(
457
+ ancillary_variables="lwp_error", dimensions=("time",)
434
458
  ),
435
- "lwp": MetaData(ancillary_variables="lwp_error"),
436
459
  # Model variables
437
- "Tw": MetaData(long_name="Wet-bulb temperature", units="K", comment=COMMENTS["Tw"]),
438
- "model_time": MetaData(long_name="Model time UTC", calendar="standard"),
460
+ "Tw": MetaData(
461
+ long_name="Wet-bulb temperature",
462
+ units="K",
463
+ comment=COMMENTS["Tw"],
464
+ dimensions=("time", "height"),
465
+ ),
466
+ "model_time": MetaData(
467
+ long_name="Model time UTC",
468
+ calendar="standard",
469
+ dimensions=("model_time",),
470
+ ),
439
471
  "model_height": MetaData(
440
472
  long_name="Height of model variables above mean sea level",
441
473
  units="m",
442
474
  axis="Z",
475
+ dimensions=("model_height",),
476
+ ),
477
+ "temperature": MetaData(
478
+ long_name="Temperature", units="K", dimensions=("model_time", "model_height")
479
+ ),
480
+ "pressure": MetaData(
481
+ long_name="Pressure", units="Pa", dimensions=("model_time", "model_height")
443
482
  ),
444
483
  "vwind": MetaData(
445
484
  long_name="Meridional wind",
446
485
  units="m s-1",
486
+ dimensions=("model_time", "model_height"),
447
487
  ),
448
488
  "uwind": MetaData(
449
489
  long_name="Zonal wind",
450
490
  units="m s-1",
491
+ dimensions=("model_time", "model_height"),
492
+ ),
493
+ "q": MetaData(
494
+ long_name="Specific humidity",
495
+ units="1",
496
+ dimensions=("model_time", "model_height"),
451
497
  ),
452
- "q": MetaData(long_name="Specific humidity", units="1"),
453
498
  # MISC
454
499
  "category_bits": MetaData(
455
500
  long_name="Target categorization bits",
456
501
  comment=COMMENTS["category_bits"],
457
502
  definition=DEFINITIONS["category_bits"],
458
503
  units="1",
504
+ dimensions=("time", "height"),
459
505
  ),
460
506
  "quality_bits": MetaData(
461
507
  long_name="Data quality bits",
462
508
  comment=COMMENTS["quality_bits"],
463
509
  definition=DEFINITIONS["quality_bits"],
464
510
  units="1",
511
+ dimensions=("time", "height"),
465
512
  ),
466
513
  "radar_liquid_atten": MetaData(
467
514
  long_name="Two-way radar attenuation due to liquid water",
468
515
  units="dB",
469
516
  comment=COMMENTS["radar_liquid_atten"],
470
517
  references="ITU-R P.840-9",
518
+ dimensions=("time", "height"),
471
519
  ),
472
520
  "radar_rain_atten": MetaData(
473
521
  long_name="Two-way radar attenuation due to rain",
474
522
  units="dB",
475
523
  references="Crane, R. (1980)",
476
524
  comment=COMMENTS["radar_rain_atten"],
525
+ dimensions=("time", "height"),
477
526
  ),
478
527
  "radar_melting_atten": MetaData(
479
528
  long_name="Two-way radar attenuation due to melting ice",
480
529
  units="dB",
481
530
  references="Li, H., & Moisseev, D. (2019)",
482
531
  comment=COMMENTS["radar_melting_atten"],
532
+ dimensions=("time", "height"),
483
533
  ),
484
534
  "radar_gas_atten": MetaData(
485
535
  long_name="Two-way radar attenuation due to atmospheric gases",
486
536
  units="dB",
487
537
  comment=COMMENTS["radar_gas_atten"],
488
538
  references="ITU-R P.676-13",
539
+ dimensions=("time", "height"),
489
540
  ),
490
541
  "insect_prob": MetaData(
491
542
  long_name="Insect probability",
492
543
  units="1",
493
544
  comment=COMMENTS["insect_prob"],
545
+ dimensions=("time", "height"),
494
546
  ),
495
547
  "liquid_prob": MetaData(
496
548
  long_name="Liquid probability",
497
549
  units="1",
498
550
  comment=COMMENTS["liquid_prob"],
551
+ dimensions=("time", "height"),
499
552
  ),
500
553
  "rain_detected": MetaData(
501
554
  long_name="Rain detected",
502
555
  units="1",
503
556
  comment="1 = rain detected, 0 = no rain detected",
557
+ dimensions=("time",),
504
558
  ),
505
559
  }
@@ -97,7 +97,7 @@ class CloudnetArray:
97
97
  """Overwrites existing instance attributes."""
98
98
  for key in attributes._fields: # To iterate namedtuple fields.
99
99
  data = getattr(attributes, key)
100
- if data:
100
+ if key == "dimensions" or data:
101
101
  setattr(self, key, data)
102
102
 
103
103
  def filter_isolated_pixels(self) -> None:
@@ -107,15 +107,18 @@ ATTRIBUTES = {
107
107
  long_name="Radar pitch angle",
108
108
  units="degree",
109
109
  standard_name="platform_roll",
110
+ dimensions=("time",),
110
111
  ),
111
112
  "radar_yaw": MetaData(
112
113
  long_name="Radar yaw angle",
113
114
  units="degree",
114
115
  standard_name="platform_yaw",
116
+ dimensions=("time",),
115
117
  ),
116
118
  "radar_roll": MetaData(
117
119
  long_name="Radar roll angle",
118
120
  units="degree",
119
121
  standard_name="platform_roll",
122
+ dimensions=("time",),
120
123
  ),
121
124
  }
@@ -8,6 +8,7 @@ from cloudnetpy.constants import G_TO_KG, MM_H_TO_M_S
8
8
  from cloudnetpy.exceptions import ValidTimeStampError
9
9
  from cloudnetpy.instruments.instruments import FMCW94
10
10
  from cloudnetpy.instruments.nc_radar import NcRadar
11
+ from cloudnetpy.instruments.rpg import RPG_ATTRIBUTES
11
12
  from cloudnetpy.metadata import MetaData
12
13
  from cloudnetpy.utils import bit_field_definition
13
14
 
@@ -97,7 +98,7 @@ class Bowtie(NcRadar):
97
98
  raise ValidTimeStampError
98
99
 
99
100
 
100
- ATTRIBUTES: dict = {
101
+ ATTRIBUTES = RPG_ATTRIBUTES | {
101
102
  "v": MetaData(
102
103
  long_name="Doppler velocity",
103
104
  units="m s-1",
@@ -107,6 +108,7 @@ ATTRIBUTES: dict = {
107
108
  "motion of the ship. A rolling average over 3 time steps has been\n"
108
109
  "applied to it."
109
110
  ),
111
+ dimensions=("time", "range"),
110
112
  ),
111
113
  "correction_bits": MetaData(
112
114
  long_name="Correction bits",
@@ -116,5 +118,6 @@ ATTRIBUTES: dict = {
116
118
  "This parameter is a bit field that indicates which corrections have\n"
117
119
  "been applied to radar measurements."
118
120
  ),
121
+ dimensions=("time", "range"),
119
122
  ),
120
123
  }
@@ -8,11 +8,11 @@ import numpy as np
8
8
  from ceilopyter import read_ct25k
9
9
  from numpy import ma
10
10
 
11
- from cloudnetpy import output, utils
11
+ from cloudnetpy import output
12
12
  from cloudnetpy.instruments.cl61d import Cl61d
13
13
  from cloudnetpy.instruments.lufft import LufftCeilo
14
14
  from cloudnetpy.instruments.vaisala import ClCeilo, Cs135, Ct25k
15
- from cloudnetpy.metadata import MetaData
15
+ from cloudnetpy.metadata import COMMON_ATTRIBUTES, MetaData
16
16
 
17
17
 
18
18
  def ceilo2nc(
@@ -205,92 +205,19 @@ ATTRIBUTES = {
205
205
  long_name="Lidar volume linear depolarisation ratio",
206
206
  units="1",
207
207
  comment="SNR-screened lidar volume linear depolarisation ratio at 910.55 nm.",
208
+ dimensions=("time", "range"),
208
209
  ),
209
210
  "depolarisation_raw": MetaData(
210
211
  long_name="Lidar volume linear depolarisation ratio",
211
212
  units="1",
212
213
  comment="SNR-screened lidar volume linear depolarisation ratio at 910.55 nm.",
213
- ),
214
- "scale": MetaData(long_name="Scale", units="%", comment="100 (%) is normal."),
215
- "software_level": MetaData(
216
- long_name="Software level ID",
217
- units="1",
218
- ),
219
- "laser_temperature": MetaData(
220
- long_name="Laser temperature",
221
- units="C",
222
- ),
223
- "window_transmission": MetaData(
224
- long_name="Window transmission estimate",
225
- units="%",
226
- ),
227
- "laser_energy": MetaData(
228
- long_name="Laser pulse energy",
229
- units="%",
230
- ),
231
- "background_light": MetaData(
232
- long_name="Background light",
233
- units="mV",
234
- comment="Measured at internal ADC input.",
235
- ),
236
- "backscatter_sum": MetaData(
237
- long_name="Sum of detected and normalized backscatter",
238
- units="sr-1",
239
- comment="Multiplied by scaling factor times 1e4.",
240
- ),
241
- "range_resolution": MetaData(
242
- long_name="Range resolution",
243
- units="m",
244
- ),
245
- "number_of_gates": MetaData(
246
- long_name="Number of range gates in profile",
247
- units="1",
248
- ),
249
- "unit_id": MetaData(
250
- long_name="Ceilometer unit number",
251
- units="1",
252
- ),
253
- "message_number": MetaData(
254
- long_name="Message number",
255
- units="1",
256
- ),
257
- "message_subclass": MetaData(
258
- long_name="Message subclass number",
259
- units="1",
260
- ),
261
- "detection_status": MetaData(
262
- long_name="Detection status",
263
- units="1",
264
- comment="From the internal software of the instrument.",
265
- ),
266
- "warning": MetaData(
267
- long_name="Warning and Alarm flag",
268
- units="1",
269
- definition=utils.status_field_definition(
270
- {
271
- "0": "Self-check OK",
272
- "W": "At least one warning on",
273
- "A": "At least one error active.",
274
- }
275
- ),
276
- ),
277
- "warning_flags": MetaData(
278
- long_name="Warning flags",
279
- units="1",
280
- ),
281
- "receiver_sensitivity": MetaData(
282
- long_name="Receiver sensitivity",
283
- units="%",
284
- comment="Expressed as % of nominal factory setting.",
285
- ),
286
- "window_contamination": MetaData(
287
- long_name="Window contamination",
288
- units="mV",
289
- comment="Measured at internal ADC input.",
214
+ dimensions=("time", "range"),
290
215
  ),
291
216
  "calibration_factor": MetaData(
292
217
  long_name="Attenuated backscatter calibration factor",
293
218
  units="1",
294
219
  comment="Calibration factor applied.",
220
+ dimensions=None,
295
221
  ),
222
+ "zenith_angle": COMMON_ATTRIBUTES["zenith_angle"]._replace(dimensions=None),
296
223
  }
@@ -164,13 +164,21 @@ ATTRIBUTES = {
164
164
  long_name="Radar reflectivity calibration offset",
165
165
  units="dBZ",
166
166
  comment="Calibration offset applied.",
167
+ dimensions=None,
167
168
  ),
168
169
  "range_offset": MetaData(
169
170
  long_name="Radar range offset",
170
171
  units="m",
171
172
  comment="Range offset applied.",
173
+ dimensions=None,
174
+ ),
175
+ "antenna_diameter": MetaData(
176
+ long_name="Antenna diameter", units="m", dimensions=("time",)
177
+ ),
178
+ "beamwidthV": MetaData(
179
+ long_name="Vertical angular beamwidth", units="degree", dimensions=("time",)
180
+ ),
181
+ "beamwidthH": MetaData(
182
+ long_name="Horizontal angular beamwidth", units="degree", dimensions=("time",)
172
183
  ),
173
- "antenna_diameter": MetaData(long_name="Antenna diameter", units="m"),
174
- "beamwidthV": MetaData(long_name="Vertical angular beamwidth", units="degree"),
175
- "beamwidthH": MetaData(long_name="Horizontal angular beamwidth", units="degree"),
176
184
  }
@@ -76,56 +76,65 @@ ATTRIBUTES = {
76
76
  long_name="Center fall velocity of precipitation particles",
77
77
  units="m s-1",
78
78
  comment="Predefined velocity classes.",
79
+ dimensions=("velocity",),
79
80
  ),
80
81
  "velocity_spread": MetaData(
81
82
  long_name="Width of velocity interval",
82
83
  units="m s-1",
83
84
  comment="Bin size of each velocity interval.",
85
+ dimensions=("velocity",),
84
86
  ),
85
87
  "velocity_bnds": MetaData(
86
88
  long_name="Velocity bounds",
87
89
  units="m s-1",
88
90
  comment="Upper and lower bounds of velocity interval.",
91
+ dimensions=("velocity", "nv"),
89
92
  ),
90
93
  "diameter": MetaData(
91
94
  long_name="Center diameter of precipitation particles",
92
95
  units="m",
93
96
  comment="Predefined diameter classes.",
97
+ dimensions=("diameter",),
94
98
  ),
95
99
  "diameter_spread": MetaData(
96
100
  long_name="Width of diameter interval",
97
101
  units="m",
98
102
  comment="Bin size of each diameter interval.",
103
+ dimensions=("diameter",),
99
104
  ),
100
105
  "diameter_bnds": MetaData(
101
106
  long_name="Diameter bounds",
102
107
  units="m",
103
108
  comment="Upper and lower bounds of diameter interval.",
109
+ dimensions=("diameter", "nv"),
104
110
  ),
105
111
  "rainfall_rate_1min_total": MetaData(
106
- long_name="Total precipitation rate",
107
- units="m s-1",
112
+ long_name="Total precipitation rate", units="m s-1", dimensions=("time",)
108
113
  ),
109
114
  "rainfall_rate": MetaData(
110
115
  long_name="Rainfall rate",
111
116
  units="m s-1",
112
117
  standard_name="rainfall_rate",
118
+ dimensions=("time",),
113
119
  ),
114
120
  "rainfall_rate_1min_solid": MetaData(
115
- long_name="Solid precipitation rate",
116
- units="m s-1",
121
+ long_name="Solid precipitation rate", units="m s-1", dimensions=("time",)
117
122
  ),
118
123
  "snowfall_rate": MetaData(
119
124
  long_name="Snowfall rate",
120
125
  units="m s-1",
121
126
  comment="Snow depth intensity (volume equivalent)",
127
+ dimensions=("time",),
122
128
  ),
123
- "synop_WaWa": MetaData(long_name="Synop code WaWa", units="1"),
124
- "synop_WW": MetaData(long_name="Synop code WW", units="1"),
129
+ "synop_WaWa": MetaData(
130
+ long_name="Synop code WaWa", units="1", dimensions=("time",)
131
+ ),
132
+ "synop_WW": MetaData(long_name="Synop code WW", units="1", dimensions=("time",)),
125
133
  "radar_reflectivity": MetaData(
126
134
  long_name="Equivalent radar reflectivity factor",
127
135
  units="dBZ",
128
136
  standard_name="equivalent_reflectivity_factor",
137
+ dimensions=("time",),
129
138
  ),
130
139
  "visibility": MetaData(
131
140
  long_name="Meteorological optical range (MOR) visibility",
@@ -133,148 +142,178 @@ ATTRIBUTES = {
133
142
  standard_name="visibility_in_air",
134
143
  comment="Visibility estimation by the disdrometer is valid\n"
135
144
  "only during precipitation events.",
145
+ dimensions=("time",),
146
+ ),
147
+ "interval": MetaData(
148
+ long_name="Length of measurement interval", units="s", dimensions=("time",)
149
+ ),
150
+ "sig_laser": MetaData(
151
+ long_name="Signal amplitude of the laser strip", units="1", dimensions=("time",)
136
152
  ),
137
- "interval": MetaData(long_name="Length of measurement interval", units="s"),
138
- "sig_laser": MetaData(long_name="Signal amplitude of the laser strip", units="1"),
139
153
  "n_particles": MetaData(
140
154
  long_name="Number of particles in time interval",
141
155
  units="1",
156
+ dimensions=("time",),
142
157
  ),
143
158
  "T_sensor": MetaData(
144
- long_name="Temperature in the sensor housing",
145
- units="K",
146
- ),
147
- "I_heating": MetaData(
148
- long_name="Heating current",
149
- units="A",
159
+ long_name="Temperature in the sensor housing", units="K", dimensions=("time",)
150
160
  ),
161
+ "I_heating": MetaData(long_name="Heating current", units="A", dimensions=("time",)),
151
162
  "V_sensor_supply": MetaData(
152
- long_name="Sensor supply voltage",
153
- units="V",
163
+ long_name="Sensor supply voltage", units="V", dimensions=("time",)
154
164
  ),
155
165
  "V_power_supply": MetaData(
156
- long_name="Power supply voltage",
157
- units="V",
166
+ long_name="Power supply voltage", units="V", dimensions=("time",)
158
167
  ),
159
168
  "state_sensor": MetaData(
160
169
  long_name="State of the sensor",
161
170
  comment="0 = OK, 1 = Dirty, 2 = No measurement possible.",
162
171
  units="1",
172
+ dimensions=("time",),
163
173
  ),
164
- "error_code": MetaData(long_name="Error code", units="1"),
174
+ "error_code": MetaData(long_name="Error code", units="1", dimensions=("time",)),
165
175
  "number_concentration": MetaData(
166
176
  long_name="Number of particles per diameter class",
167
177
  units="m-3 mm-1",
178
+ dimensions=("time", "diameter"),
168
179
  ),
169
180
  "fall_velocity": MetaData(
170
181
  long_name="Average velocity of each diameter class",
171
182
  units="m s-1",
183
+ dimensions=("time", "diameter"),
172
184
  ),
173
185
  "data_raw": MetaData(
174
186
  long_name="Raw data as a function of particle diameter and velocity",
175
187
  units="1",
188
+ dimensions=("time", "diameter", "velocity"),
176
189
  ),
177
190
  "kinetic_energy": MetaData(
178
191
  long_name="Kinetic energy of the hydrometeors",
179
192
  units="J m-2 h-1",
193
+ dimensions=("time",),
180
194
  ),
181
195
  # Thies-specific:
182
- "T_ambient": MetaData(long_name="Ambient temperature", units="K"),
183
- "T_interior": MetaData(long_name="Interior temperature", units="K"),
196
+ "T_ambient": MetaData(
197
+ long_name="Ambient temperature", units="K", dimensions=("time",)
198
+ ),
199
+ "T_interior": MetaData(
200
+ long_name="Interior temperature", units="K", dimensions=("time",)
201
+ ),
184
202
  "status_T_laser_analogue": MetaData(
185
203
  long_name="Status of laser temperature (analogue)",
186
204
  comment="0 = OK , 1 = Error",
187
205
  units="1",
206
+ dimensions=("time",),
188
207
  ),
189
208
  "status_T_laser_digital": MetaData(
190
209
  long_name="Status of laser temperature (digital)",
191
210
  comment="0 = OK , 1 = Error",
192
211
  units="1",
212
+ dimensions=("time",),
193
213
  ),
194
214
  "status_I_laser_analogue": MetaData(
195
215
  long_name="Status of laser current (analogue)",
196
216
  comment="0 = OK , 1 = Error",
197
217
  units="1",
218
+ dimensions=("time",),
198
219
  ),
199
220
  "status_I_laser_digital": MetaData(
200
221
  long_name="Status of laser current (digital)",
201
222
  comment="0 = OK , 1 = Error",
202
223
  units="1",
224
+ dimensions=("time",),
203
225
  ),
204
226
  "status_sensor_supply": MetaData(
205
227
  long_name="Status of sensor supply",
206
228
  comment="0 = OK , 1 = Error",
207
229
  units="1",
230
+ dimensions=("time",),
208
231
  ),
209
232
  "status_laser_heating": MetaData(
210
233
  long_name="Status of laser heating",
211
234
  comment="0 = OK , 1 = Error",
212
235
  units="1",
236
+ dimensions=("time",),
213
237
  ),
214
238
  "status_receiver_heating": MetaData(
215
239
  long_name="Status of receiver heating",
216
240
  comment="0 = OK , 1 = Error",
217
241
  units="1",
242
+ dimensions=("time",),
218
243
  ),
219
244
  "status_temperature_sensor": MetaData(
220
245
  long_name="Status of temperature sensor",
221
246
  comment="0 = OK , 1 = Error",
222
247
  units="1",
248
+ dimensions=("time",),
223
249
  ),
224
250
  "status_heating_supply": MetaData(
225
251
  long_name="Status of heating supply",
226
252
  comment="0 = OK , 1 = Error",
227
253
  units="1",
254
+ dimensions=("time",),
228
255
  ),
229
256
  "status_heating_housing": MetaData(
230
257
  long_name="Status of heating housing",
231
258
  comment="0 = OK , 1 = Error",
232
259
  units="1",
260
+ dimensions=("time",),
233
261
  ),
234
262
  "status_heating_heads": MetaData(
235
263
  long_name="Status of heating heads",
236
264
  comment="0 = OK , 1 = Error",
237
265
  units="1",
266
+ dimensions=("time",),
238
267
  ),
239
268
  "status_heating_carriers": MetaData(
240
269
  long_name="Status of heating carriers",
241
270
  comment="0 = OK , 1 = Error",
242
271
  units="1",
272
+ dimensions=("time",),
243
273
  ),
244
274
  "status_laser_power": MetaData(
245
275
  long_name="Status of laser power",
246
276
  comment="0 = OK , 1 = Error",
247
277
  units="1",
278
+ dimensions=("time",),
248
279
  ),
249
280
  "status_laser": MetaData(
250
281
  long_name="Status of laser",
251
282
  comment="0 = OK/on , 1 = Off",
252
283
  units="1",
284
+ dimensions=("time",),
285
+ ),
286
+ "measurement_quality": MetaData(
287
+ long_name="Measurement quality", units="%", dimensions=("time",)
288
+ ),
289
+ "maximum_hail_diameter": MetaData(
290
+ long_name="Maximum hail diameter", units="mm", dimensions=("time",)
253
291
  ),
254
- "measurement_quality": MetaData(long_name="Measurement quality", units="%"),
255
- "maximum_hail_diameter": MetaData(long_name="Maximum hail diameter", units="mm"),
256
292
  "static_signal": MetaData(
257
293
  long_name="Static signal",
258
294
  comment="0 = OK, 1 = ERROR",
259
295
  units="1",
296
+ dimensions=("time",),
297
+ ),
298
+ "T_laser_driver": MetaData(
299
+ long_name="Temperature of laser driver", units="K", dimensions=("time",)
300
+ ),
301
+ "I_mean_laser": MetaData(
302
+ long_name="Mean value of laser current", units="mA", dimensions=("time",)
260
303
  ),
261
- "T_laser_driver": MetaData(long_name="Temperature of laser driver", units="K"),
262
- "I_mean_laser": MetaData(long_name="Mean value of laser current", units="mA"),
263
304
  "V_control": MetaData(
264
305
  long_name="Control voltage",
265
306
  units="mV",
266
307
  comment="Reference value: 4010+-5",
308
+ dimensions=("time",),
267
309
  ),
268
310
  "V_optical_output": MetaData(
269
- long_name="Voltage of optical control output",
270
- units="mV",
311
+ long_name="Voltage of optical control output", units="mV", dimensions=("time",)
271
312
  ),
272
313
  "I_heating_laser_head": MetaData(
273
- long_name="Laser head heating current",
274
- units="mA",
314
+ long_name="Laser head heating current", units="mA", dimensions=("time",)
275
315
  ),
276
316
  "I_heating_receiver_head": MetaData(
277
- long_name="Receiver head heating current",
278
- units="mA",
317
+ long_name="Receiver head heating current", units="mA", dimensions=("time",)
279
318
  ),
280
319
  }