cloudnetpy 1.61.0__py3-none-any.whl → 1.61.2__py3-none-any.whl

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.
@@ -1,5 +1,7 @@
1
1
  """Module for reading / converting disdrometer data."""
2
2
 
3
+ from typing import Literal
4
+
3
5
  import numpy as np
4
6
 
5
7
  from cloudnetpy.cloudnetarray import CloudnetArray
@@ -15,15 +17,24 @@ class Disdrometer(CloudnetInstrument):
15
17
  if name in valid_keys:
16
18
  self.data[name] = CloudnetArray(float(value), name)
17
19
 
18
- def _convert_data(self, keys: tuple, value: float, method: str = "divide") -> None:
20
+ def _convert_data(
21
+ self,
22
+ keys: tuple[str, ...],
23
+ value: float,
24
+ method: Literal["divide", "add"] = "divide",
25
+ ) -> None:
19
26
  for key in keys:
20
- if key in self.data:
21
- if method == "divide":
22
- self.data[key].data = self.data[key].data / value
23
- elif method == "add":
24
- self.data[key].data = self.data[key].data + value
25
- else:
26
- raise ValueError
27
+ if key not in self.data:
28
+ continue
29
+ variable = self.data[key]
30
+ if method == "divide":
31
+ variable.data = variable.data.astype("f4") / value
32
+ variable.data_type = "f4"
33
+ elif method == "add":
34
+ variable.data = variable.data.astype("f4") + value
35
+ variable.data_type = "f4"
36
+ else:
37
+ raise ValueError
27
38
 
