cloudnetpy 1.64.4__tar.gz → 1.65.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.
Files changed (121) hide show
  1. {cloudnetpy-1.64.4/cloudnetpy.egg-info → cloudnetpy-1.65.0}/PKG-INFO +1 -1
  2. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/atmos.py +8 -1
  3. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/categorize.py +6 -3
  4. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/containers.py +5 -1
  5. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/mwr.py +4 -0
  6. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/radar.py +1 -1
  7. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/exceptions.py +7 -0
  8. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/der.py +4 -0
  9. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/lwc.py +4 -0
  10. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/version.py +2 -2
  11. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0/cloudnetpy.egg-info}/PKG-INFO +1 -1
  12. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/LICENSE +0 -0
  13. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/MANIFEST.in +0 -0
  14. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/README.md +0 -0
  15. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/__init__.py +0 -0
  16. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/__init__.py +0 -0
  17. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/atmos_utils.py +0 -0
  18. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/classify.py +0 -0
  19. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/disdrometer.py +0 -0
  20. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/droplet.py +0 -0
  21. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/falling.py +0 -0
  22. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/freezing.py +0 -0
  23. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/insects.py +0 -0
  24. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/lidar.py +0 -0
  25. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/melting.py +0 -0
  26. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/categorize/model.py +0 -0
  27. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/cloudnetarray.py +0 -0
  28. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/concat_lib.py +0 -0
  29. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/constants.py +0 -0
  30. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/datasource.py +0 -0
  31. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/__init__.py +0 -0
  32. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/basta.py +0 -0
  33. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  34. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/ceilo.py +0 -0
  35. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/ceilometer.py +0 -0
  36. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/cl61d.py +0 -0
  37. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  38. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/copernicus.py +0 -0
  39. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  40. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  41. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  42. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  43. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/galileo.py +0 -0
  44. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/hatpro.py +0 -0
  45. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/instruments.py +0 -0
  46. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/lufft.py +0 -0
  47. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/mira.py +0 -0
  48. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/mrr.py +0 -0
  49. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/nc_lidar.py +0 -0
  50. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/nc_radar.py +0 -0
  51. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/pollyxt.py +0 -0
  52. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/radiometrics.py +0 -0
  53. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/rpg.py +0 -0
  54. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/rpg_reader.py +0 -0
  55. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/toa5.py +0 -0
  56. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/vaisala.py +0 -0
  57. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/instruments/weather_station.py +0 -0
  58. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/metadata.py +0 -0
  59. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/__init__.py +0 -0
  60. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  61. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/metadata.py +0 -0
  62. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  63. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  64. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  65. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  66. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  67. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  68. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  69. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  70. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  71. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  72. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  73. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  74. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  75. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  76. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  77. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  78. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  79. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  80. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  81. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  82. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  83. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  84. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  85. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  86. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  87. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  88. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  89. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  90. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  91. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  92. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  93. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  94. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  95. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  96. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  97. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  98. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/model_evaluation/utils.py +0 -0
  99. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/output.py +0 -0
  100. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/plotting/__init__.py +0 -0
  101. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/plotting/plot_meta.py +0 -0
  102. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/plotting/plotting.py +0 -0
  103. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/__init__.py +0 -0
  104. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/classification.py +0 -0
  105. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/drizzle.py +0 -0
  106. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/drizzle_error.py +0 -0
  107. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/drizzle_tools.py +0 -0
  108. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/ier.py +0 -0
  109. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/iwc.py +0 -0
  110. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  111. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/mwr_tools.py +0 -0
  112. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/products/product_tools.py +0 -0
  113. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/py.typed +0 -0
  114. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy/utils.py +0 -0
  115. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  116. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  117. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy.egg-info/requires.txt +0 -0
  118. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/cloudnetpy.egg-info/top_level.txt +0 -0
  119. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/docs/source/conf.py +0 -0
  120. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/pyproject.toml +0 -0
  121. {cloudnetpy-1.64.4 → cloudnetpy-1.65.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.64.4
3
+ Version: 1.65.0
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -181,7 +181,14 @@ class LiquidAttenuation(Attenuation):
181
181
 
182
182
  def __init__(self, data: dict, classification: ClassificationResult):
183
183
  super().__init__(data["model"], classification)
184
- self._mwr = data["mwr"].data
184
+ if data["mwr"] is not None:
185
+ self._mwr = data["mwr"].data
186
+ else:
187
+ n_time = data["radar"].data["Z"][:].shape[0]
188
+ self._mwr = {
189
+ "lwp": ma.masked_all(n_time),
190
+ "lwp_error": ma.masked_all(n_time),
191
+ }
185
192
  self._lwc_dz_err = self._get_lwc_change_rate_error()
186
193
  self.atten = self._get_liquid_atten()
187
194
  self.atten_err = self._get_liquid_atten_err()
@@ -65,9 +65,10 @@ def generate_categorize(
65
65
 
66
66
  def _interpolate_to_cloudnet_grid() -> list:
67
67
  wl_band = utils.get_wl_band(data["radar"].radar_frequency)
68
- data["mwr"].rebin_to_grid(time)
69
68
  if data["disdrometer"] is not None:
70
69
  data["disdrometer"].interpolate_to_grid(time)
70
+ if data["mwr"] is not None:
71
+ data["mwr"].rebin_to_grid(time)
71
72
  data["model"].interpolate_to_common_height(wl_band)
72
73
  model_gap_ind = data["model"].interpolate_to_grid(time, height)
73
74
  radar_gap_ind = data["radar"].rebin_to_grid(time)
@@ -115,7 +116,7 @@ def generate_categorize(
115
116
  **data["lidar"].data,
116
117
  **data["model"].data,
117
118
  **data["model"].data_sparse,
118
- **data["mwr"].data,
119
+ **(data["mwr"].data if data["mwr"] is not None else {}),
119
120
  **(data["disdrometer"].data if data["disdrometer"] is not None else {}),
120
121
  }
121
122
 
@@ -131,10 +132,12 @@ def generate_categorize(
131
132
  data: dict = {
132
133
  "radar": Radar(input_files["radar"]),
133
134
  "lidar": Lidar(input_files["lidar"]),
134
- "mwr": Mwr(input_files["mwr"]),
135
135
  "lv0_files": input_files.get("lv0_files"),
136
+ "mwr": None,
136
137
  "disdrometer": None,
137
138
  }
139
+ if "mwr" in input_files:
140
+ data["mwr"] = Mwr(input_files["mwr"])
138
141
  if "disdrometer" in input_files:
139
142
  try:
140
143
  data["disdrometer"] = Disdrometer(input_files["disdrometer"])
@@ -58,7 +58,11 @@ class ClassData:
58
58
  self.tw = data["model"].data["Tw"][:]
59
59
  self.model_type = data["model"].source_type
60
60
  self.beta = data["lidar"].data["beta"][:]
61
- self.lwp = data["mwr"].data["lwp"][:]
61
+ self.lwp = (
62
+ data["mwr"].data["lwp"][:]
63
+ if data["mwr"] is not None
64
+ else ma.masked_all(self.time.shape)
65
+ )
62
66
  self.is_rain = self._find_profiles_with_rain()
63
67
  self.is_clutter = _find_clutter(self.v, self.is_rain)
64
68
  self.altitude = data["radar"].altitude
@@ -1,6 +1,7 @@
1
1
  """Mwr module, containing the :class:`Mwr` class."""
2
2
 
3
3
  import numpy as np
4
+ import numpy.ma as ma
4
5
 
5
6
  from cloudnetpy import utils
6
7
  from cloudnetpy.constants import G_TO_KG
@@ -32,6 +33,9 @@ class Mwr(DataSource):
32
33
 
33
34
  def _init_lwp_data(self) -> None:
34
35
  lwp = self.dataset.variables["lwp"][:]
36
+ if "lwp_quality_flag" in self.dataset.variables:
37
+ quality_flag = self.dataset.variables["lwp_quality_flag"][:]
38
+ lwp[quality_flag != 0] = ma.masked
35
39
  self.append_data(lwp, "lwp")
36
40
 
37
41
  def _init_lwp_error(self) -> None:
@@ -257,7 +257,7 @@ class Radar(DataSource):
257
257
  noise_threshold = 3
258
258
  n_pulses = _number_of_independent_pulses()
259
259
  ln_to_log10 = 10 / np.log(10)
260
- z_precision = (ln_to_log10 / np.sqrt(n_pulses)) * (
260
+ z_precision = ma.divide(ln_to_log10, np.sqrt(n_pulses)) * (
261
261
  1 + (utils.db2lin(z_power_min - z_power) / noise_threshold)
262
262
  )
263
263
  gas_error = attenuations["radar_gas_atten"] * 0.1
@@ -63,3 +63,10 @@ class HatproDataError(CloudnetException):
63
63
 
64
64
  def __init__(self, msg: str = "Invalid HATPRO file"):
65
65
  super().__init__(msg)
66
+
67
+
68
+ class InvalidSourceFileError(CloudnetException):
69
+ """Internal exception class."""
70
+
71
+ def __init__(self, msg: str = "Invalid source file"):
72
+ super().__init__(msg)
@@ -10,6 +10,7 @@ from numpy import ma
10
10
  from cloudnetpy import output, utils
11
11
  from cloudnetpy.categorize import atmos
12
12
  from cloudnetpy.datasource import DataSource
13
+ from cloudnetpy.exceptions import InvalidSourceFileError
13
14
  from cloudnetpy.metadata import MetaData
14
15
  from cloudnetpy.products.product_tools import (
15
16
  CategorizeBits,
@@ -113,6 +114,9 @@ class DerSource(DataSource):
113
114
 
114
115
  def __init__(self, categorize_file: str, parameters: Parameters | None = None):
115
116
  super().__init__(categorize_file)
117
+ if "lwp" not in self.dataset.variables:
118
+ msg = "Liquid water path missing from the categorize file."
119
+ raise InvalidSourceFileError(msg)
116
120
  self.is_rain = get_is_rain(categorize_file)
117
121
  self.categorize_bits = CategorizeBits(categorize_file)
118
122
  if parameters is None:
@@ -8,6 +8,7 @@ from numpy import ma
8
8
  from cloudnetpy import output, utils
9
9
  from cloudnetpy.categorize import atmos
10
10
  from cloudnetpy.datasource import DataSource
11
+ from cloudnetpy.exceptions import InvalidSourceFileError
11
12
  from cloudnetpy.metadata import MetaData
12
13
  from cloudnetpy.products import product_tools as p_tools
13
14
  from cloudnetpy.products.product_tools import CategorizeBits, get_is_rain
@@ -88,6 +89,9 @@ class LwcSource(DataSource):
88
89
 
89
90
  def __init__(self, categorize_file: str):
90
91
  super().__init__(categorize_file)
92
+ if "lwp" not in self.dataset.variables:
93
+ msg = "Liquid water path missing from the categorize file."
94
+ raise InvalidSourceFileError(msg)
91
95
  self.lwp = self.getvar("lwp")
92
96
  self.lwp[self.lwp < 0] = 0
93
97
  self.lwp_error = self.getvar("lwp_error")
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
- MINOR = 64
3
- PATCH = 4
2
+ MINOR = 65
3
+ PATCH = 0
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.64.4
3
+ Version: 1.65.0
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
File without changes
File without changes
File without changes
File without changes
File without changes