cloudnetpy 1.56.1__py3-none-any.whl → 1.56.3__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.
Files changed (60) hide show
  1. cloudnetpy/categorize/atmos.py +0 -27
  2. cloudnetpy/categorize/atmos_utils.py +0 -10
  3. cloudnetpy/categorize/categorize.py +1 -6
  4. cloudnetpy/categorize/classify.py +0 -12
  5. cloudnetpy/categorize/containers.py +0 -6
  6. cloudnetpy/categorize/droplet.py +0 -17
  7. cloudnetpy/categorize/falling.py +0 -3
  8. cloudnetpy/categorize/freezing.py +0 -5
  9. cloudnetpy/categorize/insects.py +0 -3
  10. cloudnetpy/categorize/lidar.py +0 -1
  11. cloudnetpy/categorize/melting.py +0 -3
  12. cloudnetpy/categorize/model.py +0 -5
  13. cloudnetpy/categorize/mwr.py +0 -2
  14. cloudnetpy/categorize/radar.py +0 -8
  15. cloudnetpy/cloudnetarray.py +0 -6
  16. cloudnetpy/concat_lib.py +0 -5
  17. cloudnetpy/datasource.py +0 -12
  18. cloudnetpy/instruments/basta.py +0 -5
  19. cloudnetpy/instruments/ceilo.py +0 -4
  20. cloudnetpy/instruments/ceilometer.py +0 -2
  21. cloudnetpy/instruments/copernicus.py +0 -6
  22. cloudnetpy/instruments/disdrometer/parsivel.py +0 -5
  23. cloudnetpy/instruments/disdrometer/thies.py +0 -4
  24. cloudnetpy/instruments/galileo.py +0 -5
  25. cloudnetpy/instruments/hatpro.py +0 -6
  26. cloudnetpy/instruments/mira.py +0 -5
  27. cloudnetpy/instruments/mrr.py +0 -5
  28. cloudnetpy/instruments/nc_radar.py +0 -2
  29. cloudnetpy/instruments/pollyxt.py +0 -3
  30. cloudnetpy/instruments/radiometrics.py +0 -4
  31. cloudnetpy/instruments/rpg.py +0 -5
  32. cloudnetpy/instruments/rpg_reader.py +0 -1
  33. cloudnetpy/instruments/vaisala.py +0 -4
  34. cloudnetpy/instruments/weather_station.py +0 -3
  35. cloudnetpy/model_evaluation/file_handler.py +0 -4
  36. cloudnetpy/model_evaluation/plotting/plotting.py +0 -6
  37. cloudnetpy/model_evaluation/products/advance_methods.py +0 -1
  38. cloudnetpy/model_evaluation/products/grid_methods.py +0 -2
  39. cloudnetpy/model_evaluation/products/model_products.py +0 -2
  40. cloudnetpy/model_evaluation/products/observation_products.py +0 -2
  41. cloudnetpy/model_evaluation/products/product_resampling.py +0 -4
  42. cloudnetpy/model_evaluation/products/tools.py +0 -2
  43. cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -4
  44. cloudnetpy/output.py +0 -9
  45. cloudnetpy/products/classification.py +0 -3
  46. cloudnetpy/products/der.py +0 -4
  47. cloudnetpy/products/drizzle.py +0 -8
  48. cloudnetpy/products/drizzle_error.py +0 -2
  49. cloudnetpy/products/drizzle_tools.py +0 -12
  50. cloudnetpy/products/ier.py +0 -4
  51. cloudnetpy/products/iwc.py +0 -4
  52. cloudnetpy/products/lwc.py +0 -14
  53. cloudnetpy/products/product_tools.py +0 -9
  54. cloudnetpy/utils.py +0 -81
  55. cloudnetpy/version.py +1 -1
  56. {cloudnetpy-1.56.1.dist-info → cloudnetpy-1.56.3.dist-info}/METADATA +4 -5
  57. {cloudnetpy-1.56.1.dist-info → cloudnetpy-1.56.3.dist-info}/RECORD +60 -60
  58. {cloudnetpy-1.56.1.dist-info → cloudnetpy-1.56.3.dist-info}/LICENSE +0 -0
  59. {cloudnetpy-1.56.1.dist-info → cloudnetpy-1.56.3.dist-info}/WHEEL +0 -0
  60. {cloudnetpy-1.56.1.dist-info → cloudnetpy-1.56.3.dist-info}/top_level.txt +0 -0
