cloudnetpy 1.46.2__tar.gz → 1.46.4__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 (112) hide show
  1. {cloudnetpy-1.46.2/cloudnetpy.egg-info → cloudnetpy-1.46.4}/PKG-INFO +1 -1
  2. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/melting.py +0 -1
  3. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/radar.py +1 -2
  4. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/cloudnetarray.py +0 -1
  5. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/ceilometer.py +3 -3
  6. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/cloudnet_instrument.py +8 -1
  7. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/mira.py +1 -1
  8. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/nc_radar.py +6 -1
  9. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/pollyxt.py +1 -1
  10. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/output.py +0 -1
  11. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/utils.py +1 -1
  12. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/version.py +1 -1
  13. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4/cloudnetpy.egg-info}/PKG-INFO +1 -1
  14. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/LICENSE +0 -0
  15. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/MANIFEST.in +0 -0
  16. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/README.md +0 -0
  17. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/__init__.py +0 -0
  18. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/__init__.py +0 -0
  19. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/atmos.py +0 -0
  20. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/atmos_utils.py +0 -0
  21. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/categorize.py +0 -0
  22. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/classify.py +0 -0
  23. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/containers.py +0 -0
  24. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/droplet.py +0 -0
  25. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/falling.py +0 -0
  26. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/freezing.py +0 -0
  27. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/insects.py +0 -0
  28. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/lidar.py +0 -0
  29. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/model.py +0 -0
  30. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/categorize/mwr.py +0 -0
  31. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/concat_lib.py +0 -0
  32. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/constants.py +0 -0
  33. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/datasource.py +0 -0
  34. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/exceptions.py +0 -0
  35. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/__init__.py +0 -0
  36. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/basta.py +0 -0
  37. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/ceilo.py +0 -0
  38. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/cl61d.py +0 -0
  39. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/copernicus.py +0 -0
  40. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/disdrometer.py +0 -0
  41. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/galileo.py +0 -0
  42. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/hatpro.py +0 -0
  43. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/instruments.py +0 -0
  44. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/lufft.py +0 -0
  45. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/nc_lidar.py +0 -0
  46. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/radiometrics.py +0 -0
  47. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/rpg.py +0 -0
  48. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/rpg_reader.py +0 -0
  49. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/vaisala.py +0 -0
  50. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/instruments/weather_station.py +0 -0
  51. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/metadata.py +0 -0
  52. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/__init__.py +0 -0
  53. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  54. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/metadata.py +0 -0
  55. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  56. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  57. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  58. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  59. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  60. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  61. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  62. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  63. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  64. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  65. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  66. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  67. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  68. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  69. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  70. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  71. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  72. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  73. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  74. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  75. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  76. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  77. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  78. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  79. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  80. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  81. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  82. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  83. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  84. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  85. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  86. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  87. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  88. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  89. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  90. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  91. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/model_evaluation/utils.py +0 -0
  92. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/plotting/__init__.py +0 -0
  93. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/plotting/plot_meta.py +0 -0
  94. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/plotting/plotting.py +0 -0
  95. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/__init__.py +0 -0
  96. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/classification.py +0 -0
  97. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/der.py +0 -0
  98. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/drizzle.py +0 -0
  99. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/drizzle_error.py +0 -0
  100. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/drizzle_tools.py +0 -0
  101. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/ier.py +0 -0
  102. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/iwc.py +0 -0
  103. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/lwc.py +0 -0
  104. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  105. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/products/product_tools.py +0 -0
  106. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy/py.typed +0 -0
  107. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  108. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  109. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy.egg-info/requires.txt +0 -0
  110. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/cloudnetpy.egg-info/top_level.txt +0 -0
  111. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/setup.cfg +0 -0
  112. {cloudnetpy-1.46.2 → cloudnetpy-1.46.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.46.2
3
+ Version: 1.46.4
4
4
  Summary: Python package for Cloudnet processing
5
5
  Home-page: https://github.com/actris-cloudnet/cloudnetpy
6
6
  Author: Finnish Meteorological Institute
@@ -62,7 +62,6 @@ def find_melting_layer(obs: ClassData, smooth: bool = True) -> np.ndarray:
62
62
  t_range = _find_model_temperature_range(obs.model_type)
63
63
 
64
64
  for ind, t_prof in enumerate(obs.tw):
65
-
66
65
  temp_indices = _get_temp_indices(t_prof, t_range)
67
66
  if len(temp_indices) <= 1:
68
67
  continue
@@ -127,7 +127,7 @@ class Radar(DataSource):
127
127
  data, 0, min_coverage=0.3, z_limit=-30, distance=3, n_blocks=20
128
128
  )
129
129
  if n_vertical > 0 or n_horizontal > 0:
130
- logging.info(
130
+ logging.debug(
131
131
  f"Filtered {n_vertical} vertical and {n_horizontal} horizontal stripes "
132
132
  f"from radar data using {variable}"
133
133
  )
@@ -141,7 +141,6 @@ class Radar(DataSource):
141
141
  distance: float,
142
142
  n_blocks: int,
143
143
  ) -> int:
144
-
145
144
  if axis == 0:
146
145
  data = data.T
147
146
  echo = self.data["Z"][:].T
@@ -94,7 +94,6 @@ class CloudnetArray:
94
94
  setattr(self, key, data)
95
95
 
96
96
  def _init_data(self) -> np.ndarray:
97
-
98
97
  if isinstance(self.variable, netCDF4.Variable):
99
98
  return self.variable[:]
100
99
  if isinstance(self.variable, np.ndarray):
@@ -144,7 +144,7 @@ class NoisyData:
144
144
  else self.noise_param.noise_min
145
145
  )
146
146
  noise_below_threshold = noise < noise_min
