cloudnetpy 1.49.9__py3-none-any.whl → 1.87.3__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 (116) hide show
  1. cloudnetpy/categorize/__init__.py +1 -2
  2. cloudnetpy/categorize/atmos_utils.py +297 -67
  3. cloudnetpy/categorize/attenuation.py +31 -0
  4. cloudnetpy/categorize/attenuations/__init__.py +37 -0
  5. cloudnetpy/categorize/attenuations/gas_attenuation.py +30 -0
  6. cloudnetpy/categorize/attenuations/liquid_attenuation.py +84 -0
  7. cloudnetpy/categorize/attenuations/melting_attenuation.py +78 -0
  8. cloudnetpy/categorize/attenuations/rain_attenuation.py +84 -0
  9. cloudnetpy/categorize/categorize.py +332 -156
  10. cloudnetpy/categorize/classify.py +127 -125
  11. cloudnetpy/categorize/containers.py +107 -76
  12. cloudnetpy/categorize/disdrometer.py +40 -0
  13. cloudnetpy/categorize/droplet.py +23 -21
  14. cloudnetpy/categorize/falling.py +53 -24
  15. cloudnetpy/categorize/freezing.py +25 -12
  16. cloudnetpy/categorize/insects.py +35 -23
  17. cloudnetpy/categorize/itu.py +243 -0
  18. cloudnetpy/categorize/lidar.py +36 -41
  19. cloudnetpy/categorize/melting.py +34 -26
  20. cloudnetpy/categorize/model.py +84 -37
  21. cloudnetpy/categorize/mwr.py +18 -14
  22. cloudnetpy/categorize/radar.py +215 -102
  23. cloudnetpy/cli.py +578 -0
  24. cloudnetpy/cloudnetarray.py +43 -89
  25. cloudnetpy/concat_lib.py +218 -78
  26. cloudnetpy/constants.py +28 -10
  27. cloudnetpy/datasource.py +61 -86
  28. cloudnetpy/exceptions.py +49 -20
  29. cloudnetpy/instruments/__init__.py +5 -0
  30. cloudnetpy/instruments/basta.py +29 -12
  31. cloudnetpy/instruments/bowtie.py +135 -0
  32. cloudnetpy/instruments/ceilo.py +138 -115
  33. cloudnetpy/instruments/ceilometer.py +164 -80
  34. cloudnetpy/instruments/cl61d.py +21 -5
  35. cloudnetpy/instruments/cloudnet_instrument.py +74 -36
  36. cloudnetpy/instruments/copernicus.py +108 -30
  37. cloudnetpy/instruments/da10.py +54 -0
  38. cloudnetpy/instruments/disdrometer/common.py +126 -223
  39. cloudnetpy/instruments/disdrometer/parsivel.py +453 -94
  40. cloudnetpy/instruments/disdrometer/thies.py +254 -87
  41. cloudnetpy/instruments/fd12p.py +201 -0
  42. cloudnetpy/instruments/galileo.py +65 -23
  43. cloudnetpy/instruments/hatpro.py +123 -49
  44. cloudnetpy/instruments/instruments.py +113 -1
  45. cloudnetpy/instruments/lufft.py +39 -17
  46. cloudnetpy/instruments/mira.py +268 -61
  47. cloudnetpy/instruments/mrr.py +187 -0
  48. cloudnetpy/instruments/nc_lidar.py +19 -8
  49. cloudnetpy/instruments/nc_radar.py +109 -55
  50. cloudnetpy/instruments/pollyxt.py +135 -51
  51. cloudnetpy/instruments/radiometrics.py +313 -59
  52. cloudnetpy/instruments/rain_e_h3.py +171 -0
  53. cloudnetpy/instruments/rpg.py +321 -189
  54. cloudnetpy/instruments/rpg_reader.py +74 -40
  55. cloudnetpy/instruments/toa5.py +49 -0
  56. cloudnetpy/instruments/vaisala.py +95 -343
  57. cloudnetpy/instruments/weather_station.py +774 -105
  58. cloudnetpy/metadata.py +90 -19
  59. cloudnetpy/model_evaluation/file_handler.py +55 -52
  60. cloudnetpy/model_evaluation/metadata.py +46 -20
  61. cloudnetpy/model_evaluation/model_metadata.py +1 -1
  62. cloudnetpy/model_evaluation/plotting/plot_tools.py +32 -37
  63. cloudnetpy/model_evaluation/plotting/plotting.py +327 -117
  64. cloudnetpy/model_evaluation/products/advance_methods.py +92 -83
  65. cloudnetpy/model_evaluation/products/grid_methods.py +88 -63
  66. cloudnetpy/model_evaluation/products/model_products.py +43 -35
  67. cloudnetpy/model_evaluation/products/observation_products.py +41 -35
  68. cloudnetpy/model_evaluation/products/product_resampling.py +17 -7
  69. cloudnetpy/model_evaluation/products/tools.py +29 -20
  70. cloudnetpy/model_evaluation/statistics/statistical_methods.py +30 -20
  71. cloudnetpy/model_evaluation/tests/e2e/conftest.py +3 -3
  72. cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +9 -5
  73. cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +15 -14
  74. cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +9 -5
  75. cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +15 -14
  76. cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +9 -5
  77. cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +15 -14
  78. cloudnetpy/model_evaluation/tests/unit/conftest.py +42 -41
  79. cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +41 -48
  80. cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +216 -194
  81. cloudnetpy/model_evaluation/tests/unit/test_model_products.py +23 -21
  82. cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +37 -38
  83. cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +43 -40
  84. cloudnetpy/model_evaluation/tests/unit/test_plotting.py +30 -36
  85. cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +68 -31
  86. cloudnetpy/model_evaluation/tests/unit/test_tools.py +33 -26
  87. cloudnetpy/model_evaluation/utils.py +2 -1
  88. cloudnetpy/output.py +170 -111
  89. cloudnetpy/plotting/__init__.py +2 -1
  90. cloudnetpy/plotting/plot_meta.py +562 -822
  91. cloudnetpy/plotting/plotting.py +1142 -704
  92. cloudnetpy/products/__init__.py +1 -0
  93. cloudnetpy/products/classification.py +370 -88
  94. cloudnetpy/products/der.py +85 -55
  95. cloudnetpy/products/drizzle.py +77 -34
  96. cloudnetpy/products/drizzle_error.py +15 -11
  97. cloudnetpy/products/drizzle_tools.py +79 -59
  98. cloudnetpy/products/epsilon.py +211 -0
  99. cloudnetpy/products/ier.py +27 -50
  100. cloudnetpy/products/iwc.py +55 -48
  101. cloudnetpy/products/lwc.py +96 -70
  102. cloudnetpy/products/mwr_tools.py +186 -0
  103. cloudnetpy/products/product_tools.py +170 -128
  104. cloudnetpy/utils.py +455 -240
  105. cloudnetpy/version.py +2 -2
  106. {cloudnetpy-1.49.9.dist-info → cloudnetpy-1.87.3.dist-info}/METADATA +44 -40
  107. cloudnetpy-1.87.3.dist-info/RECORD +127 -0
  108. {cloudnetpy-1.49.9.dist-info → cloudnetpy-1.87.3.dist-info}/WHEEL +1 -1
  109. cloudnetpy-1.87.3.dist-info/entry_points.txt +2 -0
  110. docs/source/conf.py +2 -2
  111. cloudnetpy/categorize/atmos.py +0 -361
  112. cloudnetpy/products/mwr_multi.py +0 -68
  113. cloudnetpy/products/mwr_single.py +0 -75
  114. cloudnetpy-1.49.9.dist-info/RECORD +0 -112
  115. {cloudnetpy-1.49.9.dist-info → cloudnetpy-1.87.3.dist-info/licenses}/LICENSE +0 -0
  116. {cloudnetpy-1.49.9.dist-info → cloudnetpy-1.87.3.dist-info}/top_level.txt +0 -0
@@ -1,33 +1,39 @@
1
1
  """Metadata for plotting module."""
2
- from enum import Enum
3
- from typing import NamedTuple, Sequence
4
2
 