@@ -27,16 +27,13 @@ def calc_lwc_change_rate(temperature: np.ndarray, pressure: np.ndarray) -> np.nd
27
27
  with height, given the cloud base temperature and pressure.
28
28
 
29
29
  Args:
30
- ----
31
30
  temperature: Temperature of cloud base (K).
32
31
  pressure: Pressure of cloud base (Pa).
33
32
 
34
33
  Returns:
35
- -------
36
34
  dlwc/dz (kg m-3 m-1)
37
35
 
38
36
  References:
39
- ----------
40
37
  Brenguier, 1991, https://bit.ly/2QCSJtb
41
38
 
42
39
  """
@@ -59,12 +56,10 @@ def calc_mixing_ratio(svp: np.ndarray, pressure: np.ndarray) -> np.ndarray:
59
56
  """Calculates mixing ratio from saturation vapor pressure and pressure.
60
57
 
61
58
  Args:
62
- ----
63
59
  svp: Saturation vapor pressure (Pa).
64
60
  pressure: Atmospheric pressure (Pa).
65
61
 
66
62
  Returns:
67
- -------
68
63
  Mixing ratio (kg kg-1).
69
64
 
70
65
  """
@@ -79,13 +74,11 @@ def calc_air_density(
79
74
  """Calculates air density (kg m-3).
80
75
 
81
76
  Args:
82
- ----
83
77
  pressure: Pressure (Pa).
84
78
  temperature: Temperature (K).
85
79
  svp_mixing_ratio: Saturation vapor pressure mixing ratio (kg/kg).
86
80
 
87
81
  Returns:
88
- -------
89
82
  Air density (kg m-3).
90
83
 
91
84
  """
@@ -96,12 +89,10 @@ def get_attenuations(data: dict, classification: ClassificationResult) -> dict:
96
89
  """Calculates attenuations due to atmospheric gases and liquid water.
97
90
 
98
91
  Args:
99
- ----
100
92
  data: Containing :class:`Model` and :class:`Mwr` instances.
101
93
  classification: A :class:`ClassificationResult` instance.
102
94
 
103
95
  Returns:
104
- -------
105
96
  Dictionary containing `radar_gas_atten`, `radar_liquid_atten`,
106
97
  `liquid_atten_err`, `liquid_corrected` and `liquid_uncorrected` fields.
107
98
 
@@ -121,12 +112,10 @@ class Attenuation:
121
112
  """Base class for gas and liquid attenuations.
122
113
 
123
114
  Args:
124
- ----
125
115
  model: The :class:`Model` instance.
126
116
  classification: The :class:`ClassificationResult` instance.
127
117
 
128
118
  Attributes:
129
- ----------
130
119
  classification (ClassificationResult): The :class:`ClassificationResult`
131
120
  instance.
132
121
 
@@ -143,12 +132,10 @@ class GasAttenuation(Attenuation):
143
132
  """Radar gas attenuation class. Child of Attenuation.
144
133
 
145
134
  Args:
146
- ----
147
135
  data: Containing :class:`Model` instance.
148
136
  classification: The :class:`ClassificationResult` instance.
149
137
 
150
138
  Attributes:
151
- ----------
152
139
  atten (ndarray): Gas attenuation (dB).
153
140
 
154
141
  """
@@ -180,12 +167,10 @@ class LiquidAttenuation(Attenuation):
180
167
  """Radar liquid attenuation class. Child of Attenuation.
181
168
 
182
169
  Args:
183
- ----
184
170
  data: Containing :class:`Model` and :class:`Mwr` instances.
185
171
  classification: The :class:`ClassificationResult` instance.
186
172
 
187
173
  Attributes:
188
- ----------
189
174
  atten (ndarray): Radar liquid attenuation (dB).
