cloudnetpy 1.69.0__tar.gz → 1.69.2__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 (130) hide show
  1. {cloudnetpy-1.69.0/cloudnetpy.egg-info → cloudnetpy-1.69.2}/PKG-INFO +1 -1
  2. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/copernicus.py +1 -1
  3. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/galileo.py +1 -1
  4. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/mira.py +13 -1
  5. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/nc_radar.py +9 -0
  6. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/vaisala.py +18 -17
  7. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/version.py +1 -1
  8. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2/cloudnetpy.egg-info}/PKG-INFO +1 -1
  9. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/LICENSE +0 -0
  10. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/MANIFEST.in +0 -0
  11. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/README.md +0 -0
  12. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/__init__.py +0 -0
  13. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/__init__.py +0 -0
  14. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/atmos_utils.py +0 -0
  15. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/attenuation.py +0 -0
  16. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
  17. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
  18. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
  19. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
  20. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
  21. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/categorize.py +0 -0
  22. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/classify.py +0 -0
  23. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/containers.py +0 -0
  24. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/disdrometer.py +0 -0
  25. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/droplet.py +0 -0
  26. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/falling.py +0 -0
  27. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/freezing.py +0 -0
  28. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/insects.py +0 -0
  29. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/itu.py +0 -0
  30. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/lidar.py +0 -0
  31. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/melting.py +0 -0
  32. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/model.py +0 -0
  33. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/mwr.py +0 -0
  34. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/categorize/radar.py +0 -0
  35. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/cli.py +0 -0
  36. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/cloudnetarray.py +0 -0
  37. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/concat_lib.py +0 -0
  38. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/constants.py +0 -0
  39. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/datasource.py +0 -0
  40. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/exceptions.py +0 -0
  41. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/__init__.py +0 -0
  42. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/basta.py +0 -0
  43. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  44. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/ceilo.py +0 -0
  45. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/ceilometer.py +0 -0
  46. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/cl61d.py +0 -0
  47. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  48. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  49. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  50. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  51. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  52. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/hatpro.py +0 -0
  53. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/instruments.py +0 -0
  54. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/lufft.py +0 -0
  55. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/mrr.py +0 -0
  56. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/nc_lidar.py +0 -0
  57. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/pollyxt.py +0 -0
  58. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/radiometrics.py +0 -0
  59. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/rain_e_h3.py +0 -0
  60. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/rpg.py +0 -0
  61. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/rpg_reader.py +0 -0
  62. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/toa5.py +0 -0
  63. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/instruments/weather_station.py +0 -0
  64. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/metadata.py +0 -0
  65. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/__init__.py +0 -0
  66. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  67. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/metadata.py +0 -0
  68. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  69. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  70. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  71. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  72. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  73. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  74. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  75. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  76. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  77. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  78. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  79. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  80. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  81. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  82. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  83. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  84. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  85. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  86. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  87. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  88. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  89. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  90. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  91. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  92. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  93. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  94. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  95. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  96. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  97. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  98. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  99. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  100. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  101. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  102. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  103. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  104. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/model_evaluation/utils.py +0 -0
  105. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/output.py +0 -0
  106. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/plotting/__init__.py +0 -0
  107. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/plotting/plot_meta.py +0 -0
  108. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/plotting/plotting.py +0 -0
  109. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/__init__.py +0 -0
  110. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/classification.py +0 -0
  111. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/der.py +0 -0
  112. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/drizzle.py +0 -0
  113. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/drizzle_error.py +0 -0
  114. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/drizzle_tools.py +0 -0
  115. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/ier.py +0 -0
  116. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/iwc.py +0 -0
  117. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/lwc.py +0 -0
  118. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  119. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/mwr_tools.py +0 -0
  120. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/products/product_tools.py +0 -0
  121. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/py.typed +0 -0
  122. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy/utils.py +0 -0
  123. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  124. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  125. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy.egg-info/entry_points.txt +0 -0
  126. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy.egg-info/requires.txt +0 -0
  127. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/cloudnetpy.egg-info/top_level.txt +0 -0
  128. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/docs/source/conf.py +0 -0
  129. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/pyproject.toml +0 -0
  130. {cloudnetpy-1.69.0 → cloudnetpy-1.69.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cloudnetpy
3
- Version: 1.69.0
3
+ Version: 1.69.2
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -97,7 +97,7 @@ def copernicus2nc(
97
97
  copernicus.add_nyquist_velocity(keymap)
98
98
  copernicus.add_site_geolocation()
99
99
  valid_indices = copernicus.add_zenith_and_azimuth_angles(
100
- elevation_threshold=1,
100
+ elevation_threshold=1.1,
101
101
  elevation_diff_threshold=0.1,
102
102
  azimuth_diff_threshold=0.1,
103
103
  )
@@ -93,7 +93,7 @@ def galileo2nc(
93
93
  galileo.add_nyquist_velocity(keymap)
94
94
  galileo.add_site_geolocation()
95
95
  valid_indices = galileo.add_zenith_and_azimuth_angles(
96
- elevation_threshold=1,
96
+ elevation_threshold=1.1,
97
97
  elevation_diff_threshold=0.1,
98
98
  azimuth_diff_threshold=0.1,
99
99
  )
@@ -87,9 +87,11 @@ def mira2nc(
87
87
  mira.add_site_geolocation()
88
88
  mira.add_radar_specific_variables()
89
89
  valid_indices = mira.add_zenith_and_azimuth_angles(
90
- elevation_threshold=1,
90
+ elevation_threshold=1.1,
91
91
  elevation_diff_threshold=1e-6,
92
92
  azimuth_diff_threshold=1e-3,
93
+ zenith_offset=site_meta.get("zenith_offset"),
94
+ azimuth_offset=site_meta.get("azimuth_offset"),
93
95
  )
94
96
  mira.screen_time_indices(valid_indices)
95
97
  mira.add_height()
@@ -298,4 +300,14 @@ ATTRIBUTES = {
298
300
  long_name="Pulse Repetition Frequency",
299
301
  units="Hz",
300
302
  ),
303
+ "zenith_offset": MetaData(
304
+ long_name="Zenith offset of the instrument",
305
+ units="degrees",
306
+ comment="Zenith offset applied.",
307
+ ),
308
+ "azimuth_offset": MetaData(
309
+ long_name="Azimuth offset of the instrument (positive clockwise from north)",
310
+ units="degrees",
311
+ comment="Azimuth offset applied.",
312
+ ),
301
313
  }
@@ -95,12 +95,21 @@ class NcRadar(DataSource, CloudnetInstrument):
95
95
  elevation_threshold: float,
96
96
  elevation_diff_threshold: float,
97
97
  azimuth_diff_threshold: float,
98
+ zenith_offset: float | None = None,
99
+ azimuth_offset: float | None = None,
98
100
  ) -> list:
99
101
  """Adds non-varying instrument zenith and azimuth angles and returns valid
100
102
  time indices.
101
103
  """
102
104
  elevation = self.data["elevation"].data
105
+ if zenith_offset is not None:
106
+ self.append_data(zenith_offset, "zenith_offset")
107
+ elevation -= zenith_offset
108
+
103
109
  azimuth = self.data["azimuth_angle"].data
110
+ if azimuth_offset is not None:
111
+ self.append_data(azimuth_offset, "azimuth_offset")
112
+ azimuth += azimuth_offset
104
113
 
105
114
  elevation_diff = ma.diff(elevation, prepend=elevation[1])
106
115
  azimuth_diff = ma.diff(azimuth, prepend=azimuth[1])
@@ -224,6 +224,23 @@ class VaisalaCeilo(Ceilometer):
224
224
  values = [[line[0], line[1], line[3:20], line[21:].strip()] for line in lines]
225
225
  return values_to_dict(fields, values)
226
226
 
227
+ def _sort_time(self) -> None:
228
+ """Sorts timestamps and removes duplicates."""
229
+ time = np.copy(self.data["time"][:])
230
+ ind_sorted = np.argsort(time)
231
+ ind_valid: list[int] = []
232
+ for ind in ind_sorted:
233
+ if time[ind] not in time[ind_valid]:
234
+ ind_valid.append(ind)
235
+ n_time = len(time)
236
+ for key, array in self.data.items():
237
+ if not hasattr(array, "shape"):
238
+ continue
239
+ if array.ndim == 1 and array.shape[0] == n_time:
240
+ self.data[key] = self.data[key][ind_valid]
241
+ if array.ndim == 2 and array.shape[0] == n_time:
242
+ self.data[key] = self.data[key][ind_valid, :]
243
+
227
244
 
228
245
  class ClCeilo(VaisalaCeilo):
229
246
  """Base class for Vaisala CL31/CL51 ceilometers."""
@@ -253,23 +270,6 @@ class ClCeilo(VaisalaCeilo):
253
270
  self._store_ceilometer_info()
254
271
  self._sort_time()
255
272
 
256
- def _sort_time(self) -> None:
257
- """Sorts timestamps and removes duplicates."""
258
- time = np.copy(self.data["time"][:])
259
- ind_sorted = np.argsort(time)
260
- ind_valid: list[int] = []
261
- for ind in ind_sorted:
262
- if time[ind] not in time[ind_valid]:
263
- ind_valid.append(ind)
264
- n_time = len(time)
265
- for key, array in self.data.items():
266
- if not hasattr(array, "shape"):
267
- continue
268
- if array.ndim == 1 and array.shape[0] == n_time:
269
- self.data[key] = self.data[key][ind_valid]
270
- if array.ndim == 2 and array.shape[0] == n_time:
271
- self.data[key] = self.data[key][ind_valid, :]
272
-
273
273
  def _store_ceilometer_info(self) -> None:
274
274
  n_gates = self.data["beta_raw"].shape[1]
275
275
  if n_gates < 1540:
@@ -335,6 +335,7 @@ class Ct25k(VaisalaCeilo):
335
335
  self.data["calibration_factor"] = calibration_factor or 1.0
336
336
  self.data["beta_raw"] *= self.data["calibration_factor"]
337
337
  self.data["zenith_angle"] = np.median(self.metadata["zenith_angle"])
338
+ self._sort_time()
338
339
 
339
340
  @staticmethod
340
341
  def _parse_hex_profiles(lines: list) -> list:
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 69
3
- PATCH = 0
3
+ PATCH = 2
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cloudnetpy
3
- Version: 1.69.0
3
+ Version: 1.69.2
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