cloudnetpy 1.59.5__tar.gz → 1.60.1__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 (120) hide show
  1. {cloudnetpy-1.59.5/cloudnetpy.egg-info → cloudnetpy-1.60.1}/PKG-INFO +1 -1
  2. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/categorize.py +3 -2
  3. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/radar.py +6 -2
  4. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/ceilo.py +1 -1
  5. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/ceilometer.py +5 -2
  6. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/hatpro.py +1 -1
  7. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/pollyxt.py +8 -1
  8. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/radiometrics.py +2 -2
  9. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/version.py +2 -2
  10. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1/cloudnetpy.egg-info}/PKG-INFO +1 -1
  11. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/LICENSE +0 -0
  12. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/MANIFEST.in +0 -0
  13. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/README.md +0 -0
  14. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/__init__.py +0 -0
  15. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/__init__.py +0 -0
  16. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/atmos.py +0 -0
  17. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/atmos_utils.py +0 -0
  18. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/classify.py +0 -0
  19. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/containers.py +0 -0
  20. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/disdrometer.py +0 -0
  21. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/droplet.py +0 -0
  22. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/falling.py +0 -0
  23. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/freezing.py +0 -0
  24. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/insects.py +0 -0
  25. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/lidar.py +0 -0
  26. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/melting.py +0 -0
  27. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/model.py +0 -0
  28. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/categorize/mwr.py +0 -0
  29. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/cloudnetarray.py +0 -0
  30. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/concat_lib.py +0 -0
  31. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/constants.py +0 -0
  32. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/datasource.py +0 -0
  33. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/exceptions.py +0 -0
  34. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/__init__.py +0 -0
  35. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/basta.py +0 -0
  36. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/campbell_scientific.py +0 -0
  37. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/cl61d.py +0 -0
  38. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  39. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/copernicus.py +0 -0
  40. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  41. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  42. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  43. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  44. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/galileo.py +0 -0
  45. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/instruments.py +0 -0
  46. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/lufft.py +0 -0
  47. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/mira.py +0 -0
  48. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/mrr.py +0 -0
  49. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/nc_lidar.py +0 -0
  50. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/nc_radar.py +0 -0
  51. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/rpg.py +0 -0
  52. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/rpg_reader.py +0 -0
  53. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/vaisala.py +0 -0
  54. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/instruments/weather_station.py +0 -0
  55. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/metadata.py +0 -0
  56. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/__init__.py +0 -0
  57. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  58. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/metadata.py +0 -0
  59. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  60. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  61. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  62. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  63. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  64. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  65. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  66. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  67. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  68. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  69. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  70. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  71. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  72. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  73. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  74. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  75. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  76. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  77. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  78. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  79. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  80. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  81. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  82. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  83. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  84. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  85. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  86. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  87. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  88. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  89. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  90. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  91. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  92. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  93. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  94. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  95. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/model_evaluation/utils.py +0 -0
  96. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/output.py +0 -0
  97. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/plotting/__init__.py +0 -0
  98. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/plotting/plot_meta.py +0 -0
  99. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/plotting/plotting.py +0 -0
  100. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/__init__.py +0 -0
  101. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/classification.py +0 -0
  102. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/der.py +0 -0
  103. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/drizzle.py +0 -0
  104. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/drizzle_error.py +0 -0
  105. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/drizzle_tools.py +0 -0
  106. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/ier.py +0 -0
  107. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/iwc.py +0 -0
  108. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/lwc.py +0 -0
  109. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  110. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/mwr_tools.py +0 -0
  111. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/products/product_tools.py +0 -0
  112. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/py.typed +0 -0
  113. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy/utils.py +0 -0
  114. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  115. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  116. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy.egg-info/requires.txt +0 -0
  117. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/cloudnetpy.egg-info/top_level.txt +0 -0
  118. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/docs/source/conf.py +0 -0
  119. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/pyproject.toml +0 -0
  120. {cloudnetpy-1.59.5 → cloudnetpy-1.60.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.59.5
3
+ Version: 1.60.1
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -124,11 +124,12 @@ def generate_categorize(
124
124
 
125
125
  try:
126
126
  is_disdrometer = "disdrometer" in input_files
127
- data = {
127
+
128
+ data: dict = {
128
129
  "radar": Radar(input_files["radar"]),
129
130
  "lidar": Lidar(input_files["lidar"]),
130
131
  "mwr": Mwr(input_files["mwr"]),
131
- "lv0_files": input_files.get("lv0_files", None),
132
+ "lv0_files": input_files.get("lv0_files"),
132
133
  "disdrometer": Disdrometer(input_files["disdrometer"])
133
134
  if is_disdrometer
134
135
  else None,
@@ -124,7 +124,7 @@ class Radar(DataSource):
124
124
  return
125
125
  n_vertical = self._filter(
126
126
  data,
127
- 1,
127
+ axis=1,
128
128
  min_coverage=0.5,
129
129
  z_limit=10,
130
130
  distance=4,
@@ -132,7 +132,7 @@ class Radar(DataSource):
132
132
  )
133
133
  n_horizontal = self._filter(
134
134
  data,
135
- 0,
135
+ axis=0,
136
136
  min_coverage=0.3,
137
137
  z_limit=-30,
138
138
  distance=3,
@@ -174,6 +174,10 @@ class Radar(DataSource):
174
174
  q3 = np.quantile(n_values, 0.75)
175
175
  except IndexError:
176
176
  continue
177
+
178
+ if q1 == q3:
179
+ continue
180
+
177
181
  threshold = distance * (q3 - q1) + q3
178
182
 
179
183
  indices = np.where(
@@ -69,7 +69,7 @@ def ceilo2nc(
69
69
  """
70
70
  snr_limit = 5
71
71
  ceilo_obj = _initialize_ceilo(full_path, site_meta, date)
72
- calibration_factor = site_meta.get("calibration_factor", None)
72
+ calibration_factor = site_meta.get("calibration_factor")
73
73
  range_corrected = site_meta.get("range_corrected", True)
74
74
  ceilo_obj.read_ceilometer_file(calibration_factor)
75
75
  ceilo_obj.check_beta_raw_shape()
@@ -107,9 +107,12 @@ class Ceilometer:
107
107
  self.date = utils.seconds2date(self.data["time"][0], epoch=epoch)[:3]
108
108
  self.data["time"] = utils.seconds2hours(self.data["time"])
109
109
 
110
- def data_to_cloudnet_arrays(self) -> None:
110
+ def data_to_cloudnet_arrays(self, time_dtype="f4") -> None:
111
111
  for key, array in self.data.items():
112
- self.data[key] = CloudnetArray(array, key)
112
+ if key == "time":
113
+ self.data[key] = CloudnetArray(array, key, data_type=time_dtype)
114
+ else:
115
+ self.data[key] = CloudnetArray(array, key)
113
116
 
114
117
  def screen_depol(self) -> None:
115
118
  key = "depolarisation"
@@ -44,7 +44,7 @@ def hatpro2l1c(
44
44
  Returns:
45
45
  UUID of the generated file.
46
46
  """
47
- coeff_files = site_meta.get("coefficientFiles", None)
47
+ coeff_files = site_meta.get("coefficientFiles")
48
48
 
49
49
  try:
50
50
  hatpro_raw = lev1_to_nc(
@@ -56,7 +56,8 @@ def pollyxt2nc(
56
56
  polly.calc_screened_products(snr_limit)
57
57
  polly.mask_nan_values()
58
58
  polly.prepare_data()
59
- polly.data_to_cloudnet_arrays()
59
+ polly.screen_completely_masked_profiles()
60
+ polly.data_to_cloudnet_arrays(time_dtype="f8")
60
61
  attributes = output.add_time_attribute(ATTRIBUTES, polly.date)
61
62
  output.update_attributes(polly.data, attributes)
62
63
  polly.add_snr_info("beta", snr_limit)
@@ -149,6 +150,12 @@ class PollyXt(Ceilometer):
149
150
  self.data["calibration_factor"] = calibration_factors
150
151
  return epoch
151
152
 
153
+ def screen_completely_masked_profiles(self) -> None:
154
+ valid_ind = ~np.all(np.ma.getmaskarray(self.data["beta_raw"]), axis=1)
155
+ for key, item in self.data.items():
156
+ if isinstance(item, np.ndarray) and item.shape[0] == len(valid_ind):
157
+ self.data[key] = item[valid_ind]
158
+
152
159
  def _get_valid_beta_channel(self, files: list) -> str:
153
160
  polly_channels = ("1064", "532", "355")
154
161
  for channel in polly_channels:
@@ -145,9 +145,9 @@ class Radiometrics:
145
145
  continue
146
146
  times.append(record.timestamp)
147
147
  if lwp is not None:
148
- lwps.append(float(lwp) * 1000) # g / m2
148
+ lwps.append(float(lwp)) # mm => kg m-2
149
149
  if iwv is not None:
150
- iwvs.append(float(iwv) * 100) # g / m2
150
+ iwvs.append(float(iwv) * 10) # cm => kg m-2
151
151
  self.data["time"] = np.array(times, dtype="datetime64[s]")
152
152
  self.data["lwp"] = np.array(lwps, dtype=float)
153
153
  self.data["iwv"] = np.array(iwvs, dtype=float)
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
- MINOR = 59
3
- PATCH = 5
2
+ MINOR = 60
3
+ PATCH = 1
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.59.5
3
+ Version: 1.60.1
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