190
175
  atten_err (ndarray): Error of radar liquid attenuation (dB).
191
176
  uncorrected (ndarray): Boolean array denoting uncorrected pixels.
@@ -255,12 +240,10 @@ def fill_clouds_with_lwc_dz(atmosphere: tuple, is_liquid: np.ndarray) -> np.ndar
255
240
  """Fills liquid clouds with lwc change rate at the cloud bases.
256
241
 
257
242
  Args:
258
- ----
259
243
  atmosphere: 2-element tuple containing temperature (K) and pressure (Pa).
260
244
  is_liquid: Boolean array indicating presence of liquid clouds.
261
245
 
262
246
  Returns:
263
- -------
264
247
  Liquid water content change rate (kg/m3/m), so that for each cloud the base
265
248
  value is filled for the whole cloud.
266
249
 
@@ -278,12 +261,10 @@ def get_lwc_change_rate_at_bases(
278
261
  """Finds LWC change rate in liquid cloud bases.
279
262
 
280
263
  Args:
281
- ----
282
264
  atmosphere: 2-element tuple containing temperature (K) and pressure (Pa).
283
265
  is_liquid: Boolean array indicating presence of liquid clouds.
284
266
 
285
267
  Returns:
286
- -------
287
268
  Liquid water content change rate at cloud bases (kg/m3/m).
288
269
 
289
270
  """
@@ -300,11 +281,9 @@ def find_cloud_bases(array: np.ndarray) -> np.ndarray:
300
281
  """Finds bases of clouds.
301
282
 
302
283
  Args:
303
- ----
304
284
  array: 2D boolean array denoting clouds or some other similar field.
305
285
 
306
286
  Returns:
307
- -------
308
287
  Boolean array indicating bases of the individual clouds.
309
288
 
310
289
  """
@@ -317,11 +296,9 @@ def find_cloud_tops(array: np.ndarray) -> np.ndarray:
317
296
  """Finds tops of clouds.
318
297
 
319
298
  Args:
320
- ----
321
299
  array: 2D boolean array denoting clouds or some other similar field.
322
300
 
323
301
  Returns:
324
- -------
325
302
  Boolean array indicating tops of the individual clouds.
326
303
 
327
304
  """
@@ -359,13 +336,11 @@ def calc_adiabatic_lwc(lwc_change_rate: np.ndarray, dheight: float) -> np.ndarra
359
336
  """Calculates adiabatic liquid water content (kg/m3).
360
337
 
361
338
  Args:
362
- ----
363
339
  lwc_change_rate: Liquid water content change rate (kg/m3/m) calculated at the
364
340
  base of each cloud and filled to that cloud.
365
341
  dheight: Median difference of the height vector (m).
366
342
 
367
343
  Returns:
368
- -------
369
344
  Liquid water content (kg/m3).
370
345
 
371
346
  """
@@ -382,12 +357,10 @@ def distribute_lwp_to_liquid_clouds(lwc: np.ndarray, lwp: np.ndarray) -> np.ndar
382
357
  theoretical proportion, i.e., sum(scaled LWC) = measured LWP.
383
358
 
384
359
  Args:
385
- ----
386
360
  lwc: 2D liquid water content (kg/m3).
387
361
  lwp: 1D liquid water path (kg/m2).
388
362
 
389
363
  Returns:
390
- -------
391
364
  2D LWP-weighted, normalized LWC (kg/m2).
392
365
 
393
366
  """
@@ -17,15 +17,12 @@ def calc_wet_bulb_temperature(model_data: dict) -> np.ndarray:
17
17
  expansion of a simple expression for the saturated vapour pressure.
18
18
 
19
19
  Args:
20
- ----
21
20
  model_data: Model variables `temperature`, `pressure`, `rh`.
22
21
 
23
22
  Returns:
24
- -------
25
23
  Wet bulb temperature (K).
26
24
 
27
25
  References:
28
- ----------
29
26
  J. Sullivan and L. D. Sanders: Method for obtaining wet-bulb
30
27
  temperatures by modifying the psychrometric formula.
