cloudnetpy 1.80.5__tar.gz → 1.80.7__tar.gz
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.
- {cloudnetpy-1.80.5/cloudnetpy.egg-info → cloudnetpy-1.80.7}/PKG-INFO +1 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/categorize.py +60 -6
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/model.py +3 -5
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/cloudnetarray.py +1 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/basta.py +3 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/bowtie.py +4 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/ceilo.py +6 -79
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/copernicus.py +11 -3
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/disdrometer/common.py +70 -31
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/fd12p.py +7 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/galileo.py +9 -3
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/mira.py +8 -7
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/mrr.py +14 -2
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/nc_radar.py +2 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/pollyxt.py +5 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/radiometrics.py +10 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/rpg.py +73 -54
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/metadata.py +48 -22
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/metadata.py +46 -19
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/output.py +9 -28
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/classification.py +6 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/der.py +6 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/drizzle.py +27 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/ier.py +3 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/iwc.py +5 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/lwc.py +3 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/utils.py +6 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/version.py +1 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7/cloudnetpy.egg-info}/PKG-INFO +1 -1
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/LICENSE +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/MANIFEST.in +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/README.md +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/atmos_utils.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/attenuation.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/classify.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/containers.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/disdrometer.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/droplet.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/falling.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/freezing.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/insects.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/itu.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/lidar.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/melting.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/mwr.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/categorize/radar.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/cli.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/concat_lib.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/constants.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/datasource.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/exceptions.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/ceilometer.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/cl61d.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/hatpro.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/instruments.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/lufft.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/nc_lidar.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/rain_e_h3.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/rpg_reader.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/toa5.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/vaisala.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/instruments/weather_station.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/file_handler.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/products/tools.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/model_evaluation/utils.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/plotting/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/plotting/plot_meta.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/plotting/plotting.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/__init__.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/drizzle_error.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/drizzle_tools.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/epsilon.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/mie_lu_tables.nc +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/mwr_tools.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/products/product_tools.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy/py.typed +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy.egg-info/SOURCES.txt +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy.egg-info/dependency_links.txt +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy.egg-info/entry_points.txt +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy.egg-info/requires.txt +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/cloudnetpy.egg-info/top_level.txt +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/docs/source/conf.py +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/pyproject.toml +0 -0
- {cloudnetpy-1.80.5 → cloudnetpy-1.80.7}/setup.cfg +0 -0
@@ -17,7 +17,8 @@ from cloudnetpy.categorize.mwr import Mwr
|
|
17
17
|
from cloudnetpy.categorize.radar import Radar
|
18
18
|
from cloudnetpy.datasource import DataSource
|
19
19
|
from cloudnetpy.exceptions import DisdrometerDataError, ValidTimeStampError
|
20
|
-
from cloudnetpy.
|
20
|
+
from cloudnetpy.instruments.rpg import RPG_ATTRIBUTES
|
21
|
+
from cloudnetpy.metadata import COMMON_ATTRIBUTES, MetaData
|
21
22
|
from cloudnetpy.products.product_tools import CategoryBits, QualityBits
|
22
23
|
|
23
24
|
|
@@ -385,31 +386,45 @@ DEFINITIONS = {
|
|
385
386
|
}
|
386
387
|
|
387
388
|
CATEGORIZE_ATTRIBUTES = {
|
389
|
+
"height": COMMON_ATTRIBUTES["height"]._replace(dimensions=("height",)),
|
388
390
|
# Radar variables
|
389
391
|
"Z": MetaData(
|
390
392
|
long_name="Radar reflectivity factor",
|
391
393
|
units="dBZ",
|
392
394
|
comment=COMMENTS["Z"],
|
393
395
|
ancillary_variables="Z_error Z_bias Z_sensitivity",
|
396
|
+
dimensions=("time", "height"),
|
394
397
|
),
|
395
398
|
"Z_error": MetaData(
|
396
399
|
long_name="Error in radar reflectivity factor",
|
397
400
|
units="dB",
|
398
401
|
comment=COMMENTS["Z_error"],
|
402
|
+
dimensions=("time", "height"),
|
399
403
|
),
|
400
404
|
"Z_bias": MetaData(
|
401
405
|
long_name="Bias in radar reflectivity factor",
|
402
406
|
units="dB",
|
403
407
|
comment=COMMENTS["bias"],
|
408
|
+
dimensions=None,
|
404
409
|
),
|
405
410
|
"Z_sensitivity": MetaData(
|
406
411
|
long_name="Minimum detectable radar reflectivity",
|
407
412
|
units="dBZ",
|
408
413
|
comment=COMMENTS["Z_sensitivity"],
|
414
|
+
dimensions=("time", "height"),
|
409
415
|
),
|
416
|
+
"v": COMMON_ATTRIBUTES["v"]._replace(dimensions=("time", "height")),
|
417
|
+
"width": COMMON_ATTRIBUTES["width"]._replace(dimensions=("time", "height")),
|
418
|
+
"ldr": COMMON_ATTRIBUTES["ldr"]._replace(dimensions=("time", "height")),
|
419
|
+
"sldr": COMMON_ATTRIBUTES["sldr"]._replace(dimensions=("time", "height")),
|
410
420
|
"v_sigma": MetaData(
|
411
421
|
long_name="Standard deviation of mean Doppler velocity",
|
412
422
|
units="m s-1",
|
423
|
+
dimensions=("time", "height"),
|
424
|
+
),
|
425
|
+
"zdr": RPG_ATTRIBUTES["zdr"]._replace(dimensions=("time", "height")),
|
426
|
+
"nyquist_velocity": COMMON_ATTRIBUTES["nyquist_velocity"]._replace(
|
427
|
+
dimensions=("time", "height")
|
413
428
|
),
|
414
429
|
# Lidar variables
|
415
430
|
"beta": MetaData(
|
@@ -417,89 +432,128 @@ CATEGORIZE_ATTRIBUTES = {
|
|
417
432
|
units="sr-1 m-1",
|
418
433
|
comment="SNR-screened attenuated backscatter coefficient.",
|
419
434
|
ancillary_variables="beta_error beta_bias",
|
435
|
+
dimensions=("time", "height"),
|
420
436
|
),
|
421
437
|
"beta_error": MetaData(
|
422
438
|
long_name="Error in attenuated backscatter coefficient",
|
423
439
|
units="dB",
|
440
|
+
dimensions=None,
|
424
441
|
),
|
425
442
|
"beta_bias": MetaData(
|
426
443
|
long_name="Bias in attenuated backscatter coefficient",
|
427
444
|
units="dB",
|
445
|
+
dimensions=None,
|
446
|
+
),
|
447
|
+
"lidar_wavelength": MetaData(
|
448
|
+
long_name="Laser wavelength", units="nm", dimensions=None
|
428
449
|
),
|
429
|
-
"lidar_wavelength": MetaData(long_name="Laser wavelength", units="nm"),
|
430
450
|
# MWR variables
|
431
451
|
"lwp_error": MetaData(
|
432
452
|
long_name="Error in liquid water path",
|
433
453
|
units="kg m-2",
|
454
|
+
dimensions=("time",),
|
455
|
+
),
|
456
|
+
"lwp": COMMON_ATTRIBUTES["lwp"]._replace(
|
457
|
+
ancillary_variables="lwp_error", dimensions=("time",)
|
434
458
|
),
|
435
|
-
"lwp": MetaData(ancillary_variables="lwp_error"),
|
436
459
|
# Model variables
|
437
|
-
"Tw": MetaData(
|
438
|
-
|
460
|
+
"Tw": MetaData(
|
461
|
+
long_name="Wet-bulb temperature",
|
462
|
+
units="K",
|
463
|
+
comment=COMMENTS["Tw"],
|
464
|
+
dimensions=("time", "height"),
|
465
|
+
),
|
466
|
+
"model_time": MetaData(
|
467
|
+
long_name="Model time UTC",
|
468
|
+
calendar="standard",
|
469
|
+
dimensions=("model_time",),
|
470
|
+
),
|
439
471
|
"model_height": MetaData(
|
440
472
|
long_name="Height of model variables above mean sea level",
|
441
473
|
units="m",
|
442
474
|
axis="Z",
|
475
|
+
dimensions=("model_height",),
|
476
|
+
),
|
477
|
+
"temperature": MetaData(
|
478
|
+
long_name="Temperature", units="K", dimensions=("model_time", "model_height")
|
479
|
+
),
|
480
|
+
"pressure": MetaData(
|
481
|
+
long_name="Pressure", units="Pa", dimensions=("model_time", "model_height")
|
443
482
|
),
|
444
483
|
"vwind": MetaData(
|
445
484
|
long_name="Meridional wind",
|
446
485
|
units="m s-1",
|
486
|
+
dimensions=("model_time", "model_height"),
|
447
487
|
),
|
448
488
|
"uwind": MetaData(
|
449
489
|
long_name="Zonal wind",
|
450
490
|
units="m s-1",
|
491
|
+
dimensions=("model_time", "model_height"),
|
492
|
+
),
|
493
|
+
"q": MetaData(
|
494
|
+
long_name="Specific humidity",
|
495
|
+
units="1",
|
496
|
+
dimensions=("model_time", "model_height"),
|
451
497
|
),
|
452
|
-
"q": MetaData(long_name="Specific humidity", units="1"),
|
453
498
|
# MISC
|
454
499
|
"category_bits": MetaData(
|
455
500
|
long_name="Target categorization bits",
|
456
501
|
comment=COMMENTS["category_bits"],
|
457
502
|
definition=DEFINITIONS["category_bits"],
|
458
503
|
units="1",
|
504
|
+
dimensions=("time", "height"),
|
459
505
|
),
|
460
506
|
"quality_bits": MetaData(
|
461
507
|
long_name="Data quality bits",
|
462
508
|
comment=COMMENTS["quality_bits"],
|
463
509
|
definition=DEFINITIONS["quality_bits"],
|
464
510
|
units="1",
|
511
|
+
dimensions=("time", "height"),
|
465
512
|
),
|
466
513
|
"radar_liquid_atten": MetaData(
|
467
514
|
long_name="Two-way radar attenuation due to liquid water",
|
468
515
|
units="dB",
|
469
516
|
comment=COMMENTS["radar_liquid_atten"],
|
470
517
|
references="ITU-R P.840-9",
|
518
|
+
dimensions=("time", "height"),
|
471
519
|
),
|
472
520
|
"radar_rain_atten": MetaData(
|
473
521
|
long_name="Two-way radar attenuation due to rain",
|
474
522
|
units="dB",
|
475
523
|
references="Crane, R. (1980)",
|
476
524
|
comment=COMMENTS["radar_rain_atten"],
|
525
|
+
dimensions=("time", "height"),
|
477
526
|
),
|
478
527
|
"radar_melting_atten": MetaData(
|
479
528
|
long_name="Two-way radar attenuation due to melting ice",
|
480
529
|
units="dB",
|
481
530
|
references="Li, H., & Moisseev, D. (2019)",
|
482
531
|
comment=COMMENTS["radar_melting_atten"],
|
532
|
+
dimensions=("time", "height"),
|
483
533
|
),
|
484
534
|
"radar_gas_atten": MetaData(
|
485
535
|
long_name="Two-way radar attenuation due to atmospheric gases",
|
486
536
|
units="dB",
|
487
537
|
comment=COMMENTS["radar_gas_atten"],
|
488
538
|
references="ITU-R P.676-13",
|
539
|
+
dimensions=("time", "height"),
|
489
540
|
),
|
490
541
|
"insect_prob": MetaData(
|
491
542
|
long_name="Insect probability",
|
492
543
|
units="1",
|
493
544
|
comment=COMMENTS["insect_prob"],
|
545
|
+
dimensions=("time", "height"),
|
494
546
|
),
|
495
547
|
"liquid_prob": MetaData(
|
496
548
|
long_name="Liquid probability",
|
497
549
|
units="1",
|
498
550
|
comment=COMMENTS["liquid_prob"],
|
551
|
+
dimensions=("time", "height"),
|
499
552
|
),
|
500
553
|
"rain_detected": MetaData(
|
501
554
|
long_name="Rain detected",
|
502
555
|
units="1",
|
503
556
|
comment="1 = rain detected, 0 = no rain detected",
|
557
|
+
dimensions=("time",),
|
504
558
|
),
|
505
559
|
}
|
@@ -173,8 +173,6 @@ def _find_model_type(file_name: str) -> str:
|
|
173
173
|
|
174
174
|
|
175
175
|
def _find_number_of_valid_profiles(array: np.ndarray) -> int:
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
n_good += 1
|
180
|
-
return n_good
|
176
|
+
mask = ma.getmaskarray(array)
|
177
|
+
all_masked_profiles = np.all(mask, axis=1)
|
178
|
+
return np.count_nonzero(~all_masked_profiles)
|
@@ -97,7 +97,7 @@ class CloudnetArray:
|
|
97
97
|
"""Overwrites existing instance attributes."""
|
98
98
|
for key in attributes._fields: # To iterate namedtuple fields.
|
99
99
|
data = getattr(attributes, key)
|
100
|
-
if data:
|
100
|
+
if key == "dimensions" or data:
|
101
101
|
setattr(self, key, data)
|
102
102
|
|
103
103
|
def filter_isolated_pixels(self) -> None:
|
@@ -107,15 +107,18 @@ ATTRIBUTES = {
|
|
107
107
|
long_name="Radar pitch angle",
|
108
108
|
units="degree",
|
109
109
|
standard_name="platform_roll",
|
110
|
+
dimensions=("time",),
|
110
111
|
),
|
111
112
|
"radar_yaw": MetaData(
|
112
113
|
long_name="Radar yaw angle",
|
113
114
|
units="degree",
|
114
115
|
standard_name="platform_yaw",
|
116
|
+
dimensions=("time",),
|
115
117
|
),
|
116
118
|
"radar_roll": MetaData(
|
117
119
|
long_name="Radar roll angle",
|
118
120
|
units="degree",
|
119
121
|
standard_name="platform_roll",
|
122
|
+
dimensions=("time",),
|
120
123
|
),
|
121
124
|
}
|
@@ -8,6 +8,7 @@ from cloudnetpy.constants import G_TO_KG, MM_H_TO_M_S
|
|
8
8
|
from cloudnetpy.exceptions import ValidTimeStampError
|
9
9
|
from cloudnetpy.instruments.instruments import FMCW94
|
10
10
|
from cloudnetpy.instruments.nc_radar import NcRadar
|
11
|
+
from cloudnetpy.instruments.rpg import RPG_ATTRIBUTES
|
11
12
|
from cloudnetpy.metadata import MetaData
|
12
13
|
from cloudnetpy.utils import bit_field_definition
|
13
14
|
|
@@ -97,7 +98,7 @@ class Bowtie(NcRadar):
|
|
97
98
|
raise ValidTimeStampError
|
98
99
|
|
99
100
|
|
100
|
-
ATTRIBUTES
|
101
|
+
ATTRIBUTES = RPG_ATTRIBUTES | {
|
101
102
|
"v": MetaData(
|
102
103
|
long_name="Doppler velocity",
|
103
104
|
units="m s-1",
|
@@ -107,6 +108,7 @@ ATTRIBUTES: dict = {
|
|
107
108
|
"motion of the ship. A rolling average over 3 time steps has been\n"
|
108
109
|
"applied to it."
|
109
110
|
),
|
111
|
+
dimensions=("time", "range"),
|
110
112
|
),
|
111
113
|
"correction_bits": MetaData(
|
112
114
|
long_name="Correction bits",
|
@@ -116,5 +118,6 @@ ATTRIBUTES: dict = {
|
|
116
118
|
"This parameter is a bit field that indicates which corrections have\n"
|
117
119
|
"been applied to radar measurements."
|
118
120
|
),
|
121
|
+
dimensions=("time", "range"),
|
119
122
|
),
|
120
123
|
}
|
@@ -8,11 +8,11 @@ import numpy as np
|
|
8
8
|
from ceilopyter import read_ct25k
|
9
9
|
from numpy import ma
|
10
10
|
|
11
|
-
from cloudnetpy import output
|
11
|
+
from cloudnetpy import output
|
12
12
|
from cloudnetpy.instruments.cl61d import Cl61d
|
13
13
|
from cloudnetpy.instruments.lufft import LufftCeilo
|
14
14
|
from cloudnetpy.instruments.vaisala import ClCeilo, Cs135, Ct25k
|
15
|
-
from cloudnetpy.metadata import MetaData
|
15
|
+
from cloudnetpy.metadata import COMMON_ATTRIBUTES, MetaData
|
16
16
|
|
17
17
|
|
18
18
|
def ceilo2nc(
|
@@ -205,92 +205,19 @@ ATTRIBUTES = {
|
|
205
205
|
long_name="Lidar volume linear depolarisation ratio",
|
206
206
|
units="1",
|
207
207
|
comment="SNR-screened lidar volume linear depolarisation ratio at 910.55 nm.",
|
208
|
+
dimensions=("time", "range"),
|
208
209
|
),
|
209
210
|
"depolarisation_raw": MetaData(
|
210
211
|
long_name="Lidar volume linear depolarisation ratio",
|
211
212
|
units="1",
|
212
213
|
comment="SNR-screened lidar volume linear depolarisation ratio at 910.55 nm.",
|
213
|
-
|
214
|
-
"scale": MetaData(long_name="Scale", units="%", comment="100 (%) is normal."),
|
215
|
-
"software_level": MetaData(
|
216
|
-
long_name="Software level ID",
|
217
|
-
units="1",
|
218
|
-
),
|
219
|
-
"laser_temperature": MetaData(
|
220
|
-
long_name="Laser temperature",
|
221
|
-
units="C",
|
222
|
-
),
|
223
|
-
"window_transmission": MetaData(
|
224
|
-
long_name="Window transmission estimate",
|
225
|
-
units="%",
|
226
|
-
),
|
227
|
-
"laser_energy": MetaData(
|
228
|
-
long_name="Laser pulse energy",
|
229
|
-
units="%",
|
230
|
-
),
|
231
|
-
"background_light": MetaData(
|
232
|
-
long_name="Background light",
|
233
|
-
units="mV",
|
234
|
-
comment="Measured at internal ADC input.",
|
235
|
-
),
|
236
|
-
"backscatter_sum": MetaData(
|
237
|
-
long_name="Sum of detected and normalized backscatter",
|
238
|
-
units="sr-1",
|
239
|
-
comment="Multiplied by scaling factor times 1e4.",
|
240
|
-
),
|
241
|
-
"range_resolution": MetaData(
|
242
|
-
long_name="Range resolution",
|
243
|
-
units="m",
|
244
|
-
),
|
245
|
-
"number_of_gates": MetaData(
|
246
|
-
long_name="Number of range gates in profile",
|
247
|
-
units="1",
|
248
|
-
),
|
249
|
-
"unit_id": MetaData(
|
250
|
-
long_name="Ceilometer unit number",
|
251
|
-
units="1",
|
252
|
-
),
|
253
|
-
"message_number": MetaData(
|
254
|
-
long_name="Message number",
|
255
|
-
units="1",
|
256
|
-
),
|
257
|
-
"message_subclass": MetaData(
|
258
|
-
long_name="Message subclass number",
|
259
|
-
units="1",
|
260
|
-
),
|
261
|
-
"detection_status": MetaData(
|
262
|
-
long_name="Detection status",
|
263
|
-
units="1",
|
264
|
-
comment="From the internal software of the instrument.",
|
265
|
-
),
|
266
|
-
"warning": MetaData(
|
267
|
-
long_name="Warning and Alarm flag",
|
268
|
-
units="1",
|
269
|
-
definition=utils.status_field_definition(
|
270
|
-
{
|
271
|
-
"0": "Self-check OK",
|
272
|
-
"W": "At least one warning on",
|
273
|
-
"A": "At least one error active.",
|
274
|
-
}
|
275
|
-
),
|
276
|
-
),
|
277
|
-
"warning_flags": MetaData(
|
278
|
-
long_name="Warning flags",
|
279
|
-
units="1",
|
280
|
-
),
|
281
|
-
"receiver_sensitivity": MetaData(
|
282
|
-
long_name="Receiver sensitivity",
|
283
|
-
units="%",
|
284
|
-
comment="Expressed as % of nominal factory setting.",
|
285
|
-
),
|
286
|
-
"window_contamination": MetaData(
|
287
|
-
long_name="Window contamination",
|
288
|
-
units="mV",
|
289
|
-
comment="Measured at internal ADC input.",
|
214
|
+
dimensions=("time", "range"),
|
290
215
|
),
|
291
216
|
"calibration_factor": MetaData(
|
292
217
|
long_name="Attenuated backscatter calibration factor",
|
293
218
|
units="1",
|
294
219
|
comment="Calibration factor applied.",
|
220
|
+
dimensions=None,
|
295
221
|
),
|
222
|
+
"zenith_angle": COMMON_ATTRIBUTES["zenith_angle"]._replace(dimensions=None),
|
296
223
|
}
|
@@ -164,13 +164,21 @@ ATTRIBUTES = {
|
|
164
164
|
long_name="Radar reflectivity calibration offset",
|
165
165
|
units="dBZ",
|
166
166
|
comment="Calibration offset applied.",
|
167
|
+
dimensions=None,
|
167
168
|
),
|
168
169
|
"range_offset": MetaData(
|
169
170
|
long_name="Radar range offset",
|
170
171
|
units="m",
|
171
172
|
comment="Range offset applied.",
|
173
|
+
dimensions=None,
|
174
|
+
),
|
175
|
+
"antenna_diameter": MetaData(
|
176
|
+
long_name="Antenna diameter", units="m", dimensions=("time",)
|
177
|
+
),
|
178
|
+
"beamwidthV": MetaData(
|
179
|
+
long_name="Vertical angular beamwidth", units="degree", dimensions=("time",)
|
180
|
+
),
|
181
|
+
"beamwidthH": MetaData(
|
182
|
+
long_name="Horizontal angular beamwidth", units="degree", dimensions=("time",)
|
172
183
|
),
|
173
|
-
"antenna_diameter": MetaData(long_name="Antenna diameter", units="m"),
|
174
|
-
"beamwidthV": MetaData(long_name="Vertical angular beamwidth", units="degree"),
|
175
|
-
"beamwidthH": MetaData(long_name="Horizontal angular beamwidth", units="degree"),
|
176
184
|
}
|