disdrodb 0.1.2__py3-none-any.whl → 0.1.4__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.
- disdrodb/__init__.py +68 -34
- disdrodb/_config.py +5 -4
- disdrodb/_version.py +16 -3
- disdrodb/accessor/__init__.py +20 -0
- disdrodb/accessor/methods.py +125 -0
- disdrodb/api/checks.py +177 -24
- disdrodb/api/configs.py +3 -3
- disdrodb/api/info.py +13 -13
- disdrodb/api/io.py +281 -22
- disdrodb/api/path.py +184 -195
- disdrodb/api/search.py +18 -9
- disdrodb/cli/disdrodb_create_summary.py +103 -0
- disdrodb/cli/disdrodb_create_summary_station.py +91 -0
- disdrodb/cli/disdrodb_run_l0.py +1 -1
- disdrodb/cli/disdrodb_run_l0_station.py +1 -1
- disdrodb/cli/disdrodb_run_l0a_station.py +1 -1
- disdrodb/cli/disdrodb_run_l0b.py +1 -1
- disdrodb/cli/disdrodb_run_l0b_station.py +3 -3
- disdrodb/cli/disdrodb_run_l0c.py +1 -1
- disdrodb/cli/disdrodb_run_l0c_station.py +3 -3
- disdrodb/cli/disdrodb_run_l1_station.py +2 -2
- disdrodb/cli/disdrodb_run_l2e_station.py +2 -2
- disdrodb/cli/disdrodb_run_l2m_station.py +2 -2
- disdrodb/configs.py +149 -4
- disdrodb/constants.py +61 -0
- disdrodb/data_transfer/download_data.py +127 -11
- disdrodb/etc/configs/attributes.yaml +339 -0
- disdrodb/etc/configs/encodings.yaml +473 -0
- disdrodb/etc/products/L1/global.yaml +13 -0
- disdrodb/etc/products/L2E/10MIN.yaml +12 -0
- disdrodb/etc/products/L2E/1MIN.yaml +1 -0
- disdrodb/etc/products/L2E/global.yaml +22 -0
- disdrodb/etc/products/L2M/10MIN.yaml +12 -0
- disdrodb/etc/products/L2M/GAMMA_ML.yaml +8 -0
- disdrodb/etc/products/L2M/NGAMMA_GS_LOG_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/NGAMMA_GS_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/NGAMMA_GS_Z_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/global.yaml +26 -0
- disdrodb/issue/writer.py +2 -0
- disdrodb/l0/__init__.py +13 -0
- disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +4 -4
- disdrodb/l0/configs/PARSIVEL/l0b_cf_attrs.yml +1 -1
- disdrodb/l0/configs/PARSIVEL/l0b_encodings.yml +3 -3
- disdrodb/l0/configs/PARSIVEL/raw_data_format.yml +1 -1
- disdrodb/l0/configs/PARSIVEL2/l0b_cf_attrs.yml +5 -5
- disdrodb/l0/configs/PARSIVEL2/l0b_encodings.yml +3 -3
- disdrodb/l0/configs/PARSIVEL2/raw_data_format.yml +1 -1
- disdrodb/l0/configs/PWS100/l0b_cf_attrs.yml +4 -4
- disdrodb/l0/configs/PWS100/raw_data_format.yml +1 -1
- disdrodb/l0/l0a_processing.py +37 -32
- disdrodb/l0/l0b_nc_processing.py +118 -8
- disdrodb/l0/l0b_processing.py +30 -65
- disdrodb/l0/l0c_processing.py +369 -259
- disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +7 -0
- disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_LPM_NC.py +66 -0
- disdrodb/l0/readers/LPM/SLOVENIA/{CRNI_VRH.py → UL.py} +3 -0
- disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +195 -0
- disdrodb/l0/readers/PARSIVEL/GPM/PIERS.py +0 -2
- disdrodb/l0/readers/PARSIVEL/JAPAN/JMA.py +4 -1
- disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +1 -1
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/ARM/ARM_PARSIVEL2.py +4 -0
- disdrodb/l0/readers/PARSIVEL2/BELGIUM/ILVO.py +168 -0
- disdrodb/l0/readers/PARSIVEL2/CANADA/UQAM_NC.py +69 -0
- disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +165 -0
- disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +69 -0
- disdrodb/l0/readers/PARSIVEL2/FRANCE/ENPC_PARSIVEL2.py +255 -134
- disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +525 -0
- disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/GPM/GCPEX.py +9 -7
- disdrodb/l0/readers/PARSIVEL2/KIT/BURKINA_FASO.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/KIT/TEAMX.py +123 -0
- disdrodb/l0/readers/PARSIVEL2/{NETHERLANDS/DELFT.py → MPI/BCO_PARSIVEL2.py} +41 -71
- disdrodb/l0/readers/PARSIVEL2/MPI/BOWTIE.py +220 -0
- disdrodb/l0/readers/PARSIVEL2/NASA/APU.py +120 -0
- disdrodb/l0/readers/PARSIVEL2/NASA/LPVEX.py +109 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +1 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +126 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_PIPS.py +165 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +20 -12
- disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT_NC.py +5 -0
- disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +144 -0
- disdrodb/l0/readers/PARSIVEL2/SPAIN/CR1000DL.py +201 -0
- disdrodb/l0/readers/PARSIVEL2/SPAIN/LIAISE.py +137 -0
- disdrodb/l0/readers/PARSIVEL2/USA/C3WE.py +146 -0
- disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100.py +105 -99
- disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100_SIRTA.py +151 -0
- disdrodb/l1/__init__.py +5 -0
- disdrodb/l1/fall_velocity.py +46 -0
- disdrodb/l1/filters.py +34 -20
- disdrodb/l1/processing.py +46 -45
- disdrodb/l1/resampling.py +77 -66
- disdrodb/l1_env/routines.py +18 -3
- disdrodb/l2/__init__.py +7 -0
- disdrodb/l2/empirical_dsd.py +58 -10
- disdrodb/l2/processing.py +268 -117
- disdrodb/metadata/checks.py +132 -125
- disdrodb/metadata/standards.py +3 -1
- disdrodb/psd/fitting.py +631 -345
- disdrodb/psd/models.py +9 -6
- disdrodb/routines/__init__.py +54 -0
- disdrodb/{l0/routines.py → routines/l0.py} +316 -355
- disdrodb/{l1/routines.py → routines/l1.py} +76 -116
- disdrodb/routines/l2.py +1019 -0
- disdrodb/{routines.py → routines/wrappers.py} +98 -10
- disdrodb/scattering/__init__.py +16 -4
- disdrodb/scattering/axis_ratio.py +61 -37
- disdrodb/scattering/permittivity.py +504 -0
- disdrodb/scattering/routines.py +746 -184
- disdrodb/summary/__init__.py +17 -0
- disdrodb/summary/routines.py +4196 -0
- disdrodb/utils/archiving.py +434 -0
- disdrodb/utils/attrs.py +68 -125
- disdrodb/utils/cli.py +5 -5
- disdrodb/utils/compression.py +30 -1
- disdrodb/utils/dask.py +121 -9
- disdrodb/utils/dataframe.py +61 -7
- disdrodb/utils/decorators.py +31 -0
- disdrodb/utils/directories.py +35 -15
- disdrodb/utils/encoding.py +37 -19
- disdrodb/{l2 → utils}/event.py +15 -173
- disdrodb/utils/logger.py +14 -7
- disdrodb/utils/manipulations.py +81 -0
- disdrodb/utils/routines.py +166 -0
- disdrodb/utils/subsetting.py +214 -0
- disdrodb/utils/time.py +35 -177
- disdrodb/utils/writer.py +20 -7
- disdrodb/utils/xarray.py +5 -4
- disdrodb/viz/__init__.py +13 -0
- disdrodb/viz/plots.py +398 -0
- {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/METADATA +4 -3
- {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/RECORD +139 -98
- {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/entry_points.txt +2 -0
- disdrodb/l1/encoding_attrs.py +0 -642
- disdrodb/l2/processing_options.py +0 -213
- disdrodb/l2/routines.py +0 -868
- /disdrodb/l0/readers/PARSIVEL/SLOVENIA/{UL_FGG.py → UL.py} +0 -0
- {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/WHEEL +0 -0
- {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/licenses/LICENSE +0 -0
- {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/top_level.txt +0 -0
|
@@ -239,7 +239,7 @@ def check_consistent_station_name(metadata_filepath, station_name):
|
|
|
239
239
|
return station_name
|
|
240
240
|
|
|
241
241
|
|
|
242
|
-
def download_station_data(metadata_filepath: str, data_archive_dir: str, force: bool = False) -> None:
|
|
242
|
+
def download_station_data(metadata_filepath: str, data_archive_dir: str, force: bool = False, verbose=True) -> None:
|
|
243
243
|
"""Download and unzip the station data .
|
|
244
244
|
|
|
245
245
|
Parameters
|
|
@@ -275,17 +275,27 @@ def download_station_data(metadata_filepath: str, data_archive_dir: str, force:
|
|
|
275
275
|
raise ValueError(f"Invalid disdrodb_data_url '{disdrodb_data_url}' for station {station_name}")
|
|
276
276
|
|
|
277
277
|
# Download files
|
|
278
|
-
# - Option 1:
|
|
279
|
-
if disdrodb_data_url.startswith("https://zenodo.org/"):
|
|
280
|
-
|
|
278
|
+
# - Option 1: Download ZIP file containing all station raw data
|
|
279
|
+
if disdrodb_data_url.startswith("https://zenodo.org/") or disdrodb_data_url.startswith("https://cloudnet.fmi.fi/"):
|
|
280
|
+
download_zip_file(url=disdrodb_data_url, dst_dir=station_dir, force=force)
|
|
281
|
+
|
|
281
282
|
# - Option 2: Recursive download from a web server via HTTP or HTTPS.
|
|
282
283
|
elif disdrodb_data_url.startswith("http"):
|
|
283
|
-
download_web_server_data(url=disdrodb_data_url, dst_dir=station_dir, force=force, verbose=
|
|
284
|
+
download_web_server_data(url=disdrodb_data_url, dst_dir=station_dir, force=force, verbose=verbose)
|
|
285
|
+
# - Retry to be more sure that all data have been downloaded
|
|
286
|
+
download_web_server_data(url=disdrodb_data_url, dst_dir=station_dir, force=True, verbose=verbose)
|
|
287
|
+
|
|
288
|
+
# - Option 3: Recursive download from a ftp server
|
|
289
|
+
elif disdrodb_data_url.startswith("ftp"):
|
|
290
|
+
download_ftp_server_data(url=disdrodb_data_url, dst_dir=station_dir, force=force, verbose=verbose)
|
|
291
|
+
# - Retry to be more sure that all data have been downloaded
|
|
292
|
+
download_ftp_server_data(url=disdrodb_data_url, dst_dir=station_dir, force=True, verbose=verbose)
|
|
293
|
+
|
|
284
294
|
else:
|
|
285
295
|
raise NotImplementedError(f"Open a GitHub Issue to enable the download of data from {disdrodb_data_url}.")
|
|
286
296
|
|
|
287
297
|
|
|
288
|
-
|
|
298
|
+
####--------------------------------------------------------------------.
|
|
289
299
|
#### Download from Web Server via HTTP or HTTPS
|
|
290
300
|
|
|
291
301
|
|
|
@@ -301,9 +311,17 @@ def download_web_server_data(url: str, dst_dir: str, force=True, verbose=True) -
|
|
|
301
311
|
3. Compute cut-dirs so that only the last segment of the path remains locally.
|
|
302
312
|
4. Build and run the wget command.
|
|
303
313
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
314
|
+
Parameters
|
|
315
|
+
----------
|
|
316
|
+
url : str
|
|
317
|
+
HTTPS URL pointing to webserver folder. Example: "https://ruisdael.citg.tudelft.nl/parsivel/PAR001_Cabauw/"
|
|
318
|
+
dst_dir : str
|
|
319
|
+
Local directory where to download the file (DISDRODB station data directory).
|
|
320
|
+
force : bool, optional
|
|
321
|
+
If ``True``, re-download new/updated files (skip unchanged ones).
|
|
322
|
+
If ``False``, keep existing files untouched.
|
|
323
|
+
verbose : bool, optional
|
|
324
|
+
Print wget output (default is True).
|
|
307
325
|
"""
|
|
308
326
|
# 1. Ensure wget exists
|
|
309
327
|
ensure_wget_available()
|
|
@@ -373,7 +391,7 @@ def build_webserver_wget_command(url: str, cut_dirs: int, dst_dir: str, force: b
|
|
|
373
391
|
- url
|
|
374
392
|
"""
|
|
375
393
|
cmd = ["wget"]
|
|
376
|
-
if verbose:
|
|
394
|
+
if not verbose:
|
|
377
395
|
cmd.append("-q")
|
|
378
396
|
cmd += [
|
|
379
397
|
"-r",
|
|
@@ -393,11 +411,109 @@ def build_webserver_wget_command(url: str, cut_dirs: int, dst_dir: str, force: b
|
|
|
393
411
|
return cmd
|
|
394
412
|
|
|
395
413
|
|
|
414
|
+
####--------------------------------------------------------------------.
|
|
415
|
+
#### Download from FTP Server
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def build_ftp_server_wget_command(
|
|
419
|
+
url: str,
|
|
420
|
+
cut_dirs: int,
|
|
421
|
+
dst_dir: str,
|
|
422
|
+
force: bool,
|
|
423
|
+
verbose: bool,
|
|
424
|
+
) -> list[str]:
|
|
425
|
+
"""Construct the wget command list for FTP recursive download.
|
|
426
|
+
|
|
427
|
+
Parameters
|
|
428
|
+
----------
|
|
429
|
+
url : str
|
|
430
|
+
FTP URL to download from.
|
|
431
|
+
cut_dirs : int
|
|
432
|
+
Number of leading path components to strip.
|
|
433
|
+
dst_dir : str
|
|
434
|
+
Local destination directory.
|
|
435
|
+
force : bool
|
|
436
|
+
If True, re-download newer files (--timestamping).
|
|
437
|
+
If False, keep existing files untouched (--no-clobber).
|
|
438
|
+
verbose : bool
|
|
439
|
+
If False, suppress wget output (-q).
|
|
440
|
+
"""
|
|
441
|
+
cmd = ["wget"] # base command
|
|
442
|
+
|
|
443
|
+
if not verbose:
|
|
444
|
+
cmd.append("-q") # quiet mode --> no output except errors
|
|
445
|
+
|
|
446
|
+
cmd += [
|
|
447
|
+
"-r", # recursive --> traverse into subdirectories
|
|
448
|
+
"-np", # no parent --> don't ascend to higher-level dirs
|
|
449
|
+
"-nH", # no host dirs --> avoid creating ftp.example.com/ locally
|
|
450
|
+
f"--cut-dirs={cut_dirs}", # strip N leading path components
|
|
451
|
+
]
|
|
452
|
+
|
|
453
|
+
if force:
|
|
454
|
+
cmd.append("--timestamping") # download if remote file is newer
|
|
455
|
+
else:
|
|
456
|
+
cmd.append("--no-clobber") # skip files that already exist
|
|
457
|
+
|
|
458
|
+
cmd += [
|
|
459
|
+
"-P", # specify local destination directory
|
|
460
|
+
dst_dir,
|
|
461
|
+
f"ftp://anonymous:disdrodb@{url}", # target FTP URL
|
|
462
|
+
]
|
|
463
|
+
return cmd
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
def download_ftp_server_data(url: str, dst_dir: str, force: bool = False, verbose: bool = True) -> None:
|
|
467
|
+
"""Download data from an FTP server with anonymous login.
|
|
468
|
+
|
|
469
|
+
Parameters
|
|
470
|
+
----------
|
|
471
|
+
url : str
|
|
472
|
+
FTP server URL pointing to a folder. Example: "ftp://ftp.example.com/path/to/data/"
|
|
473
|
+
dst_dir : str
|
|
474
|
+
Local directory where to download the file (DISDRODB station data directory).
|
|
475
|
+
force : bool, optional
|
|
476
|
+
If ``True``, re-download new/updated files (skip unchanged ones).
|
|
477
|
+
If ``False``, keep existing files untouched.
|
|
478
|
+
verbose : bool, optional
|
|
479
|
+
Print wget output (default is True).
|
|
480
|
+
"""
|
|
481
|
+
ensure_wget_available()
|
|
482
|
+
|
|
483
|
+
# Ensure trailing slash
|
|
484
|
+
url = ensure_trailing_slash(url)
|
|
485
|
+
|
|
486
|
+
# Compute cut-dirs so files land directly in dst_dir
|
|
487
|
+
cut_dirs = compute_cut_dirs(url)
|
|
488
|
+
|
|
489
|
+
# Make destination directory
|
|
490
|
+
os.makedirs(dst_dir, exist_ok=True)
|
|
491
|
+
|
|
492
|
+
# Build wget command
|
|
493
|
+
cmd = build_ftp_server_wget_command(
|
|
494
|
+
url,
|
|
495
|
+
cut_dirs=cut_dirs,
|
|
496
|
+
dst_dir=dst_dir,
|
|
497
|
+
force=force,
|
|
498
|
+
verbose=verbose,
|
|
499
|
+
)
|
|
500
|
+
# Run wget
|
|
501
|
+
try:
|
|
502
|
+
subprocess.run(cmd, check=True)
|
|
503
|
+
except subprocess.CalledProcessError as e:
|
|
504
|
+
raise subprocess.CalledProcessError(
|
|
505
|
+
returncode=e.returncode,
|
|
506
|
+
cmd=e.cmd,
|
|
507
|
+
output=e.output,
|
|
508
|
+
stderr=e.stderr,
|
|
509
|
+
)
|
|
510
|
+
|
|
511
|
+
|
|
396
512
|
####--------------------------------------------------------------------.
|
|
397
513
|
#### Download from Zenodo
|
|
398
514
|
|
|
399
515
|
|
|
400
|
-
def
|
|
516
|
+
def download_zip_file(url, dst_dir, force):
|
|
401
517
|
"""Download zip file from zenodo and extract station raw data."""
|
|
402
518
|
# Download zip file
|
|
403
519
|
zip_filepath = _download_file_from_url(url, dst_dir=dst_dir, force=force)
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
diameter_bin_center:
|
|
2
|
+
name: diameter_bin_center
|
|
3
|
+
standard_name: diameter_bin_center
|
|
4
|
+
long_name: diameter_bin_center
|
|
5
|
+
units: mm
|
|
6
|
+
description: Bin center drop diameter value
|
|
7
|
+
diameter_bin_width:
|
|
8
|
+
name: diameter_bin_width
|
|
9
|
+
standard_name: diameter_bin_width
|
|
10
|
+
long_name: diameter_bin_width
|
|
11
|
+
units: mm
|
|
12
|
+
description: Drop diameter bin width
|
|
13
|
+
diameter_bin_upper:
|
|
14
|
+
name: diameter_bin_upper
|
|
15
|
+
standard_name: diameter_bin_upper
|
|
16
|
+
long_name: diameter_bin_upper
|
|
17
|
+
units: mm
|
|
18
|
+
description: Bin upper bound drop diameter value
|
|
19
|
+
velocity_bin_lower:
|
|
20
|
+
name: velocity_bin_lower
|
|
21
|
+
standard_name: velocity_bin_lower
|
|
22
|
+
long_name: velocity_bin_lower
|
|
23
|
+
units: m/s
|
|
24
|
+
description: Bin lower bound drop fall velocity value
|
|
25
|
+
velocity_bin_center:
|
|
26
|
+
name: velocity_bin_center
|
|
27
|
+
standard_name: velocity_bin_center
|
|
28
|
+
long_name: velocity_bin_center
|
|
29
|
+
units: m/s
|
|
30
|
+
description: Bin center drop fall velocity value
|
|
31
|
+
velocity_bin_width:
|
|
32
|
+
name: velocity_bin_width
|
|
33
|
+
standard_name: velocity_bin_width
|
|
34
|
+
long_name: velocity_bin_width
|
|
35
|
+
units: m/s
|
|
36
|
+
description: Drop fall velocity bin width
|
|
37
|
+
velocity_bin_upper:
|
|
38
|
+
name: velocity_bin_upper
|
|
39
|
+
standard_name: velocity_bin_upper
|
|
40
|
+
long_name: velocity_bin_upper
|
|
41
|
+
units: m/s
|
|
42
|
+
description: Bin upper bound drop fall velocity value
|
|
43
|
+
latitude:
|
|
44
|
+
name: latitude
|
|
45
|
+
standard_name: latitude
|
|
46
|
+
long_name: Latitude
|
|
47
|
+
units: degrees_north
|
|
48
|
+
longitude:
|
|
49
|
+
name: longitude
|
|
50
|
+
standard_name: longitude
|
|
51
|
+
long_name: Longitude
|
|
52
|
+
units: degrees_east
|
|
53
|
+
altitude:
|
|
54
|
+
name: altitude
|
|
55
|
+
standard_name: altitude
|
|
56
|
+
long_name: Altitude
|
|
57
|
+
units: m
|
|
58
|
+
description: Elevation above sea level
|
|
59
|
+
time:
|
|
60
|
+
name: time
|
|
61
|
+
standard_name: time
|
|
62
|
+
long_name: time
|
|
63
|
+
description: UTC Time
|
|
64
|
+
sample_interval:
|
|
65
|
+
name: Sampling interval
|
|
66
|
+
standard_name: Sampling interval
|
|
67
|
+
long_name: Sampling interval
|
|
68
|
+
description: Sampling interval in seconds.
|
|
69
|
+
unit: s
|
|
70
|
+
drop_number:
|
|
71
|
+
description: Counts of drops per diameter and velocity class
|
|
72
|
+
long_name: Drop counts per diameter and velocity class
|
|
73
|
+
units: ""
|
|
74
|
+
raw_drop_number:
|
|
75
|
+
description: Counts of drops per diameter and velocity class
|
|
76
|
+
long_name: Drop counts per diameter and velocity class
|
|
77
|
+
units: ""
|
|
78
|
+
drop_counts:
|
|
79
|
+
description: Counts of drops per diameter class
|
|
80
|
+
long_name: Drop counts per diameter class
|
|
81
|
+
units: ""
|
|
82
|
+
Dmin:
|
|
83
|
+
description: Minimum drop diameter
|
|
84
|
+
long_name: Minimum drop diameter
|
|
85
|
+
units: mm
|
|
86
|
+
Dmax:
|
|
87
|
+
description: Maximum drop diameter
|
|
88
|
+
long_name: Maximum drop diameter
|
|
89
|
+
units: mm
|
|
90
|
+
fall_velocity:
|
|
91
|
+
description: Estimated drop fall velocity per diameter class
|
|
92
|
+
long_name: Estimated drop fall velocity
|
|
93
|
+
units: m s-1
|
|
94
|
+
drop_average_velocity:
|
|
95
|
+
description: Average measured drop fall velocity per diameter class
|
|
96
|
+
long_name: Measured average drop fall velocity
|
|
97
|
+
units: m s-1
|
|
98
|
+
Nraw:
|
|
99
|
+
description: Total number of measured drops
|
|
100
|
+
long_name: Total number of measured drops
|
|
101
|
+
units: ""
|
|
102
|
+
N:
|
|
103
|
+
description: Total number of selected drops
|
|
104
|
+
long_name: Total number of selected drops
|
|
105
|
+
units: ""
|
|
106
|
+
Nremoved:
|
|
107
|
+
description: Total number of discarded drops
|
|
108
|
+
long_name: Total number of discarded drops
|
|
109
|
+
units: ""
|
|
110
|
+
Nbins:
|
|
111
|
+
description: Number of diameter bins with drops
|
|
112
|
+
long_name: Number of diameter bins with drops
|
|
113
|
+
units: ""
|
|
114
|
+
Nbins_missing:
|
|
115
|
+
description: Number of diameter bins with no drops
|
|
116
|
+
long_name: Number of diameter bins with no drops
|
|
117
|
+
units: ""
|
|
118
|
+
Nbins_missing_fraction:
|
|
119
|
+
description: Fraction of diameter bins with no drops
|
|
120
|
+
long_name: Fraction of diameter bins with no drops
|
|
121
|
+
units: ""
|
|
122
|
+
Nbins_missing_consecutive:
|
|
123
|
+
description: Maximum number of consecutive diameter bins with no drops
|
|
124
|
+
long_name: Maximum number of consecutive diameter bins with no drops
|
|
125
|
+
units: ""
|
|
126
|
+
drop_number_concentration:
|
|
127
|
+
description: Number concentration of drops per diameter class per unit volume
|
|
128
|
+
long_name: Drop number concentration per diameter class
|
|
129
|
+
units: m-3 mm-1
|
|
130
|
+
drop_volume:
|
|
131
|
+
standard_name: ""
|
|
132
|
+
units: mm3
|
|
133
|
+
long_name: Volume of Drops per Diameter Class
|
|
134
|
+
drop_total_volume:
|
|
135
|
+
standard_name: ""
|
|
136
|
+
units: mm3
|
|
137
|
+
long_name: Total Volume of Drops
|
|
138
|
+
drop_relative_volume_ratio:
|
|
139
|
+
standard_name: ""
|
|
140
|
+
units: ""
|
|
141
|
+
long_name: Relative Volume Ratio of Drops
|
|
142
|
+
KEmin:
|
|
143
|
+
standard_name: ""
|
|
144
|
+
units: J
|
|
145
|
+
long_name: Minimum Drop Kinetic Energy
|
|
146
|
+
KEmax:
|
|
147
|
+
standard_name: ""
|
|
148
|
+
units: J
|
|
149
|
+
long_name: Maximum Drop Kinetic Energy
|
|
150
|
+
TKE:
|
|
151
|
+
description: Total Kinetic Energy
|
|
152
|
+
standard_name: ""
|
|
153
|
+
units: J m-2
|
|
154
|
+
long_name: Total Kinetic Energy
|
|
155
|
+
KED:
|
|
156
|
+
description: Kinetic energy per unit rainfall depth
|
|
157
|
+
standard_name: ""
|
|
158
|
+
units: J m-2 mm-1
|
|
159
|
+
long_name: Rainfall Kinetic Energy
|
|
160
|
+
KEF:
|
|
161
|
+
description: Kinetic energy per unit time
|
|
162
|
+
standard_name: ""
|
|
163
|
+
units: J m-2 h-1
|
|
164
|
+
long_name: Kinetic Energy Density Flux
|
|
165
|
+
M1:
|
|
166
|
+
standard_name: ""
|
|
167
|
+
units: m-3 mm
|
|
168
|
+
long_name: First Moment of the Drop Size Distribution
|
|
169
|
+
M2:
|
|
170
|
+
standard_name: ""
|
|
171
|
+
units: m-3 mm2
|
|
172
|
+
long_name: Second Moment of the Drop Size Distribution
|
|
173
|
+
M3:
|
|
174
|
+
standard_name: ""
|
|
175
|
+
units: m-3 mm3
|
|
176
|
+
long_name: Third Moment of the Drop Size Distribution
|
|
177
|
+
M4:
|
|
178
|
+
standard_name: ""
|
|
179
|
+
units: m-3 mm4
|
|
180
|
+
long_name: Fourth Moment of the Drop Size Distribution
|
|
181
|
+
M5:
|
|
182
|
+
standard_name: ""
|
|
183
|
+
units: m-3 mm5
|
|
184
|
+
long_name: Fifth Moment of the Drop Size Distribution
|
|
185
|
+
M6:
|
|
186
|
+
standard_name: ""
|
|
187
|
+
units: m-3 mm6
|
|
188
|
+
long_name: Sixth Moment of the Drop Size Distribution
|
|
189
|
+
Nt:
|
|
190
|
+
standard_name: number_concentration_of_rain_drops_in_air
|
|
191
|
+
units: m-3
|
|
192
|
+
long_name: Total Number Concentration
|
|
193
|
+
R:
|
|
194
|
+
description: Instantaneous rainfall rate derived from N(D)
|
|
195
|
+
standard_name: rainfall_rate
|
|
196
|
+
units: mm h-1
|
|
197
|
+
long_name: Instantaneous Rainfall Rate
|
|
198
|
+
Rm:
|
|
199
|
+
description: Instantaneous rainfall rate derived from the spectrum
|
|
200
|
+
standard_name: rainfall_rate
|
|
201
|
+
units: mm h-1
|
|
202
|
+
long_name: Instantaneous Rainfall Rate
|
|
203
|
+
P:
|
|
204
|
+
standard_name: precipitation_amount
|
|
205
|
+
units: mm
|
|
206
|
+
long_name: Rain Accumulation
|
|
207
|
+
Z:
|
|
208
|
+
standard_name: equivalent_reflectivity_factor
|
|
209
|
+
units: dBZ
|
|
210
|
+
long_name: Equivalent Radar Reflectivity Factor
|
|
211
|
+
W:
|
|
212
|
+
description: Water Mass of the Drop Size Distribution
|
|
213
|
+
standard_name: mass_concentration_of_liquid_water_in_air
|
|
214
|
+
units: g m-3
|
|
215
|
+
long_name: Liquid Water Content
|
|
216
|
+
D10:
|
|
217
|
+
standard_name: ""
|
|
218
|
+
units: mm
|
|
219
|
+
long_name: 10th Percentile Drop Diameter
|
|
220
|
+
D50:
|
|
221
|
+
standard_name: median_volume_diameter
|
|
222
|
+
units: mm
|
|
223
|
+
long_name: Median Volume Drop Diameter
|
|
224
|
+
D90:
|
|
225
|
+
standard_name: ""
|
|
226
|
+
units: mm
|
|
227
|
+
long_name: 90th Percentile Drop Diameter
|
|
228
|
+
Dmode:
|
|
229
|
+
standard_name: ""
|
|
230
|
+
units: mm
|
|
231
|
+
long_name: Mode Diameter of the Drop Size Distribution
|
|
232
|
+
Dm:
|
|
233
|
+
standard_name: Dm
|
|
234
|
+
units: mm
|
|
235
|
+
long_name: Mean Volume Diameter
|
|
236
|
+
sigma_m:
|
|
237
|
+
standard_name: ""
|
|
238
|
+
units: mm
|
|
239
|
+
long_name: Standard Deviation of Mass Spectrum
|
|
240
|
+
Nw:
|
|
241
|
+
standard_name: normalized_intercept_parameter
|
|
242
|
+
units: mm-1 m-3
|
|
243
|
+
long_name: Normalized Intercept Parameter
|
|
244
|
+
DBZH:
|
|
245
|
+
description: Radar reflectivity factor at horizontal polarization
|
|
246
|
+
long_name: Horizontal Reflectivity
|
|
247
|
+
units: dBZ
|
|
248
|
+
DBZV:
|
|
249
|
+
description: Radar reflectivity factor at vertical polarization
|
|
250
|
+
long_name: Vertical Reflectivity
|
|
251
|
+
units: dBZ
|
|
252
|
+
ZDR:
|
|
253
|
+
description: Differential reflectivity
|
|
254
|
+
long_name: Differential Reflectivity
|
|
255
|
+
units: dB
|
|
256
|
+
RHOHV:
|
|
257
|
+
description:
|
|
258
|
+
Correlation coefficient between horizontally and vertically polarized
|
|
259
|
+
reflectivity
|
|
260
|
+
long_name: Copolarized Correlation Coefficient
|
|
261
|
+
units: ""
|
|
262
|
+
LDR:
|
|
263
|
+
description: Linear depolarization ratio
|
|
264
|
+
long_name: Linear Depolarization Ratio
|
|
265
|
+
units: dB
|
|
266
|
+
KDP:
|
|
267
|
+
description: Specific differential phase
|
|
268
|
+
long_name: Specific Differential Phase
|
|
269
|
+
units: deg/km
|
|
270
|
+
DELTAHV:
|
|
271
|
+
description: Backscatter differential phase shift
|
|
272
|
+
long_name: Backscatter Differential Phase Shift
|
|
273
|
+
comment: Also referred as co-polar phase shift difference
|
|
274
|
+
units: deg
|
|
275
|
+
AH:
|
|
276
|
+
description: Specific attenuation at horizontal polarization
|
|
277
|
+
long_name: Specific Attenuation
|
|
278
|
+
units: dB/km
|
|
279
|
+
AV:
|
|
280
|
+
description: Specific attenuation at vertical polarization
|
|
281
|
+
long_name: Specific Attenuation
|
|
282
|
+
units: dB/km
|
|
283
|
+
ADP:
|
|
284
|
+
description: Specific differential attenuation
|
|
285
|
+
long_name: Specific Differential Attenuation
|
|
286
|
+
units: dB/km
|
|
287
|
+
R2:
|
|
288
|
+
name: Squared Pearson correlation coefficient
|
|
289
|
+
standard_name: correlation_coefficient_squared
|
|
290
|
+
long_name: Squared Pearson correlation coefficient
|
|
291
|
+
description: Squared Pearson correlation coefficient squared between observed and modelled N(D) values.
|
|
292
|
+
unit: ""
|
|
293
|
+
valid_range: [0, 1]
|
|
294
|
+
MAE:
|
|
295
|
+
name: Mean Absolute Error
|
|
296
|
+
standard_name: mean_absolute_error
|
|
297
|
+
long_name: Mean Absolute Error
|
|
298
|
+
description: The average of the absolute differences between observed and modelled N(D) values.
|
|
299
|
+
unit: m-3 mm-1
|
|
300
|
+
valid_range: [0, inf]
|
|
301
|
+
MaxAE:
|
|
302
|
+
name: Maximum Absolute Error
|
|
303
|
+
standard_name: maximum_absolute_error
|
|
304
|
+
long_name: Maximum Absolute Error
|
|
305
|
+
description: The largest absolute difference between observed and modelled N(D).
|
|
306
|
+
unit: m-3 mm-1
|
|
307
|
+
valid_range: [0, inf]
|
|
308
|
+
RelMaxAE:
|
|
309
|
+
long_name: Relative Maximum Absolute Error
|
|
310
|
+
standard_name: relative_maximum_absolute_error
|
|
311
|
+
description: The largest absolute error divided by the maximum observed value.
|
|
312
|
+
units: ""
|
|
313
|
+
valid_range: [0, inf]
|
|
314
|
+
PeakDiff:
|
|
315
|
+
long_name: Deviation at Distribution Mode
|
|
316
|
+
standard_name: peak_difference
|
|
317
|
+
description: The difference between the observed and modelled N(D) values at the peak of the distribution.
|
|
318
|
+
units: m-3 mm-1
|
|
319
|
+
RelPeakDiff:
|
|
320
|
+
long_name: Relative Difference at Distribution Mode
|
|
321
|
+
standard_name: relative_peak_difference
|
|
322
|
+
description: The relative N(D) difference at the peak, calculated as the deviation divided by the observed value at the peak.
|
|
323
|
+
units: ""
|
|
324
|
+
DmodeDiff:
|
|
325
|
+
long_name: Difference of Mode Diameters
|
|
326
|
+
standard_name: diameter_mode_difference
|
|
327
|
+
description: The difference between mode diameters of observed and modelled N(D).
|
|
328
|
+
units: mm
|
|
329
|
+
NtDiff:
|
|
330
|
+
long_name: Total Number Concentration Difference
|
|
331
|
+
standard_name: total_number_concentration_difference
|
|
332
|
+
description: The difference in the total number concentration between observed and modelled N(D).
|
|
333
|
+
units: m-3
|
|
334
|
+
KLDiv:
|
|
335
|
+
long_name: Kullback-Leibler Divergence
|
|
336
|
+
standard_name: kullback_leibler_divergence
|
|
337
|
+
description: A distance measure of how the modelled distribution diverges from the observed N(D) one.
|
|
338
|
+
units: ""
|
|
339
|
+
valid_range: [0, inf]
|