disdrodb 0.1.4__py3-none-any.whl → 0.2.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 (135) hide show
  1. disdrodb/__init__.py +1 -5
  2. disdrodb/_version.py +2 -2
  3. disdrodb/accessor/methods.py +14 -3
  4. disdrodb/api/checks.py +10 -0
  5. disdrodb/api/create_directories.py +0 -2
  6. disdrodb/api/io.py +14 -17
  7. disdrodb/api/path.py +42 -77
  8. disdrodb/api/search.py +89 -23
  9. disdrodb/cli/disdrodb_create_summary.py +11 -1
  10. disdrodb/cli/disdrodb_create_summary_station.py +10 -0
  11. disdrodb/cli/disdrodb_run_l0.py +1 -1
  12. disdrodb/cli/disdrodb_run_l0a.py +1 -1
  13. disdrodb/cli/disdrodb_run_l0b.py +1 -1
  14. disdrodb/cli/disdrodb_run_l0c.py +1 -1
  15. disdrodb/cli/disdrodb_run_l1.py +1 -1
  16. disdrodb/cli/disdrodb_run_l2e.py +1 -1
  17. disdrodb/cli/disdrodb_run_l2m.py +1 -1
  18. disdrodb/configs.py +30 -83
  19. disdrodb/constants.py +4 -3
  20. disdrodb/data_transfer/download_data.py +4 -2
  21. disdrodb/docs.py +2 -2
  22. disdrodb/etc/products/L1/1MIN.yaml +13 -0
  23. disdrodb/etc/products/L1/LPM/1MIN.yaml +13 -0
  24. disdrodb/etc/products/L1/PARSIVEL/1MIN.yaml +13 -0
  25. disdrodb/etc/products/L1/PARSIVEL2/1MIN.yaml +13 -0
  26. disdrodb/etc/products/L1/PWS100/1MIN.yaml +13 -0
  27. disdrodb/etc/products/L1/RD80/1MIN.yaml +13 -0
  28. disdrodb/etc/products/L1/SWS250/1MIN.yaml +13 -0
  29. disdrodb/etc/products/L1/global.yaml +7 -1
  30. disdrodb/etc/products/L2E/10MIN.yaml +1 -12
  31. disdrodb/etc/products/L2E/5MIN.yaml +1 -0
  32. disdrodb/etc/products/L2E/global.yaml +1 -1
  33. disdrodb/etc/products/L2M/MODELS/GAMMA_GS_ND_MAE.yaml +6 -0
  34. disdrodb/etc/products/L2M/{GAMMA_ML.yaml → MODELS/GAMMA_ML.yaml} +1 -1
  35. disdrodb/etc/products/L2M/MODELS/LOGNORMAL_GS_LOG_ND_MAE.yaml +6 -0
  36. disdrodb/etc/products/L2M/MODELS/LOGNORMAL_GS_ND_MAE.yaml +6 -0
  37. disdrodb/etc/products/L2M/MODELS/LOGNORMAL_ML.yaml +8 -0
  38. disdrodb/etc/products/L2M/MODELS/NGAMMA_GS_R_MAE.yaml +6 -0
  39. disdrodb/etc/products/L2M/global.yaml +11 -3
  40. disdrodb/l0/check_configs.py +49 -16
  41. disdrodb/l0/configs/LPM/l0a_encodings.yml +2 -2
  42. disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +2 -2
  43. disdrodb/l0/configs/LPM/l0b_encodings.yml +2 -2
  44. disdrodb/l0/configs/LPM/raw_data_format.yml +2 -2
  45. disdrodb/l0/configs/PARSIVEL/l0b_encodings.yml +1 -1
  46. disdrodb/l0/configs/PWS100/l0b_encodings.yml +1 -0
  47. disdrodb/l0/configs/SWS250/bins_diameter.yml +108 -0
  48. disdrodb/l0/configs/SWS250/bins_velocity.yml +83 -0
  49. disdrodb/l0/configs/SWS250/l0a_encodings.yml +18 -0
  50. disdrodb/l0/configs/SWS250/l0b_cf_attrs.yml +72 -0
  51. disdrodb/l0/configs/SWS250/l0b_encodings.yml +155 -0
  52. disdrodb/l0/configs/SWS250/raw_data_format.yml +148 -0
  53. disdrodb/l0/l0_reader.py +2 -2
  54. disdrodb/l0/l0b_processing.py +70 -15
  55. disdrodb/l0/l0c_processing.py +7 -3
  56. disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +1 -1
  57. disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +2 -2
  58. disdrodb/l0/readers/LPM/BELGIUM/ULIEGE.py +256 -0
  59. disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +2 -2
  60. disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +2 -2
  61. disdrodb/l0/readers/LPM/GERMANY/DWD.py +491 -0
  62. disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +2 -2
  63. disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +2 -2
  64. disdrodb/l0/readers/LPM/KIT/CHWALA.py +2 -2
  65. disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +107 -12
  66. disdrodb/l0/readers/LPM/SLOVENIA/UL.py +3 -3
  67. disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +2 -2
  68. disdrodb/l0/readers/PARSIVEL/BASQUECOUNTRY/EUSKALMET_OTT.py +227 -0
  69. disdrodb/l0/readers/PARSIVEL/{GPM → NASA}/LPVEX.py +1 -1
  70. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +5 -14
  71. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +8 -17
  72. disdrodb/l0/readers/PARSIVEL/SLOVENIA/UL.py +117 -8
  73. disdrodb/l0/readers/PARSIVEL2/BASQUECOUNTRY/EUSKALMET_OTT2.py +232 -0
  74. disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +10 -14
  75. disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +10 -14
  76. disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +8 -14
  77. disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_raw.py +382 -0
  78. disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +4 -0
  79. disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +1 -1
  80. disdrodb/l0/readers/PARSIVEL2/GREECE/NOA.py +127 -0
  81. disdrodb/l0/readers/PARSIVEL2/ITALY/HYDROX.py +239 -0
  82. disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +5 -11
  83. disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +4 -17
  84. disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +5 -14
  85. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +10 -13
  86. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +10 -13
  87. disdrodb/l0/readers/PARSIVEL2/PHILIPPINES/PAGASA.py +232 -0
  88. disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +6 -18
  89. disdrodb/l0/readers/PARSIVEL2/{NASA/LPVEX.py → SPAIN/GRANADA.py} +46 -35
  90. disdrodb/l0/readers/PARSIVEL2/SWEDEN/SMHI.py +189 -0
  91. disdrodb/l0/readers/PARSIVEL2/USA/{C3WE.py → CW3E.py} +10 -28
  92. disdrodb/l0/readers/PWS100/AUSTRIA/HOAL.py +321 -0
  93. disdrodb/l0/readers/SW250/BELGIUM/KMI.py +239 -0
  94. disdrodb/l1/beard_model.py +31 -129
  95. disdrodb/l1/fall_velocity.py +136 -83
  96. disdrodb/l1/filters.py +25 -28
  97. disdrodb/l1/processing.py +16 -17
  98. disdrodb/l1/resampling.py +101 -38
  99. disdrodb/l1_env/routines.py +46 -17
  100. disdrodb/l2/empirical_dsd.py +6 -0
  101. disdrodb/l2/processing.py +6 -5
  102. disdrodb/metadata/geolocation.py +0 -2
  103. disdrodb/metadata/search.py +3 -4
  104. disdrodb/psd/fitting.py +16 -13
  105. disdrodb/routines/l0.py +2 -2
  106. disdrodb/routines/l1.py +173 -60
  107. disdrodb/routines/l2.py +148 -284
  108. disdrodb/routines/options.py +345 -0
  109. disdrodb/routines/wrappers.py +14 -1
  110. disdrodb/scattering/axis_ratio.py +90 -84
  111. disdrodb/scattering/permittivity.py +6 -0
  112. disdrodb/summary/routines.py +735 -670
  113. disdrodb/utils/archiving.py +51 -44
  114. disdrodb/utils/attrs.py +3 -1
  115. disdrodb/utils/dask.py +4 -4
  116. disdrodb/utils/dict.py +33 -0
  117. disdrodb/utils/encoding.py +6 -1
  118. disdrodb/utils/routines.py +9 -8
  119. disdrodb/utils/time.py +11 -3
  120. disdrodb/viz/__init__.py +0 -13
  121. disdrodb/viz/plots.py +231 -1
  122. {disdrodb-0.1.4.dist-info → disdrodb-0.2.0.dist-info}/METADATA +2 -1
  123. {disdrodb-0.1.4.dist-info → disdrodb-0.2.0.dist-info}/RECORD +135 -103
  124. /disdrodb/etc/products/L2M/{NGAMMA_GS_LOG_ND_MAE.yaml → MODELS/NGAMMA_GS_LOG_ND_MAE.yaml} +0 -0
  125. /disdrodb/etc/products/L2M/{NGAMMA_GS_ND_MAE.yaml → MODELS/NGAMMA_GS_ND_MAE.yaml} +0 -0
  126. /disdrodb/etc/products/L2M/{NGAMMA_GS_Z_MAE.yaml → MODELS/NGAMMA_GS_Z_MAE.yaml} +0 -0
  127. /disdrodb/l0/readers/PARSIVEL/{GPM → NASA}/IFLOODS.py +0 -0
  128. /disdrodb/l0/readers/PARSIVEL/{GPM → NASA}/MC3E.py +0 -0
  129. /disdrodb/l0/readers/PARSIVEL/{GPM → NASA}/PIERS.py +0 -0
  130. /disdrodb/l0/readers/PARSIVEL2/{GPM → NASA}/GCPEX.py +0 -0
  131. /disdrodb/l0/readers/PARSIVEL2/{GPM → NASA}/NSSTC.py +0 -0
  132. {disdrodb-0.1.4.dist-info → disdrodb-0.2.0.dist-info}/WHEEL +0 -0
  133. {disdrodb-0.1.4.dist-info → disdrodb-0.2.0.dist-info}/entry_points.txt +0 -0
  134. {disdrodb-0.1.4.dist-info → disdrodb-0.2.0.dist-info}/licenses/LICENSE +0 -0
  135. {disdrodb-0.1.4.dist-info → disdrodb-0.2.0.dist-info}/top_level.txt +0 -0