5
-
6
- class Scale(Enum):
7
- LOGARITHMIC = "logarithmic"
8
- LINEAR = "linear"
3
+ from collections.abc import Sequence
4
+ from typing import NamedTuple
9
5
 
10
6
 
11
7
  class PlotMeta(NamedTuple):
12
- name: str
13
- cbar: str | Sequence[str] | None = None
8
+ """A class representing the metadata for plotting.
9
+
10
+ Attributes:
11
+ cmap: The colormap to be used for the plot.
12
+ clabel: The label for the colorbar. It can be a single string, a sequence
13
+ of tuples containing the label and units for each colorbar, or None
14
+ if no colorbar is needed.
15
+ plot_range: The range of values to be plotted. It can be a tuple
16
+ containing the minimum and maximum values, or None if the range should
17
+ be automatically determined.
18
+ log_scale: Whether to plot data values in a logarithmic scale.
19
+ moving_average: Whether to plot a moving average in a 1d plot.
20
+ contour: Whether to plot contours on top of a filled colormap.
21
+ zero_line: Whether to plot a zero line in a 1d plot.
22
+ mask_zero: Whether to mask zero values in the plot.
23
+ time_smoothing_duration: The duration of the time smoothing window
24
+ (in 2d plots) in minutes.
25
+ """
26
+
27
+ cmap: str = "viridis"
14
28
  clabel: str | Sequence[tuple[str, str]] | None = None
15
- ylabel: str | None = None
16
29
  plot_range: tuple[float, float] | None = None
17
- plot_scale: Scale | None = None
18
- plot_type: str | None = None
19
- source: str | None = None
20
-
30
+ log_scale: bool = False
31
+ moving_average: bool = True
32
+ contour: bool = False
33
+ zero_line: bool = False
34
+ mask_zeros: bool = False
35
+ time_smoothing_duration: int = 0
21
36
 
22
- _MUM = "$\\mu$m"
23
- _M3 = "$m^{-3}$"
24
- _MS1 = "m s$^{-1}$"
25
- _SR1M1 = "sr$^{-1}$ m$^{-1}$"
26
- _KGM2 = "kg m$^{-2}$"
27
- _KGM3 = "kg m$^{-3}$"
28
- _KGM2S1 = "kg m$^{-2}$ s$^{-1}$"
29
- _DB = "dB"
30
- _DBZ = "dBZ"
31
37
 