28
39
  def store_vectors(
29
40
  self,
@@ -1,5 +1,4 @@
1
1
  import datetime
2
- from collections import defaultdict
3
2
  from os import PathLike
4
3
  from typing import Any
5
4
 
@@ -8,7 +7,7 @@ import numpy as np
8
7
  from cloudnetpy import output
9
8
  from cloudnetpy.cloudnetarray import CloudnetArray
10
9
  from cloudnetpy.constants import MM_TO_M, SEC_IN_HOUR
11
- from cloudnetpy.exceptions import DisdrometerDataError
10
+ from cloudnetpy.exceptions import DisdrometerDataError, ValidTimeStampError
12
11
  from cloudnetpy.instruments import instruments
13
12
  from cloudnetpy.instruments.toa5 import read_toa5
14
13
 
@@ -126,7 +125,7 @@ class Thies(Disdrometer):
126
125
  self.n_velocity = 20
127
126
  self.n_diameter = 22
128
127
  self.site_meta = site_meta
129
- self.raw_data: dict[str, Any] = defaultdict(list)
128
+ self.raw_data: dict[str, Any] = {}
130
129
  self._read_data(filename)
131
130
  self._screen_time(expected_date)
132
131
  self.data = {}
@@ -157,6 +156,8 @@ class Thies(Disdrometer):
157
156
  with open(filename) as file:
158
157
  for line in file:
159
158
  self._read_line(line)
159
+ if "time" not in self.raw_data or len(self.raw_data["time"]) == 0:
160
+ raise ValidTimeStampError
160
161
  for key, value in self.raw_data.items():
161
162
  array = np.array(value)
162
163
  if key == "time":
@@ -224,6 +225,8 @@ class Thies(Disdrometer):
224
225
  value = raw_values[i]
225
226
  else:
226
227
  value = int(raw_values[i])
228
+ if key not in self.raw_data:
229
+ self.raw_data[key] = []
227
230
  self.raw_data[key].append(value)
228
231
  self.raw_data["spectrum"].append(
229
232
  np.array(list(map(int, raw_values[79:-2])), dtype="i2").reshape(
cloudnetpy/version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 61
3
- PATCH = 0
3
+ PATCH = 2
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.61.0
3
+ Version: 1.61.2
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -8,7 +8,7 @@ cloudnetpy/metadata.py,sha256=v_VDo2vbdTxB0zIsfP69IcrwSKiRlLpsGdq6JPI4CoA,5306
8
8
  cloudnetpy/output.py,sha256=WoVTNuxni0DUr163vZ-_mDr1brXhY15XSlGMrq9Aoqw,14700
9
9
  cloudnetpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  cloudnetpy/utils.py,sha256=0TlHm71YtSrKXBsRKctitnhQrvZPE-ulEVeAQW-oK58,27398
11
- cloudnetpy/version.py,sha256=yXaNRiv7_J3_1S8AdHMUGGwtfSHvLCTJ991S3zY0sbw,72
11
+ cloudnetpy/version.py,sha256=sAvITtDW5JS3Asr69JBOzLFDkpZJrWxwM186iAa0fuc,72
12
12
  cloudnetpy/categorize/__init__.py,sha256=gP5q3Vis1y9u9OWgA_idlbjfWXYN_S0IBSWdwBhL_uU,69
13
13
  cloudnetpy/categorize/atmos.py,sha256=fWW8ye_8HZASRAiYwURFKWzcGOYIA2RKeVxCq0lVOuM,12389
14
14
  cloudnetpy/categorize/atmos_utils.py,sha256=wndpwJxc2-QnNTkV8tc8I11Vs_WkNz9sVMX1fuGgUC4,3777
@@ -49,9 +49,9 @@ cloudnetpy/instruments/toa5.py,sha256=xYJYEVNykCWqIsESno0eBIWqkYb-LHXjFjUp3EoqGD
49
49
  cloudnetpy/instruments/vaisala.py,sha256=GzESZvboOoXzWmmr9dC-y6oM6ogc-M-zT3KmBTaD0LI,14512
50
50
  cloudnetpy/instruments/weather_station.py,sha256=gTY3Y5UATqJo9Gld4hm7WdsKBwcF8WgNTIK2nOfl3Nc,5739
51
51
  cloudnetpy/instruments/disdrometer/__init__.py,sha256=lyjwttWvFvuwYxEkusoAvgRcbBmglmOp5HJOpXUqLWo,93
52
- cloudnetpy/instruments/disdrometer/common.py,sha256=A9k4z4SwZaqORUca3fYVCG0aS1Emy84B2755kShGeY8,9040
52
+ cloudnetpy/instruments/disdrometer/common.py,sha256=g52iK2aNp3Z88kovUmGVpC54NZomPa9D871gzO0AmQ4,9267
53
53
  cloudnetpy/instruments/disdrometer/parsivel.py,sha256=WiL-vCjw9Gmb5irvW3AXddsyprp8MGOfqcVAlfy0zpc,25521
54
- cloudnetpy/instruments/disdrometer/thies.py,sha256=dNSpRlyZPjQDVA6cm-Xkh-ub1fwLxok-9-xZBxcYIJA,9645
54
+ cloudnetpy/instruments/disdrometer/thies.py,sha256=IkaWQKg0P3eMd8lFPGfXRMF4nTIueYXPHZP9m37abuU,9809
55
55
  cloudnetpy/model_evaluation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  cloudnetpy/model_evaluation/file_handler.py,sha256=oUGIblcEWLLv16YKUch-M5KA-dGRAcuHa-9anP3xtX4,6447
57
57
  cloudnetpy/model_evaluation/metadata.py,sha256=7ZL87iDbaQJIMu8wfnMvb01cGVPkl8RtvEm_tt9uIHE,8413
@@ -108,8 +108,8 @@ cloudnetpy/products/mie_lu_tables.nc,sha256=It4fYpqJXlqOgL8jeZ-PxGzP08PMrELIDVe5
108
108
  cloudnetpy/products/mwr_tools.py,sha256=PRm5aCULccUehU-Byk55wYhhEHseMjoAjGBu5TSyHao,4621
109
109
  cloudnetpy/products/product_tools.py,sha256=rhx_Ru9FLlQqCNM-awoiHx18-Aq1eBwL9LiUaQoJs6k,10412
110
110
  docs/source/conf.py,sha256=IKiFWw6xhUd8NrCg0q7l596Ck1d61XWeVjIFHVSG9Og,1490
111
- cloudnetpy-1.61.0.dist-info/LICENSE,sha256=wcZF72bdaoG9XugpyE95Juo7lBQOwLuTKBOhhtANZMM,1094
112
- cloudnetpy-1.61.0.dist-info/METADATA,sha256=ZxuqGJhzfPtzacU04IO88UaXFvUlchwavhzhduLpPtA,5784
113
- cloudnetpy-1.61.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
114
- cloudnetpy-1.61.0.dist-info/top_level.txt,sha256=ibSPWRr6ojS1i11rtBFz2_gkIe68mggj7aeswYfaOo0,16
115
- cloudnetpy-1.61.0.dist-info/RECORD,,
111
+ cloudnetpy-1.61.2.dist-info/LICENSE,sha256=wcZF72bdaoG9XugpyE95Juo7lBQOwLuTKBOhhtANZMM,1094
112
+ cloudnetpy-1.61.2.dist-info/METADATA,sha256=u7OyOYzUq-Jo-O1mMv2w_V8swmT-xX21o96TrNQeA1g,5784
113
+ cloudnetpy-1.61.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
114
+ cloudnetpy-1.61.2.dist-info/top_level.txt,sha256=ibSPWRr6ojS1i11rtBFz2_gkIe68mggj7aeswYfaOo0,16
115
+ cloudnetpy-1.61.2.dist-info/RECORD,,