cloudnetpy 1.66.9__tar.gz → 1.66.11__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 (129) hide show
  1. {cloudnetpy-1.66.9/cloudnetpy.egg-info → cloudnetpy-1.66.11}/PKG-INFO +1 -1
  2. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/containers.py +3 -2
  3. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/weather_station.py +28 -11
  4. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/version.py +1 -1
  5. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11/cloudnetpy.egg-info}/PKG-INFO +1 -1
  6. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/LICENSE +0 -0
  7. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/MANIFEST.in +0 -0
  8. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/README.md +0 -0
  9. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/__init__.py +0 -0
  10. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/__init__.py +0 -0
  11. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/atmos_utils.py +0 -0
  12. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/attenuation.py +0 -0
  13. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
  14. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
  15. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
  16. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
  17. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
  18. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/categorize.py +0 -0
  19. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/classify.py +0 -0
  20. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/disdrometer.py +0 -0
  21. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/droplet.py +0 -0
  22. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/falling.py +0 -0
  23. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/freezing.py +0 -0
  24. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/insects.py +0 -0
  25. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/itu.py +0 -0
  26. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/lidar.py +0 -0
  27. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/melting.py +0 -0
  28. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/model.py +0 -0
  29. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/mwr.py +0 -0
  30. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/categorize/radar.py +0 -0
  31. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/cli.py +0 -0
  32. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/cloudnetarray.py +0 -0
  33. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/concat_lib.py +0 -0
  34. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/constants.py +0 -0
  35. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/datasource.py +0 -0
  36. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/exceptions.py +0 -0
  37. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/__init__.py +0 -0
  38. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/basta.py +0 -0
  39. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  40. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/ceilo.py +0 -0
  41. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/ceilometer.py +0 -0
  42. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/cl61d.py +0 -0
  43. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  44. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/copernicus.py +0 -0
  45. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  46. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  47. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  48. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  49. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/galileo.py +0 -0
  50. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/hatpro.py +0 -0
  51. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/instruments.py +0 -0
  52. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/lufft.py +0 -0
  53. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/mira.py +0 -0
  54. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/mrr.py +0 -0
  55. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/nc_lidar.py +0 -0
  56. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/nc_radar.py +0 -0
  57. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/pollyxt.py +0 -0
  58. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/radiometrics.py +0 -0
  59. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/rpg.py +0 -0
  60. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/rpg_reader.py +0 -0
  61. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/toa5.py +0 -0
  62. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/instruments/vaisala.py +0 -0
  63. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/metadata.py +0 -0
  64. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/__init__.py +0 -0
  65. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  66. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/metadata.py +0 -0
  67. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  68. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  69. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  70. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  71. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  72. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  73. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  74. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  75. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  76. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  77. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  78. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  79. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  80. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  81. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  82. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  83. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  84. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  85. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  86. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  87. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  88. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  89. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  90. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  91. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  92. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  93. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  94. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  95. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  96. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  97. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  98. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  99. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  100. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  101. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  102. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  103. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/model_evaluation/utils.py +0 -0
  104. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/output.py +0 -0
  105. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/plotting/__init__.py +0 -0
  106. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/plotting/plot_meta.py +0 -0
  107. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/plotting/plotting.py +0 -0
  108. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/__init__.py +0 -0
  109. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/classification.py +0 -0
  110. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/der.py +0 -0
  111. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/drizzle.py +0 -0
  112. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/drizzle_error.py +0 -0
  113. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/drizzle_tools.py +0 -0
  114. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/ier.py +0 -0
  115. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/iwc.py +0 -0
  116. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/lwc.py +0 -0
  117. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  118. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/mwr_tools.py +0 -0
  119. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/products/product_tools.py +0 -0
  120. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/py.typed +0 -0
  121. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy/utils.py +0 -0
  122. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  123. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  124. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy.egg-info/entry_points.txt +0 -0
  125. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy.egg-info/requires.txt +0 -0
  126. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/cloudnetpy.egg-info/top_level.txt +0 -0
  127. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/docs/source/conf.py +0 -0
  128. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/pyproject.toml +0 -0
  129. {cloudnetpy-1.66.9 → cloudnetpy-1.66.11}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.66.9
3
+ Version: 1.66.11
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -4,7 +4,7 @@ import numpy as np
4
4
  from numpy import ma