31
28
 
@@ -66,11 +63,9 @@ def calc_saturation_vapor_pressure(temperature: np.ndarray) -> np.ndarray:
66
63
  """Goff-Gratch formula for saturation vapor pressure over water adopted by WMO.
67
64
 
68
65
  Args:
69
- ----
70
66
  temperature: Temperature (K).
71
67
 
72
68
  Returns:
73
- -------
74
69
  Saturation vapor pressure (Pa).
75
70
 
76
71
  """
@@ -95,11 +90,9 @@ def calc_psychrometric_constant(pressure: np.ndarray) -> np.ndarray:
95
90
  of water in air to the air temperature.
96
91
 
97
92
  Args:
98
- ----
99
93
  pressure: Atmospheric pressure (Pa).
100
94
 
101
95
  Returns:
102
- -------
103
96
  Psychrometric constant value (Pa K-1)
104
97
 
105
98
  """
@@ -110,15 +103,12 @@ def calc_dew_point_temperature(vapor_pressure: np.ndarray) -> np.ndarray:
110
103
  """Returns dew point temperature.
111
104
 
112
105
  Args:
113
- ----
114
106
  vapor_pressure: Water vapor pressure (Pa).
115
107
 
116
108
  Returns:
117
- -------
118
109
  Dew point temperature (K).
119
110
 
120
111
  Notes:
121
- -----
122
112
  Method from Vaisala's white paper: "Humidity conversion formulas".
123
113
 
124
114
  """
@@ -20,10 +20,9 @@ def generate_categorize(
20
20
  and classified as different types of scatterers such as ice, liquid,
21
21
  insects, etc. Next, the radar signal is corrected for atmospheric
22
22
  attenuation, and error estimates are computed. Results are saved
23
- in *ouput_file* which is a compressed netCDF4 file.
23
+ in *output_file* which is a compressed netCDF4 file.
24
24
 
25
25
  Args:
26
- ----
27
26
  input_files: dict containing file names for calibrated `radar`, `lidar`,
28
27
  `model` and `mwr` files. Optionally also `lv0_files`, a list of
29
28
  RPG level 0 files.
@@ -31,15 +30,12 @@ def generate_categorize(
31
30
  uuid: Set specific UUID for the file.
32
31
 
33
32
  Returns:
34
- -------
35
33
  UUID of the generated file.
36
34
 
37
35
  Raises:
38
- ------
39
36
  RuntimeError: Failed to create the categorize file.
40
37
 
41
38
  Notes:
42
- -----
43
39
  Separate mwr-file is not needed when using RPG cloud radar which
44
40
  measures liquid water path. Then, the radar file can be used as
45
41
  a mwr-file as well, i.e. {'mwr': 'radar.nc'}.
@@ -48,7 +44,6 @@ def generate_categorize(
48
44
  to detect liquid droplets.
49
45
 
50
46
  Examples:
51
- --------
52
47
  >>> from cloudnetpy.categorize import generate_categorize
53
48
  >>> input_files = {'radar': 'radar.nc',
54
49
  'lidar': 'lidar.nc',
@@ -19,22 +19,18 @@ def classify_measurements(data: dict) -> ClassificationResult:
19
19
  time / height grid before calling this function.
20
20
 
21
21
  Args:
22
- ----
23
22
  data: Containing :class:`Radar`, :class:`Lidar`, :class:`Model`
24
23
  and :class:`Mwr` instances.
25
24
 
26
25
  Returns:
27
- -------
28
26
  A :class:`ClassificationResult` instance.
29
27
 
30
28
  References:
31
- ----------
32
29
  The Cloudnet classification scheme is based on methodology proposed by
33
30
  Hogan R. and O'Connor E., 2004, https://bit.ly/2Yjz9DZ and its
34
31
  proprietary Matlab implementation.
35
32
 
36
33
  Notes:
37
- -----
38
34
  Some individual classification methods are changed in this Python
39
35
  implementation compared to the original Cloudnet methodology.
40
36
  Especially methods classifying insects, melting layer and liquid droplets.
@@ -96,14 +92,12 @@ def fetch_quality(
96
92
  """Returns Cloudnet quality bits.
