cloudnetpy 1.97.2__tar.gz → 1.97.4__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.97.2/cloudnetpy.egg-info → cloudnetpy-1.97.4}/PKG-INFO +3 -3
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/README.md +1 -1
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/ceilo.py +20 -3
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/instruments.py +8 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/lufft.py +1 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/mira.py +15 -1
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/vaisala.py +25 -2
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/version.py +1 -1
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4/cloudnetpy.egg-info}/PKG-INFO +3 -3
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy.egg-info/requires.txt +1 -1
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/pyproject.toml +1 -1
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/LICENSE +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/MANIFEST.in +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/arm.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/atmos_utils.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuation.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/categorize.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/classify.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/containers.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/disdrometer.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/droplet.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/falling.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/freezing.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/insects.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/lidar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/melting.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/model.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/mwr.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/radar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/cli.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/cloudnetarray.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/concat_lib.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/constants.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/datasource.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/disdronator/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/disdronator/lpm.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/disdronator/parsivel.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/disdronator/process.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/disdronator/rd80.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/disdronator/utils.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/exceptions.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/arm_ceilo.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/arm_ld.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/arm_utils.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/basta.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/bowtie.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/ceilometer.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/cl61d.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/copernicus.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/da10.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/dealias.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/disdrometer.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/fd12p.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/galileo.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/hatpro.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/kazr.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/mmcr.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/mrr.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/mwr3c.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/mwrlos.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/nc_lidar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/nc_radar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/pollyxt.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/radiometrics.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/rain_e_h3.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/rpg.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/rpg_reader.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/toa5.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/weather_radar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/instruments/weather_station.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/metadata.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/file_handler.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/metadata.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/tools.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/utils.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/output.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/plotting/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/plotting/plot_meta.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/plotting/plotting.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/__init__.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/classification.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/cod.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/der.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/drizzle.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/drizzle_error.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/drizzle_tools.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/epsilon_lidar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/epsilon_radar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/ier.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/iwc.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/iwc_weather_radar.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/lwc.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/mie_lu_tables.nc +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/mwr_tools.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/products/product_tools.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/py.typed +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/utils.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy.egg-info/SOURCES.txt +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy.egg-info/dependency_links.txt +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy.egg-info/entry_points.txt +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy.egg-info/top_level.txt +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/docs/source/conf.py +0 -0
- {cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cloudnetpy
|
|
3
|
-
Version: 1.97.
|
|
3
|
+
Version: 1.97.4
|
|
4
4
|
Summary: Python package for Cloudnet processing
|
|
5
5
|
Author: Simo Tukiainen
|
|
6
6
|
License: MIT License
|
|
@@ -39,7 +39,7 @@ Requires-Python: >=3.11
|
|
|
39
39
|
Description-Content-Type: text/markdown
|
|
40
40
|
License-File: LICENSE
|
|
41
41
|
Requires-Dist: atmoslib>=2.4.2
|
|
42
|
-
Requires-Dist: ceilopyter>=0.2.
|
|
42
|
+
Requires-Dist: ceilopyter>=0.2.3
|
|
43
43
|
Requires-Dist: cloudnet-api-client
|
|
44
44
|
Requires-Dist: doppy>=0.5.0
|
|
45
45
|
Requires-Dist: matplotlib
|
|
@@ -66,7 +66,7 @@ Dynamic: license-file
|
|
|
66
66
|
|
|
67
67
|
[](https://github.com/actris-cloudnet/cloudnetpy/actions/workflows/test.yml)
|
|
68
68
|
[](https://pypi.org/project/cloudnetpy/)
|
|
69
|
-
[](https://doi.org/10.5281/zenodo.3666030)
|
|
70
70
|
[](https://joss.theoj.org/papers/959971f196f617dddc0e7d8333ff22b7)
|
|
71
71
|
|
|
72
72
|
CloudnetPy is Python software designed for producing vertical profiles of cloud properties from ground-based
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/actris-cloudnet/cloudnetpy/actions/workflows/test.yml)
|
|
4
4
|
[](https://pypi.org/project/cloudnetpy/)
|
|
5
|
-
[](https://doi.org/10.5281/zenodo.3666030)
|
|
6
6
|
[](https://joss.theoj.org/papers/959971f196f617dddc0e7d8333ff22b7)
|
|
7
7
|
|
|
8
8
|
CloudnetPy is Python software designed for producing vertical profiles of cloud properties from ground-based
|
|
@@ -9,18 +9,18 @@ from uuid import UUID
|
|
|
9
9
|
|
|
10
10
|
import netCDF4
|
|
11
11
|
import numpy as np
|
|
12
|
-
from ceilopyter import read_ct25k
|
|
12
|
+
from ceilopyter import read_ct25k, read_ld40
|
|
13
13
|
from numpy import ma
|
|
14
14
|
|
|
15
15
|
from cloudnetpy import output
|
|
16
16
|
from cloudnetpy.instruments.cl61d import Cl61d
|
|
17
17
|
from cloudnetpy.instruments.da10 import Da10
|
|
18
18
|
from cloudnetpy.instruments.lufft import LufftCeilo
|
|
19
|
-
from cloudnetpy.instruments.vaisala import ClCeilo, Cs135, Ct25k
|
|
19
|
+
from cloudnetpy.instruments.vaisala import ClCeilo, Cs135, Ct25k, Ld40
|
|
20
20
|
from cloudnetpy.metadata import COMMON_ATTRIBUTES, MetaData
|
|
21
21
|
from cloudnetpy.utils import get_uuid
|
|
22
22
|
|
|
23
|
-
CeiloObject = ClCeilo | Ct25k | LufftCeilo | Cl61d | Cs135 | Da10
|
|
23
|
+
CeiloObject = ClCeilo | Ct25k | LufftCeilo | Cl61d | Cs135 | Da10 | Ld40
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def ceilo2nc(
|
|
@@ -90,6 +90,20 @@ def ceilo2nc(
|
|
|
90
90
|
c_obj = read_ct25k(full_path, calibration_factor, range_corrected)
|
|
91
91
|
ceilo_obj.data["beta"] = c_obj.beta
|
|
92
92
|
ceilo_obj.data["beta_raw"] = c_obj.beta_raw
|
|
93
|
+
ceilo_obj.data["beta_smooth"] = c_obj.beta_smooth
|
|
94
|
+
ceilo_obj.data["time"] = c_obj.time
|
|
95
|
+
ceilo_obj.data["range"] = c_obj.range
|
|
96
|
+
if c_obj.zenith_angle is not None:
|
|
97
|
+
ceilo_obj.data["zenith_angle"] = np.median(c_obj.zenith_angle)
|
|
98
|
+
ceilo_obj.data["calibration_factor"] = c_obj.calibration_factor
|
|
99
|
+
ceilo_obj.sort_time()
|
|
100
|
+
ceilo_obj.screen_date()
|
|
101
|
+
ceilo_obj.convert_to_fraction_hour()
|
|
102
|
+
elif isinstance(ceilo_obj, Ld40):
|
|
103
|
+
c_obj = read_ld40(full_path, calibration_factor)
|
|
104
|
+
ceilo_obj.data["beta"] = c_obj.beta
|
|
105
|
+
ceilo_obj.data["beta_raw"] = c_obj.beta_raw
|
|
106
|
+
ceilo_obj.data["beta_smooth"] = c_obj.beta_smooth
|
|
93
107
|
ceilo_obj.data["time"] = c_obj.time
|
|
94
108
|
ceilo_obj.data["range"] = c_obj.range
|
|
95
109
|
if c_obj.zenith_angle is not None:
|
|
@@ -174,6 +188,7 @@ def _initialize_ceilo(
|
|
|
174
188
|
"chm15k",
|
|
175
189
|
"cs135",
|
|
176
190
|
"da10",
|
|
191
|
+
"ld40",
|
|
177
192
|
):
|
|
178
193
|
msg = f"Invalid ceilometer model: {site_meta['model']}"
|
|
179
194
|
raise ValueError(msg)
|
|
@@ -193,6 +208,8 @@ def _initialize_ceilo(
|
|
|
193
208
|
return Da10(full_path, site_meta, date)
|
|
194
209
|
if model == "cs135":
|
|
195
210
|
return Cs135(full_path, site_meta, date)
|
|
211
|
+
if model == "ld40":
|
|
212
|
+
return Ld40(full_path, site_meta, date)
|
|
196
213
|
return LufftCeilo(full_path, site_meta, date)
|
|
197
214
|
|
|
198
215
|
|
|
@@ -51,6 +51,14 @@ CT25K = Instrument(
|
|
|
51
51
|
wavelength=905.0,
|
|
52
52
|
)
|
|
53
53
|
|
|
54
|
+
LD40 = Instrument(
|
|
55
|
+
manufacturer="Vaisala",
|
|
56
|
+
domain="lidar",
|
|
57
|
+
category="ceilometer",
|
|
58
|
+
model="LD40",
|
|
59
|
+
wavelength=855.0,
|
|
60
|
+
)
|
|
61
|
+
|
|
54
62
|
CL61D = Instrument(
|
|
55
63
|
manufacturer="Vaisala",
|
|
56
64
|
domain="lidar",
|
|
@@ -34,6 +34,7 @@ class LufftCeilo(Ceilometer):
|
|
|
34
34
|
ceilo = read_chm15k(self.file_name, calibration_factor)
|
|
35
35
|
self.data["beta"] = ceilo.beta
|
|
36
36
|
self.data["beta_raw"] = ceilo.beta_raw
|
|
37
|
+
self.data["beta_smooth"] = ceilo.beta_smooth
|
|
37
38
|
self.data["time"] = ceilo.time
|
|
38
39
|
self.data["range"] = ceilo.range
|
|
39
40
|
if ceilo.zenith_angle is not None:
|
|
@@ -43,7 +43,10 @@ def mira2nc(
|
|
|
43
43
|
site_meta: Dictionary containing information about the site. Required
|
|
44
44
|
key-value pair is `name`. Optional `model` takes `mira-35` (default),
|
|
45
45
|
`mira-35s`, `mira-35c`, or `mira-10`. Optional `radar_constant` (dB)
|
|
46
|
-
is used to calculate Zh from SNRg in old files without Zg.
|
|
46
|
+
is used to calculate Zh from SNRg in old files without Zg. Optional
|
|
47
|
+
`zenith_angle` (deg) overrides the angle reported in the raw file.
|
|
48
|
+
Optional `zenith_offset` and `azimuth_offset` (deg) are added to the
|
|
49
|
+
angles reported in the raw file.
|
|
47
50
|
uuid: Set specific UUID for the file.
|
|
48
51
|
date: Expected date as YYYY-MM-DD of all profiles in the file.
|
|
49
52
|
|
|
@@ -89,6 +92,10 @@ def mira2nc(
|
|
|
89
92
|
# Empirical values, should be checked
|
|
90
93
|
snr_limit = -30 if mira.instrument == MIRA10 else -17
|
|
91
94
|
|
|
95
|
+
zenith = site_meta.get("zenith_angle")
|
|
96
|
+
if zenith is not None:
|
|
97
|
+
mira.override_elevation_angle(zenith=zenith)
|
|
98
|
+
|
|
92
99
|
# Old MIRA files don't have angle variables.
|
|
93
100
|
if "elevation" not in mira.data:
|
|
94
101
|
mira.append_data(ma.masked_all_like(mira.time.data), "elevation")
|
|
@@ -156,6 +163,13 @@ class Mira(NcRadar):
|
|
|
156
163
|
output[key] = value.strip()
|
|
157
164
|
return output
|
|
158
165
|
|
|
166
|
+
def override_elevation_angle(self, zenith: float) -> None:
|
|
167
|
+
if not isinstance(zenith, int | float) or zenith < -90 or zenith > 90:
|
|
168
|
+
msg = f"Invalid zenith angle: {zenith}"
|
|
169
|
+
raise ValueError(msg)
|
|
170
|
+
elevation = float(90 - zenith)
|
|
171
|
+
self.append_data(np.repeat(elevation, len(self.time)), "elevation")
|
|
172
|
+
|
|
159
173
|
def add_radar_frequency(self) -> None:
|
|
160
174
|
# XMT should always be present. In newer files, there's also
|
|
161
175
|
# LO_frequency variable which doesn't match XMT exactly and sometimes
|
|
@@ -7,7 +7,7 @@ from os import PathLike
|
|
|
7
7
|
import ceilopyter.version
|
|
8
8
|
import numpy as np
|
|
9
9
|
import numpy.typing as npt
|
|
10
|
-
from ceilopyter import read_cl_file, read_cs_file
|
|
10
|
+
from ceilopyter import read_cl_file, read_cs_file
|
|
11
11
|
|
|
12
12
|
from cloudnetpy.exceptions import ValidTimeStampError
|
|
13
13
|
from cloudnetpy.instruments import instruments
|
|
@@ -118,13 +118,31 @@ class Ct25k(VaisalaCeilo):
|
|
|
118
118
|
site_meta: dict,
|
|
119
119
|
expected_date: datetime.date | None = None,
|
|
120
120
|
) -> None:
|
|
121
|
-
super().__init__(
|
|
121
|
+
super().__init__(no_reader, full_path, site_meta, expected_date)
|
|
122
122
|
self._store_ceilometer_info()
|
|
123
123
|
|
|
124
124
|
def _store_ceilometer_info(self) -> None:
|
|
125
125
|
self.instrument = instruments.CT25K
|
|
126
126
|
|
|
127
127
|
|
|
128
|
+
class Ld40(VaisalaCeilo):
|
|
129
|
+
"""Class for Vaisala LD40 ceilometer."""
|
|
130
|
+
|
|
131
|
+
noise_param = NoiseParam(noise_min=0.7e-7, noise_smooth_min=1.2e-8)
|
|
132
|
+
|
|
133
|
+
def __init__(
|
|
134
|
+
self,
|
|
135
|
+
full_path: str | PathLike,
|
|
136
|
+
site_meta: dict,
|
|
137
|
+
expected_date: datetime.date | None = None,
|
|
138
|
+
) -> None:
|
|
139
|
+
super().__init__(no_reader, full_path, site_meta, expected_date)
|
|
140
|
+
self._store_ceilometer_info()
|
|
141
|
+
|
|
142
|
+
def _store_ceilometer_info(self) -> None:
|
|
143
|
+
self.instrument = instruments.LD40
|
|
144
|
+
|
|
145
|
+
|
|
128
146
|
class Cs135(VaisalaCeilo):
|
|
129
147
|
"""Class for Campbell Scientific CS135 ceilometer."""
|
|
130
148
|
|
|
@@ -140,3 +158,8 @@ class Cs135(VaisalaCeilo):
|
|
|
140
158
|
|
|
141
159
|
def _store_ceilometer_info(self) -> None:
|
|
142
160
|
self.instrument = instruments.CS135
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def no_reader() -> None:
|
|
164
|
+
msg = "No ceilometer reader"
|
|
165
|
+
raise RuntimeError(msg)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cloudnetpy
|
|
3
|
-
Version: 1.97.
|
|
3
|
+
Version: 1.97.4
|
|
4
4
|
Summary: Python package for Cloudnet processing
|
|
5
5
|
Author: Simo Tukiainen
|
|
6
6
|
License: MIT License
|
|
@@ -39,7 +39,7 @@ Requires-Python: >=3.11
|
|
|
39
39
|
Description-Content-Type: text/markdown
|
|
40
40
|
License-File: LICENSE
|
|
41
41
|
Requires-Dist: atmoslib>=2.4.2
|
|
42
|
-
Requires-Dist: ceilopyter>=0.2.
|
|
42
|
+
Requires-Dist: ceilopyter>=0.2.3
|
|
43
43
|
Requires-Dist: cloudnet-api-client
|
|
44
44
|
Requires-Dist: doppy>=0.5.0
|
|
45
45
|
Requires-Dist: matplotlib
|
|
@@ -66,7 +66,7 @@ Dynamic: license-file
|
|
|
66
66
|
|
|
67
67
|
[](https://github.com/actris-cloudnet/cloudnetpy/actions/workflows/test.yml)
|
|
68
68
|
[](https://pypi.org/project/cloudnetpy/)
|
|
69
|
-
[](https://doi.org/10.5281/zenodo.3666030)
|
|
70
70
|
[](https://joss.theoj.org/papers/959971f196f617dddc0e7d8333ff22b7)
|
|
71
71
|
|
|
72
72
|
CloudnetPy is Python software designed for producing vertical profiles of cloud properties from ground-based
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/gas_attenuation.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/liquid_attenuation.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/melting_attenuation.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/categorize/attenuations/rain_attenuation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/advance_methods.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/grid_methods.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/model_products.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/observation_products.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/products/product_resampling.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py
RENAMED
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloudnetpy-1.97.2 → cloudnetpy-1.97.4}/cloudnetpy/model_evaluation/tests/unit/test_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|