@@ -22,7 +22,7 @@ import os
22
22
  from typing import Optional, Union
23
23
 
24
24
  import numpy as np
25
- from pydantic import BaseModel, ValidationError, field_validator, model_validator
25
+ from pydantic import BaseModel, Field, ValidationError, field_validator, model_validator
26
26
 
27
27
  from disdrodb.api.configs import available_sensor_names, get_sensor_configs_dir, read_config_file
28
28
  from disdrodb.l0.standards import (
@@ -47,7 +47,7 @@ CONFIG_FILES_LIST = [
47
47
  ]
48
48
 
49
49
 
50
- def _check_yaml_files_exists(sensor_name: str) -> None:
50
+ def check_yaml_files_exists(sensor_name: str) -> None:
51
51
  """Check if all L0 config YAML files exist.
52
52
 
53
53
  Parameters
@@ -64,7 +64,7 @@ def _check_yaml_files_exists(sensor_name: str) -> None:
64
64
  raise FileNotFoundError(f"Missing YAML files {missing_keys_text} in {config_dir} for sensor {sensor_name}.")
65
65
 
66
66
 
67
- def _check_variable_consistency(sensor_name: str) -> None:
67
+ def check_variable_consistency(sensor_name: str) -> None:
68
68
  """
69
69
  Check variable consistency across config files.
70
70
 
@@ -126,7 +126,7 @@ def _schema_error(object_to_validate: Union[str, list], schema: BaseModel, messa
126
126
 
127
127
 
128
128
  class L0BEncodingSchema(BaseModel):
129
- """Pydantic model for DISDRODB L0B encodings."""
129
+ """Pydantic model for DISDRODB netCDF encodings."""
130
130
 
131
131
  contiguous: bool
132
132
  dtype: str
@@ -134,7 +134,7 @@ class L0BEncodingSchema(BaseModel):
134
134
  complevel: int
135
135
  shuffle: bool
136
136
  fletcher32: bool
137
- _FillValue: Optional[Union[int, float]]
137
+ FillValue: Optional[Union[int, float]] = Field(default=None, alias="_FillValue")
138
138
  chunksizes: Optional[Union[int, list[int]]]
139
139
 
140
140
  # if contiguous=False, chunksizes specified, otherwise should be not !
@@ -167,6 +167,39 @@ class L0BEncodingSchema(BaseModel):
167
167
  raise ValueError("'fletcher32' must be set to False if 'contiguous' is True")
168
168
  return values
169
169
 
170
+ # if dtype is integer/unsigned integer, _FillValue must be specified and valid
171
+ @model_validator(mode="before")
172
+ def check_integer_fillvalue(cls, values):
173
+ """Check that integer dtypes have valid _FillValue."""
174
+ dtype = values.get("dtype")
175
+ fill_value = values.get("_FillValue", None)
176
+ integer_types = ["int8", "int16", "int32", "int64", "uint8", "uint16", "uint32", "uint64"]
177
+ # Check if dtype is an integer type
178
+ if dtype in integer_types:
179
+ # _FillValue must be specified for integer types
180
+ if fill_value is None:
181
+ raise ValueError(f"'_FillValue' must be specified for integer dtype '{dtype}'")
182
+
183
+ # Check that _FillValue is within valid range for the dtype
184
+ dtype_info = np.iinfo(dtype)
185
+ max_value = dtype_info.max
186
+ # min_value = dtype_info.min
187
+
188
+ # if not (min_value <= fill_value <= max_value):
189
+ # raise ValueError(
190
+ # f"'_FillValue' ({fill_value}) is out of range for dtype '{dtype}'. "
191
+ # f"Valid range is [{min_value}, {max_value}]",
192
+ # )
193
+
194
+ # Check that _FillValue corresponds to the maximum allowed value
195
+ if fill_value != max_value:
196
+ raise ValueError(
197
+ f"'_FillValue' ({fill_value}) should be set to the maximum allowed value "
198
+ f"({max_value}) for integer dtype '{dtype}'",
199
+ )
200
+
201
+ return values
202
+
170
203
 
171
204
  def check_l0b_encoding(sensor_name: str) -> None:
172
205
  """Check ``l0b_encodings.yml`` file based on the schema defined in the class ``L0BEncodingSchema``.
@@ -176,7 +209,7 @@ def check_l0b_encoding(sensor_name: str) -> None:
176
209
  sensor_name : str
177
210
  Name of the sensor.
178
211
  """
179
- data = read_config_file(sensor_name, product="L0A", filename="l0b_encodings.yml")
212
+ data = read_config_file(sensor_name, product="L0B", filename="l0b_encodings.yml")
180
213
 
181
214
  # check that the second level of the dictionary match the schema
182
215
  for key, value in data.items():
@@ -234,7 +267,7 @@ class RawDataFormatSchema(BaseModel):
234
267
  return None
235
268
 
236
269
 
237
- def _check_raw_data_format(sensor_name: str) -> None:
270
+ def check_raw_data_format(sensor_name: str) -> None:
238
271
  """Check ``raw_data_format.yml`` file based on the schema defined in the class ``RawDataFormatSchema``.
239
272
 
240
273
  Parameters
@@ -253,7 +286,7 @@ def _check_raw_data_format(sensor_name: str) -> None:
253
286
  )
254
287
 
255
288
 
256
- def _check_cf_attributes(sensor_name: str) -> None:
289
+ def check_cf_attributes(sensor_name: str) -> None:
257
290
  """Check that the ``l0b_cf_attrs.yml`` description, long_name and units values are strings.
258
291
 
259
292
  Parameters
@@ -268,7 +301,7 @@ def _check_cf_attributes(sensor_name: str) -> None:
268
301
  raise ValueError(f"Wrong value for {key} in {var} for sensor {sensor_name}.")
269
302
 
270
303
 
271
- def _check_bin_consistency(sensor_name: str) -> None:
304
+ def check_bin_consistency(sensor_name: str) -> None:
272
305
  """Check bin consistency from config file.
273
306
 
274
307
  Do not check the first and last bin !
@@ -313,7 +346,7 @@ def _check_bin_consistency(sensor_name: str) -> None:
313
346
  )
314
347
 
315
348
 
316
- def _check_raw_array(sensor_name: str) -> None:
349
+ def check_raw_array(sensor_name: str) -> None:
317
350
  """Check raw array consistency from config file.
318
351
 
319
352
  Parameters
@@ -363,14 +396,14 @@ def check_sensor_configs(sensor_name: str) -> None:
363
396
  sensor_name : str
364
397
  Name of the sensor.
365
398
  """
366
- _check_yaml_files_exists(sensor_name)
367
- _check_variable_consistency(sensor_name)
399
+ check_yaml_files_exists(sensor_name)
400
+ check_variable_consistency(sensor_name)
368
401
  check_l0b_encoding(sensor_name=sensor_name)
369
402
  check_l0a_encoding(sensor_name=sensor_name)
370
- _check_raw_data_format(sensor_name=sensor_name)
371
- _check_cf_attributes(sensor_name=sensor_name)
372
- _check_bin_consistency(sensor_name=sensor_name)
373
- _check_raw_array(sensor_name=sensor_name)
403
+ check_raw_data_format(sensor_name=sensor_name)
404
+ check_cf_attributes(sensor_name=sensor_name)
405
+ check_bin_consistency(sensor_name=sensor_name)
406
+ check_raw_array(sensor_name=sensor_name)
374
407
 
375
408
 
376
409
  def check_all_sensors_configs() -> None:
@@ -15,7 +15,7 @@ reflectivity: "float32"
15
15
  quality_index: "float32" # 'uint8'
16
16
  max_hail_diameter: "float32"
17
17
  laser_status: "float32" # 'uint8'
18
- static_signal: "float32" # 'uint8'
18
+ static_signal_status: "float32" # 'uint8'
19
19
  laser_temperature_analog_status: "float32" # 'uint8'
20
20
  laser_temperature_digital_status: "float32" # 'uint8'
21
21
  laser_current_analog_status: "float32" # 'uint8'
@@ -29,7 +29,7 @@ current_heating_house_status: "float32" # 'uint8'
29
29
  current_heating_heads_status: "float32" # 'uint8'
30
30
  current_heating_carriers_status: "float32" # 'uint8'
31
31
  control_output_laser_power_status: "float32" # 'uint8'
32
- reserve_status: "float32" # 'uint8'
32
+ reserved_status: "float32" # 'uint8'
33
33
  temperature_interior: "float32" # 'uint16'
34
34
  laser_temperature: "float32" # 'uint16'
35
35
  laser_current_average: "float32" # 'uint16'
@@ -66,7 +66,7 @@ laser_status:
66
66
  description: Status Laser (OK/on:0, off:1)
67
67
  long_name: Status laser
68
68
  units: ""
69
- static_signal:
69
+ static_signal_status:
70
70
  description: Static signal (OK:0, Error:1)
71
71
  long_name: Static signal
72
72
  units: ""
@@ -122,7 +122,7 @@ control_output_laser_power_status:
122
122
  description: Status Control output laser power (OK:0, warning:1)
123
123
  long_name: Status control output laser
124
124
  units: ""
125
- reserve_status:
125
+ reserved_status:
126
126
  description: Reserve Status (0)
127
127
  long_name: Reserve status
128
128
  units: ""
@@ -184,7 +184,7 @@ laser_status:
184
184
  contiguous: false
185
185
  chunksizes: 5000
186
186
  _FillValue: 255
187
- static_signal:
187
+ static_signal_status:
188
188
  dtype: uint8
189
189
  zlib: true
190
190
  complevel: 3
@@ -310,7 +310,7 @@ control_output_laser_power_status:
310
310
  contiguous: false
311
311
  chunksizes: 5000
312
312
  _FillValue: 255
313
- reserve_status:
313
+ reserved_status:
314
314
  dtype: uint8
315
315
  zlib: true
316
316
  complevel: 3
@@ -213,7 +213,7 @@ laser_status:
213
213
  - 0
214
214
  - 1
215
215
  field_number: "22"
216
- static_signal:
216
+ static_signal_status:
217
217
  n_digits: 1
218
218
  n_characters: 1
219
219
  n_decimals: 1
@@ -389,7 +389,7 @@ control_output_laser_power_status:
389
389
  - 0
390
390
  - 1
391
391
  field_number: "36"
392
- reserve_status:
392
+ reserved_status:
393
393
  n_digits: 1
394
394
  n_characters: 1
395
395
  n_decimals: 1
@@ -216,7 +216,7 @@ rainfall_rate_16bit:
216
216
  contiguous: false
217
217
  chunksizes: 5000
218
218
  rainfall_rate_12bit:
219
- dtype: object
219
+ dtype: float32
220
220
  zlib: true
221
221
  complevel: 3
222
222
  shuffle: true
@@ -68,6 +68,7 @@ relative_humidity:
68
68
  shuffle: true
69
69
  fletcher32: false
70
70
  contiguous: false
71
+ _FillValue: 65535
71
72
  chunksizes: 5000
72
73
  wetbulb_temperature:
73
74
  dtype: uint16
@@ -0,0 +1,108 @@
1
+ center:
2
+ 0: 0.2
3
+ 1: 0.45
4
+ 2: 0.55
5
+ 3: 0.65
6
+ 4: 0.75
7
+ 5: 0.85
8
+ 6: 0.95
9
+ 7: 1.05
10
+ 8: 1.15
11
+ 9: 1.25
12
+ 10: 1.35
13
+ 11: 1.5
14
+ 12: 1.75
15
+ 13: 2.08
16
+ 14: 2.475
17
+ 15: 2.945
18
+ 16: 3.5
19
+ 17: 4.16
20
+ 18: 4.95
21
+ 19: 5.89
22
+ 20: 6.7
23
+ bounds:
24
+ 0:
25
+ - 0.0
26
+ - 0.4
27
+ 1:
28
+ - 0.4
29
+ - 0.5
30
+ 2:
31
+ - 0.5
32
+ - 0.6
33
+ 3:
34
+ - 0.6
35
+ - 0.7
36
+ 4:
37
+ - 0.7
38
+ - 0.8
39
+ 5:
40
+ - 0.8
41
+ - 0.9
42
+ 6:
43
+ - 0.9
44
+ - 1.0
45
+ 7:
46
+ - 1.0
47
+ - 1.1
48
+ 8:
49
+ - 1.1
50
+ - 1.2
51
+ 9:
52
+ - 1.2
53
+ - 1.3
54
+ 10:
55
+ - 1.3
56
+ - 1.4
57
+ 11:
58
+ - 1.4
59
+ - 1.6
60
+ 12:
61
+ - 1.6
62
+ - 1.9
63
+ 13:
64
+ - 1.9
65
+ - 2.26
66
+ 14:
67
+ - 2.26
68
+ - 2.69
69
+ 15:
70
+ - 2.69
71
+ - 3.2
72
+ 16:
73
+ - 3.2
74
+ - 3.8
75
+ 17:
76
+ - 3.8
77
+ - 4.52
78
+ 18:
79
+ - 4.52
80
+ - 5.38
81
+ 19:
82
+ - 5.38
83
+ - 6.4
84
+ 20:
85
+ - 6.4
86
+ - 7.0
87
+ width:
88
+ 0: 0.4
89
+ 1: 0.1
90
+ 2: 0.1
91
+ 3: 0.1
92
+ 4: 0.1
93
+ 5: 0.1
94
+ 6: 0.1
95
+ 7: 0.1
96
+ 8: 0.1
97
+ 9: 0.1
98
+ 10: 0.1
99
+ 11: 0.2
100
+ 12: 0.3
101
+ 13: 0.36
102
+ 14: 0.43
103
+ 15: 0.51
104
+ 16: 0.6
105
+ 17: 0.72
106
+ 18: 0.86
107
+ 19: 1.02
108
+ 20: 0.6
@@ -0,0 +1,83 @@
1
+ center:
2
+ 0: 0.55
3
+ 1: 0.95
4
+ 2: 1.41
5
+ 3: 1.84
6
+ 4: 2.465
7
+ 5: 3.27
8
+ 6: 4.01
9
+ 7: 4.625
10
+ 8: 5.275
11
+ 9: 6.325
12
+ 10: 7.63
13
+ 11: 9.51
14
+ 12: 11.745
15
+ 13: 14.14
16
+ 14: 17.775
17
+ 15: 22.5
18
+ bounds:
19
+ 0:
20
+ - 0.40
21
+ - 0.70
22
+ 1:
23
+ - 0.70
24
+ - 1.20
25
+ 2:
26
+ - 1.20
27
+ - 1.62
28
+ 3:
29
+ - 1.62
30
+ - 2.06
31
+ 4:
32
+ - 2.06
33
+ - 2.87
34
+ 5:
35
+ - 2.87
36
+ - 3.67
37
+ 6:
38
+ - 3.67
39
+ - 4.35
40
+ 7:
41
+ - 4.35
42
+ - 4.90
43
+ 8:
44
+ - 4.90
45
+ - 5.65
46
+ 9:
47
+ - 5.65
48
+ - 7.00
49
+ 10:
50
+ - 7.00
51
+ - 8.26
52
+ 11:
53
+ - 8.26
54
+ - 10.76
55
+ 12:
56
+ - 10.76
57
+ - 12.73
58
+ 13:
59
+ - 12.73
60
+ - 15.55
61
+ 14:
62
+ - 15.55
63
+ - 20.00
64
+ 15:
65
+ - 20.00
66
+ - 25.00
67
+ width:
68
+ 0: 0.3
69
+ 1: 0.5
70
+ 2: 0.42
71
+ 3: 0.44
72
+ 4: 0.81
73
+ 5: 0.8
74
+ 6: 0.68
75
+ 7: 0.55
76
+ 8: 0.75
77
+ 9: 1.35
78
+ 10: 1.26
79
+ 11: 2.5
80
+ 12: 1.97
81
+ 13: 2.82
82
+ 14: 4.45
83
+ 15: 5.0
@@ -0,0 +1,18 @@
1
+ precipitation_rate: "float32"
2
+ precipitation_accumulated: "float32"
3
+ weather_code_synop_4680: "float32" # 'uint16'
4
+ weather_code_metar_4678: "str"
5
+ past_weather1: "str"
6
+ past_weather2: "str"
7
+ mor_visibility_5min: "float32"
8
+ mor_visibility: "float32" # 'uint16'
9
+ number_particles: "float32" # 'uint32'
10
+ sensor_temperature: "float32" # 'uint16'
11
+ obstruction_status: "str"
12
+ total_extinction_coefficient: "float32"
13
+ transmissometer_extinction_coefficient: "float32"
14
+ back_scatter_extinction_coefficient: "float32"
15
+ ambient_light_sensor_signal: "float32"
16
+ sensor_status: "str" #
17
+ ambient_light_sensor_signal_status: "str"
18
+ raw_drop_number: "str"
@@ -0,0 +1,72 @@
1
+ precipitation_rate:
2
+ description: Rainfall rate
3
+ long_name: Precipitation rate
4
+ units: mm/h
5
+ precipitation_accumulated:
6
+ description: Accumulated rain amount over the measurement interval
7
+ long_name: Precipitation accumulated
8
+ units: mm
9
+ weather_code_synop_4680:
10
+ description: SYNOP weather code according to table 4680 of Parsivel documentation
11
+ long_name: Weather code SYNOP 4680
12
+ units: ""
13
+ weather_code_metar_4678:
14
+ description: METAR/SPECI weather code according to table 4678 of Parsivel documentation
15
+ long_name: Weather code METAR 4678
16
+ units: ""
17
+ past_weather1:
18
+ description: Past weather code 1
19
+ long_name: Past weather 1
20
+ units: ""
21
+ past_weather2:
22
+ description: Past weather code 2
23
+ long_name: Past weather 2
24
+ units: ""
25
+ mor_visibility_5min:
26
+ description: Meteorological Optical Range in precipitation (5 minute average)
27
+ long_name: MOR visibility 5 minute
28
+ units: m
29
+ mor_visibility:
30
+ description: Meteorological Optical Range in precipitation
31
+ long_name: MOR visibility
32
+ units: m
33
+ number_particles:
34
+ description: Number of particles detected and validated
35
+ long_name: Number of detected particles
36
+ units: ""
37
+ sensor_temperature:
38
+ description: Temperature in sensor housing
39
+ long_name: Temperature of the sensor
40
+ units: "degC"
41
+ obstruction_status:
42
+ description: Obstruction status of the sensor
43
+ long_name: Obstruction status
44
+ units: ""
45
+ total_extinction_coefficient:
46
+ description: Total extinction coefficient
47
+ long_name: Total extinction coefficient
48
+ units: "1/km"
49
+ transmissometer_extinction_coefficient:
50
+ description: Transmissometer extinction coefficient
51
+ long_name: Transmissometer extinction coefficient
52
+ units: "1/km"
53
+ back_scatter_extinction_coefficient:
54
+ description: Back scatter extinction coefficient
55
+ long_name: Back scatter extinction coefficient
56
+ units: "1/km"
57
+ ambient_light_sensor_signal:
58
+ description: Ambient light sensor signal
59
+ long_name: Ambient light sensor signal
60
+ units: "cd/m2"
61
+ sensor_status:
62
+ description: Sensor status
63
+ long_name: Sensor status
64
+ units: ""
65
+ ambient_light_sensor_signal_status:
66
+ description: Ambient light sensor signal status
67
+ long_name: Ambient light sensor signal status
68
+ units: ""
69
+ raw_drop_number:
70
+ description: Drop counts per diameter and velocity class
71
+ long_name: Raw drop number
72
+ units: ""
@@ -0,0 +1,155 @@
1
+ precipitation_rate:
2
+ dtype: float32
3
+ zlib: true
4
+ complevel: 3
5
+ shuffle: true
6
+ fletcher32: false
7
+ contiguous: false
8
+ chunksizes: 5000
9
+ precipitation_accumulated:
10
+ dtype: float32
11
+ zlib: true
12
+ complevel: 3
13
+ shuffle: true
14
+ fletcher32: false
15
+ contiguous: false
16
+ chunksizes: 5000
17
+ weather_code_synop_4680:
18
+ dtype: uint8
19
+ zlib: true
20
+ complevel: 3
21
+ shuffle: true
22
+ fletcher32: false
23
+ contiguous: false
24
+ chunksizes: 5000
25
+ _FillValue: 255
26
+ weather_code_metar_4678:
27
+ dtype: str
28
+ zlib: false
29
+ complevel: 3
30
+ shuffle: true
31
+ fletcher32: false
32
+ contiguous: false
33
+ chunksizes: 5000
34
+ past_weather1:
35
+ dtype: str
36
+ zlib: false
37
+ complevel: 3
38
+ shuffle: true
39
+ fletcher32: false
40
+ contiguous: false
41
+ chunksizes: 5000
42
+ past_weather2:
43
+ dtype: str
44
+ zlib: false
45
+ complevel: 3
46
+ shuffle: true
47
+ fletcher32: false
48
+ contiguous: false
49
+ chunksizes: 5000
50
+ mor_visibility_5min:
51
+ dtype: uint16
52
+ zlib: true
53
+ complevel: 3
54
+ shuffle: true
55
+ fletcher32: false
56
+ contiguous: false
57
+ chunksizes: 5000
58
+ _FillValue: 65535
59
+ mor_visibility:
60
+ dtype: uint16
61
+ zlib: true
62
+ complevel: 3
63
+ shuffle: true
64
+ fletcher32: false
65
+ contiguous: false
66
+ chunksizes: 5000
67
+ _FillValue: 65535
68
+ number_particles:
69
+ dtype: uint16
70
+ zlib: true
71
+ complevel: 3
72
+ shuffle: true
73
+ fletcher32: false
74
+ contiguous: false
75
+ chunksizes: 5000
76
+ _FillValue: 65535
77
+ sensor_temperature:
78
+ dtype: uint16
79
+ scale_factor: 0.1
80
+ add_offset: -60.0
81
+ zlib: true
82
+ complevel: 3
83
+ shuffle: true
84
+ fletcher32: false
85
+ contiguous: false
86
+ chunksizes: 5000
87
+ _FillValue: 65535
88
+ obstruction_status:
89
+ dtype: str
90
+ zlib: false
91
+ complevel: 3
92
+ shuffle: true
93
+ fletcher32: false
94
+ contiguous: false
95
+ chunksizes: 5000
96
+ sensor_status:
97
+ dtype: str
98
+ zlib: false
99
+ complevel: 3
100
+ shuffle: true
101
+ fletcher32: false
102
+ contiguous: false
103
+ chunksizes: 5000
104
+ ambient_light_sensor_signal_status:
105
+ dtype: str
106
+ zlib: false
107
+ complevel: 3
108
+ shuffle: true
109
+ fletcher32: false
110
+ contiguous: false
111
+ chunksizes: 5000
112
+ total_extinction_coefficient:
113
+ dtype: float32
114
+ zlib: true
115
+ complevel: 3
116
+ shuffle: true
117
+ fletcher32: false
118
+ contiguous: false
119
+ chunksizes: 5000
120
+ transmissometer_extinction_coefficient:
121
+ dtype: float32
122
+ zlib: true
123
+ complevel: 3
124
+ shuffle: true
125
+ fletcher32: false
126
+ contiguous: false
127
+ chunksizes: 5000
128
+ back_scatter_extinction_coefficient:
129
+ dtype: float32
130
+ zlib: true
131
+ complevel: 3
132
+ shuffle: true
133
+ fletcher32: false
134
+ contiguous: false
135
+ chunksizes: 5000
136
+ ambient_light_sensor_signal:
137
+ dtype: float32
138
+ zlib: true
139
+ complevel: 3
140
+ shuffle: true
141
+ fletcher32: false
142
+ contiguous: false
143
+ chunksizes: 5000
144
+ raw_drop_number:
145
+ dtype: uint16
146
+ zlib: true
147
+ complevel: 3
148
+ shuffle: true
149
+ fletcher32: false
150
+ contiguous: false
151
+ _FillValue: 65535
152
+ chunksizes:
153
+ - 5000
154
+ - 16
155
+ - 21