cloudnetpy 1.59.5__py3-none-any.whl → 1.60.1__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.
- cloudnetpy/categorize/categorize.py +3 -2
- cloudnetpy/categorize/radar.py +6 -2
- cloudnetpy/instruments/ceilo.py +1 -1
- cloudnetpy/instruments/ceilometer.py +5 -2
- cloudnetpy/instruments/hatpro.py +1 -1
- cloudnetpy/instruments/pollyxt.py +8 -1
- cloudnetpy/instruments/radiometrics.py +2 -2
- cloudnetpy/version.py +2 -2
- {cloudnetpy-1.59.5.dist-info → cloudnetpy-1.60.1.dist-info}/METADATA +1 -1
- {cloudnetpy-1.59.5.dist-info → cloudnetpy-1.60.1.dist-info}/RECORD +13 -13
- {cloudnetpy-1.59.5.dist-info → cloudnetpy-1.60.1.dist-info}/LICENSE +0 -0
- {cloudnetpy-1.59.5.dist-info → cloudnetpy-1.60.1.dist-info}/WHEEL +0 -0
- {cloudnetpy-1.59.5.dist-info → cloudnetpy-1.60.1.dist-info}/top_level.txt +0 -0
@@ -124,11 +124,12 @@ def generate_categorize(
|
|
124
124
|
|
125
125
|
try:
|
126
126
|
is_disdrometer = "disdrometer" in input_files
|
127
|
-
|
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"
|
132
|
+
"lv0_files": input_files.get("lv0_files"),
|
132
133
|
"disdrometer": Disdrometer(input_files["disdrometer"])
|
133
134
|
if is_disdrometer
|
134
135
|
else None,
|
cloudnetpy/categorize/radar.py
CHANGED
@@ -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(
|
cloudnetpy/instruments/ceilo.py
CHANGED
@@ -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"
|
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
|
-
|
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"
|
cloudnetpy/instruments/hatpro.py
CHANGED
@@ -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.
|
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)
|
148
|
+
lwps.append(float(lwp)) # mm => kg m-2
|
149
149
|
if iwv is not None:
|
150
|
-
iwvs.append(float(iwv) *
|
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)
|
cloudnetpy/version.py
CHANGED
@@ -8,11 +8,11 @@ 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=
|
11
|
+
cloudnetpy/version.py,sha256=aMrw7kVVNAWBsLdFD6ZiaSwL_rHSdG4s5vxmWXFxavU,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
|
15
|
-
cloudnetpy/categorize/categorize.py,sha256=
|
15
|
+
cloudnetpy/categorize/categorize.py,sha256=QNSqEtpe1qtFQAKOG1suffPaYEwtOf4KMij9PdW9-Us,17477
|
16
16
|
cloudnetpy/categorize/classify.py,sha256=x7aqPfhw4xuER22sqOb9ES9nijwk1E8b7HF7uaFJD7k,9218
|
17
17
|
cloudnetpy/categorize/containers.py,sha256=j6oSKPeZcq9vFthYaocAw1m6yReRNNPYUQF5UTDq4YM,4232
|
18
18
|
cloudnetpy/categorize/disdrometer.py,sha256=0Z0nvUtoZKDxiUfBZzoYZxUFOVjq-thmYfaCkskeECs,1799
|
@@ -24,25 +24,25 @@ cloudnetpy/categorize/lidar.py,sha256=LYqXw30sLOYxhKRcO3k5r0uVLGRYmJ5k0KuVOMduY5
|
|
24
24
|
cloudnetpy/categorize/melting.py,sha256=AOq36yLntDXYbeMw5QhZ7kMLwt0INyUbhzv-rSILLyo,6261
|
25
25
|
cloudnetpy/categorize/model.py,sha256=xWB6XOSz9p0h4b4m6ImMmzcTImOmz54d093WmsLogdQ,5535
|
26
26
|
cloudnetpy/categorize/mwr.py,sha256=-KMoYlch_C79bqgcEiRDCTRCcQf1ZsYxU90GQ8hzMgs,1435
|
27
|
-
cloudnetpy/categorize/radar.py,sha256=
|
27
|
+
cloudnetpy/categorize/radar.py,sha256=oaptBCymSPTa1HNYOWURnE0h5oklDOVxQvqAEAbqSQw,13721
|
28
28
|
cloudnetpy/instruments/__init__.py,sha256=_jejVwi_viSZehmAOkEqTNI-0-exGgAJ_bHW1IRRwTI,398
|
29
29
|
cloudnetpy/instruments/basta.py,sha256=0zUztUJBXT2nrBTAl3-NLowxu_CYwTU5TgdBq4etj7E,3757
|
30
30
|
cloudnetpy/instruments/campbell_scientific.py,sha256=2WHfBKQjtRSl0AqvtPeX7G8Hdi3Dn0WbvoAppFOMbA8,5270
|
31
|
-
cloudnetpy/instruments/ceilo.py,sha256=
|
32
|
-
cloudnetpy/instruments/ceilometer.py,sha256
|
31
|
+
cloudnetpy/instruments/ceilo.py,sha256=56zhNSx5cyqV9ToeDUhXzwOUQK32oa9Vng2VsPXLsmM,8876
|
32
|
+
cloudnetpy/instruments/ceilometer.py,sha256=-aPEZs_r0Gxeu53PHeWAkZMB2BUdauS47tkL7RFxo6k,12078
|
33
33
|
cloudnetpy/instruments/cl61d.py,sha256=ycJGvUqNU2KHhECbrSehtWRnvg1vKFHhvMeQpjpdCI4,1989
|
34
34
|
cloudnetpy/instruments/cloudnet_instrument.py,sha256=RG5HJxGM6p0F-IGyr85fvOizcMmgx48OeD_XeIsrgSU,3367
|
35
35
|
cloudnetpy/instruments/copernicus.py,sha256=AT0AtMhGSKzPWEqXsfAda6zeaw4g0Jr5dqIyfeu4FP0,6327
|
36
36
|
cloudnetpy/instruments/galileo.py,sha256=FyFYh1JhWed1d6yvpsv3rdBzHUTjkfOPw5HEQz4Wssw,4545
|
37
|
-
cloudnetpy/instruments/hatpro.py,sha256=
|
37
|
+
cloudnetpy/instruments/hatpro.py,sha256=QD7Gn607Q2ASAlSJbY8Fu37TOOHTR1VrAPVfy8ehylg,8513
|
38
38
|
cloudnetpy/instruments/instruments.py,sha256=jG5TYnZ8bdCZXnI303ZsaJBEdSKaIjKMbkGtnq6kQX0,3261
|
39
39
|
cloudnetpy/instruments/lufft.py,sha256=nozeiMRMz7I6q_FwmlxDGhWeJlqTuNh6ru39-M4K3BI,3629
|
40
40
|
cloudnetpy/instruments/mira.py,sha256=TfozpYivQAThZ_rV3gLzZpz2QyJFWOF0RXdzA4521rM,9332
|
41
41
|
cloudnetpy/instruments/mrr.py,sha256=hqknXXjJYfjWtyO50vioC3ohmH1GWU7K78-dNHh0Fss,5824
|
42
42
|
cloudnetpy/instruments/nc_lidar.py,sha256=Q4sJJwiEPthDz0Zb-laISX32jNYzlUBMafxLJiOAN5c,1704
|
43
43
|
cloudnetpy/instruments/nc_radar.py,sha256=cDd20Yz-UeDQp1Gmkk-jGNZ45DangFsCaioeo_kktHQ,6935
|
44
|
-
cloudnetpy/instruments/pollyxt.py,sha256=
|
45
|
-
cloudnetpy/instruments/radiometrics.py,sha256=
|
44
|
+
cloudnetpy/instruments/pollyxt.py,sha256=SccV9htZ5MWrK7JEleOr4hbmeTr-lKktUzAt7H9Xkf8,8932
|
45
|
+
cloudnetpy/instruments/radiometrics.py,sha256=2ofeZ6KJ_JOWTd3UA-wSzJpM5cjN7R4jZeBLJCQKEYc,7624
|
46
46
|
cloudnetpy/instruments/rpg.py,sha256=U8nEOlOI74f2lk2w4C4xKZCrW6AkDZpQZYE3yv7SNHE,17130
|
47
47
|
cloudnetpy/instruments/rpg_reader.py,sha256=LAdXL3TmD5QzQbqtPOcemZji_qkXwmw6a6F8NmF6Zg8,11355
|
48
48
|
cloudnetpy/instruments/vaisala.py,sha256=GzESZvboOoXzWmmr9dC-y6oM6ogc-M-zT3KmBTaD0LI,14512
|
@@ -107,8 +107,8 @@ cloudnetpy/products/mie_lu_tables.nc,sha256=It4fYpqJXlqOgL8jeZ-PxGzP08PMrELIDVe5
|
|
107
107
|
cloudnetpy/products/mwr_tools.py,sha256=PRm5aCULccUehU-Byk55wYhhEHseMjoAjGBu5TSyHao,4621
|
108
108
|
cloudnetpy/products/product_tools.py,sha256=rhx_Ru9FLlQqCNM-awoiHx18-Aq1eBwL9LiUaQoJs6k,10412
|
109
109
|
docs/source/conf.py,sha256=IKiFWw6xhUd8NrCg0q7l596Ck1d61XWeVjIFHVSG9Og,1490
|
110
|
-
cloudnetpy-1.
|
111
|
-
cloudnetpy-1.
|
112
|
-
cloudnetpy-1.
|
113
|
-
cloudnetpy-1.
|
114
|
-
cloudnetpy-1.
|
110
|
+
cloudnetpy-1.60.1.dist-info/LICENSE,sha256=wcZF72bdaoG9XugpyE95Juo7lBQOwLuTKBOhhtANZMM,1094
|
111
|
+
cloudnetpy-1.60.1.dist-info/METADATA,sha256=LG0ydnxAUKLn5SypWDIjlWlVYF8QTZwbnyVWD_nlDgc,5784
|
112
|
+
cloudnetpy-1.60.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
113
|
+
cloudnetpy-1.60.1.dist-info/top_level.txt,sha256=ibSPWRr6ojS1i11rtBFz2_gkIe68mggj7aeswYfaOo0,16
|
114
|
+
cloudnetpy-1.60.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|