147
- logging.info(f"Adjusted noise of {sum(noise_below_threshold)} profiles")
147
+ logging.debug(f"Adjusted noise of {sum(noise_below_threshold)} profiles")
148
148
  noise[noise_below_threshold] = noise_min
149
149
  return noise
150
150
 
@@ -164,7 +164,7 @@ class NoisyData:
164
164
  profile = data[time_ind, alt_ind:]
165
165
  profile[profile < threshold] = ma.masked
166
166
  cleaned_time_indices = np.unique(time_indices)
167
- logging.info(
167
+ logging.debug(
168
168
  f"Cleaned {len(cleaned_time_indices)} profiles with negative filter"
169
169
  )
170
170
  return cleaned_time_indices
@@ -181,7 +181,7 @@ class NoisyData:
181
181
  )
182
182
  variance = _calc_var_from_top_gates(self.data["beta_raw"])
183
183
  is_fog = (signal_sum > signal_sum_threshold) | (variance < variance_threshold)
184
- logging.info(f"Cleaned {sum(is_fog)} profiles with fog filter")
184
+ logging.debug(f"Cleaned {sum(is_fog)} profiles with fog filter")
185
185
  return is_fog
186
186
 
187
187
  def _remove_noise(
@@ -24,7 +24,7 @@ class CloudnetInstrument:
24
24
  elif isinstance(self.dataset, netCDF4.Dataset) and hasattr(
25
25
  self.dataset, key.capitalize()
26
26
  ):
27
- value = float(getattr(self.dataset, key.capitalize()).split()[0])
27
+ value = self.parse_global_attribute_numeral(key.capitalize())
28
28
  # From source data (BASTA / RPG):
29
29
  elif (
30
30
  isinstance(self.dataset, netCDF4.Dataset)
@@ -35,6 +35,13 @@ class CloudnetInstrument:
35
35
  value = float(ma.mean(value))
36
36
  self.data[key] = CloudnetArray(value, key)
37
37
 
38
+ def parse_global_attribute_numeral(self, key: str) -> float:
39
+ new_str = ""
40
+ for char in getattr(self.dataset, key):
41
+ if char.isdigit() or char == ".":
42
+ new_str += char
43
+ return float(new_str)
44
+
38
45
  def add_height(self) -> None:
39
46
  try:
40
47
  zenith_angle = ma.median(self.data["zenith_angle"].data)
@@ -69,7 +69,7 @@ def mira2nc(
69
69
  valid_filenames,
70
70
  mmclx_filename,
71
71
  variables=variables,
72
- allow_difference=["nave"],
72
+ allow_difference=["nave", "ovl"],
73
73
  )
74
74
  else:
75
75
  mmclx_filename = raw_mira
@@ -71,7 +71,10 @@ class NcRadar(DataSource, CloudnetInstrument):
71
71
  time indices."""
72
72
  if "azimuth_velocity" in self.data:
73
73
  azimuth = self.data["azimuth_velocity"].data
74
- azimuth_reference = 0
74
+ if np.all(azimuth == azimuth[0]):
75
+ azimuth_reference = azimuth[0]
76
+ else:
77
+ azimuth_reference = 0
75
78
  azimuth_tolerance = 1e-6
76
79
  else:
77
80
  azimuth = self.data["azimuth_angle"].data
@@ -85,6 +88,8 @@ class NcRadar(DataSource, CloudnetInstrument):
85
88
  azimuth, azimuth_reference, atol=azimuth_tolerance
86
89
  )
87
90
  is_stable_profile = is_stable_zenith & is_stable_azimuth
91
+ if ma.isMaskedArray(is_stable_profile):
92
+ is_stable_profile[is_stable_profile.mask] = False
88
93
  n_removed = np.count_nonzero(~is_stable_profile)
89
94
  if n_removed >= len(zenith) - 1:
90
95
  raise ValidTimeStampError(
@@ -109,7 +109,7 @@ class PollyXt(Ceilometer):
109
109
  calibration_factors: np.ndarray = np.array([])
110
110
  beta_channel = self._get_valid_beta_channel(bsc_files)
111
111
  bsc_key = f"attenuated_backscatter_{beta_channel}nm"
112
- for (bsc_file, depol_file) in zip(bsc_files, depol_files):
112
+ for bsc_file, depol_file in zip(bsc_files, depol_files):
113
113
  with (
114
114
  netCDF4.Dataset(bsc_file, "r") as nc_bsc,
115
115
  netCDF4.Dataset(depol_file, "r") as nc_depol,
@@ -312,7 +312,6 @@ def update_attributes(cloudnet_variables: dict, attributes: dict) -> None:
312
312
  def _write_vars2nc(nc: netCDF4.Dataset, cloudnet_variables: dict) -> None:
313
313
  """Iterates over Cloudnet instances and write to netCDF file."""
314
314
  for obj in cloudnet_variables.values():
315
-
316
315
  if ma.isMaskedArray(obj.data):
317
316
  fill_value = netCDF4.default_fillvals[obj.data_type]
318
317
  else:
@@ -180,7 +180,7 @@ def rebin_2d(
180
180
  masked_result[ind, :] = ma.masked
181
181
  empty_indices.append(ind)
182
182
  if len(empty_indices) > 0:
183
- logging.info(f"No radar data in {len(empty_indices)} bins")
183
+ logging.debug(f"No radar data in {len(empty_indices)} bins")
184
184
 
185
185
  return masked_result, empty_indices
186
186
 
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 46
3
- PATCH = 2
3
+ PATCH = 4
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.46.2
3
+ Version: 1.46.4
4
4
  Summary: Python package for Cloudnet processing
5
5
  Home-page: https://github.com/actris-cloudnet/cloudnetpy
6
6
  Author: Finnish Meteorological Institute
File without changes
File without changes
File without changes
File without changes
File without changes