cloudnetpy 1.97.3__tar.gz → 1.97.5__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 (148) hide show
  1. {cloudnetpy-1.97.3/cloudnetpy.egg-info → cloudnetpy-1.97.5}/PKG-INFO +1 -1
  2. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/disdronator/parsivel.py +8 -5
  3. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/disdronator/process.py +7 -2
  4. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/mira.py +15 -1
  5. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/version.py +1 -1
  6. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5/cloudnetpy.egg-info}/PKG-INFO +1 -1
  7. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/LICENSE +0 -0
  8. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/MANIFEST.in +0 -0
  9. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/README.md +0 -0
  10. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/__init__.py +0 -0
  11. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/arm.py +0 -0
  12. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/__init__.py +0 -0
  13. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/atmos_utils.py +0 -0
  14. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/attenuation.py +0 -0
  15. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
  16. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
  17. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
  18. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
  19. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
  20. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/categorize.py +0 -0
  21. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/classify.py +0 -0
  22. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/containers.py +0 -0
  23. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/disdrometer.py +0 -0
  24. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/droplet.py +0 -0
  25. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/falling.py +0 -0
  26. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/freezing.py +0 -0
  27. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/insects.py +0 -0
  28. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/lidar.py +0 -0
  29. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/melting.py +0 -0
  30. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/model.py +0 -0
  31. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/mwr.py +0 -0
  32. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/categorize/radar.py +0 -0
  33. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/cli.py +0 -0
  34. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/cloudnetarray.py +0 -0
  35. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/concat_lib.py +0 -0
  36. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/constants.py +0 -0
  37. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/datasource.py +0 -0
  38. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/disdronator/__init__.py +0 -0
  39. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/disdronator/lpm.py +0 -0
  40. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/disdronator/rd80.py +0 -0
  41. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/disdronator/utils.py +0 -0
  42. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/exceptions.py +0 -0
  43. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/__init__.py +0 -0
  44. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/arm_ceilo.py +0 -0
  45. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/arm_ld.py +0 -0
  46. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/arm_utils.py +0 -0
  47. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/basta.py +0 -0
  48. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/bowtie.py +0 -0
  49. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/ceilo.py +0 -0
  50. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/ceilometer.py +0 -0
  51. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/cl61d.py +0 -0
  52. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  53. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/copernicus.py +0 -0
  54. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/da10.py +0 -0
  55. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/dealias.py +0 -0
  56. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/disdrometer.py +0 -0
  57. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/fd12p.py +0 -0
  58. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/galileo.py +0 -0
  59. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/hatpro.py +0 -0
  60. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/instruments.py +0 -0
  61. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/kazr.py +0 -0
  62. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/lufft.py +0 -0
  63. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/mmcr.py +0 -0
  64. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/mrr.py +0 -0
  65. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/mwr3c.py +0 -0
  66. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/mwrlos.py +0 -0
  67. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/nc_lidar.py +0 -0
  68. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/nc_radar.py +0 -0
  69. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/pollyxt.py +0 -0
  70. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/radiometrics.py +0 -0
  71. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/rain_e_h3.py +0 -0
  72. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/rpg.py +0 -0
  73. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/rpg_reader.py +0 -0
  74. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/toa5.py +0 -0
  75. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/vaisala.py +0 -0
  76. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/weather_radar.py +0 -0
  77. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/instruments/weather_station.py +0 -0
  78. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/metadata.py +0 -0
  79. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/__init__.py +0 -0
  80. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  81. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/metadata.py +0 -0
  82. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  83. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  84. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  85. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  86. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  87. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  88. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  89. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  90. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  91. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  92. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  93. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  94. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  95. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  96. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  97. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  98. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  99. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  100. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  101. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  102. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  103. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  104. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  105. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  106. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  107. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  108. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  109. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  110. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  111. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  112. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  113. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  114. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  115. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  116. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  117. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  118. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/model_evaluation/utils.py +0 -0
  119. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/output.py +0 -0
  120. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/plotting/__init__.py +0 -0
  121. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/plotting/plot_meta.py +0 -0
  122. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/plotting/plotting.py +0 -0
  123. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/__init__.py +0 -0
  124. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/classification.py +0 -0
  125. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/cod.py +0 -0
  126. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/der.py +0 -0
  127. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/drizzle.py +0 -0
  128. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/drizzle_error.py +0 -0
  129. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/drizzle_tools.py +0 -0
  130. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/epsilon_lidar.py +0 -0
  131. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/epsilon_radar.py +0 -0
  132. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/ier.py +0 -0
  133. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/iwc.py +0 -0
  134. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/iwc_weather_radar.py +0 -0
  135. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/lwc.py +0 -0
  136. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  137. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/mwr_tools.py +0 -0
  138. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/products/product_tools.py +0 -0
  139. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/py.typed +0 -0
  140. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy/utils.py +0 -0
  141. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  142. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  143. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy.egg-info/entry_points.txt +0 -0
  144. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy.egg-info/requires.txt +0 -0
  145. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/cloudnetpy.egg-info/top_level.txt +0 -0
  146. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/docs/source/conf.py +0 -0
  147. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/pyproject.toml +0 -0
  148. {cloudnetpy-1.97.3 → cloudnetpy-1.97.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy
3
- Version: 1.97.3
3
+ Version: 1.97.5
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -1,4 +1,5 @@
1
1
  import datetime
2
+ import logging
2
3
  import re
3
4
  from collections.abc import Sequence
4
5
  from os import PathLike
@@ -586,11 +587,13 @@ def read_parsivel_l1(
586
587
  msg = "No raw data"
587
588
  raise ValueError(msg)
588
589
  data_raw = np.swapaxes(l0[93], 1, 2)
589
- interval = (
590
- l0[9]
591
- if 9 in l0
592
- else np.median(np.diff(time.astype("datetime64[s]"))).astype(int)
593
- )
590
+ if 9 in l0:
591
+ interval = l0[9]
592
+ else:
593
+ interval = np.median(np.diff(time.astype("datetime64[s]"))).astype(int)
594
+ logging.warning(
595
+ "Interval is not available, using mean time difference: %d s", interval
596
+ )
594
597
  return DisdroL1(
595
598
  diameter=D,
596
599
  diameter_bins=D_BINS,
@@ -1,3 +1,4 @@
1
+ import datetime
1
2
  from dataclasses import dataclass
2
3
 
3
4
  import numpy as np
@@ -80,7 +81,7 @@ def process_l2(l1: DisdroL1) -> DisdroL2:
80
81
  fall_velocity = ma.masked_where(spec == 0, np.tile(l1.velocity, (n_time, 1)))
81
82
  rain_amount = np.pi / 6 * np.sum(spec * l1.diameter**3 / area_mm2, axis=1)
82
83
  radar_refl = np.sum(
83
- spec * l1.diameter**6 / (l1.velocity * area_m2 * interval_h[:, np.newaxis]),
84
+ spec * l1.diameter**6 / (l1.velocity * area_m2 * interval[:, np.newaxis]),
84
85
  axis=1,
85
86
  )
86
87
  energy_flux = (
@@ -167,7 +168,11 @@ def process_l2(l1: DisdroL1) -> DisdroL2:
167
168
  )
168
169
  )
169
170
  rain_rate = rain_amount / interval_h
170
- rain_accum = np.cumsum(rain_amount)
171
+
172
+ # Typically time_diff matches interval, but in Bucharest time_diff is 60 s
173
+ # and interval is 5 s as of 2026-11-11.
174
+ time_diff = np.median(np.diff(time) / datetime.timedelta(hours=1))
175
+ rain_accum = np.cumsum(rain_rate * time_diff)
171
176
 
172
177
  min_radar_refl = -10
173
178
  radar_refl_db = 10 * ma.log10(radar_refl)
@@ -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
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 97
3
- PATCH = 3
3
+ PATCH = 5
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy
3
- Version: 1.97.3
3
+ Version: 1.97.5
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