97
93
 
98
94
  Args:
99
- ----
100
95
  data: Containing :class:`Radar` and :class:`Lidar` instances.
101
96
  classification: A :class:`ClassificationResult` instance.
102
97
  attenuations: Dictionary containing keys `liquid_corrected`,
103
98
  `liquid_uncorrected`.
104
99
 
105
100
  Returns:
106
- -------
107
101
  Dictionary containing `quality_bits`, an integer array with the bits:
108
102
 
109
103
  - bit 0: Pixel contains radar data
@@ -136,13 +130,11 @@ def _find_aerosols(
136
130
  Aerosols are lidar signals that are: a) not falling, b) not liquid droplets.
137
131
 
138
132
  Args:
139
- ----
140
133
  obs: A :class:`ClassData` instance.
141
134
  is_falling: 2-D boolean array of falling hydrometeors.
142
135
  is_liquid: 2-D boolean array of liquid droplets.
143
136
 
144
137
  Returns:
145
- -------
146
138
  2-D boolean array containing aerosols.
147
139
 
148
140
  """
@@ -166,13 +158,11 @@ def _find_drizzle_and_falling(
166
158
  """Classifies pixels as falling, drizzle and others.
167
159
 
168
160
  Args:
169
- ----
170
161
  is_liquid: 2D boolean array denoting liquid layers.
171
162
  is_falling: 2D boolean array denoting falling pixels.
172
163
  is_freezing: 2D boolean array denoting subzero temperatures.
173
164
 
174
165
  Returns:
175
- -------
176
166
  2D array where values are 1 (falling, drizzle, supercooled liquids),
177
167
  2 (drizzle), and masked (all others).
178
168
 
@@ -191,12 +181,10 @@ def _bits_to_integer(bits: list) -> np.ndarray:
191
181
  """Creates array of integers from individual boolean arrays.
192
182
 
193
183
  Args:
194
- ----
195
184
  bits: List of bit fields (of similar sizes) to be saved in the resulting
196
185
  array of integers. bits[0] is saved as bit 0, bits[1] as bit 1, etc.
197
186
 
198
187
  Returns:
199
- -------
200
188
  Array of integers containing the information of the individual boolean arrays.
201
189
 
202
190
  """
@@ -24,12 +24,10 @@ class ClassData:
24
24
  """Container for observations that are used in the classification.
25
25
 
26
26
  Args:
27
- ----
28
27
  data: Containing :class:`Radar`, :class:`Lidar`, :class:`Model`
29
28
  and :class:`Mwr` instances.
30
29
 
31
30
  Attributes:
32
- ----------
33
31
  z (ndarray): 2D radar echo.
34
32
  ldr (ndarray): 2D linear depolarization ratio.
35
33
  v (ndarray): 2D radar velocity.
@@ -84,13 +82,11 @@ def _find_rain_from_radar_echo(
84
82
  detections as raining.
85
83
 
86
84
  Args:
87
- ----
88
85
  z: Radar echo.
89
86
  time: Time vector.
90
87
  time_buffer: Time in minutes.
91
88
 
92
89
  Returns:
93
- -------
94
90
  1D Boolean array denoting profiles with rain.
95
91
 
96
92
  """
