cloudnetpy 1.86.2__tar.gz → 1.86.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.

Potentially problematic release.


This version of cloudnetpy might be problematic. Click here for more details.

Files changed (133) hide show
  1. {cloudnetpy-1.86.2/cloudnetpy.egg-info → cloudnetpy-1.86.4}/PKG-INFO +1 -1
  2. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/concat_lib.py +12 -1
  3. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/galileo.py +15 -1
  4. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/version.py +1 -1
  5. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4/cloudnetpy.egg-info}/PKG-INFO +1 -1
  6. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/LICENSE +0 -0
  7. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/MANIFEST.in +0 -0
  8. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/README.md +0 -0
  9. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/__init__.py +0 -0
  10. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/__init__.py +0 -0
  11. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/atmos_utils.py +0 -0
  12. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/attenuation.py +0 -0
  13. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
  14. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
  15. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
  16. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
  17. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
  18. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/categorize.py +0 -0
  19. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/classify.py +0 -0
  20. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/containers.py +0 -0
  21. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/disdrometer.py +0 -0
  22. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/droplet.py +0 -0
  23. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/falling.py +0 -0
  24. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/freezing.py +0 -0
  25. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/insects.py +0 -0
  26. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/itu.py +0 -0
  27. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/lidar.py +0 -0
  28. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/melting.py +0 -0
  29. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/model.py +0 -0
  30. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/mwr.py +0 -0
  31. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/categorize/radar.py +0 -0
  32. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/cli.py +0 -0
  33. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/cloudnetarray.py +0 -0
  34. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/constants.py +0 -0
  35. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/datasource.py +0 -0
  36. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/exceptions.py +0 -0
  37. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/__init__.py +0 -0
  38. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/basta.py +0 -0
  39. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/bowtie.py +0 -0
  40. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/ceilo.py +0 -0
  41. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/ceilometer.py +0 -0
  42. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/cl61d.py +0 -0
  43. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  44. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/copernicus.py +0 -0
  45. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/da10.py +0 -0
  46. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  47. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  48. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  49. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  50. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/fd12p.py +0 -0
  51. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/hatpro.py +0 -0
  52. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/instruments.py +0 -0
  53. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/lufft.py +0 -0
  54. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/mira.py +0 -0
  55. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/mrr.py +0 -0
  56. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/nc_lidar.py +0 -0
  57. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/nc_radar.py +0 -0
  58. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/pollyxt.py +0 -0
  59. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/radiometrics.py +0 -0
  60. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/rain_e_h3.py +0 -0
  61. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/rpg.py +0 -0
  62. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/rpg_reader.py +0 -0
  63. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/toa5.py +0 -0
  64. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/vaisala.py +0 -0
  65. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/instruments/weather_station.py +0 -0
  66. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/metadata.py +0 -0
  67. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/__init__.py +0 -0
  68. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  69. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/metadata.py +0 -0
  70. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  71. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  72. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  73. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  74. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  75. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  76. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  77. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  78. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  79. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  80. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  81. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  82. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  83. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  84. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  85. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  86. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  87. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  88. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  89. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  90. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  91. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  92. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  93. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  94. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  95. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  96. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  97. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  98. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  99. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  100. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  101. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  102. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  103. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  104. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  105. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  106. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/model_evaluation/utils.py +0 -0
  107. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/output.py +0 -0
  108. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/plotting/__init__.py +0 -0
  109. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/plotting/plot_meta.py +0 -0
  110. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/plotting/plotting.py +0 -0
  111. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/__init__.py +0 -0
  112. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/classification.py +0 -0
  113. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/der.py +0 -0
  114. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/drizzle.py +0 -0
  115. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/drizzle_error.py +0 -0
  116. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/drizzle_tools.py +0 -0
  117. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/epsilon.py +0 -0
  118. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/ier.py +0 -0
  119. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/iwc.py +0 -0
  120. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/lwc.py +0 -0
  121. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  122. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/mwr_tools.py +0 -0
  123. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/products/product_tools.py +0 -0
  124. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/py.typed +0 -0
  125. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy/utils.py +0 -0
  126. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  127. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  128. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy.egg-info/entry_points.txt +0 -0
  129. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy.egg-info/requires.txt +0 -0
  130. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/cloudnetpy.egg-info/top_level.txt +0 -0
  131. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/docs/source/conf.py +0 -0
  132. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/pyproject.toml +0 -0
  133. {cloudnetpy-1.86.2 → cloudnetpy-1.86.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy
3
- Version: 1.86.2
3
+ Version: 1.86.4
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -132,13 +132,24 @@ class _Concat:
132
132
  concat_dimension: str = "time",
133
133
  interp_dim: str = "range",
134
134
  ) -> None:
135
- self.filenames = sorted(map(Path, filenames), key=lambda f: f.name)
136
135
  self.concat_dimension = concat_dimension
137
136
  self.interp_dim = interp_dim
137
+ self.filenames = sorted(
138
+ [Path(filename) for filename in filenames if self._is_valid_file(filename)],
139
+ key=lambda f: f.name,
140
+ )
138
141
  self.first_filename = self.filenames[0]
139
142
  self.first_file = netCDF4.Dataset(self.first_filename)
140
143
  self.concatenated_file = self._init_output_file(output_file)
141
144
 
145
+ def _is_valid_file(self, filename: str | PathLike) -> bool:
146
+ # Added to handle strange .znc files with no time and huge range
147
+ # dimension resulting in large memory usage (e.g. Jülich 2019-05-18).
148
+ with netCDF4.Dataset(filename) as nc:
149
+ return (
150
+ nc[self.concat_dimension].size > 0 and nc[self.interp_dim].size < 10_000
151
+ )
152
+
142
153
  def create_global_attributes(self, new_attributes: dict | None) -> None:
143
154
  """Copies global attributes from one of the source files."""
144
155
  _copy_attributes(self.first_file, self.concatenated_file)
@@ -92,6 +92,7 @@ def galileo2nc(
92
92
  galileo.check_date(date)
93
93
  galileo.sort_timestamps()
94
94
  galileo.remove_duplicate_timestamps()
95
+ galileo.screen_negative_altitudes()
95
96
  snr_limit = site_meta.get("snr_limit", 3)
96
97
  galileo.screen_by_snr(snr_limit=snr_limit)
97
98
  galileo.mask_clutter()
@@ -128,7 +129,6 @@ class Galileo(ChilboltonRadar):
128
129
  self.instrument = GALILEO
129
130
 
130
131
  def mask_clutter(self) -> None:
131
- """Masks clutter."""
132
132
  # Only strong Z values are valid
133
133
  n_low_gates = 15
134
134
  ind = np.where(self.data["Zh"][:, :n_low_gates] < -15) and np.where(
@@ -136,6 +136,20 @@ class Galileo(ChilboltonRadar):
136
136
  )
137
137
  self.data["v"].mask_indices(ind)
138
138
 
139
+ def screen_negative_altitudes(self) -> None:
140
+ range_var = self.data["range"][:]
141
+ valid_idx = np.where(range_var > 0)[0]
142
+ if valid_idx.size == 0:
143
+ msg = "No valid altitudes found."
144
+ raise ValueError(msg)
145
+ if valid_idx.size == range_var.shape[0]:
146
+ return
147
+ for arr in self.data.values():
148
+ if utils.isscalar(arr.data):
149
+ continue
150
+ if arr[:].shape[-1] == range_var.shape[0]:
151
+ arr.data = arr[..., valid_idx]
152
+
139
153
 
140
154
  ATTRIBUTES = {
141
155
  "antenna_diameter": MetaData(
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 86
3
- PATCH = 2
3
+ PATCH = 4
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy
3
- Version: 1.86.2
3
+ Version: 1.86.4
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