5
5
 
6
6
  from cloudnetpy import utils
7
- from cloudnetpy.constants import MM_H_TO_M_S
7
+ from cloudnetpy.constants import MM_H_TO_M_S, T0
8
8
  from cloudnetpy.products.product_tools import CategoryBits
9
9
 
10
10
  from .disdrometer import Disdrometer
@@ -89,7 +89,8 @@ class ClassData:
89
89
  rain_from_disdrometer = self._find_rain_from_disdrometer()
90
90
  ind = ~rain_from_disdrometer.mask
91
91
  is_rain[ind] = rain_from_disdrometer[ind]
92
- return is_rain
92
+ is_positive_temp = self.tw[:, 0] > T0 + 5 # Filter snowfall
93
+ return is_rain & is_positive_temp
93
94
 
94
95
  def _find_rain_from_radar_echo(self) -> np.ndarray:
95
96
  first_gate_with_data = np.argmin(self.z.mask.all(axis=0))
@@ -1,6 +1,7 @@
1
1
  import csv
2
2
  import datetime
3
3
  import math
4
+ from collections.abc import Iterable
4
5
 
5
6
  import numpy as np
6
7
  from numpy import ma
@@ -109,14 +110,12 @@ class WS(CloudnetInstrument):
109
110
  self.data["rainfall_amount"] = CloudnetArray(rainfall_amount, "rainfall_amount")
110
111
 
111
112
  def screen_timestamps(self, date: str) -> None:
112
- dates = [str(d.date()) for d in self._data["time"]]
113
- valid_ind = [ind for ind, d in enumerate(dates) if d == date]
114
- if not valid_ind:
113
+ dates = np.array([str(d.date()) for d in self._data["time"]])
114
+ valid_mask = dates == date
115
+ if not valid_mask.any():
115
116
  raise ValidTimeStampError
116
117
  for key in self._data:
117
- self._data[key] = [
118
- x for ind, x in enumerate(self._data[key]) if ind in valid_ind
119
- ]
118
+ self._data[key] = self._data[key][valid_mask]
120
119
 
121
120
  @staticmethod
122
121
  def format_data(data: dict) -> dict:
@@ -436,15 +435,33 @@ class GalatiWS(WS):
436
435
  except ValueError:
437
436
  parsed_value = math.nan
438
437
  raw_data[key].append(parsed_value)
438
+
439
+ def read_value(keys: Iterable[str]):
440
+ for key in keys:
441
+ if key in raw_data:
442
+ return raw_data[key]
443
+ raise KeyError("Didn't find any keys: " + ", ".join(keys))
444
+
439
445
  data = {
440
- "time": raw_data["TimeStamp"],
441
- "air_temperature": raw_data["Temperature"],
442
- "relative_humidity": raw_data["RH"],
443
- "air_pressure": raw_data["Atmospheric_pressure"],
444
- "rainfall_rate": raw_data["Precipitations"],
446
+ "time": read_value(["TimeStamp"]),
447
+ "air_temperature": read_value(["Temperature", "Temperatura"]),
448
+ "relative_humidity": read_value(["RH", "Umiditate_relativa"]),
449
+ "air_pressure": read_value(
450
+ ["Atmospheric_pressure", "Presiune_atmosferica"]
451
+ ),
452
+ "rainfall_rate": read_value(["Precipitations", "Precipitatii"]),
453
+ "wind_speed": read_value(["Wind_speed", "Viteza_vant"]),
454
+ "wind_direction": read_value(["Wind_direction", "Directie_vant"]),
445
455
  }
446
456
  return self.format_data(data)
447
457
 
458
+ def add_data(self) -> None:
459
+ # Skip wind measurements where range was limited to 0-180 degrees
460
+ if datetime.date(*map(int, self.date)) < datetime.date(2024, 10, 29):
461
+ del self._data["wind_speed"]
462
+ del self._data["wind_direction"]
463
+ return super().add_data()
464
+
448
465
  def convert_pressure(self) -> None:
449
466
  mmHg2Pa = 133.322
450
467
  self.data["air_pressure"].data = self.data["air_pressure"][:] * mmHg2Pa
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 66
3
- PATCH = 9
3
+ PATCH = 11
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.66.9
3
+ Version: 1.66.11
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