32
38
  _COLORS = {
33
39
  "green": "#3cb371",
@@ -56,11 +62,38 @@ _COLORS = {
56
62
  "lightsteel": "#a0b0bb",
57
63
  "steelblue": "#4682b4",
58
64
  "mask": "#C8C8C8",
65
+ "black": "#000000",
66
+ "grey": "#808080",
67
+ "snow": "#CFD4DC",
59
68
  }
60
69
 
61
70
  # Labels (and corresponding data) starting with an underscore are NOT shown:
62
71
 
63
72
  _CLABEL = {
73
+ "target_classification_cpr": (
74
+ ("Ground", _COLORS["black"]),
75
+ ("_Clear", _COLORS["white"]),
76
+ ("No drizzling liquid cloud", _COLORS["lightblue"]),
77
+ ("Drizzling liquid clouds", _COLORS["lightblue"]),
78
+ ("Drizzle or warm rain", _COLORS["blue"]),
79
+ ("Cold rain", _COLORS["blue"]),
80
+ ("Melting snow", _COLORS["orange"]),
81
+ ("Rimed snow", _COLORS["lightpurple"]),
82
+ ("Snow", _COLORS["snow"]),
83
+ ("Ice", _COLORS["lightsteel"]),
84
+ ("Stratospheric cloud", _COLORS["lightsteel"]),
85
+ ("Insects or artifacts", _COLORS["pink"]),
86
+ ("Heavy rain likely present", _COLORS["blue"]),
87
+ ("Heavy mixed-phase precip. likely present", _COLORS["blue"]),
88
+ ("Heavy rain", _COLORS["blue"]),
89
+ ("Heavy mixed-phase precip.", _COLORS["blue"]),
90
+ # clutter:
91
+ ("Possible drizzle/rain in clutter", _COLORS["blue"]),
92
+ ("Possible snow/mixed-phase precip. in clutter", _COLORS["blue"]),
93
+ ("Possible cloud in clutter", _COLORS["lightblue"]),
94
+ ("Cloud/precip. unlikely present", _COLORS["grey"]),
95
+ ("Uncertain", _COLORS["grey"]),
96
+ ),
64
97
  "target_classification": (
65
98
  ("_Clear sky", _COLORS["white"]),
66
99
  ("Droplets", _COLORS["lightblue"]),
@@ -73,7 +106,6 @@ _CLABEL = {
73
106
  ("Aerosols", _COLORS["lightbrown"]),
74
107
  ("Insects", _COLORS["shockred"]),
75
108
  ("Aerosols & insects", _COLORS["pink"]),
76
- ("No data", _COLORS["mask"]),
77
109
  ),
78
110
  "detection_status": (
79
111
  ("_Clear sky", _COLORS["white"]),
@@ -86,7 +118,12 @@ _CLABEL = {
86
118
  ("Corrected atten.", _COLORS["skyblue"]),
87
119
  ("Clutter", _COLORS["shockred"]),
88
120
  ("_Lidar molecular scattering", _COLORS["pink"]),
89
- ("No data", _COLORS["mask"]),
121
+ ),
122
+ "signal_source_status": (
123
+ ("Clear sky", _COLORS["white"]),
124
+ ("Radar & lidar", _COLORS["green"]),
125
+ ("Radar only", _COLORS["lightsteel"]),
126
+ ("Lidar only", _COLORS["yellow"]),
90
127
  ),
91
128
  "ice_retrieval_status": (
92
129
  ("_No ice", _COLORS["white"]),
@@ -94,10 +131,9 @@ _CLABEL = {
94
131
  ("Uncorrected", _COLORS["orange"]),
95
132
  ("Corrected", _COLORS["lightgreen"]),
96
133
  ("Ice from lidar", _COLORS["yellow"]),
97
- ("Ice above rain", _COLORS["darksky"]),
134
+ ("_Ice above rain", _COLORS["darksky"]),
98
135
  ("Clear above rain", _COLORS["skyblue"]),
99
136
  ("Positive temp.", _COLORS["seaweed"]),
100
- ("No data", _COLORS["mask"]),
101
137
  ),
102
138
  "lwc_retrieval_status": (
103
139
  ("No liquid", _COLORS["white"]),
@@ -107,7 +143,6 @@ _CLABEL = {
107
143
  ("Invalid LWP", _COLORS["seaweed_roll"]),
108
144
  ("_Invalid LWP2", _COLORS["shockred"]),
109
145
  ("_Measured rain", _COLORS["orange"]),
110
- ("No data", _COLORS["mask"]),
111
146
  ),
112
147
  "drizzle_retrieval_status": (
113
148
  ("_No drizzle", _COLORS["white"]),
@@ -116,809 +151,514 @@ _CLABEL = {
116
151
  ("Unfeasible", _COLORS["red"]),
117
152
  ("Drizzle-free", _COLORS["orange"]),
118
153
  ("Rain", _COLORS["seaweed"]),
119
- ("No data", _COLORS["mask"]),
120
154
  ),
121
155
  "der_retrieval_status": (
122
156
  ("_Clear sky", _COLORS["white"]),
123
157
  ("Reliable", _COLORS["green"]),
124
- ("Mixed-phase", _COLORS["lightgreen"]),
158
+ ("Mixed phase", _COLORS["lightgreen"]),
125
159
  ("Unfeasible", _COLORS["red"]),
126
- ("Surrounding-ice", _COLORS["mask"]),
160
+ ("Surrounding ice", _COLORS["lightsteel"]),
161
+ ),
162
+ "radar_attenuation_status": (
163
+ ("_Clear sky", _COLORS["white"]),
164
+ ("Negligible", _COLORS["green"]),
165
+ ("Minor", _COLORS["lightgreen"]),
166
+ ("Moderate", _COLORS["yellow"]),
167
+ ("Severe", _COLORS["red"]),
168
+ ("Unquantifiable", _COLORS["seaweed_roll"]),
169
+ ("Undetected", _COLORS["skyblue"]),
127
170
  ),
128
171
  }
129
172
 
130
- _CBAR = {"bit": (_COLORS["white"], _COLORS["steelblue"])}
173
+
174
+ _MWR_SINGLE_SMOOTHING = 10
175
+ _MWR_MULTI_SMOOTHING = 30
131
176
 
132
177
  ATTRIBUTES = {
133
- "ier": PlotMeta(
134
- name="Ice effective radius",
135
- cbar="viridis",
136
- clabel="m",
137
- plot_range=(2e-5, 6e-5),
138
- plot_scale=Scale.LINEAR,
139
- plot_type="mesh",
140
- ),
141
- "ier_error": PlotMeta(
142
- name="Ice effective radius error",
143
- cbar="RdYlGn_r",
144
- clabel="m",
145
- plot_range=(1e-5, 5e-5),
146
- plot_scale=Scale.LINEAR,
147
- plot_type="mesh",
148
- ),
149
- "ier_inc_rain": PlotMeta(
150
- name="Ice effective radius (including rain)",
151
- cbar="viridis",
152
- clabel="m",
153
- plot_range=(2e-5, 6e-5),
154
- plot_scale=Scale.LINEAR,
155
- plot_type="mesh",
156
- ),
157
- "ier_retrieval_status": PlotMeta(
158
- name="Ice effective radius retrieval status",
159
- clabel=_CLABEL["ice_retrieval_status"],
160
- plot_type="segment",
161
- ),
162
- "Do": PlotMeta(
163
- name="Drizzle median diameter",
164
- cbar="viridis",
165
- clabel="m",
166
- plot_range=(1e-6, 1e-3),
167
- plot_scale=Scale.LOGARITHMIC,
168
- plot_type="mesh",
169
- ),
170
- "Do_error": PlotMeta(
171
- name="Random error in drizzle median diameter",
172
- cbar="RdYlGn_r",
173
- clabel=_DB,
174
- plot_range=(0.1, 0.5),
175
- plot_scale=Scale.LINEAR,
176
- plot_type="mesh",
177
- ),
178
- "der": PlotMeta(
179
- name="Droplet effective radius",
180
- cbar="coolwarm",
181
- clabel="m",
182
- plot_range=(1.0e-6, 1.0e-4),
183
- plot_scale=Scale.LOGARITHMIC,
184
- plot_type="mesh",
185
- ),
186
- "N_scaled": PlotMeta(
187
- name="Cloud droplet number concentration",
188
- cbar="viridis",
189
- clabel="",
190
- plot_range=(1.0e0, 1e3),
191
- plot_scale=Scale.LOGARITHMIC,
192
- plot_type="mesh",
193
- ),
194
- "der_error": PlotMeta(
195
- name="Absolute error in effective radius",
196
- cbar="coolwarm",
197
- clabel="m",
198
- plot_range=(1.0e-6, 1.0e-4),
199
- plot_scale=Scale.LOGARITHMIC,
200
- plot_type="mesh",
201
- ),
202
- "der_scaled": PlotMeta(
203
- name="Droplet effective radius (scaled to LWP)",
204
- cbar="coolwarm",
205
- clabel="m",
206
- plot_range=(1.0e-6, 1.0e-4),
207
- plot_scale=Scale.LOGARITHMIC,
208
- plot_type="mesh",
209
- ),
210
- "der_scaled_error": PlotMeta(
211
- name="Absolute error in effective radius (scaled to LWP)",
212
- cbar="coolwarm",
213
- clabel="m",
214
- plot_range=(1.0e-6, 1.0e-4),
215
- plot_scale=Scale.LOGARITHMIC,
216
- plot_type="mesh",
217
- ),
218
- "der_retrieval_status": PlotMeta(
219
- name="Effective radius retrieval status",
220
- clabel=_CLABEL["der_retrieval_status"],
221
- plot_type="segment",
222
- ),
223
- "mu": PlotMeta(
224
- name="Drizzle droplet size distribution shape parameter",
225
- cbar="viridis",
226
- clabel="",
227
- plot_range=(0, 10),
228
- plot_scale=Scale.LINEAR,
229
- plot_type="mesh",
230
- ),
231
- "S": PlotMeta(
232
- name="Backscatter-to-extinction ratio",
233
- cbar="viridis",
234
- clabel="",
235
- plot_range=(0, 25),
236
- plot_scale=Scale.LINEAR,
237
- plot_type="mesh",
238
- ),
239
- "S_error": PlotMeta(
240
- name="Random error in backscatter-to-extinction ratio",
241
- cbar="RdYlGn_r",
242
- clabel=_DB,
243
- plot_range=(0.1, 0.5),
244
- plot_scale=Scale.LINEAR,
245
- plot_type="mesh",
246
- ),
247
- "drizzle_N": PlotMeta(
248
- name="Drizzle number concentration",
249
- cbar="viridis",
250
- clabel=_M3,
251
- plot_range=(1e4, 1e9),
252
- plot_scale=Scale.LOGARITHMIC,
253
- plot_type="mesh",
254
- ),
255
- "drizzle_N_error": PlotMeta(
256
- name="Random error in drizzle number concentration",
257
- cbar="RdYlGn_r",
258
- clabel=_DB,
259
- plot_range=(0.1, 0.5),
260
- plot_scale=Scale.LINEAR,
261
- plot_type="mesh",
262
- ),
263
- "drizzle_lwc": PlotMeta(
264
- name="Drizzle liquid water content",
265
- cbar="viridis",
266
- clabel=_KGM3,
267
- plot_range=(1e-8, 1e-3),
268
- plot_scale=Scale.LOGARITHMIC,
269
- plot_type="mesh",
270
- ),
271
- "drizzle_lwc_error": PlotMeta(
272
- name="Random error in drizzle liquid water content",
273
- cbar="RdYlGn_r",
274
- clabel=_DB,
275
- plot_range=(0.3, 1),
276
- plot_scale=Scale.LINEAR,
277
- plot_type="mesh",
278
- ),
279
- "drizzle_lwf": PlotMeta(
280
- name="Drizzle liquid water flux",
281
- cbar="viridis",
282
- clabel=_KGM2S1,
283
- plot_range=(1e-8, 1e-5),
284
- plot_scale=Scale.LOGARITHMIC,
285
- plot_type="mesh",
286
- ),
287
- "drizzle_lwf_error": PlotMeta(
288
- name="Random error in drizzle liquid water flux",
289
- cbar="RdYlGn_r",
290
- clabel=_DB,
291
- plot_range=(0.3, 1),
292
- plot_scale=Scale.LINEAR,
293
- plot_type="mesh",
294
- ),
295
- "v_drizzle": PlotMeta(
296
- name="Drizzle droplet fall velocity",
297
- cbar="RdBu_r",
298
- clabel=_MS1,
299
- plot_range=(-2, 2),
300
- plot_scale=Scale.LINEAR,
301
- plot_type="mesh",
302
- ),
303
- "v_drizzle_error": PlotMeta(
304
- name="Random error in drizzle droplet fall velocity",
305
- cbar="RdYlGn_r",
306
- clabel=_DB,
307
- plot_range=(0.3, 1),
308
- plot_scale=Scale.LINEAR,
309
- plot_type="mesh",
310
- ),
311
- "drizzle_retrieval_status": PlotMeta(
312
- name="Drizzle parameter retrieval status",
313
- clabel=_CLABEL["drizzle_retrieval_status"],
314
- plot_type="segment",
315
- ),
316
- "v_air": PlotMeta(
317
- name="Vertical air velocity",
318
- cbar="RdBu_r",
319
- clabel=_MS1,
320
- plot_range=(-2, 2),
321
- plot_scale=Scale.LINEAR,
322
- plot_type="mesh",
323
- ),
324
- "uwind": PlotMeta(
325
- name="Model zonal wind",
326
- cbar="RdBu_r",
327
- clabel=_MS1,
328
- plot_range=(-50, 50),
329
- plot_scale=Scale.LINEAR,
330
- plot_type="model",
331
- ),
332
- "vwind": PlotMeta(
333
- name="Model meridional wind",
334
- cbar="RdBu_r",
335
- clabel=_MS1,
336
- plot_range=(-50, 50),
337
- plot_scale=Scale.LINEAR,
338
- plot_type="model",
339
- ),
340
- "temperature": PlotMeta(
341
- name="Temperature",
342
- cbar="RdBu_r",
343
- clabel="K",
344
- plot_range=(223.15, 323.15),
345
- plot_scale=Scale.LINEAR,
346
- plot_type="model",
347
- ),
348
- "potential_temperature": PlotMeta(
349
- name="Potential temperature",
350
- cbar="RdBu_r",
351
- clabel="K",
352
- plot_range=(260, 330),
353
- plot_scale=Scale.LINEAR,
354
- plot_type="model",
355
- ),
356
- "absolute_humidity": PlotMeta(
357
- name="Absolute humidity",
358
- cbar="viridis",
359
- clabel="",
360
- plot_range=(1e-5, 1e-2),
361
- plot_scale=Scale.LOGARITHMIC,
362
- plot_type="model",
363
- ),
364
- "cloud_fraction": PlotMeta(
365
- name="Cloud fraction",
366
- cbar="Blues",
367
- clabel="",
368
- plot_range=(0, 1),
369
- plot_scale=Scale.LINEAR,
370
- plot_type="model",
371
- ),
372
- "Tw": PlotMeta(
373
- name="Wet-bulb temperature",
374
- cbar="RdBu_r",
375
- clabel="K",
376
- plot_range=(223.15, 323.15),
377
- plot_scale=Scale.LINEAR,
378
- plot_type="mesh",
379
- ),
380
- "specific_humidity": PlotMeta(
381
- name="Model specific humidity",
382
- cbar="viridis",
383
- clabel="",
384
- plot_range=(1e-5, 1e-2),
385
- plot_scale=Scale.LOGARITHMIC,
386
- plot_type="model",
387
- ),
388
- "q": PlotMeta(
389
- name="Model specific humidity",
390
- cbar="viridis",
391
- clabel="",
392
- plot_range=(1e-5, 1e-2),
393
- plot_scale=Scale.LOGARITHMIC,
394
- plot_type="model",
395
- ),
396
- "pressure": PlotMeta(
397
- name="Model pressure",
398
- cbar="viridis",
399
- clabel="Pa",
400
- plot_range=(1e4, 1.5e5),
401
- plot_scale=Scale.LOGARITHMIC,
402
- plot_type="model",
403
- ),
404
- "beta": PlotMeta(
405
- name="Attenuated backscatter coefficient",
406
- cbar="viridis",
407
- clabel=_SR1M1,
408
- plot_range=(1e-7, 1e-4),
409
- plot_scale=Scale.LOGARITHMIC,
410
- plot_type="mesh",
411
- ),
412
- "beta_raw": PlotMeta(
413
- name="Raw attenuated backscatter coefficient",
414
- cbar="viridis",
415
- clabel=_SR1M1,
416
- plot_range=(1e-7, 1e-4),
417
- plot_scale=Scale.LOGARITHMIC,
418
- plot_type="mesh",
419
- ),
420
- "beta_1064_raw": PlotMeta(
421
- name="Raw attenuated backscatter coefficient at 1064 nm",
422
- cbar="viridis",
423
- clabel=_SR1M1,
424
- plot_range=(1e-7, 1e-4),
425
- plot_scale=Scale.LOGARITHMIC,
426
- plot_type="mesh",
427
- ),
428
- "beta_1064": PlotMeta(
429
- name="Attenuated backscatter coefficient at 1064 nm",
430
- cbar="viridis",
431
- clabel=_SR1M1,
432
- plot_range=(1e-7, 1e-4),
433
- plot_scale=Scale.LOGARITHMIC,
434
- plot_type="mesh",
435
- ),
436
- "beta_532_raw": PlotMeta(
437
- name="Raw attenuated backscatter coefficient at 532 nm",
438
- cbar="viridis",
439
- clabel=_SR1M1,
440
- plot_range=(1e-7, 1e-4),
441
- plot_scale=Scale.LOGARITHMIC,
442
- plot_type="mesh",
443
- ),
444
- "beta_532": PlotMeta(
445
- name="Attenuated backscatter coefficient at 532 nm",
446
- cbar="viridis",
447
- clabel=_SR1M1,
448
- plot_range=(1e-7, 1e-4),
449
- plot_scale=Scale.LOGARITHMIC,
450
- plot_type="mesh",
451
- ),
452
- "beta_532_nr_raw": PlotMeta(
453
- name="Raw attenuated backscatter coefficient at 532 nm (near field)",
454
- cbar="viridis",
455
- clabel=_SR1M1,
456
- plot_range=(1e-7, 1e-4),
457
- plot_scale=Scale.LOGARITHMIC,
458
- plot_type="mesh",
459
- ),
460
- "beta_532_nr": PlotMeta(
461
- name="Attenuated backscatter coefficient at 532 nm (near field)",
462
- cbar="viridis",
463
- clabel=_SR1M1,
464
- plot_range=(1e-7, 1e-4),
465
- plot_scale=Scale.LOGARITHMIC,
466
- plot_type="mesh",
467
- ),
468
- "beta_355_raw": PlotMeta(
469
- name="Raw attenuated backscatter coefficient at 355 nm",
470
- cbar="viridis",
471
- clabel=_SR1M1,
472
- plot_range=(1e-7, 1e-4),
473
- plot_scale=Scale.LOGARITHMIC,
474
- plot_type="mesh",
475
- ),
476
- "beta_355": PlotMeta(
477
- name="Attenuated backscatter coefficient at 355 nm",
478
- cbar="viridis",
479
- clabel=_SR1M1,
480
- plot_range=(1e-7, 1e-4),
481
- plot_scale=Scale.LOGARITHMIC,
482
- plot_type="mesh",
483
- ),
484
- "beta_355_nr_raw": PlotMeta(
485
- name="Raw attenuated backscatter coefficient at 355 nm (near field)",
486
- cbar="viridis",
487
- clabel=_SR1M1,
488
- plot_range=(1e5, 1e8),
489
- plot_scale=Scale.LOGARITHMIC,
490
- plot_type="mesh",
491
- ),
492
- "beta_355_nr": PlotMeta(
493
- name="Attenuated backscatter coefficient at 355 nm (near field)",
494
- cbar="viridis",
495
- clabel=_SR1M1,
496
- plot_range=(1e5, 1e8),
497
- plot_scale=Scale.LOGARITHMIC,
498
- plot_type="mesh",
499
- ),
500
- "beta_smooth": PlotMeta(
501
- name="Attenuated backscatter coefficient (smoothed)",
502
- cbar="viridis",
503
- clabel=_SR1M1,
504
- plot_range=(1e-7, 1e-4),
505
- plot_scale=Scale.LOGARITHMIC,
506
- plot_type="mesh",
507
- ),
508
- "depolarisation_raw": PlotMeta(
509
- name="Raw depolarisation",
510
- cbar="viridis",
511
- clabel="",
512
- plot_range=(1e-3, 1),
513
- plot_scale=Scale.LOGARITHMIC,
514
- plot_type="mesh",
515
- ),
516
- "depolarisation": PlotMeta(
517
- name="Lidar depolarisation",
518
- cbar="viridis",
519
- clabel="",
520
- plot_range=(1e-3, 1),
521
- plot_scale=Scale.LOGARITHMIC,
522
- plot_type="mesh",
523
- ),
524
- "depolarisation_1064_raw": PlotMeta(
525
- name="Raw depolarisation at 1064 nm",
526
- cbar="viridis",
527
- clabel="",
528
- plot_range=(1e-3, 1),
529
- plot_scale=Scale.LOGARITHMIC,
530
- plot_type="mesh",
531
- ),
532
- "depolarisation_1064": PlotMeta(
533
- name="Lidar depolarisation at 1064 nm",
534
- cbar="viridis",
535
- clabel="",
536
- plot_range=(1e-3, 1),
537
- plot_scale=Scale.LOGARITHMIC,
538
- plot_type="mesh",
539
- ),
540
- "depolarisation_532_raw": PlotMeta(
541
- name="Raw depolarisation at 532 nm",
542
- cbar="viridis",
543
- clabel="",
544
- plot_range=(1e-3, 1),
545
- plot_scale=Scale.LOGARITHMIC,
546
- plot_type="mesh",
547
- ),
548
- "depolarisation_532": PlotMeta(
549
- name="Lidar depolarisation at 532 nm",
550
- cbar="viridis",
551
- clabel="",
552
- plot_range=(1e-3, 1),
553
- plot_scale=Scale.LOGARITHMIC,
554
- plot_type="mesh",
555
- ),
556
- "depolarisation_355_raw": PlotMeta(
557
- name="Raw depolarisation at 355 nm",
558
- cbar="viridis",
559
- clabel="",
560
- plot_range=(1e-3, 1),
561
- plot_scale=Scale.LOGARITHMIC,
562
- plot_type="mesh",
563
- ),
564
- "depolarisation_355": PlotMeta(
565
- name="Lidar depolarisation at 355 nm",
566
- cbar="viridis",
567
- clabel="",
568
- plot_range=(1e-3, 1),
569
- plot_scale=Scale.LOGARITHMIC,
570
- plot_type="mesh",
571
- ),
572
- "depolarisation_smooth": PlotMeta(
573
- name="Lidar depolarisation (smoothed)",
574
- cbar="viridis",
575
- clabel="",
576
- plot_range=(1e-3, 1),
577
- plot_scale=Scale.LOGARITHMIC,
578
- plot_type="mesh",
579
- ),
580
- "Z": PlotMeta(
581
- name="Radar reflectivity factor",
582
- cbar="viridis",
583
- clabel=_DBZ,
584
- plot_range=(-40, 15),
585
- plot_scale=Scale.LINEAR,
586
- plot_type="mesh",
587
- ),
588
- "Z_error": PlotMeta(
589
- name="Radar reflectivity factor random error",
590
- cbar="RdYlGn_r",
591
- clabel=_DB,
592
- plot_range=(0, 3),
593
- plot_scale=Scale.LINEAR,
594
- plot_type="mesh",
595
- ),
596
- "Zh": PlotMeta(
597
- name="Radar reflectivity factor",
598
- cbar="viridis",
599
- clabel=_DBZ,
600
- plot_range=(-40, 15),
601
- plot_scale=Scale.LINEAR,
602
- plot_type="mesh",
603
- ),
604
- "ldr": PlotMeta(
605
- name="Linear depolarisation ratio",
606
- cbar="viridis",
607
- clabel=_DB,
608
- plot_range=(-30, -5),
609
- plot_scale=Scale.LINEAR,
610
- plot_type="mesh",
611
- ),
612
- "sldr": PlotMeta(
613
- name="Slanted linear depolarisation ratio",
614
- cbar="viridis",
615
- clabel=_DB,
616
- plot_range=(-30, -5),
617
- plot_scale=Scale.LINEAR,
618
- plot_type="mesh",
619
- ),
620
- "zdr": PlotMeta(
621
- name="Differential reflectivity",
622
- cbar="RdBu_r",
623
- clabel=_DB,
624
- plot_range=(-1, 1),
625
- plot_scale=Scale.LINEAR,
626
- plot_type="mesh",
627
- ),
628
- "width": PlotMeta(
629
- name="Spectral width",
630
- cbar="viridis",
631
- clabel=_MS1,
632
- plot_range=(1e-2, 1e0),
633
- plot_scale=Scale.LOGARITHMIC,
634
- plot_type="mesh",
635
- ),
636
- "v": PlotMeta(
637
- name="Doppler velocity",
638
- cbar="RdBu_r",
639
- clabel=_MS1,
640
- plot_range=(-4, 4),
641
- plot_scale=Scale.LINEAR,
642
- plot_type="mesh",
643
- ),
644
- "skewness": PlotMeta(
645
- name="Skewness",
646
- cbar="RdBu_r",
647
- clabel="",
648
- plot_range=(-1, 1),
649
- plot_scale=Scale.LINEAR,
650
- plot_type="mesh",
651
- ),
652
- "kurtosis": PlotMeta(
653
- name="Kurtosis",
654
- cbar="viridis",
655
- clabel="",
656
- plot_range=(1, 5),
657
- plot_scale=Scale.LINEAR,
658
- plot_type="mesh",
659
- ),
660
- "phi_cx": PlotMeta(
661
- name="Co-cross-channel differential phase",
662
- cbar="RdBu_r",
663
- clabel="rad",
664
- plot_range=(-2, 2),
665
- plot_scale=Scale.LINEAR,
666
- plot_type="mesh",
667
- ),
668
- "differential_attenuation": PlotMeta(
669
- name="Differential attenuation",
670
- cbar="viridis",
671
- clabel="dB km-1",
672
- plot_range=(0, 1), # TODO: Check
673
- plot_scale=Scale.LINEAR,
674
- plot_type="mesh",
675
- ),
676
- "rho_cx": PlotMeta(
677
- name="Co-cross-channel correlation coefficient",
678
- cbar="viridis",
679
- clabel="",
680
- plot_range=(1e-2, 1e0),
681
- plot_scale=Scale.LOGARITHMIC,
682
- plot_type="mesh",
683
- ),
684
- "rho_hv": PlotMeta(
685
- name="Correlation coefficient",
686
- cbar="viridis",
687
- clabel="",
688
- plot_range=(0.8, 1),
689
- plot_scale=Scale.LINEAR,
690
- plot_type="mesh",
691
- ),
692
- "srho_hv": PlotMeta(
693
- name="Slanted correlation coefficient",
694
- cbar="viridis",
695
- clabel="",
696
- plot_range=(0, 0.5),
697
- plot_scale=Scale.LINEAR,
698
- plot_type="mesh",
699
- ),
700
- "phi_dp": PlotMeta(
701
- name="Differential phase",
702
- cbar="RdBu_r",
703
- clabel="rad",
704
- plot_range=(-0.1, 0.1),
705
- plot_scale=Scale.LINEAR,
706
- plot_type="mesh",
707
- ),
708
- "kdp": PlotMeta(
709
- name="Specific differential phase shift",
710
- cbar="RdBu_r",
711
- clabel="rad km-1",
712
- plot_range=(-0.1, 0.1),
713
- plot_scale=Scale.LINEAR,
714
- plot_type="mesh",
715
- ),
716
- "v_sigma": PlotMeta(
717
- name="Standard deviation of mean velocity",
718
- cbar="viridis",
719
- clabel=_MS1,
720
- plot_range=(1e-2, 1e0),
721
- plot_scale=Scale.LOGARITHMIC,
722
- plot_type="mesh",
723
- ),
724
- "insect_prob": PlotMeta(
725
- name="Insect probability",
726
- cbar="viridis",
727
- clabel="",
728
- plot_range=(0, 1),
729
- plot_scale=Scale.LINEAR,
730
- plot_type="mesh",
731
- ),
732
- "radar_liquid_atten": PlotMeta(
733
- name="Approximate two-way radar attenuation due to liquid water",
734
- cbar="viridis",
735
- clabel=_DB,
736
- plot_range=(0, 5),
737
- plot_scale=Scale.LINEAR, # already logarithmic
738
- plot_type="mesh",
739
- ),
740
- "radar_gas_atten": PlotMeta(
741
- name="Two-way radar attenuation due to atmospheric gases",
742
- cbar="viridis",
743
- clabel=_DB,
744
- plot_range=(0, 1),
745
- plot_scale=Scale.LINEAR,
746
- plot_type="mesh",
747
- ),
748
- "lwp": PlotMeta(
749
- name="Liquid water path",
750
- cbar="Blues",
751
- ylabel=_KGM2,
752
- plot_range=(0, 1),
753
- plot_scale=Scale.LINEAR,
754
- plot_type="bar",
755
- source="mwr",
756
- ),
757
- "tb": PlotMeta(
758
- name="Brightness temperature",
759
- cbar="Blues",
760
- ylabel=_KGM2,
761
- plot_range=(0, 1),
762
- plot_scale=Scale.LINEAR,
763
- plot_type="bar",
764
- source="mwr-l1c",
765
- ),
766
- "iwv": PlotMeta(
767
- name="Integrated water vapour",
768
- cbar="Blues",
769
- ylabel=_KGM2,
770
- plot_range=(0, 1),
771
- plot_scale=Scale.LINEAR,
772
- plot_type="bar",
773
- source="mwr",
774
- ),
775
- "rainfall_rate": PlotMeta(
776
- name="Rainfall rate",
777
- plot_type="bar",
778
- source="disdrometer", # Also in weather-station
779
- ),
780
- "n_particles": PlotMeta(
781
- name="Number of particles", plot_type="bar", source="disdrometer"
782
- ),
783
- "air_temperature": PlotMeta(
784
- name="Air temperature", plot_type="bar", source="weather-station"
785
- ),
786
- "wind_speed": PlotMeta(
787
- name="Wind speed", plot_type="bar", source="weather-station"
788
- ),
789
- "wind_direction": PlotMeta(
790
- name="Wind direction", plot_type="bar", source="weather-station"
791
- ),
792
- "relative_humidity": PlotMeta(
793
- name="Relative humidity", plot_type="bar", source="weather-station"
794
- ),
795
- "air_pressure": PlotMeta(
796
- name="Air pressure", plot_type="bar", source="weather-station"
797
- ),
798
- "rainfall_amount": PlotMeta(
799
- name="Rainfall amount", plot_type="bar", source="weather-station"
800
- ),
801
- "target_classification": PlotMeta(
802
- name="Target classification",
803
- clabel=_CLABEL["target_classification"],
804
- plot_type="segment",
805
- ),
806
- "detection_status": PlotMeta(
807
- name="Radar and lidar detection status",
808
- clabel=_CLABEL["detection_status"],
809
- plot_type="segment",
810
- ),
811
- "iwc": PlotMeta(
812
- name="Ice water content",
813
- cbar="viridis",
814
- clabel=_KGM3,
815
- plot_range=(1e-7, 1e-3),
816
- plot_scale=Scale.LOGARITHMIC,
817
- plot_type="mesh",
818
- ),
819
- "iwc_inc_rain": PlotMeta(
820
- name="Ice water content (including rain)",
821
- cbar="Blues",
822
- clabel=_KGM3,
823
- plot_range=(1e-7, 1e-4),
824
- plot_scale=Scale.LOGARITHMIC,
825
- plot_type="mesh",
826
- ),
827
- "iwc_error": PlotMeta(
828
- name="Ice water content error",
829
- cbar="RdYlGn_r",
830
- clabel=_DB,
831
- plot_range=(0, 5),
832
- plot_scale=Scale.LINEAR,
833
- plot_type="mesh",
834
- ),
835
- "iwc_retrieval_status": PlotMeta(
836
- name="Ice water content retrieval status",
837
- clabel=_CLABEL["ice_retrieval_status"],
838
- plot_type="segment",
839
- ),
840
- "lwc": PlotMeta(
841
- name="Liquid water content",
842
- cbar="Blues",
843
- clabel=_KGM3,
844
- plot_range=(1e-5, 1e-2),
845
- plot_scale=Scale.LOGARITHMIC,
846
- plot_type="mesh",
847
- ),
848
- "lwc_error": PlotMeta(
849
- name="Liquid water content error",
850
- cbar="RdYlGn_r",
851
- clabel=_DB,
852
- plot_range=(0, 2),
853
- plot_scale=Scale.LINEAR,
854
- plot_type="mesh",
855
- ),
856
- "lwc_retrieval_status": PlotMeta(
857
- name="Liquid water content retrieval status",
858
- clabel=_CLABEL["lwc_retrieval_status"],
859
- plot_type="segment",
860
- ),
861
- "droplet": PlotMeta(
862
- name="Droplet bit",
863
- cbar=_CBAR["bit"],
864
- plot_range=(0, 1),
865
- plot_type="bit",
866
- ),
867
- "falling": PlotMeta(
868
- name="Falling bit",
869
- cbar=_CBAR["bit"],
870
- plot_range=(0, 1),
871
- plot_type="bit",
872
- ),
873
- "cold": PlotMeta(
874
- name="Cold bit", cbar=_CBAR["bit"], plot_range=(0, 1), plot_type="bit"
875
- ),
876
- "melting": PlotMeta(
877
- name="Melting bit",
878
- cbar=_CBAR["bit"],
879
- plot_range=(0, 1),
880
- plot_type="bit",
881
- ),
882
- "aerosol": PlotMeta(
883
- name="Aerosol bit",
884
- cbar=_CBAR["bit"],
885
- plot_range=(0, 1),
886
- plot_type="bit",
887
- ),
888
- "insect": PlotMeta(
889
- name="Insect bit",
890
- cbar=_CBAR["bit"],
891
- plot_range=(0, 1),
892
- plot_type="bit",
893
- ),
894
- "radar": PlotMeta(
895
- name="Radar bit", cbar=_CBAR["bit"], plot_range=(0, 1), plot_type="bit"
896
- ),
897
- "lidar": PlotMeta(
898
- name="Lidar bit", cbar=_CBAR["bit"], plot_range=(0, 1), plot_type="bit"
899
- ),
900
- "clutter": PlotMeta(
901
- name="Clutter bit",
902
- cbar=_CBAR["bit"],
903
- plot_range=(0, 1),
904
- plot_type="bit",
905
- ),
906
- "molecular": PlotMeta(
907
- name="Molecular bit",
908
- cbar=_CBAR["bit"],
909
- plot_range=(0, 1),
910
- plot_type="bit",
911
- ),
912
- "attenuated": PlotMeta(
913
- name="Attenuated bit",
914
- cbar=_CBAR["bit"],
915
- plot_range=(0, 1),
916
- plot_type="bit",
917
- ),
918
- "corrected": PlotMeta(
919
- name="Corrected bit",
920
- cbar=_CBAR["bit"],
921
- plot_range=(0, 1),
922
- plot_type="bit",
923
- ),
178
+ "rain-radar": {
179
+ "rainfall_rate": PlotMeta(
180
+ cmap="Blues",
181
+ plot_range=(0, 50 / 3600000),
182
+ mask_zeros=True,
183
+ )
184
+ },
185
+ "mwr": {
186
+ "temperature": PlotMeta(
187
+ cmap="coolwarm",
188
+ plot_range=(223.15, 323.15),
189
+ contour=True,
190
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
191
+ ),
192
+ "relative_humidity": PlotMeta(
193
+ plot_range=(0, 120),
194
+ contour=True,
195
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
196
+ ),
197
+ "absolute_humidity": PlotMeta(
198
+ plot_range=(1e-4, 1e-2),
199
+ log_scale=True,
200
+ contour=True,
201
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
202
+ ),
203
+ },
204
+ "mwr-single": {
205
+ "temperature": PlotMeta(
206
+ cmap="coolwarm",
207
+ plot_range=(223.15, 323.15),
208
+ contour=True,
209
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
210
+ ),
211
+ "potential_temperature": PlotMeta(
212
+ cmap="coolwarm",
213
+ plot_range=(260, 320),
214
+ contour=True,
215
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
216
+ ),
217
+ "equivalent_potential_temperature": PlotMeta(
218
+ cmap="coolwarm",
219
+ plot_range=(260, 320),
220
+ contour=True,
221
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
222
+ ),
223
+ "relative_humidity": PlotMeta(
224
+ plot_range=(0, 120),
225
+ contour=True,
226
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
227
+ ),
228
+ "absolute_humidity": PlotMeta(
229
+ plot_range=(1e-4, 1e-2),
230
+ log_scale=True,
231
+ contour=True,
232
+ time_smoothing_duration=_MWR_SINGLE_SMOOTHING,
233
+ ),
234
+ },
235
+ "mwr-multi": {
236
+ "temperature": PlotMeta(
237
+ cmap="coolwarm",
238
+ plot_range=(223.15, 323.15),
239
+ contour=True,
240
+ time_smoothing_duration=_MWR_MULTI_SMOOTHING,
241
+ ),
242
+ "potential_temperature": PlotMeta(
243
+ cmap="coolwarm",
244
+ plot_range=(260, 320),
245
+ contour=True,
246
+ time_smoothing_duration=_MWR_MULTI_SMOOTHING,
247
+ ),
248
+ "equivalent_potential_temperature": PlotMeta(
249
+ cmap="coolwarm",
250
+ plot_range=(260, 320),
251
+ contour=True,
252
+ time_smoothing_duration=_MWR_MULTI_SMOOTHING,
253
+ ),
254
+ "relative_humidity": PlotMeta(
255
+ plot_range=(0, 120),
256
+ contour=True,
257
+ time_smoothing_duration=_MWR_MULTI_SMOOTHING,
258
+ ),
259
+ },
260
+ "fallback": {
261
+ "cloud_top_height_agl": PlotMeta(
262
+ moving_average=False,
263
+ ),
264
+ "nubf": PlotMeta(plot_range=(0, 5)),
265
+ "ze_sat": PlotMeta(
266
+ plot_range=(-40, 15),
267
+ ),
268
+ "echo_cpr": PlotMeta(
269
+ plot_range=(-40, 15),
270
+ ),
271
+ "vm_sat": PlotMeta(
272
+ cmap="RdBu_r",
273
+ plot_range=(-4, 4),
274
+ ),
275
+ "vm_sat_folded": PlotMeta(
276
+ cmap="RdBu_r",
277
+ plot_range=(-4, 4),
278
+ ),
279
+ "v_cpr": PlotMeta(
280
+ cmap="RdBu_r",
281
+ plot_range=(-4, 4),
282
+ ),
283
+ "vm_sat_noise": PlotMeta(
284
+ cmap="RdBu_r",
285
+ plot_range=(-4, 4),
286
+ ),
287
+ "vm_sat_vel": PlotMeta(
288
+ cmap="RdBu_r",
289
+ plot_range=(-4, 4),
290
+ ),
291
+ "ier": PlotMeta(
292
+ plot_range=(2e-5, 6e-5),
293
+ ),
294
+ "ier_error": PlotMeta(
295
+ cmap="RdYlGn_r",
296
+ plot_range=(1e-5, 5e-5),
297
+ ),
298
+ "ier_inc_rain": PlotMeta(
299
+ plot_range=(2e-5, 6e-5),
300
+ ),
301
+ "ier_retrieval_status": PlotMeta(
302
+ clabel=_CLABEL["ice_retrieval_status"],
303
+ ),
304
+ "Do": PlotMeta(
305
+ plot_range=(1e-6, 1e-3),
306
+ log_scale=True,
307
+ ),
308
+ "Do_error": PlotMeta(
309
+ cmap="RdYlGn_r",
310
+ plot_range=(0.1, 0.5),
311
+ ),
312
+ "der": PlotMeta(
313
+ cmap="coolwarm",
314
+ plot_range=(1.0e-6, 1.0e-4),
315
+ log_scale=True,
316
+ ),
317
+ "N_scaled": PlotMeta(
318
+ plot_range=(1.0e0, 1e3),
319
+ log_scale=True,
320
+ ),
321
+ "der_error": PlotMeta(
322
+ cmap="coolwarm",
323
+ plot_range=(1.0e-6, 1.0e-4),
324
+ log_scale=True,
325
+ ),
326
+ "der_scaled": PlotMeta(
327
+ cmap="coolwarm",
328
+ plot_range=(1.0e-6, 1.0e-4),
329
+ log_scale=True,
330
+ ),
331
+ "der_scaled_error": PlotMeta(
332
+ cmap="coolwarm",
333
+ plot_range=(1.0e-6, 1.0e-4),
334
+ log_scale=True,
335
+ ),
336
+ "der_retrieval_status": PlotMeta(
337
+ clabel=_CLABEL["der_retrieval_status"],
338
+ ),
339
+ "radar_attenuation_status": PlotMeta(
340
+ clabel=_CLABEL["radar_attenuation_status"],
341
+ ),
342
+ "mu": PlotMeta(
343
+ plot_range=(0, 10),
344
+ ),
345
+ "S": PlotMeta(
346
+ plot_range=(0, 25),
347
+ ),
348
+ "S_error": PlotMeta(
349
+ cmap="RdYlGn_r",
350
+ plot_range=(0.1, 0.5),
351
+ ),
352
+ "drizzle_N": PlotMeta(
353
+ plot_range=(1e4, 1e9),
354
+ log_scale=True,
355
+ ),
356
+ "drizzle_N_error": PlotMeta(
357
+ cmap="RdYlGn_r",
358
+ plot_range=(0.1, 0.5),
359
+ ),
360
+ "drizzle_lwc": PlotMeta(
361
+ plot_range=(1e-8, 1e-3),
362
+ log_scale=True,
363
+ ),
364
+ "drizzle_lwc_error": PlotMeta(
365
+ cmap="RdYlGn_r",
366
+ plot_range=(0.3, 1),
367
+ ),
368
+ "drizzle_lwf": PlotMeta(
369
+ plot_range=(1e-8, 1e-5),
370
+ log_scale=True,
371
+ ),
372
+ "drizzle_lwf_error": PlotMeta(
373
+ cmap="RdYlGn_r",
374
+ plot_range=(0.3, 1),
375
+ ),
376
+ "v_drizzle": PlotMeta(
377
+ cmap="RdBu_r",
378
+ plot_range=(-2, 2),
379
+ ),
380
+ "v_drizzle_error": PlotMeta(
381
+ cmap="RdYlGn_r",
382
+ plot_range=(0.3, 1),
383
+ ),
384
+ "drizzle_retrieval_status": PlotMeta(
385
+ clabel=_CLABEL["drizzle_retrieval_status"],
386
+ ),
387
+ "v_air": PlotMeta(
388
+ cmap="RdBu_r",
389
+ plot_range=(-2, 2),
390
+ ),
391
+ "uwind": PlotMeta(
392
+ cmap="RdBu_r",
393
+ plot_range=(-50, 50),
394
+ ),
395
+ "uwind_raw": PlotMeta(
396
+ cmap="RdBu_r",
397
+ plot_range=(-50, 50),
398
+ ),
399
+ "vwind": PlotMeta(
400
+ cmap="RdBu_r",
401
+ plot_range=(-50, 50),
402
+ ),
403
+ "vwind_raw": PlotMeta(
404
+ cmap="RdBu_r",
405
+ plot_range=(-50, 50),
406
+ ),
407
+ "temperature": PlotMeta(
408
+ cmap="RdBu_r",
409
+ plot_range=(223.15, 323.15),
410
+ ),
411
+ "cloud_fraction": PlotMeta(
412
+ cmap="Blues",
413
+ plot_range=(0, 1),
414
+ ),
415
+ "Tw": PlotMeta(
416
+ cmap="RdBu_r",
417
+ plot_range=(223.15, 323.15),
418
+ ),
419
+ "specific_humidity": PlotMeta(
420
+ plot_range=(1e-5, 1e-2),
421
+ log_scale=True,
422
+ ),
423
+ "q": PlotMeta(
424
+ plot_range=(1e-5, 1e-2),
425
+ log_scale=True,
426
+ ),
427
+ "number_concentration": PlotMeta(plot_range=(1e-2, 1e3), log_scale=True),
428
+ "fall_velocity": PlotMeta(
429
+ plot_range=(0, 10),
430
+ mask_zeros=True,
431
+ ),
432
+ "pressure": PlotMeta(
433
+ plot_range=(1e4, 1.2e5),
434
+ log_scale=True,
435
+ ),
436
+ "beta": PlotMeta(
437
+ plot_range=(1e-7, 1e-4),
438
+ log_scale=True,
439
+ ),
440
+ "beta_raw": PlotMeta(
441
+ plot_range=(1e-7, 1e-4),
442
+ log_scale=True,
443
+ ),
444
+ "beta_1064_raw": PlotMeta(
445
+ plot_range=(1e-7, 1e-4),
446
+ log_scale=True,
447
+ ),
448
+ "beta_1064": PlotMeta(
449
+ plot_range=(1e-7, 1e-4),
450
+ log_scale=True,
451
+ ),
452
+ "beta_532_raw": PlotMeta(
453
+ plot_range=(1e-7, 1e-4),
454
+ log_scale=True,
455
+ ),
456
+ "beta_532": PlotMeta(
457
+ plot_range=(1e-7, 1e-4),
458
+ log_scale=True,
459
+ ),
460
+ "beta_532_nr_raw": PlotMeta(
461
+ plot_range=(1e-7, 1e-4),
462
+ log_scale=True,
463
+ ),
464
+ "beta_532_nr": PlotMeta(
465
+ plot_range=(1e-7, 1e-4),
466
+ log_scale=True,
467
+ ),
468
+ "beta_355_raw": PlotMeta(
469
+ plot_range=(1e-7, 1e-4),
470
+ log_scale=True,
471
+ ),
472
+ "beta_355": PlotMeta(
473
+ plot_range=(1e-7, 1e-4),
474
+ log_scale=True,
475
+ ),
476
+ "beta_355_nr_raw": PlotMeta(
477
+ plot_range=(1e5, 1e8),
478
+ log_scale=True,
479
+ ),
480
+ "beta_355_nr": PlotMeta(
481
+ plot_range=(1e5, 1e8),
482
+ log_scale=True,
483
+ ),
484
+ "beta_smooth": PlotMeta(
485
+ plot_range=(1e-7, 1e-4),
486
+ log_scale=True,
487
+ ),
488
+ "depolarisation_raw": PlotMeta(
489
+ plot_range=(1e-3, 1),
490
+ log_scale=True,
491
+ ),
492
+ "depolarisation": PlotMeta(
493
+ plot_range=(1e-3, 1),
494
+ log_scale=True,
495
+ ),
496
+ "depolarisation_1064_raw": PlotMeta(
497
+ plot_range=(1e-3, 1),
498
+ log_scale=True,
499
+ ),
500
+ "depolarisation_1064": PlotMeta(
501
+ plot_range=(1e-3, 1),
502
+ log_scale=True,
503
+ ),
504
+ "depolarisation_532_raw": PlotMeta(
505
+ plot_range=(1e-3, 1),
506
+ log_scale=True,
507
+ ),
508
+ "depolarisation_532": PlotMeta(
509
+ plot_range=(1e-3, 1),
510
+ log_scale=True,
511
+ ),
512
+ "depolarisation_355_raw": PlotMeta(
513
+ plot_range=(1e-3, 1),
514
+ log_scale=True,
515
+ ),
516
+ "depolarisation_355": PlotMeta(
517
+ plot_range=(1e-3, 1),
518
+ log_scale=True,
519
+ ),
520
+ "depolarisation_smooth": PlotMeta(
521
+ plot_range=(1e-3, 1),
522
+ log_scale=True,
523
+ ),
524
+ "Z": PlotMeta(
525
+ plot_range=(-40, 15),
526
+ ),
527
+ "Z_error": PlotMeta(
528
+ cmap="RdYlGn_r",
529
+ plot_range=(0, 3),
530
+ ),
531
+ "Zh": PlotMeta(
532
+ plot_range=(-40, 15),
533
+ ),
534
+ "ldr": PlotMeta(
535
+ plot_range=(-30, -5),
536
+ ),
537
+ "sldr": PlotMeta(
538
+ plot_range=(-30, -5),
539
+ ),
540
+ "zdr": PlotMeta(
541
+ cmap="RdBu_r",
542
+ plot_range=(-1, 1),
543
+ ),
544
+ "width": PlotMeta(
545
+ plot_range=(1e-2, 1e0),
546
+ log_scale=True,
547
+ ),
548
+ "v": PlotMeta(
549
+ cmap="RdBu_r",
550
+ plot_range=(-4, 4),
551
+ ),
552
+ "skewness": PlotMeta(
553
+ cmap="RdBu_r",
554
+ plot_range=(-1, 1),
555
+ ),
556
+ "kurtosis": PlotMeta(
557
+ plot_range=(1, 5),
558
+ ),
559
+ "phi_cx": PlotMeta(
560
+ cmap="RdBu_r",
561
+ plot_range=(-2, 2),
562
+ ),
563
+ "differential_attenuation": PlotMeta(
564
+ plot_range=(0, 1),
565
+ ),
566
+ "rho_cx": PlotMeta(
567
+ plot_range=(1e-2, 1e0),
568
+ log_scale=True,
569
+ ),
570
+ "rho_hv": PlotMeta(
571
+ plot_range=(0.8, 1),
572
+ ),
573
+ "srho_hv": PlotMeta(
574
+ plot_range=(0, 0.5),
575
+ ),
576
+ "phi_dp": PlotMeta(
577
+ cmap="RdBu_r",
578
+ plot_range=(-0.1, 0.1),
579
+ ),
580
+ "kdp": PlotMeta(
581
+ cmap="RdBu_r",
582
+ plot_range=(-0.1, 0.1),
583
+ ),
584
+ "v_sigma": PlotMeta(
585
+ plot_range=(1e-2, 1e0),
586
+ log_scale=True,
587
+ ),
588
+ "insect_prob": PlotMeta(
589
+ plot_range=(0, 1),
590
+ ),
591
+ "liquid_prob": PlotMeta(
592
+ plot_range=(0, 0.7),
593
+ ),
594
+ "radar_liquid_atten": PlotMeta(
595
+ plot_range=(0, 5),
596
+ ),
597
+ "radar_gas_atten": PlotMeta(
598
+ plot_range=(0, 5),
599
+ ),
600
+ "radar_rain_atten": PlotMeta(
601
+ plot_range=(0, 15),
602
+ ),
603
+ "radar_melting_atten": PlotMeta(
604
+ plot_range=(0, 5),
605
+ ),
606
+ "iwv": PlotMeta(
607
+ cmap="Blues",
608
+ plot_range=(0, 1),
609
+ ),
610
+ "target_classification": PlotMeta(
611
+ clabel=_CLABEL["target_classification"],
612
+ ),
613
+ "target_classification_cpr": PlotMeta(
614
+ clabel=_CLABEL["target_classification_cpr"],
615
+ ),
616
+ "detection_status": PlotMeta(
617
+ clabel=_CLABEL["detection_status"],
618
+ ),
619
+ "signal_source_status": PlotMeta(
620
+ clabel=_CLABEL["signal_source_status"],
621
+ ),
622
+ "iwc": PlotMeta(
623
+ plot_range=(1e-7, 1e-3),
624
+ log_scale=True,
625
+ ),
626
+ "iwc_inc_rain": PlotMeta(
627
+ cmap="Blues",
628
+ plot_range=(1e-7, 1e-4),
629
+ log_scale=True,
630
+ ),
631
+ "iwc_error": PlotMeta(
632
+ cmap="RdYlGn_r",
633
+ plot_range=(0, 5),
634
+ ),
635
+ "iwc_retrieval_status": PlotMeta(
636
+ clabel=_CLABEL["ice_retrieval_status"],
637
+ ),
638
+ "lwc": PlotMeta(
639
+ cmap="Blues",
640
+ plot_range=(1e-5, 1e-2),
641
+ log_scale=True,
642
+ mask_zeros=True,
643
+ ),
644
+ "lwc_error": PlotMeta(
645
+ cmap="RdYlGn_r",
646
+ plot_range=(0, 2),
647
+ ),
648
+ "lwc_retrieval_status": PlotMeta(
649
+ clabel=_CLABEL["lwc_retrieval_status"],
650
+ ),
651
+ "pia": PlotMeta(
652
+ plot_range=(0, 3),
653
+ mask_zeros=True,
654
+ ),
655
+ "lwp": PlotMeta(
656
+ zero_line=True,
657
+ ),
658
+ "epsilon": PlotMeta(
659
+ cmap="inferno",
660
+ plot_range=(1e-7, 1e-1),
661
+ log_scale=True,
662
+ ),
663
+ },
924
664
  }