cloudnetpy 1.64.3__tar.gz → 1.64.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 (121) hide show
  1. {cloudnetpy-1.64.3/cloudnetpy.egg-info → cloudnetpy-1.64.5}/PKG-INFO +1 -1
  2. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/mwr.py +4 -0
  3. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/radar.py +1 -1
  4. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/ceilo.py +22 -3
  5. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/ceilometer.py +3 -7
  6. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/lufft.py +2 -0
  7. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/version.py +1 -1
  8. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5/cloudnetpy.egg-info}/PKG-INFO +1 -1
  9. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/LICENSE +0 -0
  10. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/MANIFEST.in +0 -0
  11. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/README.md +0 -0
  12. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/__init__.py +0 -0
  13. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/__init__.py +0 -0
  14. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/atmos.py +0 -0
  15. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/atmos_utils.py +0 -0
  16. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/categorize.py +0 -0
  17. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/classify.py +0 -0
  18. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/containers.py +0 -0
  19. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/disdrometer.py +0 -0
  20. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/droplet.py +0 -0
  21. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/falling.py +0 -0
  22. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/freezing.py +0 -0
  23. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/insects.py +0 -0
  24. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/lidar.py +0 -0
  25. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/melting.py +0 -0
  26. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/categorize/model.py +0 -0
  27. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/cloudnetarray.py +0 -0
  28. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/concat_lib.py +0 -0
  29. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/constants.py +0 -0
  30. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/datasource.py +0 -0
  31. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/exceptions.py +0 -0
  32. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/__init__.py +0 -0
  33. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/basta.py +0 -0
  34. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  35. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/cl61d.py +0 -0
  36. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  37. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/copernicus.py +0 -0
  38. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  39. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  40. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  41. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  42. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/galileo.py +0 -0
  43. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/hatpro.py +0 -0
  44. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/instruments.py +0 -0
  45. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/mira.py +0 -0
  46. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/mrr.py +0 -0
  47. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/nc_lidar.py +0 -0
  48. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/nc_radar.py +0 -0
  49. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/pollyxt.py +0 -0
  50. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/radiometrics.py +0 -0
  51. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/rpg.py +0 -0
  52. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/rpg_reader.py +0 -0
  53. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/toa5.py +0 -0
  54. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/vaisala.py +0 -0
  55. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/instruments/weather_station.py +0 -0
  56. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/metadata.py +0 -0
  57. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/__init__.py +0 -0
  58. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  59. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/metadata.py +0 -0
  60. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  61. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  62. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  63. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  64. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  65. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  66. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  67. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  68. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  69. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  70. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  71. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  72. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  73. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  74. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  75. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  76. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  77. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  78. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  79. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  80. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  81. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  82. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  83. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  84. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  85. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  86. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  87. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  88. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  89. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  90. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  91. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  92. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  93. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  94. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  95. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  96. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/model_evaluation/utils.py +0 -0
  97. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/output.py +0 -0
  98. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/plotting/__init__.py +0 -0
  99. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/plotting/plot_meta.py +0 -0
  100. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/plotting/plotting.py +0 -0
  101. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/__init__.py +0 -0
  102. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/classification.py +0 -0
  103. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/der.py +0 -0
  104. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/drizzle.py +0 -0
  105. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/drizzle_error.py +0 -0
  106. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/drizzle_tools.py +0 -0
  107. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/ier.py +0 -0
  108. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/iwc.py +0 -0
  109. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/lwc.py +0 -0
  110. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  111. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/mwr_tools.py +0 -0
  112. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/products/product_tools.py +0 -0
  113. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/py.typed +0 -0
  114. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy/utils.py +0 -0
  115. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  116. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  117. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy.egg-info/requires.txt +0 -0
  118. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/cloudnetpy.egg-info/top_level.txt +0 -0
  119. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/docs/source/conf.py +0 -0
  120. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/pyproject.toml +0 -0
  121. {cloudnetpy-1.64.3 → cloudnetpy-1.64.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.64.3
3
+ Version: 1.64.5
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -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
@@ -74,22 +74,28 @@ def ceilo2nc(
74
74
  range_corrected = site_meta.get("range_corrected", True)
75
75
  ceilo_obj.read_ceilometer_file(calibration_factor)
76
76
  ceilo_obj.check_beta_raw_shape()
77
+ n_negatives = _get_n_negatives(ceilo_obj)
77
78
  ceilo_obj.data["beta"] = ceilo_obj.calc_screened_product(
78
79
  ceilo_obj.data["beta_raw"],
79
80
  snr_limit,
80
81
  range_corrected=range_corrected,
82
+ n_negatives=n_negatives,
81
83
  )
82
84
  ceilo_obj.data["beta_smooth"] = ceilo_obj.calc_beta_smooth(
83
85
  ceilo_obj.data["beta"],
84
86
  snr_limit,
85
87
  range_corrected=range_corrected,
88
+ n_negatives=n_negatives,
86
89
  )
87
90
  if ceilo_obj.instrument is None or ceilo_obj.instrument.model is None:
88
91
  msg = "Failed to read ceilometer model"
89
92
  raise RuntimeError(msg)
90
- if any(
91
- model in ceilo_obj.instrument.model.lower()
92
- for model in ("cl61", "chm15k", "chm15kx", "cl51", "cl31")
93
+ if (
94
+ any(
95
+ model in ceilo_obj.instrument.model.lower()
96
+ for model in ("cl61", "chm15k", "chm15kx", "cl51", "cl31")
97
+ )
98
+ and range_corrected
93
99
  ):
94
100
  mask = ceilo_obj.data["beta_smooth"].mask
95
101
  ceilo_obj.data["beta"] = ma.masked_where(mask, ceilo_obj.data["beta_raw"])
@@ -107,6 +113,19 @@ def ceilo2nc(
107
113
  return output.save_level1b(ceilo_obj, output_file, uuid)
108
114
 
109
115
 
116
+ def _get_n_negatives(ceilo_obj: ClCeilo | Ct25k | LufftCeilo | Cl61d | Cs135) -> int:
117
+ is_old_chm_version = (
118
+ hasattr(ceilo_obj, "is_old_version") and ceilo_obj.is_old_version
119
+ )
120
+ is_ct25k = (
121
+ ceilo_obj.instrument is not None
122
+ and getattr(ceilo_obj.instrument, "model", "").lower() == "ct25k"
123
+ )
124
+ if is_old_chm_version or is_ct25k:
125
+ return 20
126
+ return 5
127
+
128
+
110
129
  def _initialize_ceilo(
111
130
  full_path: str,
112
131
  site_meta: dict,
@@ -38,6 +38,7 @@ class Ceilometer:
38
38
  self,
39
39
  array: np.ndarray,
40
40
  snr_limit: int = 5,
41
+ n_negatives: int = 5,
41
42
  *,
42
43
  range_corrected: bool = True,
43
44
  ) -> np.ndarray:
@@ -47,13 +48,6 @@ class Ceilometer:
47
48
  self.noise_param,
48
49
  range_corrected=range_corrected,
49
50
  )
50
- if (
51
- self.instrument is not None
52
- and getattr(self.instrument, "model", "").lower() == "ct25k"
53
- ):
54
- n_negatives = 20
55
- else:
56
- n_negatives = 5
57
51
  return noisy_data.screen_data(
58
52
  array,
59
53
  snr_limit=snr_limit,
@@ -64,6 +58,7 @@ class Ceilometer:
64
58
  self,
65
59
  beta: np.ndarray,
66
60
  snr_limit: int = 5,
61
+ n_negatives: int = 5,
67
62
  *,
68
63
  range_corrected: bool = True,
69
64
  ) -> np.ndarray:
@@ -82,6 +77,7 @@ class Ceilometer:
82
77
  beta_raw_smooth,
83
78
  is_smoothed=True,
84
79
  snr_limit=snr_limit,
80
+ n_negatives=n_negatives,
85
81
  )
86
82
 
87
83
  def prepare_data(self) -> None:
@@ -23,6 +23,7 @@ class LufftCeilo(NcLidar):
23
23
  self.file_name = file_name
24
24
  self.site_meta = site_meta
25
25
  self.expected_date = expected_date
26
+ self.is_old_version = False
26
27
 
27
28
  def read_ceilometer_file(self, calibration_factor: float | None = None) -> None:
28
29
  """Reads data and metadata from Jenoptik netCDF file."""
@@ -42,6 +43,7 @@ class LufftCeilo(NcLidar):
42
43
  beta_raw = ma.masked_array(beta_raw)
43
44
  old_version = self._get_old_software_version()
44
45
  if old_version is not None:
46
+ self.is_old_version = True
45
47
  logging.warning(
46
48
  "Software version %s. Assuming data not range corrected.",
47
49
  old_version,
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 64
3
- PATCH = 3
3
+ PATCH = 5
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.3
3
+ Version: 1.64.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