@@ -131,14 +127,12 @@ def _find_clutter(
131
127
  """Estimates clutter from doppler velocity.
132
128
 
133
129
  Args:
134
- ----
135
130
  n_gates: Number of range gates from the ground where clutter is expected
136
131
  to be found. Default is 10.
137
132
  v_lim: Velocity threshold. Smaller values are classified as clutter.
138
133
  Default is 0.05 (m/s).
139
134
 
140
135
  Returns:
141
- -------
142
136
  2-D boolean array denoting pixels contaminated by clutter.
143
137
 
144
138
  """
@@ -18,7 +18,6 @@ def correct_liquid_top(
18
18
  """Corrects lidar detected liquid cloud top using radar data.
19
19
 
20
20
  Args:
21
- ----
22
21
  obs: The :class:`ClassData` instance.
23
22
  is_liquid: 2-D boolean array denoting liquid clouds from lidar data.
24
23
  is_freezing: 2-D boolean array of sub-zero temperature, derived from the model
@@ -26,11 +25,9 @@ def correct_liquid_top(
26
25
  limit: The maximum correction distance (m) above liquid cloud top.
27
26
 
28
27
  Returns:
29
- -------
30
28
  Corrected liquid cloud array.
31
29
 
32
30
  References:
33
- ----------
34
31
  Hogan R. and O'Connor E., 2004, https://bit.ly/2Yjz9DZ.
35
32
 
36
33
  """
@@ -64,7 +61,6 @@ def find_liquid(
64
61
  """Estimate liquid layers from SNR-screened attenuated backscatter.
65
62
 
66
63
  Args:
67
- ----
68
64
  obs: The :class:`ClassData` instance.
69
65
  peak_amp: Minimum value of peak. Default is 1e-6.
70
66
  max_width: Maximum width of peak. Default is 300 (m).
@@ -76,11 +72,9 @@ def find_liquid(
76
72
  min_alt: Minimum altitude of the peak from the ground. Default is 100 (m).
77
73
 
78
74
  Returns:
79
- -------
80
75
  2-D boolean array denoting liquid layers.
81
76
 
82
77
  References:
83
- ----------
84
78
  The method is based on Tuononen, M. et.al, 2019,
85
79
  https://acp.copernicus.org/articles/19/1985/2019/.
86
80
 
@@ -134,7 +128,6 @@ def ind_base(dprof: np.ndarray, ind_peak: int, dist: int, lim: float) -> int:
134
128
  below the peak exceed a threshold value.
135
129
 
136
130
  Args:
137
- ----
138
131
  dprof: 1-D array of 1st discrete difference. Masked values should
139
132
  be 0, e.g. dprof = np.diff(masked_prof).filled(0)
140
133
  ind_peak: Index of (possibly local) peak in the original profile.
@@ -149,16 +142,13 @@ def ind_base(dprof: np.ndarray, ind_peak: int, dist: int, lim: float) -> int:
149
142
  in the profile.
150
143
 
151
144
  Returns:
152
- -------
153
145
  Base index of the peak.
154
146
 
155
147
  Raises:
156
- ------
157
148
  IndexError: Can't find proper base index (probably too many masked
158
149
  values in the profile).
159
150
 
160
151
  Examples:
161
- --------
162
152
  Consider a profile
163
153
 
164
154
  >>> x = np.array([0, 0.5, 1, -99, 4, 8, 5])
@@ -187,7 +177,6 @@ def ind_base(dprof: np.ndarray, ind_peak: int, dist: int, lim: float) -> int:
187
177
  1
188
178
 
189
179
  See Also:
190
- --------
191
180
  droplet.ind_top()
192
181
 
193
182
  """
@@ -204,7 +193,6 @@ def ind_top(dprof: np.ndarray, ind_peak: int, nprof: int, dist: int, lim: float)
204
193
  above the peak exceed a threshold value.
205
194
 
206
195
  Args:
207
- ----
208
196
  dprof: 1-D array of 1st discrete difference. Masked values should be 0, e.g.
209
197
  dprof = np.diff(masked_prof).filled(0)
210
198
  nprof: Length of the profile. Top index can't be higher than this.
@@ -218,16 +206,13 @@ def ind_top(dprof: np.ndarray, ind_peak: int, nprof: int, dist: int, lim: float)
218
206
  likely accept some other point, higher in the profile.
219
207
 
220
208
  Returns:
221
- -------
222
209
  Top index of the peak.
223
210
 
224
211
  Raises:
225
- ------
226
212
  IndexError: Can not find proper top index (probably too many masked
227
213
  values in the profile).
228
214
 
229
215
  See Also:
230
- --------
231
216
  droplet.ind_base()
232
217
 
233
218
  """
@@ -241,11 +226,9 @@ def interpolate_lwp(obs: ClassData) -> np.ndarray:
241
226
  """Linear interpolation of liquid water path to fill masked values.
242
227
 
243
228
  Args:
244
- ----
245
229
  obs: The :class:`ClassData` instance.
246
230
 
247
231
  Returns:
248
- -------
249
232
  Liquid water path where the masked values are filled by interpolation.
250
233
 
251
234
  """
@@ -21,17 +21,14 @@ def find_falling_hydrometeors(
21
21
  temperatures.
22
22
 
23
23
  Args:
24
- ----
25
24
  obs: The :class:`ClassData` instance.
26
25
  is_liquid: 2-D boolean array of liquid droplets.
27
26
  is_insects: 2-D boolean array of insects.
28
27
 
29
28
  Returns:
30
- -------
31
29
  2-D boolean array containing falling hydrometeors.
32
30
 
33
31
  References:
34
- ----------
35
32
  Hogan R. and O'Connor E., 2004, https://bit.ly/2Yjz9DZ.
36
33
 
37
34
  """
@@ -20,16 +20,13 @@ def find_freezing_region(obs: ClassData, melting_layer: np.ndarray) -> np.ndarra
20
20
  interpolated for all profiles.
21
21
 
22
22
  Args:
23
- ----
24
23
  obs: The :class:`ClassData` instance.
25
24
  melting_layer: 2-D boolean array denoting melting layer.
26
25
 
27
26
  Returns:
28
- -------
29
27
  2-D boolean array denoting the sub-zero region.
30
28
 
31
29
  Notes:
32
- -----
33
30
  It is not clear how model temperature and melting layer should be
34
31
  ideally combined to determine the sub-zero region. This current
35
32
  method differs slightly from the original Matlab code and should
@@ -84,12 +81,10 @@ def _find_t0_alt(temperature: np.ndarray, height: np.ndarray) -> np.ndarray:
84
81
  """Interpolates altitudes where temperature goes below freezing.
85
82
 
86
83
  Args:
87
- ----
88
84
  temperature: 2-D temperature (K).
89
85
  height: 1-D altitude grid (m).
90
86
 
91
87
  Returns:
92
- -------
93
88
  1-D array denoting altitudes where the temperature drops below 0 deg C.
94
89
 
95
90
  """
@@ -29,7 +29,6 @@ def find_insects(
29
29
  above melting layer.
30
30
 
31
31
  Args:
32
- ----
33
32
  obs: The :class:`ClassData` instance.
34
33
  melting_layer: 2D array denoting melting layer.
35
34
  liquid_layers: 2D array denoting liquid layers.
@@ -37,14 +36,12 @@ def find_insects(
37
36
  Default is 0.8.
38
37
 
39
38
  Returns:
40
- -------
41
39
  tuple: 2-element tuple containing
42
40
 
43
41
  - 2-D boolean flag of insects presence.
44
42
  - 2-D probability of pixel containing insects.
45
43
 
46
44
  Notes:
47
- -----
48
45
  This insect detection method is novel and needs to be validated.
49
46
 
50
47
  """
@@ -13,7 +13,6 @@ class Lidar(DataSource):
13
13
  """Lidar class, child of DataSource.
14
14
 
15
15
  Args:
16
- ----
17
16
  full_path: Cloudnet Level 1 lidar netCDF file.
18
17
 
19
18
  """
@@ -32,20 +32,17 @@ def find_melting_layer(obs: ClassData, *, smooth: bool = True) -> np.ndarray:
32
32
  the rest -8..+6.
33
33
 
34
34
  Notes:
35
- -----
36
35
  This melting layer detection method is novel and needs to be validated.
37
36
  Also note that there might be some detection problems with strong
38
37
  updrafts of air. In these cases the absolute values for speed do not
39
38
  make sense (rain drops can even move upwards instead of down).
40
39
 
41
40
  Args:
42
- ----
43
41
  obs: The :class:`ClassData` instance.
44
42
  smooth: If True, apply a small Gaussian smoother to the
45
43
  melting layer. Default is True.
46
44
 
47
45
  Returns:
48
- -------
49
46
  2-D boolean array denoting the melting layer.
50
47
 
51
48
  """
@@ -14,12 +14,10 @@ class Model(DataSource):
14
14
  """Model class, child of DataSource.
15
15
 
16
16
  Args:
17
- ----
18
17
  model_file: File name of the NWP model file.
19
18
  alt_site: Altitude of the site above mean sea level (m).
20
19
 
21
20
  Attributes:
22
- ----------
23
21
  source_type (str): Model type, e.g. 'gdas1' or 'ecwmf'.
24
22
  model_heights (ndarray): 2-D array of model heights (one for each time
25
23
  step).
@@ -56,7 +54,6 @@ class Model(DataSource):
56
54
  """Interpolates model variables to common height grid.
57
55
 
58
56
  Args:
59
- ----
60
57
  wl_band: Integer denoting the approximate wavelength band of the
61
58
  cloud radar (0 = ~35.5 GHz, 1 = ~94 GHz).
62
59
 
@@ -90,12 +87,10 @@ class Model(DataSource):
90
87
  """Interpolates model variables to Cloudnet's dense time / height grid.
91
88
 
92
89
  Args:
93
- ----
94
90
  time_grid: The target time array (fraction hour).
95
91
  height_grid: The target height array (m).
96
92
 
97
93
  Returns:
98
- -------
99
94
  Indices fully masked profiles.
100
95
 
101
96
  """
@@ -10,7 +10,6 @@ class Mwr(DataSource):
10
10
  """Microwave radiometer class, child of DataSource.
11
11
 
12
12
  Args:
13
- ----
14
13
  full_path: Cloudnet Level 1b mwr file.
15
14
 
16
15
  """
@@ -24,7 +23,6 @@ class Mwr(DataSource):
24
23
  """Approximates lwp and its error in a grid using mean.
25
24
 
26
25
  Args:
27
- ----
28
26
  time_grid: 1D target time grid.
29
27
 
30
28
  """
@@ -16,11 +16,9 @@ class Radar(DataSource):
16
16
  """Radar class, child of DataSource.
17
17
 
18
18
  Args:
19
- ----
20
19
  full_path: Cloudnet Level 1 radar netCDF file.
21
20
 
22
21
  Attributes:
23
- ----------
24
22
  radar_frequency (float): Radar frequency (GHz).
25
23
  folding_velocity (float): Radar's folding velocity (m/s).
26
24
  location (str): Location of the radar, copied from the global attribute
@@ -33,7 +31,6 @@ class Radar(DataSource):
33
31
  radars.
34
32
 
35
33
  See Also:
36
- --------
37
34
  :func:`instruments.rpg2nc()`, :func:`instruments.mira2nc()`
38
35
 
39
36
  """
@@ -53,7 +50,6 @@ class Radar(DataSource):
53
50
  """Rebins radar data in time using mean.
54
51
 
55
52
  Args:
56
- ----
57
53
  time_new: Target time array as fraction hour. Updates *time* attribute.
58
54
 
59
55
  """
@@ -202,12 +198,10 @@ class Radar(DataSource):
202
198
  """Corrects radar echo for liquid and gas attenuation.
203
199
 
204
200
  Args:
205
- ----
206
201
  attenuations: 2-D attenuations due to atmospheric gases and liquid:
207
202
  `radar_gas_atten`, `radar_liquid_atten`.
208
203
 
209
204
  References:
210
- ----------
211
205
  The method is based on Hogan R. and O'Connor E., 2004,
212
206
  https://bit.ly/2Yjz9DZ and the original Cloudnet Matlab implementation.
213
207
 
@@ -228,12 +222,10 @@ class Radar(DataSource):
228
222
  :class:`CloudnetArray` instances to `data` attribute.
229
223
 
230
224
  Args:
231
- ----
232
225
  attenuations: 2-D attenuations due to atmospheric gases.
233
226
  classification: The :class:`ClassificationResult` instance.
234
227
 
235
228
  References:
236
- ----------
237
229
  The method is based on Hogan R. and O'Connor E., 2004,
238
230
  https://bit.ly/2Yjz9DZ and the original Cloudnet Matlab implementation.
239
231