cloudnetpy 1.84.1__tar.gz → 1.85.0__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.84.1/cloudnetpy.egg-info → cloudnetpy-1.85.0}/PKG-INFO +1 -1
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/ceilo.py +12 -6
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/cl61d.py +0 -2
- cloudnetpy-1.85.0/cloudnetpy/instruments/da10.py +54 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/instruments.py +8 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/nc_radar.py +4 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/version.py +2 -2
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0/cloudnetpy.egg-info}/PKG-INFO +1 -1
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy.egg-info/SOURCES.txt +1 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/LICENSE +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/MANIFEST.in +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/README.md +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/atmos_utils.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuation.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/categorize.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/classify.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/containers.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/disdrometer.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/droplet.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/falling.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/freezing.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/insects.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/itu.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/lidar.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/melting.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/model.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/mwr.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/radar.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/cli.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/cloudnetarray.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/concat_lib.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/constants.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/datasource.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/exceptions.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/basta.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/bowtie.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/ceilometer.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/copernicus.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/disdrometer/common.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/fd12p.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/galileo.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/hatpro.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/lufft.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/mira.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/mrr.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/nc_lidar.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/pollyxt.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/radiometrics.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/rain_e_h3.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/rpg.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/rpg_reader.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/toa5.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/vaisala.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/instruments/weather_station.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/metadata.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/file_handler.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/metadata.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/tools.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/utils.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/output.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/plotting/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/plotting/plot_meta.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/plotting/plotting.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/__init__.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/classification.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/der.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/drizzle.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/drizzle_error.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/drizzle_tools.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/epsilon.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/ier.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/iwc.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/lwc.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/mie_lu_tables.nc +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/mwr_tools.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/products/product_tools.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/py.typed +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/utils.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy.egg-info/dependency_links.txt +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy.egg-info/entry_points.txt +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy.egg-info/requires.txt +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy.egg-info/top_level.txt +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/docs/source/conf.py +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/pyproject.toml +0 -0
- {cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/setup.cfg +0 -0
@@ -14,11 +14,14 @@ from numpy import ma
|
|
14
14
|
|
15
15
|
from cloudnetpy import output
|
16
16
|
from cloudnetpy.instruments.cl61d import Cl61d
|
17
|
+
from cloudnetpy.instruments.da10 import Da10
|
17
18
|
from cloudnetpy.instruments.lufft import LufftCeilo
|
18
19
|
from cloudnetpy.instruments.vaisala import ClCeilo, Cs135, Ct25k
|
19
20
|
from cloudnetpy.metadata import COMMON_ATTRIBUTES, MetaData
|
20
21
|
from cloudnetpy.utils import get_uuid
|
21
22
|
|
23
|
+
CeiloObject = ClCeilo | Ct25k | LufftCeilo | Cl61d | Cs135 | Da10
|
24
|
+
|
22
25
|
|
23
26
|
def ceilo2nc(
|
24
27
|
full_path: str | PathLike,
|
@@ -30,7 +33,7 @@ def ceilo2nc(
|
|
30
33
|
"""Converts Vaisala, Lufft and Campbell Scientific ceilometer data into
|
31
34
|
Cloudnet Level 1b netCDF file.
|
32
35
|
|
33
|
-
This function reads raw Vaisala (CT25k, CL31, CL51, CL61), Lufft
|
36
|
+
This function reads raw Vaisala (CT25k, CL31, CL51, CL61, DA10), Lufft
|
34
37
|
(CHM 15k, CHM 15k-x) and Campbell Scientific (CS135) ceilometer files and writes
|
35
38
|
the data into netCDF file. Three variants of the backscatter are saved:
|
36
39
|
|
@@ -44,8 +47,8 @@ def ceilo2nc(
|
|
44
47
|
2. SNR-screened depolarisation with smoothed weak background,
|
45
48
|
`depolarisation_smooth`
|
46
49
|
|
47
|
-
|
48
|
-
of weak aerosol layers and supercooled liquid clouds.
|
50
|
+
With most instruments, screened backscatter is screened using beta_smooth
|
51
|
+
mask to improve detection of weak aerosol layers and supercooled liquid clouds.
|
49
52
|
|
50
53
|
Args:
|
51
54
|
full_path: Ceilometer file name.
|
@@ -118,7 +121,7 @@ def ceilo2nc(
|
|
118
121
|
if (
|
119
122
|
any(
|
120
123
|
model in ceilo_obj.instrument.model.lower()
|
121
|
-
for model in ("cl61", "chm15k", "chm15kx", "cl51", "cl31")
|
124
|
+
for model in ("cl61", "chm15k", "chm15kx", "cl51", "cl31", "da10")
|
122
125
|
)
|
123
126
|
and range_corrected
|
124
127
|
):
|
@@ -141,7 +144,7 @@ def ceilo2nc(
|
|
141
144
|
return uuid
|
142
145
|
|
143
146
|
|
144
|
-
def _get_n_negatives(ceilo_obj:
|
147
|
+
def _get_n_negatives(ceilo_obj: CeiloObject) -> int:
|
145
148
|
is_old_chm_version = (
|
146
149
|
hasattr(ceilo_obj, "is_old_version") and ceilo_obj.is_old_version
|
147
150
|
)
|
@@ -157,7 +160,7 @@ def _initialize_ceilo(
|
|
157
160
|
full_path: str | PathLike,
|
158
161
|
site_meta: dict,
|
159
162
|
date: datetime.date | None = None,
|
160
|
-
) ->
|
163
|
+
) -> CeiloObject:
|
161
164
|
if "model" in site_meta:
|
162
165
|
if site_meta["model"] not in (
|
163
166
|
"cl31",
|
@@ -166,6 +169,7 @@ def _initialize_ceilo(
|
|
166
169
|
"ct25k",
|
167
170
|
"chm15k",
|
168
171
|
"cs135",
|
172
|
+
"da10",
|
169
173
|
):
|
170
174
|
msg = f"Invalid ceilometer model: {site_meta['model']}"
|
171
175
|
raise ValueError(msg)
|
@@ -181,6 +185,8 @@ def _initialize_ceilo(
|
|
181
185
|
return Ct25k(full_path, site_meta, date)
|
182
186
|
if model == "cl61d":
|
183
187
|
return Cl61d(full_path, site_meta, date)
|
188
|
+
if model == "da10":
|
189
|
+
return Da10(full_path, site_meta, date)
|
184
190
|
if model == "cs135":
|
185
191
|
return Cs135(full_path, site_meta, date)
|
186
192
|
return LufftCeilo(full_path, site_meta, date)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import datetime
|
2
|
+
import logging
|
3
|
+
from os import PathLike
|
4
|
+
|
5
|
+
import netCDF4
|
6
|
+
|
7
|
+
from cloudnetpy import utils
|
8
|
+
from cloudnetpy.exceptions import LidarDataError
|
9
|
+
from cloudnetpy.instruments import instruments
|
10
|
+
from cloudnetpy.instruments.nc_lidar import NcLidar
|
11
|
+
|
12
|
+
|
13
|
+
class Da10(NcLidar):
|
14
|
+
"""Class for Vaisala DA10 differential absorption lidar."""
|
15
|
+
|
16
|
+
def __init__(
|
17
|
+
self,
|
18
|
+
file_name: str | PathLike,
|
19
|
+
site_meta: dict,
|
20
|
+
expected_date: datetime.date | None = None,
|
21
|
+
) -> None:
|
22
|
+
super().__init__()
|
23
|
+
self.file_name = file_name
|
24
|
+
self.site_meta = site_meta
|
25
|
+
self.expected_date = expected_date
|
26
|
+
self.instrument = instruments.DA10
|
27
|
+
|
28
|
+
def read_ceilometer_file(self, calibration_factor: float | None = None) -> None:
|
29
|
+
with netCDF4.Dataset(self.file_name) as dataset:
|
30
|
+
self.dataset = dataset
|
31
|
+
self._fetch_attributes()
|
32
|
+
self._fetch_zenith_angle("tilt_angle", default=3.0)
|
33
|
+
self._fetch_range(reference="lower")
|
34
|
+
self._fetch_lidar_variables(calibration_factor)
|
35
|
+
self._fetch_time_and_date()
|
36
|
+
self.dataset = None
|
37
|
+
|
38
|
+
def _fetch_lidar_variables(self, calibration_factor: float | None = None) -> None:
|
39
|
+
if self.dataset is None:
|
40
|
+
msg = "No dataset found"
|
41
|
+
raise RuntimeError(msg)
|
42
|
+
beta_raw = self.dataset.variables["beta_att"][:]
|
43
|
+
if utils.is_all_masked(beta_raw):
|
44
|
+
msg = "All beta_raw values are masked. Check the input file(s)."
|
45
|
+
raise LidarDataError(msg)
|
46
|
+
if calibration_factor is None:
|
47
|
+
logging.warning("Using default calibration factor")
|
48
|
+
calibration_factor = 1
|
49
|
+
beta_raw *= calibration_factor
|
50
|
+
self.data["calibration_factor"] = float(calibration_factor)
|
51
|
+
self.data["beta_raw"] = beta_raw
|
52
|
+
|
53
|
+
def _fetch_attributes(self) -> None:
|
54
|
+
self.serial_number = getattr(self.dataset, "instrument_serial_number", None)
|
@@ -113,6 +113,10 @@ class NcRadar(DataSource, CloudnetInstrument):
|
|
113
113
|
self.append_data(azimuth_offset, "azimuth_offset")
|
114
114
|
azimuth += azimuth_offset
|
115
115
|
|
116
|
+
if len(elevation) < 2 or len(azimuth) < 2:
|
117
|
+
msg = "Less than two profiles with valid zenith / azimuth angles"
|
118
|
+
raise ValidTimeStampError(msg)
|
119
|
+
|
116
120
|
elevation_diff = ma.diff(elevation, prepend=elevation[1])
|
117
121
|
azimuth_diff = ma.diff(azimuth, prepend=azimuth[1])
|
118
122
|
|
@@ -50,6 +50,7 @@ cloudnetpy/instruments/ceilometer.py
|
|
50
50
|
cloudnetpy/instruments/cl61d.py
|
51
51
|
cloudnetpy/instruments/cloudnet_instrument.py
|
52
52
|
cloudnetpy/instruments/copernicus.py
|
53
|
+
cloudnetpy/instruments/da10.py
|
53
54
|
cloudnetpy/instruments/fd12p.py
|
54
55
|
cloudnetpy/instruments/galileo.py
|
55
56
|
cloudnetpy/instruments/hatpro.py
|
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.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/gas_attenuation.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/liquid_attenuation.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/categorize/attenuations/melting_attenuation.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/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
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/advance_methods.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/grid_methods.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/model_products.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/products/observation_products.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/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.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py
RENAMED
File without changes
|
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py
RENAMED
File without changes
|
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py
RENAMED
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py
RENAMED
File without changes
|
File without changes
|
{cloudnetpy-1.84.1 → cloudnetpy-1.85.0}/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
|