cloudnetpy 1.55.8__py3-none-any.whl → 1.55.10__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.
@@ -80,6 +80,8 @@ def copernicus2nc(
80
80
  copernicus.mask_first_range_gates()
81
81
  copernicus.mask_invalid_data()
82
82
  copernicus.add_time_and_range()
83
+ copernicus.fix_range_offset(site_meta)
84
+ copernicus.screen_negative_ranges()
83
85
  copernicus.add_radar_specific_variables()
84
86
  copernicus.add_nyquist_velocity(keymap)
85
87
  copernicus.add_site_geolocation()
@@ -123,13 +125,37 @@ class Copernicus(ChilboltonRadar):
123
125
  ind = np.where(np.abs(self.data[key][:]) > value)
124
126
  self.data["v"].mask_indices(ind)
125
127
 
128
+ def fix_range_offset(self, site_meta: dict):
129
+ """Fixes range offset."""
130
+ range_offset = site_meta.get("range_offset", 0)
131
+ self.data["range"].data[:] += range_offset
132
+ self.append_data(np.array(range_offset, dtype=float), "range_offset")
133
+
134
+ def screen_negative_ranges(self):
135
+ """Screens negative range values."""
136
+ valid_ind = np.where(self.data["range"][:] >= 0)[0]
137
+ for key, cloudnet_array in self.data.items():
138
+ try:
139
+ data = cloudnet_array[:]
140
+ if data.ndim == 2:
141
+ cloudnet_array.data = data[:, valid_ind]
142
+ elif key == "range":
143
+ cloudnet_array.data = data[valid_ind]
144
+ except IndexError:
145
+ continue
146
+
126
147
 
127
148
  ATTRIBUTES = {
128
149
  "calibration_offset": MetaData(
129
150
  long_name="Radar reflectivity calibration offset",
130
- units="1",
151
+ units="dBZ",
131
152
  comment="Calibration offset applied.",
132
153
  ),
154
+ "range_offset": MetaData(
155
+ long_name="Radar range offset",
156
+ units="m",
157
+ comment="Range offset applied.",
158
+ ),
133
159
  "antenna_diameter": MetaData(long_name="Antenna diameter", units="m"),
134
160
  "beamwidthV": MetaData(long_name="Vertical angular beamwidth", units="degree"),
135
161
  "beamwidthH": MetaData(long_name="Horizontal angular beamwidth", units="degree"),
@@ -380,7 +380,7 @@ def values_to_dict(keys: tuple, values: list) -> dict:
380
380
  """
381
381
  out = {}
382
382
  for i, key in enumerate(keys):
383
- out[key] = np.array([x[i] for x in values])
383
+ out[key] = np.array([x[i] for x in values if len(x) == len(keys)])
384
384
  return out
385
385
 
386
386
 
cloudnetpy/version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 55
3
- PATCH = 8
3
+ PATCH = 10
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudnetpy
3
- Version: 1.55.8
3
+ Version: 1.55.10
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -39,7 +39,7 @@ Classifier: Topic :: Scientific/Engineering
39
39
  Requires-Python: >=3.10
40
40
  Description-Content-Type: text/markdown
41
41
  License-File: LICENSE
42
- Requires-Dist: cloudnetpy-qc >=1.13.2
42
+ Requires-Dist: cloudnetpy-qc >=1.13.8
43
43
  Requires-Dist: matplotlib
44
44
  Requires-Dist: mwrpy >=0.4.3
45
45
  Requires-Dist: netCDF4
@@ -8,7 +8,7 @@ cloudnetpy/metadata.py,sha256=-oRmr4HWjG_-P8jOjdBYMgRkOYnJKr6jmGIF-38Tno8,5023
8
8
  cloudnetpy/output.py,sha256=mOjbCGCHF13vJTFMx9Q9wuOxONCybLxc9zznWKRRRIA,14426
9
9
  cloudnetpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  cloudnetpy/utils.py,sha256=pJugU9q-MEG2KX24EQ4QXaAI-pRq9aM-RwtTOWYnBsw,26860
11
- cloudnetpy/version.py,sha256=idZBngmrPTnGKGiCmF3SNk0z6c4L_9CCZWUws7rYBtE,72
11
+ cloudnetpy/version.py,sha256=Ic_rxdrvecL6yz_wdqXsCqO1lXVQBY70WXPQKn38a0U,73
12
12
  cloudnetpy/categorize/__init__.py,sha256=gP5q3Vis1y9u9OWgA_idlbjfWXYN_S0IBSWdwBhL_uU,69
13
13
  cloudnetpy/categorize/atmos.py,sha256=rpXaqttyX3aSx7K_UBmIS5b9uTuDJOne2fnOfprRhEU,12412
14
14
  cloudnetpy/categorize/atmos_utils.py,sha256=xjgSdyzyvz5poh7tCdltj9C19jHwpDlNTBhtSC3CXlg,3756
@@ -31,7 +31,7 @@ cloudnetpy/instruments/ceilo.py,sha256=_T_rbvy0kB6hol5iwNLtfFqYDM7g4ce9Mlt_Z1Vg2
31
31
  cloudnetpy/instruments/ceilometer.py,sha256=AMvpyZbHb6Z5gcl1xfcUOzFmuGPe9Co6BQY5er9VJVE,10824
32
32
  cloudnetpy/instruments/cl61d.py,sha256=jETxUIIjILZwkMx9YKG8pI7cUodNjVoc6dYCqaxW1Uw,1813
33
33
  cloudnetpy/instruments/cloudnet_instrument.py,sha256=Bs3qHvYbs5Onl7K4wFLXKs0-bsBtmASoywprLE-usl4,3350
34
- cloudnetpy/instruments/copernicus.py,sha256=Xzeu8qq08nlUjqYsJjX1F4IUEab5j71vY09FAULJUhM,5063
34
+ cloudnetpy/instruments/copernicus.py,sha256=hJT-TOSY6C25xkEtJ2v8bfecOvdvcCQ2sCd7q-9mlgw,6073
35
35
  cloudnetpy/instruments/galileo.py,sha256=F_XyoAb9PR-ifGhqhXziKnv0KfyOh-yEBaE1NgRMzNg,4318
36
36
  cloudnetpy/instruments/hatpro.py,sha256=1u751jC7FStVnW-h2EjKfCRSrxTIDYf2OO5aewZqTUg,7710
37
37
  cloudnetpy/instruments/instruments.py,sha256=kUm0SbOEnKqj6seu_YE8EAL5SFyNjFbThmA2nA7zYFU,3120
@@ -44,7 +44,7 @@ cloudnetpy/instruments/pollyxt.py,sha256=W9ol2rcbN_IN1vrNqXUlxH0EYYUjizFwIsqhkLO
44
44
  cloudnetpy/instruments/radiometrics.py,sha256=r73gDsB6ZSVRfMPkkf2mnhVSX8MxGTOuTjQyVmaQ5v8,7304
45
45
  cloudnetpy/instruments/rpg.py,sha256=ApF-3Vp2HtgtZrOREggD3ZVgwzkMZMBWHUdLMFFGgHs,16619
46
46
  cloudnetpy/instruments/rpg_reader.py,sha256=_ok6lmYcWFfn2dm6RQ3Qt2pzyqSXEUXBuNQ16jDiJvU,11189
47
- cloudnetpy/instruments/vaisala.py,sha256=8U3bnjosdcojs35elxw2EG6wkRvHGM8Xr1FqGbRQNV4,14270
47
+ cloudnetpy/instruments/vaisala.py,sha256=wx7flh9ntMO5_DAuZtFSUOCmzbtRSbeN2GUCnWq5f3c,14293
48
48
  cloudnetpy/instruments/weather_station.py,sha256=gwPh4opv8SDf_vi4yBq5oHe8IFxGUF7ktB5yOBerd1g,5829
49
49
  cloudnetpy/instruments/disdrometer/__init__.py,sha256=lyjwttWvFvuwYxEkusoAvgRcbBmglmOp5HJOpXUqLWo,93
50
50
  cloudnetpy/instruments/disdrometer/common.py,sha256=6vmnNSZBUEPtqF8fmmXaa-pBfIc2Ca2bgrFvIxKE8CQ,15363
@@ -107,8 +107,8 @@ cloudnetpy/products/mwr_multi.py,sha256=WDZ_3kAbRsyvhmARdeH1nTBJCCkoSYo5aGhiEgrO
107
107
  cloudnetpy/products/mwr_single.py,sha256=3Mpy4KXw7YARgKiGJi0Ab5-7Rq7ko6LK-3wGP0xhSGk,3134
108
108
  cloudnetpy/products/product_tools.py,sha256=KLvQKRkPrzZXT4_mFh2O5oJ14kf6nEyYd0sCaWlR0gY,10119
109
109
  docs/source/conf.py,sha256=baQlgkkUGJi4952W6NRhLkIBbRtwFgqrIOBuEeSCLfk,1488
110
- cloudnetpy-1.55.8.dist-info/LICENSE,sha256=wcZF72bdaoG9XugpyE95Juo7lBQOwLuTKBOhhtANZMM,1094
111
- cloudnetpy-1.55.8.dist-info/METADATA,sha256=dPOFUQDoGMwdnm99vfnXQJE9rTUUbdEEK1Ex2Olf3fE,5751
112
- cloudnetpy-1.55.8.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
113
- cloudnetpy-1.55.8.dist-info/top_level.txt,sha256=ibSPWRr6ojS1i11rtBFz2_gkIe68mggj7aeswYfaOo0,16
114
- cloudnetpy-1.55.8.dist-info/RECORD,,
110
+ cloudnetpy-1.55.10.dist-info/LICENSE,sha256=wcZF72bdaoG9XugpyE95Juo7lBQOwLuTKBOhhtANZMM,1094
111
+ cloudnetpy-1.55.10.dist-info/METADATA,sha256=_XKqC7NhIyDe_W7teyfEKYnbD73Mqm46BwRVhq1mD1A,5752
112
+ cloudnetpy-1.55.10.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
113
+ cloudnetpy-1.55.10.dist-info/top_level.txt,sha256=ibSPWRr6ojS1i11rtBFz2_gkIe68mggj7aeswYfaOo0,16
114
+ cloudnetpy-1.55.10.dist-info/RECORD,,